cmake_minimum_required(VERSION 3.18..3.27) project(JGL VERSION 1.0 LANGUAGES CXX ) if (PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR) message(FATAL_ERROR "In-source builds are not allowed") endif() set(CMAKE_CXX_STANDARD 20) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") # Enable Package Managers include(cmake/CPM.cmake) CPMAddPackage( NAME mcolor URL https://git.redacted.cc/maxine/mcolor/archive/Release-1.zip ) CPMAddPackage( NAME J3ML URL https://git.redacted.cc/josh/j3ml/archive/3.4.5.zip ) CPMAddPackage( NAME ReWindow URL https://git.redacted.cc/Redacted/ReWindow/archive/Prerelease-34.zip ) CPMAddPackage( NAME GLAD URL https://git.redacted.cc/Redacted/glad/archive/v2.1ext_fbo_depthtexture_shadow_anisotropic_instanced.zip ) CPMAddPackage( NAME jlog URL https://git.redacted.cc/josh/jlog/Prerelease-19.zip ) if (WIN32) CPMAddPackage( NAME freetype URL https://github.com/freetype/freetype/archive/refs/tags/VER-2-13-2.zip ) endif() #set(CMAKE_CXX_FLAGS "-O3 -Wall -Wextra") file(COPY "assets" DESTINATION "${PROJECT_BINARY_DIR}") file(GLOB_RECURSE ASSETS "assets/*") file(GLOB_RECURSE HEADERS "include/*.h" "include/*.hpp" ) file(GLOB_RECURSE SOURCES "src/*.c" "src/*.cpp" "src/*.h") if (UNIX AND NOT APPLE) find_package(Freetype REQUIRED) add_library(JGL SHARED ${SOURCES}) endif() if (WIN32) add_library(JGL STATIC ${SOURCES}) endif() set_target_properties(JGL PROPERTIES LINKER_LANGUAGE CXX) #Don't expose these ones. include_directories( ${ReWindow_SOURCE_DIR}/include ${Event_SOURCE_DIR}/include ) target_include_directories(JGL PUBLIC ${PROJECT_SOURCE_DIR}/include ${mcolor_SOURCE_DIR}/include ${J3ML_SOURCE_DIR}/include ${jlog_SOURCE_DIR}/include ${glad_SOURCE_DIR}/include ) add_executable(JGL_Demo main.cpp) #set_target_properties(JGL_Demo PROPERTIES LINK_FLAGS "-Wl,-rpath,./lib") if (UNIX AND NOT APPLE) target_include_directories(JGL PRIVATE ${FREETYPE_INCLUDE_DIRS} ) target_link_libraries(JGL PRIVATE ${FREETYPE_LIBRARIES}) target_link_libraries(JGL PUBLIC mcolor J3ML jlog glad) endif() if (WIN32) target_include_directories(JGL PRIVATE ${freetype_SOURCE_DIR}/include) target_link_libraries(JGL PRIVATE freetype) target_link_libraries(JGL PUBLIC ${OPENGL_LIBRARIES} mcolor J3ML glad jlog glad) endif() target_link_libraries(JGL_Demo PUBLIC JGL ReWindow Event glad)