Mercurial > minori
annotate CMakeLists.txt @ 137:69db40272acd
dep/animia: [WIP] huge refactor
this WILL NOT compile, because lots of code has been changed
and every API in the original codebase has been removed.
note that this api setup is not exactly permanent...
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Fri, 10 Nov 2023 13:52:47 -0500 |
parents | 859d2a957940 |
children | 28842a8d0c6b |
rev | line source |
---|---|
108 | 1 cmake_minimum_required(VERSION 3.18) |
103 | 2 project(minori LANGUAGES CXX VERSION 0.1.0) |
17
db445ce42057
cmake: only enable OBJCXX on OS X
Paper <mrpapersonic@gmail.com>
parents:
15
diff
changeset
|
3 |
db445ce42057
cmake: only enable OBJCXX on OS X
Paper <mrpapersonic@gmail.com>
parents:
15
diff
changeset
|
4 if(APPLE) |
db445ce42057
cmake: only enable OBJCXX on OS X
Paper <mrpapersonic@gmail.com>
parents:
15
diff
changeset
|
5 enable_language(OBJCXX) |
db445ce42057
cmake: only enable OBJCXX on OS X
Paper <mrpapersonic@gmail.com>
parents:
15
diff
changeset
|
6 endif() |
2 | 7 |
64 | 8 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") |
9 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") | |
10 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") | |
11 | |
12 option(BUILD_SHARED_LIBS "Build using shared libraries" ON) | |
108 | 13 option(USE_QT6 "Force build with Qt 6" OFF) |
14 option(USE_QT5 "Force build with Qt 5" OFF) | |
114
ab191e28e69d
*: add initial torrent stuff
Paper <mrpapersonic@gmail.com>
parents:
112
diff
changeset
|
15 option(UPDATE_TRANSLATIONS "Update *.ts translation files" OFF) |
64 | 16 |
9 | 17 add_subdirectory(dep/anitomy) |
64 | 18 add_subdirectory(dep/animia) |
55
d10b6c6b432e
add xml lib, we will need to use it eventually
Paper <mrpapersonic@gmail.com>
parents:
54
diff
changeset
|
19 add_subdirectory(dep/pugixml) |
9 | 20 |
12 | 21 # Fix for mingw64 |
22 list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a") | |
23 | |
110
2f3ae79adb02
cmake: fix what I tried to do in the last commit
Paper <mrpapersonic@gmail.com>
parents:
109
diff
changeset
|
24 if(USE_QT6) |
108 | 25 set(QT_VERSION_MAJOR 6) |
109
79714c95a145
*: add translation files and locale files
Paper <mrpapersonic@gmail.com>
parents:
108
diff
changeset
|
26 elseif(USE_QT5) |
108 | 27 set(QT_VERSION_MAJOR 5) |
62 | 28 else() |
108 | 29 find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core) |
62 | 30 endif() |
108 | 31 |
32 find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools) | |
33 | |
12 | 34 find_package(CURL REQUIRED) |
35 | |
36 set(LIBRARIES | |
37 ${CURL_LIBRARIES} | |
108 | 38 ${Qt${QT_VERSION_MAJOR}Widgets_LIBRARIES} |
12 | 39 anitomy |
64 | 40 animia |
114
ab191e28e69d
*: add initial torrent stuff
Paper <mrpapersonic@gmail.com>
parents:
112
diff
changeset
|
41 pugixml |
12 | 42 ) |
43 | |
44 # We need Cocoa for some OS X stuff | |
45 if(APPLE) | |
46 find_library(COCOA_LIBRARY Cocoa) | |
47 list(APPEND LIBRARIES ${COCOA_LIBRARY}) | |
48 endif() | |
49 | |
2 | 50 set(SRC_FILES |
9 | 51 # Main entrypoint |
81 | 52 src/main.cc |
9 | 53 |
54 # Core files and datatype declarations... | |
81 | 55 src/core/anime.cc |
56 src/core/anime_db.cc | |
57 src/core/config.cc | |
58 src/core/date.cc | |
59 src/core/filesystem.cc | |
60 src/core/http.cc | |
61 src/core/json.cc | |
62 src/core/strings.cc | |
63 src/core/time.cc | |
9 | 64 |
46 | 65 # Main window |
81 | 66 src/gui/window.cc |
102 | 67 src/gui/theme.cc |
108 | 68 src/gui/locale.cc |
46 | 69 |
70 # Main window pages | |
81 | 71 src/gui/pages/anime_list.cc |
72 src/gui/pages/now_playing.cc | |
73 src/gui/pages/statistics.cc | |
74 src/gui/pages/search.cc | |
75 src/gui/pages/seasons.cc | |
76 src/gui/pages/torrents.cc | |
77 src/gui/pages/history.cc | |
54
466ac9870df9
add stub pages (to be implemented)
Paper <mrpapersonic@gmail.com>
parents:
51
diff
changeset
|
78 |
46 | 79 # Custom widgets |
81 | 80 src/gui/widgets/anime_info.cc |
81 src/gui/widgets/poster.cc | |
82 src/gui/widgets/clickable_label.cc | |
83 src/gui/widgets/sidebar.cc | |
84 src/gui/widgets/text.cc | |
85 src/gui/widgets/optional_date.cc | |
9 | 86 |
87 # Dialogs | |
81 | 88 src/gui/dialog/about.cc |
89 src/gui/dialog/information.cc | |
90 src/gui/dialog/settings.cc | |
91 src/gui/dialog/settings/application.cc | |
92 src/gui/dialog/settings/services.cc | |
116
254b1d2b7096
settings: add torrents page, make rss feed configurable
Paper <mrpapersonic@gmail.com>
parents:
114
diff
changeset
|
93 src/gui/dialog/settings/torrents.cc |
119
4eae379cb1ff
settings: add a very early recognition tab for configuring players and extensions
Paper <mrpapersonic@gmail.com>
parents:
118
diff
changeset
|
94 src/gui/dialog/settings/recognition.cc |
9 | 95 |
10 | 96 # Translate |
81 | 97 src/gui/translate/anime.cc |
98 src/gui/translate/anilist.cc | |
90
c4bb49c2f6eb
config: improve handling of vars
Paper <mrpapersonic@gmail.com>
parents:
82
diff
changeset
|
99 src/gui/translate/config.cc |
10 | 100 |
9 | 101 # Services (only AniList for now) |
81 | 102 src/services/services.cc |
103 src/services/anilist.cc | |
9 | 104 |
64 | 105 # Tracking |
82
8b65c417c225
*: fix old stuff, make video players and extensions constants
Paper <mrpapersonic@gmail.com>
parents:
81
diff
changeset
|
106 src/track/constants.cc |
81 | 107 src/track/media.cc |
118
39521c47c7a3
*: another huge megacommit, SORRY
Paper <mrpapersonic@gmail.com>
parents:
116
diff
changeset
|
108 src/track/types.cc |
64 | 109 |
9 | 110 # Qt resources |
2 | 111 rc/icons.qrc |
105
6d8da6e64d61
theme: add dark stylesheet, make it actually usable
Paper <mrpapersonic@gmail.com>
parents:
103
diff
changeset
|
112 rc/dark.qrc |
2 | 113 ) |
114 | |
108 | 115 set(INCLUDE |
116 include | |
117 dep/pugixml/src | |
118 dep/animia/include | |
119 dep/anitomy | |
120 dep | |
121 ) | |
122 | |
123 set(TS_FILES | |
124 rc/locale/en_GB.ts | |
125 rc/locale/es.ts | |
126 ) | |
127 | |
128 set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/rc/locale") | |
129 | |
130 # dumb little hack to get this working on Qt5 and Qt6 | |
110
2f3ae79adb02
cmake: fix what I tried to do in the last commit
Paper <mrpapersonic@gmail.com>
parents:
109
diff
changeset
|
131 if(UPDATE_TRANSLATIONS) |
109
79714c95a145
*: add translation files and locale files
Paper <mrpapersonic@gmail.com>
parents:
108
diff
changeset
|
132 cmake_language(CALL qt${QT_VERSION_MAJOR}_create_translation ${SRC_FILES} ${TS_FILES} OPTIONS "-I${CMAKE_CURRENT_SOURCE_DIR}/include") |
79714c95a145
*: add translation files and locale files
Paper <mrpapersonic@gmail.com>
parents:
108
diff
changeset
|
133 endif() |
108 | 134 cmake_language(CALL qt${QT_VERSION_MAJOR}_add_translation QM_FILES ${TS_FILES}) |
112
80f49f623d30
locale: allow switching locales without restarting
Paper <mrpapersonic@gmail.com>
parents:
110
diff
changeset
|
135 list(APPEND SRC_FILES ${QM_FILES}) |
108 | 136 |
137 function(qt_create_resource_file outfile) | |
138 set(QRC "<!DOCTYPE rcc><RCC version=\"1.0\">\n\t<qresource>\n") | |
139 get_filename_component(DIR ${outfile} DIRECTORY) | |
140 foreach (qm ${ARGN}) | |
141 file(RELATIVE_PATH name ${DIR} ${qm}) | |
142 string(APPEND QRC "\t\t<file>${name}</file>\n") | |
143 endforeach() | |
144 string(APPEND QRC "\t</qresource>\n</RCC>\n") | |
145 file(WRITE ${outfile} ${QRC}) | |
146 endfunction() | |
147 | |
148 qt_create_resource_file("${CMAKE_CURRENT_BINARY_DIR}/rc/locale.qrc" ${QM_FILES}) | |
112
80f49f623d30
locale: allow switching locales without restarting
Paper <mrpapersonic@gmail.com>
parents:
110
diff
changeset
|
149 list(APPEND SRC_FILES "${CMAKE_CURRENT_BINARY_DIR}/rc/locale.qrc") |
108 | 150 |
151 # This is also used in the Win32 rc file | |
103 | 152 set(RC_INFO_STRING "A lightweight anime tracker built with Qt.") |
153 | |
9 | 154 if(APPLE) # Mac OS X (or OS X (or macOS)) |
103 | 155 set(MACOSX_BUNDLE_BUNDLE_NAME "Minori") |
156 set(MACOSX_BUNDLE_BUNDLE_VERSION ${minori_VERSION}) | |
157 set(MACOSX_BUNDLE_COPYRIGHT "Copyright (C) Paper 2023") | |
158 set(MACOSX_BUNDLE_GUI_IDENTIFIER "org.eu.us.paper.minori") | |
159 set(MACOSX_BUNDLE_INFO_STRING ${RC_INFO_STRING}) | |
160 set(MACOSX_BUNDLE_ICON_FILE rc/osx/favicon.icns) | |
161 set(app_icon_osx "${CMAKE_CURRENT_SOURCE_DIR}/rc/osx/favicon.icns") | |
162 set_source_files_properties(${app_icon_osx} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") | |
163 | |
5 | 164 list(APPEND SRC_FILES |
165 src/sys/osx/dark_theme.mm | |
166 src/sys/osx/filesystem.mm | |
103 | 167 ${app_icon_osx} |
5 | 168 ) |
9 | 169 elseif(WIN32) # Windows |
103 | 170 configure_file( |
171 ${CMAKE_CURRENT_SOURCE_DIR}/rc/win32/version.rc.in | |
172 ${CMAKE_CURRENT_BINARY_DIR}/rc/version.rc | |
173 @ONLY | |
174 ) | |
175 list(APPEND SRC_FILES | |
176 src/sys/win32/dark_theme.cc | |
177 rc/win32/resource.rc | |
178 ${CMAKE_CURRENT_BINARY_DIR}/rc/version.rc | |
179 ) | |
124
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
180 elseif(LINUX) |
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
181 configure_file( |
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
182 ${CMAKE_CURRENT_SOURCE_DIR}/rc/linux/Minori.desktop.in |
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
183 ${CMAKE_CURRENT_BINARY_DIR}/rc/Minori.desktop |
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
184 @ONLY |
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
185 ) |
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
186 configure_file( |
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
187 ${CMAKE_CURRENT_SOURCE_DIR}/rc/favicon256.png |
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
188 ${CMAKE_CURRENT_BINARY_DIR}/rc/Minori.png |
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
189 COPYONLY |
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
190 ) |
2 | 191 endif() |
192 | |
103 | 193 add_executable(minori WIN32 MACOSX_BUNDLE ${SRC_FILES}) |
128
859d2a957940
cmake: set CXX_STANDARD to 17
Paper <mrpapersonic@gmail.com>
parents:
124
diff
changeset
|
194 set_property(TARGET minori PROPERTY CXX_STANDARD 17) |
11 | 195 set_property(TARGET minori PROPERTY AUTOMOC ON) |
196 set_property(TARGET minori PROPERTY AUTORCC ON) | |
2 | 197 |
108 | 198 target_include_directories(minori PUBLIC ${CURL_INCLUDE_DIRS} PRIVATE ${INCLUDE}) |
199 target_include_directories(minori PUBLIC ${Qt${QT_VERSION_MAJOR}Widgets_INCLUDE_DIRS}) | |
64 | 200 target_compile_options(minori PRIVATE -Wall -Wpedantic -Wextra -Wsuggest-override -Wold-style-cast) |
5 | 201 if(APPLE) |
11 | 202 target_compile_definitions(minori PUBLIC MACOSX) |
9 | 203 elseif(WIN32) |
11 | 204 target_compile_definitions(minori PUBLIC WIN32) |
5 | 205 endif() |
11 | 206 target_link_libraries(minori ${LIBRARIES}) |