Skip to content

Commit 638331b

Browse files
committed
Add support for shared library build
1 parent 90add1d commit 638331b

File tree

4 files changed

+91
-16
lines changed

4 files changed

+91
-16
lines changed

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,8 @@ bazel-spirv-reflect
77
bazel-SPIRV-Reflect
88
bazel-testlogs
99
/.vs
10-
/.vscode
10+
/.vscode
11+
12+
# CLion-specific:
13+
/.idea
14+
/cmake-build*

CMakeLists.txt

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.5)
22

33
project(spirv-reflect)
44

5+
OPTION(BUILD_SHARED_LIBS "Build shared library" OFF)
56
OPTION(SPIRV_REFLECT_EXECUTABLE "Build spirv-reflect executable" ON)
67

78
OPTION(SPIRV_REFLECT_STATIC_LIB "Build a SPIRV-Reflect static library" OFF)
@@ -12,14 +13,15 @@ OPTION(SPIRV_REFLECT_ENABLE_ASAN "Use address sanitization" OFF)
1213
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
1314
set(CMAKE_CXX_STANDARD 14)
1415

15-
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")
1616

1717
if (SPIRV_REFLECT_ENABLE_ASAN)
1818
add_compile_options(-fsanitize=address -fno-omit-frame-pointer)
1919
add_link_options(-fsanitize=address)
2020
endif()
2121

2222
if (SPIRV_REFLECT_EXECUTABLE)
23+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")
24+
2325
# ==========================================================================
2426
# Compile spirv_reflect.c as C
2527
# ==========================================================================
@@ -118,3 +120,18 @@ if(SPIRV_REFLECT_STATIC_LIB)
118120
ARCHIVE DESTINATION lib)
119121
endif()
120122

123+
if(BUILD_SHARED_LIBS)
124+
add_library(spirv-reflect SHARED ${CMAKE_CURRENT_SOURCE_DIR}/spirv_reflect.h
125+
${CMAKE_CURRENT_SOURCE_DIR}/spirv_reflect.c)
126+
127+
target_include_directories(spirv-reflect
128+
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
129+
130+
target_compile_definitions(spirv-reflect PUBLIC SPIRV_REFLECT_SHARED)
131+
target_compile_options(spirv-reflect PRIVATE
132+
$<$<CXX_COMPILER_ID:GNU>:-fvisibility=hidden>)
133+
134+
install(TARGETS spirv-reflect
135+
LIBRARY DESTINATION lib
136+
ARCHIVE DESTINATION lib)
137+
endif ()

spirv_reflect.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
limitations under the License.
1515
*/
1616

17+
#define SPIRV_REFLECT_IMPLEMENTATION // turn dllimports into dllexports
1718
#include "spirv_reflect.h"
1819

1920
#include <assert.h>

0 commit comments

Comments
 (0)