summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorJaakko Keränen <jaakko.keranen@iki.fi>2020-07-21 15:06:52 +0300
committerJaakko Keränen <jaakko.keranen@iki.fi>2020-07-21 15:07:38 +0300
commitd773b499e595a43b9b1ae449262dcf13cabf2d02 (patch)
treeb1baeb12025a04f8316636b5d0ab18e30ceedb2c /CMakeLists.txt
Initial commit
Borrowing the app skeleton from Bitwise Harmony.
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt141
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 @@
1cmake_minimum_required (VERSION 3.9)
2
3project (Lagrange
4 VERSION 1.0.0
5 DESCRIPTION "Beautiful Gemini Client"
6 LANGUAGES C
7)
8set (COPYRIGHT_YEAR 2020)
9
10include (Embed.cmake)
11find_package (the_Foundation REQUIRED)
12find_package (PkgConfig REQUIRED)
13pkg_check_modules (SDL2 REQUIRED sdl2)
14
15# Embedded resources are written to a generated source file.
16message (STATUS "Preparing embedded resources...")
17set (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 ()
25embed_make (${EMBED_RESOURCES})
26
27# Source files.
28set (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)
59if (IOS)
60elseif (APPLE)
61 list (APPEND SOURCES src/ui/macos.m src/ui/macos.h)
62 # list (APPEND RESOURCES
63 # "res/Lagrange.icns"
64 # )
65endif ()
66if (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)
71endif ()
72set_source_files_properties (${RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
73
74# Target.
75add_executable (app ${SOURCES} ${RESOURCES})
76set_target_properties (app PROPERTIES OUTPUT_NAME lagrange)
77target_include_directories (app PUBLIC
78 src
79 ${CMAKE_CURRENT_BINARY_DIR}
80 ${SDL2_INCLUDE_DIRS}
81)
82target_compile_options (app PUBLIC
83 -Werror=implicit-function-declaration
84 ${SDL2_CFLAGS}
85)
86target_compile_definitions (app PUBLIC LAGRANGE_APP_VERSION="${PROJECT_VERSION}")
87target_link_libraries (app PUBLIC the_Foundation::the_Foundation)
88target_link_libraries (app PUBLIC ${SDL2_LDFLAGS})
89if (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 )
108endif ()
109if (UNIX)
110 target_link_libraries (app PUBLIC m)
111endif ()
112
113# Deployment.
114if (MSYS)
115 install (TARGETS app DESTINATION .)
116 install (PROGRAMS
117 ${SDL2_LIBDIR}/SDL2.dll
118 $<TARGET_FILE:the_Foundation::the_Foundation>
119 DESTINATION .
120 )
121elseif (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]
127Name=Lagrange
128Comment=${PROJECT_DESCRIPTION}
129;Categories=
130Exec=${CMAKE_INSTALL_PREFIX}/bin/lagrange
131Terminal=false
132Type=Application
133Icon=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 # )
140endif ()
141