view CMakeLists.txt @ 101:c537996cf67b

*: multitude of config changes 1. theme is now configurable from the settings menu (but you have to restart for it to apply) 2. config is now stored in an INI file, with no method of conversion from json (this repo is private-ish anyway)
author Paper <mrpapersonic@gmail.com>
date Fri, 03 Nov 2023 14:06:02 -0400
parents c4bb49c2f6eb
children b315f3759c56
line wrap: on
line source

cmake_minimum_required(VERSION 3.16)
project(minori LANGUAGES CXX)

# this should check for the target system, rather than
# the host system, for cross-compiling purposes
if(APPLE)
	enable_language(OBJCXX)
endif()

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")

option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
option(USE_QT6 "Build with Qt 6 instead of Qt 5" OFF)

add_subdirectory(dep/anitomy)
add_subdirectory(dep/animia)
add_subdirectory(dep/pugixml)

# Fix for mingw64
list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a")

if(USE_QT6)
	find_package(Qt6 COMPONENTS Widgets REQUIRED)
else()
	find_package(Qt5 COMPONENTS Widgets REQUIRED)
endif()
find_package(CURL REQUIRED)

set(LIBRARIES
	${CURL_LIBRARIES}
	anitomy
	animia
)

if(USE_QT6)
	list(APPEND LIBRARIES ${Qt6Widgets_LIBRARIES})
else()
	list(APPEND LIBRARIES ${Qt5Widgets_LIBRARIES})
endif()

# We need Cocoa for some OS X stuff
if(APPLE)
	find_library(COCOA_LIBRARY Cocoa)
	list(APPEND LIBRARIES ${COCOA_LIBRARY})
endif()

set(SRC_FILES
	# Main entrypoint
	src/main.cc

	# Core files and datatype declarations...
	src/core/anime.cc
	src/core/anime_db.cc
	src/core/config.cc
	src/core/date.cc
	src/core/filesystem.cc
	src/core/http.cc
	src/core/json.cc
	src/core/strings.cc
	src/core/time.cc

	# Main window
	src/gui/window.cc
	src/gui/dark_theme.cc

	# Main window pages
	src/gui/pages/anime_list.cc
	src/gui/pages/now_playing.cc
	src/gui/pages/statistics.cc
	src/gui/pages/search.cc
	src/gui/pages/seasons.cc
	src/gui/pages/torrents.cc
	src/gui/pages/history.cc


	# Custom widgets
	src/gui/widgets/anime_info.cc
	src/gui/widgets/poster.cc
	src/gui/widgets/clickable_label.cc
	src/gui/widgets/sidebar.cc
	src/gui/widgets/text.cc
	src/gui/widgets/optional_date.cc

	# Dialogs
	src/gui/dialog/about.cc
	src/gui/dialog/information.cc
	src/gui/dialog/settings.cc
	src/gui/dialog/settings/application.cc
	src/gui/dialog/settings/services.cc

	# Translate
	src/gui/translate/anime.cc
	src/gui/translate/anilist.cc
	src/gui/translate/config.cc

	# Services (only AniList for now)
	src/services/services.cc
	src/services/anilist.cc

	# Tracking
	src/track/constants.cc
	src/track/media.cc

	# Qt resources
	rc/icons.qrc
	dep/darkstyle/darkstyle.qrc
)

if(APPLE) # Mac OS X (or OS X (or macOS))
	list(APPEND SRC_FILES
		src/sys/osx/dark_theme.mm
		src/sys/osx/filesystem.mm
	)
elseif(WIN32) # Windows
	list(APPEND SRC_FILES src/sys/win32/dark_theme.cc)
endif()

add_executable(minori ${SRC_FILES})
set_property(TARGET minori PROPERTY CXX_STANDARD 11)
set_property(TARGET minori PROPERTY AUTOMOC ON)
set_property(TARGET minori PROPERTY AUTORCC ON)

target_include_directories(minori PUBLIC ${CURL_INCLUDE_DIRS} PRIVATE include dep/pugixml/src dep/animia/include dep/anitomy dep/mini)
if(USE_QT6)
	target_include_directories(minori PUBLIC ${Qt6Widgets_INCLUDE_DIRS})
else()
	target_include_directories(minori PUBLIC ${Qt5Widgets_INCLUDE_DIRS})
endif()
target_compile_options(minori PRIVATE -Wall -Wpedantic -Wextra -Wsuggest-override -Wold-style-cast)
if(APPLE)
	target_compile_definitions(minori PUBLIC MACOSX)
elseif(WIN32)
	target_compile_definitions(minori PUBLIC WIN32)
endif()
target_link_libraries(minori ${LIBRARIES})