diff options
author | Jaakko Keränen <jaakko.keranen@iki.fi> | 2020-07-21 15:06:52 +0300 |
---|---|---|
committer | Jaakko Keränen <jaakko.keranen@iki.fi> | 2020-07-21 15:07:38 +0300 |
commit | d773b499e595a43b9b1ae449262dcf13cabf2d02 (patch) | |
tree | b1baeb12025a04f8316636b5d0ab18e30ceedb2c /CMakeLists.txt |
Initial commit
Borrowing the app skeleton from Bitwise Harmony.
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..ec444865 --- /dev/null +++ b/CMakeLists.txt | |||
@@ -0,0 +1,141 @@ | |||
1 | cmake_minimum_required (VERSION 3.9) | ||
2 | |||
3 | project (Lagrange | ||
4 | VERSION 1.0.0 | ||
5 | DESCRIPTION "Beautiful Gemini Client" | ||
6 | LANGUAGES C | ||
7 | ) | ||
8 | set (COPYRIGHT_YEAR 2020) | ||
9 | |||
10 | include (Embed.cmake) | ||
11 | find_package (the_Foundation REQUIRED) | ||
12 | find_package (PkgConfig REQUIRED) | ||
13 | pkg_check_modules (SDL2 REQUIRED sdl2) | ||
14 | |||
15 | # Embedded resources are written to a generated source file. | ||
16 | message (STATUS "Preparing embedded resources...") | ||
17 | set (EMBED_RESOURCES | ||
18 | res/FiraSans-Regular.ttf | ||
19 | res/FiraSans-LightItalic.ttf | ||
20 | res/FiraMono-Regular.ttf | ||
21 | ) | ||
22 | # if (UNIX AND NOT APPLE) | ||
23 | # list (APPEND EMBED_RESOURCES res/appicon-64.png) | ||
24 | # endif () | ||
25 | embed_make (${EMBED_RESOURCES}) | ||
26 | |||
27 | # Source files. | ||
28 | set (SOURCES | ||
29 | ${CMAKE_CURRENT_BINARY_DIR}/embedded.c | ||
30 | ${CMAKE_CURRENT_BINARY_DIR}/embedded.h | ||
31 | src/main.c | ||
32 | src/app.c | ||
33 | src/app.h | ||
34 | src/stb_image.h | ||
35 | src/stb_truetype.h | ||
36 | # User interface: | ||
37 | src/ui/color.c | ||
38 | src/ui/color.h | ||
39 | src/ui/command.c | ||
40 | src/ui/command.h | ||
41 | src/ui/metrics.c | ||
42 | src/ui/metrics.h | ||
43 | src/ui/paint.c | ||
44 | src/ui/paint.h | ||
45 | src/ui/text.c | ||
46 | src/ui/text.h | ||
47 | src/ui/util.c | ||
48 | src/ui/util.h | ||
49 | src/ui/window.c | ||
50 | src/ui/window.h | ||
51 | # Widgets: | ||
52 | src/ui/widget.c | ||
53 | src/ui/widget.h | ||
54 | src/ui/inputwidget.c | ||
55 | src/ui/inputwidget.h | ||
56 | src/ui/labelwidget.c | ||
57 | src/ui/labelwidget.h | ||
58 | ) | ||
59 | if (IOS) | ||
60 | elseif (APPLE) | ||
61 | list (APPEND SOURCES src/ui/macos.m src/ui/macos.h) | ||
62 | # list (APPEND RESOURCES | ||
63 | # "res/Lagrange.icns" | ||
64 | # ) | ||
65 | endif () | ||
66 | if (MSYS) | ||
67 | set (WINRC_FILE_VERSION ${PROJECT_VERSION_MAJOR},${PROJECT_VERSION_MINOR},${PROJECT_VERSION_PATCH},0) | ||
68 | set (WINRC_PRODUCT_VERSION ${PROJECT_VERSION_MAJOR},${PROJECT_VERSION_MINOR},0,0) | ||
69 | configure_file (res/lagrange.rc.in ${CMAKE_CURRENT_BINARY_DIR}/lagrange.rc NEWLINE_STYLE WIN32) | ||
70 | list (APPEND SOURCES src/win32.c src/win32.h ${CMAKE_CURRENT_BINARY_DIR}/lagrange.rc) | ||
71 | endif () | ||
72 | set_source_files_properties (${RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) | ||
73 | |||
74 | # Target. | ||
75 | add_executable (app ${SOURCES} ${RESOURCES}) | ||
76 | set_target_properties (app PROPERTIES OUTPUT_NAME lagrange) | ||
77 | target_include_directories (app PUBLIC | ||
78 | src | ||
79 | ${CMAKE_CURRENT_BINARY_DIR} | ||
80 | ${SDL2_INCLUDE_DIRS} | ||
81 | ) | ||
82 | target_compile_options (app PUBLIC | ||
83 | -Werror=implicit-function-declaration | ||
84 | ${SDL2_CFLAGS} | ||
85 | ) | ||
86 | target_compile_definitions (app PUBLIC LAGRANGE_APP_VERSION="${PROJECT_VERSION}") | ||
87 | target_link_libraries (app PUBLIC the_Foundation::the_Foundation) | ||
88 | target_link_libraries (app PUBLIC ${SDL2_LDFLAGS}) | ||
89 | if (APPLE) | ||
90 | if (IOS) | ||
91 | target_link_libraries (app PUBLIC "-framework UIKit") | ||
92 | else () | ||
93 | target_link_libraries (app PUBLIC "-framework AppKit") | ||
94 | endif () | ||
95 | set_target_properties (app PROPERTIES | ||
96 | OUTPUT_NAME "Lagrange" | ||
97 | MACOSX_BUNDLE YES | ||
98 | MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_LIST_DIR}/res/MacOSXBundleInfo.plist.in" | ||
99 | MACOSX_BUNDLE_BUNDLE_NAME "Lagrange" | ||
100 | MACOSX_BUNDLE_INFO_STRING "${PROJECT_VERSION}" | ||
101 | MACOSX_BUNDLE_ICON_FILE "Lagrange.icns" | ||
102 | MACOSX_BUNDLE_BUNDLE_VERSION "${PROJECT_VERSION}" | ||
103 | MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_VERSION}" | ||
104 | MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" | ||
105 | MACOSX_BUNDLE_GUI_IDENTIFIER "fi.skyjake.Lagrange" | ||
106 | MACOSX_BUNDLE_COPYRIGHT "© ${COPYRIGHT_YEAR} Jaakko Keränen" | ||
107 | ) | ||
108 | endif () | ||
109 | if (UNIX) | ||
110 | target_link_libraries (app PUBLIC m) | ||
111 | endif () | ||
112 | |||
113 | # Deployment. | ||
114 | if (MSYS) | ||
115 | install (TARGETS app DESTINATION .) | ||
116 | install (PROGRAMS | ||
117 | ${SDL2_LIBDIR}/SDL2.dll | ||
118 | $<TARGET_FILE:the_Foundation::the_Foundation> | ||
119 | DESTINATION . | ||
120 | ) | ||
121 | elseif (UNIX AND NOT APPLE) | ||
122 | set_target_properties (app PROPERTIES | ||
123 | INSTALL_RPATH_USE_LINK_PATH YES | ||
124 | ) | ||
125 | set (desktop ${CMAKE_CURRENT_BINARY_DIR}/fi.skyjake.lagrange.desktop) | ||
126 | file (WRITE ${desktop} "[Desktop Entry] | ||
127 | Name=Lagrange | ||
128 | Comment=${PROJECT_DESCRIPTION} | ||
129 | ;Categories= | ||
130 | Exec=${CMAKE_INSTALL_PREFIX}/bin/lagrange | ||
131 | Terminal=false | ||
132 | Type=Application | ||
133 | Icon=fi.skyjake.lagrange") | ||
134 | install (TARGETS app DESTINATION bin) | ||
135 | install (FILES ${desktop} DESTINATION share/applications) | ||
136 | # install (FILES res/appicon-128.png | ||
137 | # DESTINATION share/icons/hicolor/256x256/apps | ||
138 | # RENAME fi.skyjake.lagrange.png | ||
139 | # ) | ||
140 | endif () | ||
141 | |||