cmake_minimum_required(VERSION 3.24) project( JUI VERSION 3.0 LANGUAGES CXX ) if (PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR) message(FATAL_ERROR "In-source builds are not allowed!") endif() set(CMAKE_POSITION_INDEPENDENT_CODE ON) # Fix linker bitching about -fPIC set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED 20) set(CMAKE_CXX_FLAGS "-pedantic -Wall -Wextra -Wno-unknown-pragmas") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") include(cmake/CPM.cmake) include_directories(include) # Add all c++ source file(GLOB_RECURSE SRC_FILES "src/JUI/*.cpp") file(GLOB_RECURSE HEADER_FILES "include/JUI/*.hpp") file(GLOB_RECURSE TEST_SRC_FILES "include/Demos/*.hpp" "src/Demos/*.cpp") #Copy the assets to the build directory. file(COPY "content" DESTINATION "${PROJECT_BINARY_DIR}") #include_directories(lib) # Create JUI Shared Object Library add_library(JUI SHARED ${SRC_FILES} src/Demos/CurveTool/main.cpp include/Demos/CurveTool/CurveToolEditor.h) target_sources(JUI PUBLIC ${HEADER_FILES}) target_include_directories(JUI INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) # Find GLM and add to JUI.so CPMAddPackage( NAME luacpp GITHUB_REPOSITORY jordanvrtanoski/luacpp GIT_TAG v0.2.0 ) find_package(luacpp REQUIRED) CPMAddPackage( NAME glm GITHUB_REPOSITORY g-truc/glm OPTIONS "GLM_STATIC_LIBRARY_ENABLE" #SOURCE_SUBDIR glm GIT_TAG 0.9.9.8 ) find_package(glm REQUIRED) target_link_libraries(JUI PUBLIC glm::glm) # Find fmtlib and add to JUI.so CPMAddPackage( NAME fmt GIT_TAG 8.0.1 GITHUB_REPOSITORY fmtlib/fmt OPTIONS "FMT_INSTALL YES" # create an installable target ) find_package(fmt REQUIRED) target_link_libraries(JUI PUBLIC fmt::fmt) # Add SDL2 to JUI #include(cmake/FindSDL2.cmake) #include(cmake/FindSDL2_gfx.cmake) #include(cmake/FindSDL2_ttf.cmake) find_package(SDL2 REQUIRED) include_directories(${SDL2_INCLUDE_DIRS}) find_package(SDL2_image REQUIRED) include_directories(${SDL2_IMAGE_INCLUDE_DIRS}) find_package(SDL2_gfx REQUIRED) find_package(SDL2_ttf REQUIRED) target_link_libraries(JUI PUBLIC SDL2::Core SDL2::Main SDL2::Image SDL2::GFX SDL2::TTF ) # Add SDL_FontCache to JUI # TODO: Switch to upstream SDL_FontCache, as FC_DrawAlignC is no longer utilized in JUI source CPMAddPackage( NAME FontCache GITHUB_REPOSITORY scientiist/SDL_FontCache #SOURCE_SUBDIR SDL_FontCache GIT_TAG test) find_package(FontCache REQUIRED) target_link_libraries(JUI PUBLIC FontCache) CPMAddPackage("gh:nlohmann/json#v3.11.2") # Create JUI_Demo executable #add_executable(JUI_Demo ${TEST_SRC_FILES}) # Link JUI library to the executable #target_link_libraries(JUI_Demo PUBLIC JUI) add_subdirectory("src/Demos/MinimalSDLIntegrationDemo") add_subdirectory("src/Demos/MockMenu") add_subdirectory("src/Demos/GameInterface") add_subdirectory("src/Demos/CurveTool") # TODO: Export JUI as static lib??