Files
IDHAN/CMakeLists.txt

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()