Skip to content
This repository was archived by the owner on Oct 7, 2025. It is now read-only.

Commit dcc7a3f

Browse files
committed
use spirv from glslang
1 parent 9ff8a1a commit dcc7a3f

File tree

5 files changed

+63
-52
lines changed

5 files changed

+63
-52
lines changed

.github/workflows/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
run: |
2020
mkdir build
2121
cd build
22-
cmake ..
22+
cmake -DMGL_BUILD_TEST=TRUE ..
2323
2424
- name: Build
2525
run: |

CMakeLists.txt

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
cmake_minimum_required(VERSION 3.15)
22
project(MGL LANGUAGES C CXX OBJC)
33

4-
execute_process(COMMAND "bash" "clone_external.sh" WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/external" COMMAND_ECHO STDOUT)
54
execute_process(COMMAND "bash" "build_external.sh" WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/external" COMMAND_ECHO STDOUT)
65

76
set(CMAKE_C_STANDARD 17)
87
set(CMAKE_CXX_STANDARD 20)
98

109
# Include paths
1110
include_directories(
11+
#external/SPIRV-Tools/include
1212
MGL/SPIRV/SPIRV-Cross
1313
MGL/include
1414
MGL/include/GL
1515
external/SPIRV-Cross
16-
external/SPIRV-Tools/include
16+
external/SPIRV-Headers/include
17+
external/glslang/SPIRV
1718
external/glslang/glslang/Include
19+
external/glslang/glslang/Public
1820
)
1921

2022
# Gather all source files
@@ -29,20 +31,20 @@ add_library(mgl STATIC ${MGL_SOURCES})
2931

3032
# Link libraries
3133
target_link_libraries(mgl PUBLIC
32-
"${CMAKE_CURRENT_LIST_DIR}/external/glslang/build/glslang/libGenericCodeGen.a"
33-
"${CMAKE_CURRENT_LIST_DIR}/external/glslang/build/glslang/libMachineIndependent.a"
34-
"${CMAKE_CURRENT_LIST_DIR}/external/glslang/build/glslang/libglslang-default-resource-limits.a"
35-
"${CMAKE_CURRENT_LIST_DIR}/external/glslang/build/glslang/libglslang.a"
36-
"${CMAKE_CURRENT_LIST_DIR}/external/glslang/build/glslang/OSDependent/Unix/libOSDependent.a"
37-
"${CMAKE_CURRENT_LIST_DIR}/external/glslang/build/SPIRV/libSPIRV.a"
38-
"${CMAKE_CURRENT_LIST_DIR}/external/SPIRV-Cross/build/libspirv-cross-c.a"
39-
"${CMAKE_CURRENT_LIST_DIR}/external/SPIRV-Cross/build/libspirv-cross-core.a"
40-
"${CMAKE_CURRENT_LIST_DIR}/external/SPIRV-Cross/build/libspirv-cross-cpp.a"
41-
"${CMAKE_CURRENT_LIST_DIR}/external/SPIRV-Cross/build/libspirv-cross-glsl.a"
42-
"${CMAKE_CURRENT_LIST_DIR}/external/SPIRV-Cross/build/libspirv-cross-hlsl.a"
43-
"${CMAKE_CURRENT_LIST_DIR}/external/SPIRV-Cross/build/libspirv-cross-msl.a"
44-
"${CMAKE_CURRENT_LIST_DIR}/external/SPIRV-Cross/build/libspirv-cross-reflect.a"
45-
"${CMAKE_CURRENT_LIST_DIR}/external/SPIRV-Cross/build/libspirv-cross-util.a"
34+
"${CMAKE_CURRENT_SOURCE_DIR}/external/SPIRV-Cross/build/libspirv-cross-c.a"
35+
"${CMAKE_CURRENT_SOURCE_DIR}/external/SPIRV-Cross/build/libspirv-cross-core.a"
36+
"${CMAKE_CURRENT_SOURCE_DIR}/external/SPIRV-Cross/build/libspirv-cross-cpp.a"
37+
"${CMAKE_CURRENT_SOURCE_DIR}/external/SPIRV-Cross/build/libspirv-cross-glsl.a"
38+
"${CMAKE_CURRENT_SOURCE_DIR}/external/SPIRV-Cross/build/libspirv-cross-hlsl.a"
39+
"${CMAKE_CURRENT_SOURCE_DIR}/external/SPIRV-Cross/build/libspirv-cross-msl.a"
40+
"${CMAKE_CURRENT_SOURCE_DIR}/external/SPIRV-Cross/build/libspirv-cross-reflect.a"
41+
"${CMAKE_CURRENT_SOURCE_DIR}/external/SPIRV-Cross/build/libspirv-cross-util.a"
42+
"${CMAKE_CURRENT_SOURCE_DIR}/external/glslang/build/SPIRV/libSPIRV.a"
43+
"${CMAKE_CURRENT_SOURCE_DIR}/external/glslang/build/glslang/OSDependent/Unix/libOSDependent.a"
44+
"${CMAKE_CURRENT_SOURCE_DIR}/external/glslang/build/glslang/libGenericCodeGen.a"
45+
"${CMAKE_CURRENT_SOURCE_DIR}/external/glslang/build/glslang/libMachineIndependent.a"
46+
"${CMAKE_CURRENT_SOURCE_DIR}/external/glslang/build/glslang/libglslang-default-resource-limits.a"
47+
"${CMAKE_CURRENT_SOURCE_DIR}/external/glslang/build/glslang/libglslang.a"
4648
)
4749

4850
# macOS Frameworks
@@ -56,3 +58,20 @@ target_link_libraries(mgl PUBLIC
5658
"-framework OpenGL"
5759
"-framework QuartzCore"
5860
)
61+
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")
74+
75+
add_executable(mgl_test mgl_test.cpp)
76+
target_link_libraries(mgl_test glfw glm)
77+
endif()

external/build_external.sh

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,36 @@
1-
set SDKROOT=`xcrun --show-sdk-path`
1+
#!/bin/bash
22

3-
cp ../MGL/include/MGLContext.h glfw/src
4-
cp ../MGL/include/MGLRenderer.h glfw/src
5-
cd SPIRV-Tools
6-
mkdir build
7-
cd build
8-
cmake ..
9-
make -j 4
10-
cd ../..
3+
set -e # Stop on error
4+
5+
# Optional: for macOS SDK if you're using system frameworks
6+
# export SDKROOT=$(xcrun --show-sdk-path)
7+
8+
# Clone only the required repositories
9+
git clone --depth 1 https://github.com/KhronosGroup/glslang.git
10+
git clone --depth 1 https://github.com/KhronosGroup/SPIRV-Cross.git
11+
git clone --depth 1 https://github.com/KhronosGroup/SPIRV-Headers.git
12+
13+
# === Build SPIRV-Cross ===
1114
cd SPIRV-Cross
12-
mkdir build
13-
cd build
14-
cmake ..
15-
make -j 4
16-
cd ../..
17-
cd SPIRV-Headers
18-
mkdir build
19-
cd build
20-
cmake ..
21-
make -j 4
15+
mkdir -p build && cd build
16+
cmake -DSPIRV-Headers_SOURCE_DIR=../../SPIRV-Headers ..
17+
make -j$(nproc)
2218
cd ../..
19+
20+
# === Build glslang ===
2321
cd glslang
22+
# This updates autogenerated files (optional but recommended)
2423
./update_glslang_sources.py
25-
mkdir build
26-
cd build
27-
cmake ..
28-
make -j 4
24+
mkdir -p build && cd build
25+
cmake -DSPIRV-Headers_SOURCE_DIR=../../SPIRV-Headers ..
26+
make -j$(nproc)
2927
cd ../..
28+
29+
# === Build glfw ===
30+
cp ../MGL/include/MGLContext.h glfw/src
31+
cp ../MGL/include/MGLRenderer.h glfw/src
3032
cd glfw
31-
mkdir build
32-
cd build
33+
mkdir -p build && cd build
3334
cmake ..
34-
make -j 4 glfw
35+
make -j$(nproc)
3536
cd ../..

external/clone_external.sh

Lines changed: 0 additions & 9 deletions
This file was deleted.

mgl_test.cpp

Whitespace-only changes.

0 commit comments

Comments
 (0)