diff --git a/.gitignore b/.gitignore index c7c7cd2..bc41e13 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ compile_commands.json webgpu # CMake +lib/ CMakeCache.txt CMakeFiles/ CPackConfig.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 7bf9ae8..0b60519 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,28 +16,6 @@ if(CMAKE_EXPORT_COMPILE_COMMANDS) ${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}) endif() -add_subdirectory(extern/SDL3) -add_subdirectory(extern/SDL3_image) -add_subdirectory(extern/cglm) -add_definitions(-DGLEW_STATIC) -set(OpenGL_GL_PREFERENCE GLVND) -find_package(OpenGL) - -include(FetchContent) -cmake_policy(SET CMP0135 NEW) #DOWNLOAD_EXTRACT_TIMESTAMP -FetchContent_Declare( - glew - URL https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.tgz - SOURCE_SUBDIR build/cmake -) - - -file(GLOB_RECURSE SOURCE_FILES - ${CMAKE_SOURCE_DIR}/src/*.c) -file(GLOB_RECURSE HEADER_FILES - ${CMAKE_SOURCE_DIR}/src/*.h) -add_executable(${PROJECT_NAME} ${HEADER_FILES} ${SOURCE_FILES}) - # Error on memory address issues in debug mode if(CMAKE_BUILD_TYPE MATCHES "Debug") set( @@ -49,15 +27,70 @@ if(CMAKE_BUILD_TYPE MATCHES "Debug") ) endif() + +option(USE_VENDORED_LIBRARIES "Use vendored libraries" ON) + +if(USE_VENDORED_LIBRARIES) + add_definitions(-DSDL_STATIC=ON) + add_subdirectory(extern/SDL3 EXCLUDE_FROM_ALL) + set(SDL3_LIBRARIES SDL3::SDL3) + set(SDL3_INCLUDE_DIRS ${SDL3_SOURCE_DIR}/include) + set(SDL3_image_INCLUDE_DIRS ${SDL3_IMAGE_SOURCE_DIR}/include) + + add_subdirectory(extern/SDL3_image) + set(SDL3_image_LIBRARIES SDL3_image::SDL3_image) + + add_subdirectory(extern/cglm) + set(CGLM_LIBRARIES cglm) + set(CGLM_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/cglm/include) + + include(FetchContent) + set(BUILD_UTILS OFF CACHE INTERNAL "") + set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "") + add_definitions(-DGLEW_STATIC) + cmake_policy(SET CMP0135 NEW) #DOWNLOAD_EXTRACT_TIMESTAMP + FetchContent_Declare( + glew + URL https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.tgz + SOURCE_SUBDIR build/cmake + ) + FetchContent_MakeAvailable(glew) + set(GLEW_LIBRARIES glew_s) + set(GLEW_INCLUDE_DIRS ${glew_SOURCE_DIR}/include) + + + set(OpenGL_GL_PREFERENCE GLVND) + find_package(OpenGL REQUIRED) + set(OPENGL_LIBRARIES ${OPENGL_gl_LIBRARY}) + set(OPENGL_INCLUDE_DIRS ${OPENGL_INCLUDE_DIR}) +else() + find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3-shared) +endif() + +get_cmake_property(_variableNames VARIABLES) +list (SORT _variableNames) +foreach (_variableName ${_variableNames}) + message(STATUS "${_variableName}=${${_variableName}}") +endforeach() + +file(GLOB_RECURSE SOURCE_FILES + ${CMAKE_SOURCE_DIR}/src/*.c) +file(GLOB_RECURSE HEADER_FILES + ${CMAKE_SOURCE_DIR}/src/*.h) +add_executable(${PROJECT_NAME} ${HEADER_FILES} ${SOURCE_FILES}) + target_include_directories(${PROJECT_NAME} PRIVATE ${SDL3_INCLUDE_DIRS} ${SDL3_image_INCLUDE_DIRS} - ${GLFW_INCLUDE_DIRS} ${CGLM_INCLUDE_DIRS} + ${GLEW_INCLUDE_DIRS} + ${OPENGL_INCLUDE_DIRS} ) -target_link_libraries(${PROJECT_NAME} +target_link_libraries(${PROJECT_NAME} PRIVATE ${SDL3_LIBRARIES} ${SDL3_image_LIBRARIES} ${CGLM_LIBRARIES} + ${GLEW_LIBRARIES} + ${OPENGL_LIBRARIES} )