@@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.5)
22
33project (spirv-reflect)
44
5+ OPTION (BUILD_SHARED_LIBS "Build shared library" OFF )
56OPTION (SPIRV_REFLECT_EXECUTABLE "Build spirv-reflect executable" ON )
67
78OPTION (SPIRV_REFLECT_STATIC_LIB "Build a SPIRV-Reflect static library" OFF )
@@ -12,14 +13,15 @@ OPTION(SPIRV_REFLECT_ENABLE_ASAN "Use address sanitization" OFF)
1213set_property (GLOBAL PROPERTY USE_FOLDERS ON )
1314set (CMAKE_CXX_STANDARD 14)
1415
15- set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /bin" )
1616
1717if (SPIRV_REFLECT_ENABLE_ASAN)
1818 add_compile_options (-fsanitize=address -fno-omit-frame-pointer)
1919 add_link_options (-fsanitize=address)
2020endif ()
2121
2222if (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)
119121endif ()
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 ()
0 commit comments