129 lines
3.3 KiB
CMake
129 lines
3.3 KiB
CMake
# /CMakeLists.txt
|
|
|
|
set(CMAKE_CXX_STANDARD 23)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
cmake_minimum_required(VERSION 3.28)
|
|
project(IDHAN LANGUAGES CXX)
|
|
|
|
enable_testing()
|
|
|
|
find_program(CCACHE_FOUND ccache)
|
|
if (CCACHE_FOUND)
|
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
|
endif ()
|
|
|
|
# Includes fgl_cmake_modules
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/dependencies/libFGL)
|
|
|
|
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_CURRENT_LIST_DIR}/dependencies")
|
|
|
|
PreSetup()
|
|
|
|
option(BUILD_IDHAN_DOCS "Builds the API and source docs" ON)
|
|
option(BUILD_IDHAN_WEBUI "Builds the WASM WebUI for IDHAN server" ON)
|
|
option(BUILD_IDHAN_SERVER "Builds the server" ON)
|
|
|
|
option(BUILD_IDHAN_TESTS "Builds all tests relating to IDHAN" OFF)
|
|
|
|
option(BUILD_IDHAN_CLIENT "Builds the shared library for the IDHANClient" ON)
|
|
|
|
option(BUILD_IDHAN_TOOLS "Builds all tools" OFF)
|
|
option(BUILD_HYDRUS_IMPORTER "Builds the hydrus importer" ON)
|
|
|
|
if (BUILD_HYDRUS_IMPORTER)
|
|
set(BUILD_IDHAN_CLIENT ON)
|
|
endif ()
|
|
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
|
|
#IDHANServer/IDHANClient
|
|
include(postgres)
|
|
include(toml)
|
|
|
|
add_subdirectory(IDHAN)
|
|
if (BUILD_IDHAN_SERVER)
|
|
add_subdirectory(IDHANMigration)
|
|
add_subdirectory(IDHANModules)
|
|
add_subdirectory(IDHANServer)
|
|
endif ()
|
|
if (BUILD_IDHAN_CLIENT)
|
|
add_subdirectory(IDHANClient)
|
|
endif ()
|
|
if (BUILD_IDHAN_TOOLS)
|
|
add_subdirectory(tools/TagEditor)
|
|
endif ()
|
|
if (BUILD_IDHAN_DOCS)
|
|
add_subdirectory(docs)
|
|
endif ()
|
|
|
|
if (BUILD_IDHAN_WEBUI)
|
|
include(ExternalProject)
|
|
|
|
if (NOT DEFINED QT_WASM)
|
|
message(FATAL_ERROR "You must define QT_WASM during cmake config")
|
|
endif ()
|
|
|
|
set(EMSDK ${QT_WASM}/emsdk)
|
|
set(EMSDK_TOOLCHAIN)
|
|
|
|
find_program(QTCMAKE_EXECUTABLE qt-cmake
|
|
PATHS "${QT_WASM}/bin"
|
|
NO_DEFAULT_PATH)
|
|
|
|
if (NOT QTCMAKE_EXECUTABLE)
|
|
message(FATAL_ERROR "qt-cmake not found for wasm")
|
|
endif ()
|
|
|
|
set(WEBUI_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/IDHANWebUI)
|
|
set(WEBUI_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/IDHANWebUI)
|
|
|
|
# In order for this to work you need to set the env variables in /opt/qt6-wasm/qtwasm_env.sh
|
|
# The following is a copy of that file
|
|
# #/opt/qt6-wasm/emsdk/emsdk activate 3.1.70
|
|
#
|
|
# # load emsdk environment
|
|
# # EM_CACHE issue: https://github.com/emscripten-core/emsdk/issues/535
|
|
# EM_CACHE_PATH=~/.cache/qt6-wasm
|
|
# export EM_CACHE=$EM_CACHE_PATH
|
|
# source /opt/qt6-wasm/emsdk/emsdk_env.sh
|
|
# export EM_CACHE=$EM_CACHE_PATH
|
|
# echo "EM_CACHE (override) = $EM_CACHE"
|
|
#
|
|
# # Export Qt6 WebAssembly bin Path
|
|
# echo $PATH | grep -w "/opt/qt6-wasm/bin" > /dev/null
|
|
# if [ $? -ne 0 ]; then
|
|
# export PATH=/opt/qt6-wasm/bin:$PATH
|
|
# fi
|
|
|
|
|
|
ExternalProject_Add(
|
|
IDHANWebUI_WASM
|
|
SOURCE_DIR ${WEBUI_SOURCE_DIR}
|
|
BINARY_DIR ${WEBUI_BUILD_DIR}
|
|
CONFIGURE_COMMAND ${CMAKE_COMMAND}
|
|
-S ${WEBUI_SOURCE_DIR}
|
|
-B ${WEBUI_BUILD_DIR}
|
|
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
|
-DWASM_OUT_DIR=${CMAKE_CURRENT_BINARY_DIR}/bin/static
|
|
BUILD_COMMAND ${CMAKE_COMMAND} --build ${WEBUI_BUILD_DIR}
|
|
INSTALL_COMMAND "" # Needed or this errors
|
|
BUILD_ALWAYS YES
|
|
)
|
|
|
|
add_custom_target(IDHANWebUIFiles DEPENDS ${WEBUI_FILES_OUTPUT})
|
|
add_dependencies(IDHANServer IDHANWebUI_WASM IDHANWebUIFiles)
|
|
endif ()
|
|
|
|
if (BUILD_IDHAN_TESTS)
|
|
#IDHANTests
|
|
add_subdirectory(tests)
|
|
endif ()
|
|
|
|
if (BUILD_HYDRUS_IMPORTER)
|
|
#HydrusImporter
|
|
include(sqlite3)
|
|
add_subdirectory(HydrusImporter)
|
|
endif ()
|
|
|
|
PostSetup() |