1- cmake_minimum_required (VERSION 3.15 )
1+ cmake_minimum_required (VERSION 3.31 )
22project (MGL LANGUAGES C CXX OBJC)
33
4- execute_process (COMMAND "bash " "build_external.sh " WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR} /external" COMMAND_ECHO STDOUT)
4+ execute_process (COMMAND "python3 " "update_glslang_sources.py " WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR} /external/glslang " COMMAND_ECHO STDOUT)
55
6+ set (CMAKE_SKIP_INSTALL_RULES TRUE ) # disable installs
7+ set (CMAKE_POLICY_VERSION_MINIMUM 3.31) # override cmake minimum version for dependencies
68set (CMAKE_C_STANDARD 17)
79set (CMAKE_CXX_STANDARD 20)
10+ set (SPIRV_CROSS_CLI OFF CACHE INTERNAL "Build the CLI binary. Requires SPIRV_CROSS_STATIC." )
11+ set (SPIRV_CROSS_ENABLE_TESTS OFF CACHE INTERNAL "Enable SPIRV-Cross tests." )
12+ set (SPIRV_CROSS_SKIP_INSTALL ON CACHE INTERNAL "Skips installation targets." )
13+ set (ENABLE_OPT ON CACHE INTERNAL "use spirv-tools inside glslang" )
814
9- include_directories (
15+ add_subdirectory (external/SPIRV-Cross)
16+ add_subdirectory (external/glslang)
17+ add_subdirectory (external/glfw)
18+
19+ file (GLOB_RECURSE MGL_SOURCES
20+ MGL/src/*.c
21+ MGL/src/*.m
22+ MGL/spirv_cross_c.cpp
23+ )
24+ add_library (mgl_static STATIC ${MGL_SOURCES} )
25+ target_include_directories (mgl_static PUBLIC
1026 MGL/SPIRV/SPIRV-Cross
1127 MGL/include
1228 MGL/include /GL
@@ -16,39 +32,18 @@ include_directories(
1632 external/glslang/glslang/Include
1733 external/glslang/glslang/Public
1834)
19-
20- file (GLOB_RECURSE MGL_SOURCES
21- MGL/src/*.c
22- MGL/src/*.m
23- MGL/spirv_cross_c.cpp
24- )
25-
26- add_library (mgl STATIC ${MGL_SOURCES} )
27-
28- target_link_libraries (mgl PUBLIC
29- "${CMAKE_CURRENT_SOURCE_DIR} /external/SPIRV-Cross/build/libspirv-cross-c.a"
30- "${CMAKE_CURRENT_SOURCE_DIR} /external/SPIRV-Cross/build/libspirv-cross-core.a"
31- "${CMAKE_CURRENT_SOURCE_DIR} /external/SPIRV-Cross/build/libspirv-cross-cpp.a"
32- "${CMAKE_CURRENT_SOURCE_DIR} /external/SPIRV-Cross/build/libspirv-cross-glsl.a"
33- "${CMAKE_CURRENT_SOURCE_DIR} /external/SPIRV-Cross/build/libspirv-cross-hlsl.a"
34- "${CMAKE_CURRENT_SOURCE_DIR} /external/SPIRV-Cross/build/libspirv-cross-msl.a"
35- "${CMAKE_CURRENT_SOURCE_DIR} /external/SPIRV-Cross/build/libspirv-cross-reflect.a"
36- "${CMAKE_CURRENT_SOURCE_DIR} /external/SPIRV-Cross/build/libspirv-cross-util.a"
37- "${CMAKE_CURRENT_SOURCE_DIR} /external/glslang/build/External/spirv-tools/source/diff/libSPIRV-Tools-diff.a"
38- "${CMAKE_CURRENT_SOURCE_DIR} /external/glslang/build/External/spirv-tools/source/libSPIRV-Tools.a"
39- "${CMAKE_CURRENT_SOURCE_DIR} /external/glslang/build/External/spirv-tools/source/link/libSPIRV-Tools-link.a"
40- "${CMAKE_CURRENT_SOURCE_DIR} /external/glslang/build/External/spirv-tools/source/lint/libSPIRV-Tools-lint.a"
41- "${CMAKE_CURRENT_SOURCE_DIR} /external/glslang/build/External/spirv-tools/source/opt/libSPIRV-Tools-opt.a"
42- "${CMAKE_CURRENT_SOURCE_DIR} /external/glslang/build/External/spirv-tools/source/reduce/libSPIRV-Tools-reduce.a"
43- "${CMAKE_CURRENT_SOURCE_DIR} /external/glslang/build/SPIRV/libSPIRV.a"
44- "${CMAKE_CURRENT_SOURCE_DIR} /external/glslang/build/glslang/OSDependent/Unix/libOSDependent.a"
45- "${CMAKE_CURRENT_SOURCE_DIR} /external/glslang/build/glslang/libGenericCodeGen.a"
46- "${CMAKE_CURRENT_SOURCE_DIR} /external/glslang/build/glslang/libMachineIndependent.a"
47- "${CMAKE_CURRENT_SOURCE_DIR} /external/glslang/build/glslang/libglslang-default-resource-limits.a"
48- "${CMAKE_CURRENT_SOURCE_DIR} /external/glslang/build/glslang/libglslang.a"
35+ target_link_libraries (mgl_static PUBLIC
36+ glslang
37+ glslang-default-resource -limits
38+ spirv-cross-core
39+ spirv-cross-cpp
40+ spirv-cross-glsl
41+ spirv-cross-hlsl
42+ spirv-cross-msl
43+ spirv-cross-reflect
44+ spirv-cross-util
4945)
50-
51- target_link_libraries (mgl PUBLIC
46+ target_link_libraries (mgl_static PUBLIC
5247 "-framework AppKit"
5348 "-framework Cocoa"
5449 "-framework CoreFoundation"
@@ -59,19 +54,10 @@ target_link_libraries(mgl PUBLIC
5954 "-framework QuartzCore"
6055)
6156
62- if (MGL_BUILD_TEST)
63- add_library (glfw-imp STATIC IMPORTED )
64- set_target_properties (glfw-imp PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR} /external/glfw/build/src/libglfw3.a" )
65-
66- add_library (glfw INTERFACE )
67- target_link_libraries (glfw INTERFACE glfw-imp mgl)
68- target_include_directories (glfw INTERFACE "external/glfw/include" )
69-
70- add_dependencies (glfw mgl)
71-
72- add_library (glm INTERFACE )
73- target_include_directories (glm INTERFACE "mgl/MGL/include" )
57+ target_link_libraries (glfw PUBLIC mgl_static)
7458
59+ option (MGL_BUILD_TEST "Build mgl_test" OFF )
60+ if (MGL_BUILD_TEST)
7561 add_executable (mgl_test mgl_test.cpp)
76- target_link_libraries (mgl_test glfw glm )
62+ target_link_libraries (mgl_test mgl_static glfw )
7763endif ()
0 commit comments