@@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.5)
2
2
3
3
project (spirv-reflect )
4
4
5
+ OPTION (BUILD_SHARED_LIBS "Build shared library" OFF )
5
6
OPTION (SPIRV_REFLECT_EXECUTABLE "Build spirv-reflect executable" ON )
6
7
7
8
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)
12
13
set_property (GLOBAL PROPERTY USE_FOLDERS ON )
13
14
set (CMAKE_CXX_STANDARD 14 )
14
15
15
- set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /bin" )
16
16
17
17
if (SPIRV_REFLECT_ENABLE_ASAN )
18
18
add_compile_options (-fsanitize=address -fno-omit-frame-pointer )
19
19
add_link_options (-fsanitize=address )
20
20
endif ()
21
21
22
22
if (SPIRV_REFLECT_EXECUTABLE )
23
+ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /bin" )
24
+
23
25
# ==========================================================================
24
26
# Compile spirv_reflect.c as C
25
27
# ==========================================================================
@@ -118,3 +120,18 @@ if(SPIRV_REFLECT_STATIC_LIB)
118
120
ARCHIVE DESTINATION lib )
119
121
endif ()
120
122
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 ()
0 commit comments