Mercurial > minori
annotate CMakeLists.txt @ 187:9613d72b097e
*: multiple performance improvements
like marking `static const` when it makes sense...
date: change old stupid heap-based method to a structure which should
make copying the thing actually make a copy.
also many performance-based changes, like removing the std::tie
dependency and forward-declaring nlohmann json
*: replace every instance of QString::fromUtf8 to Strings::ToQString.
the main difference is that our function will always convert exactly
what is in the string, while some other times it would only convert
up to the nearest NUL byte
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Wed, 06 Dec 2023 13:43:54 -0500 |
parents | 9c4645100fec |
children | 649786bae914 |
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) | |
179
9c4645100fec
osx: clean up includes, we do not need cocoa
Paper <mrpapersonic@gmail.com>
parents:
147
diff
changeset
|
46 find_library(FOUNDATION_LIBRARY Foundation) |
9c4645100fec
osx: clean up includes, we do not need cocoa
Paper <mrpapersonic@gmail.com>
parents:
147
diff
changeset
|
47 find_library(APPKIT_LIBRARY AppKit) |
9c4645100fec
osx: clean up includes, we do not need cocoa
Paper <mrpapersonic@gmail.com>
parents:
147
diff
changeset
|
48 list(APPEND LIBRARIES ${FOUNDATION_LIBRARY} ${APPKIT_LIBRARY}) |
12 | 49 endif() |
50 | |
2 | 51 set(SRC_FILES |
9 | 52 # Main entrypoint |
81 | 53 src/main.cc |
9 | 54 |
55 # Core files and datatype declarations... | |
81 | 56 src/core/anime.cc |
57 src/core/anime_db.cc | |
58 src/core/config.cc | |
59 src/core/date.cc | |
60 src/core/filesystem.cc | |
61 src/core/http.cc | |
62 src/core/json.cc | |
63 src/core/strings.cc | |
64 src/core/time.cc | |
9 | 65 |
46 | 66 # Main window |
81 | 67 src/gui/window.cc |
102 | 68 src/gui/theme.cc |
108 | 69 src/gui/locale.cc |
46 | 70 |
71 # Main window pages | |
81 | 72 src/gui/pages/anime_list.cc |
73 src/gui/pages/now_playing.cc | |
74 src/gui/pages/statistics.cc | |
75 src/gui/pages/search.cc | |
76 src/gui/pages/seasons.cc | |
77 src/gui/pages/torrents.cc | |
78 src/gui/pages/history.cc | |
54
466ac9870df9
add stub pages (to be implemented)
Paper <mrpapersonic@gmail.com>
parents:
51
diff
changeset
|
79 |
46 | 80 # Custom widgets |
81 | 81 src/gui/widgets/anime_info.cc |
82 src/gui/widgets/poster.cc | |
83 src/gui/widgets/clickable_label.cc | |
84 src/gui/widgets/sidebar.cc | |
85 src/gui/widgets/text.cc | |
86 src/gui/widgets/optional_date.cc | |
9 | 87 |
88 # Dialogs | |
81 | 89 src/gui/dialog/about.cc |
90 src/gui/dialog/information.cc | |
91 src/gui/dialog/settings.cc | |
92 src/gui/dialog/settings/application.cc | |
93 src/gui/dialog/settings/services.cc | |
116
254b1d2b7096
settings: add torrents page, make rss feed configurable
Paper <mrpapersonic@gmail.com>
parents:
114
diff
changeset
|
94 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
|
95 src/gui/dialog/settings/recognition.cc |
9 | 96 |
10 | 97 # Translate |
81 | 98 src/gui/translate/anime.cc |
99 src/gui/translate/anilist.cc | |
90
c4bb49c2f6eb
config: improve handling of vars
Paper <mrpapersonic@gmail.com>
parents:
82
diff
changeset
|
100 src/gui/translate/config.cc |
10 | 101 |
9 | 102 # Services (only AniList for now) |
81 | 103 src/services/services.cc |
104 src/services/anilist.cc | |
9 | 105 |
64 | 106 # Tracking |
82
8b65c417c225
*: fix old stuff, make video players and extensions constants
Paper <mrpapersonic@gmail.com>
parents:
81
diff
changeset
|
107 src/track/constants.cc |
81 | 108 src/track/media.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 |
138
28842a8d0c6b
dep/animia: huge refactor (again...)
Paper <mrpapersonic@gmail.com>
parents:
128
diff
changeset
|
113 rc/player_data.qrc |
2 | 114 ) |
115 | |
108 | 116 set(INCLUDE |
117 include | |
118 dep/pugixml/src | |
119 dep/animia/include | |
120 dep/anitomy | |
121 dep | |
122 ) | |
123 | |
124 set(TS_FILES | |
125 rc/locale/en_GB.ts | |
126 rc/locale/es.ts | |
127 ) | |
128 | |
129 set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/rc/locale") | |
130 | |
131 # 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
|
132 if(UPDATE_TRANSLATIONS) |
109
79714c95a145
*: add translation files and locale files
Paper <mrpapersonic@gmail.com>
parents:
108
diff
changeset
|
133 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
|
134 endif() |
108 | 135 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
|
136 list(APPEND SRC_FILES ${QM_FILES}) |
108 | 137 |
138 function(qt_create_resource_file outfile) | |
139 set(QRC "<!DOCTYPE rcc><RCC version=\"1.0\">\n\t<qresource>\n") | |
140 get_filename_component(DIR ${outfile} DIRECTORY) | |
141 foreach (qm ${ARGN}) | |
142 file(RELATIVE_PATH name ${DIR} ${qm}) | |
143 string(APPEND QRC "\t\t<file>${name}</file>\n") | |
144 endforeach() | |
145 string(APPEND QRC "\t</qresource>\n</RCC>\n") | |
146 file(WRITE ${outfile} ${QRC}) | |
147 endfunction() | |
148 | |
149 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
|
150 list(APPEND SRC_FILES "${CMAKE_CURRENT_BINARY_DIR}/rc/locale.qrc") |
108 | 151 |
152 # This is also used in the Win32 rc file | |
103 | 153 set(RC_INFO_STRING "A lightweight anime tracker built with Qt.") |
154 | |
9 | 155 if(APPLE) # Mac OS X (or OS X (or macOS)) |
103 | 156 set(MACOSX_BUNDLE_BUNDLE_NAME "Minori") |
157 set(MACOSX_BUNDLE_BUNDLE_VERSION ${minori_VERSION}) | |
158 set(MACOSX_BUNDLE_COPYRIGHT "Copyright (C) Paper 2023") | |
159 set(MACOSX_BUNDLE_GUI_IDENTIFIER "org.eu.us.paper.minori") | |
160 set(MACOSX_BUNDLE_INFO_STRING ${RC_INFO_STRING}) | |
161 set(MACOSX_BUNDLE_ICON_FILE rc/osx/favicon.icns) | |
162 set(app_icon_osx "${CMAKE_CURRENT_SOURCE_DIR}/rc/osx/favicon.icns") | |
163 set_source_files_properties(${app_icon_osx} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") | |
164 | |
5 | 165 list(APPEND SRC_FILES |
166 src/sys/osx/dark_theme.mm | |
167 src/sys/osx/filesystem.mm | |
103 | 168 ${app_icon_osx} |
5 | 169 ) |
9 | 170 elseif(WIN32) # Windows |
103 | 171 configure_file( |
172 ${CMAKE_CURRENT_SOURCE_DIR}/rc/win32/version.rc.in | |
173 ${CMAKE_CURRENT_BINARY_DIR}/rc/version.rc | |
174 @ONLY | |
175 ) | |
176 list(APPEND SRC_FILES | |
177 src/sys/win32/dark_theme.cc | |
178 rc/win32/resource.rc | |
179 ${CMAKE_CURRENT_BINARY_DIR}/rc/version.rc | |
180 ) | |
124
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
181 elseif(LINUX) |
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
182 configure_file( |
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
183 ${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
|
184 ${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
|
185 @ONLY |
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
186 ) |
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
187 configure_file( |
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
188 ${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
|
189 ${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
|
190 COPYONLY |
4c812fdf82a6
linux: add material for creating appimages, upload artifacts after CI build
Paper <mrpapersonic@gmail.com>
parents:
120
diff
changeset
|
191 ) |
2 | 192 endif() |
193 | |
103 | 194 add_executable(minori WIN32 MACOSX_BUNDLE ${SRC_FILES}) |
128
859d2a957940
cmake: set CXX_STANDARD to 17
Paper <mrpapersonic@gmail.com>
parents:
124
diff
changeset
|
195 set_property(TARGET minori PROPERTY CXX_STANDARD 17) |
11 | 196 set_property(TARGET minori PROPERTY AUTOMOC ON) |
197 set_property(TARGET minori PROPERTY AUTORCC ON) | |
2 | 198 |
108 | 199 target_include_directories(minori PUBLIC ${CURL_INCLUDE_DIRS} PRIVATE ${INCLUDE}) |
200 target_include_directories(minori PUBLIC ${Qt${QT_VERSION_MAJOR}Widgets_INCLUDE_DIRS}) | |
64 | 201 target_compile_options(minori PRIVATE -Wall -Wpedantic -Wextra -Wsuggest-override -Wold-style-cast) |
5 | 202 if(APPLE) |
11 | 203 target_compile_definitions(minori PUBLIC MACOSX) |
9 | 204 elseif(WIN32) |
11 | 205 target_compile_definitions(minori PUBLIC WIN32) |
5 | 206 endif() |
11 | 207 target_link_libraries(minori ${LIBRARIES}) |
138
28842a8d0c6b
dep/animia: huge refactor (again...)
Paper <mrpapersonic@gmail.com>
parents:
128
diff
changeset
|
208 |
28842a8d0c6b
dep/animia: huge refactor (again...)
Paper <mrpapersonic@gmail.com>
parents:
128
diff
changeset
|
209 if(WIN32) |
28842a8d0c6b
dep/animia: huge refactor (again...)
Paper <mrpapersonic@gmail.com>
parents:
128
diff
changeset
|
210 install(FILES $<TARGET_RUNTIME_DLLS:minori> TYPE BIN) |
28842a8d0c6b
dep/animia: huge refactor (again...)
Paper <mrpapersonic@gmail.com>
parents:
128
diff
changeset
|
211 endif() |