@@ -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 )
@@ -13,6 +14,8 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
1314set (CMAKE_CXX_STANDARD 14)
1415
1516set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /bin" )
17+ set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} " )
18+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} " )
1619
1720if (SPIRV_REFLECT_ENABLE_ASAN)
1821 add_compile_options (-fsanitize=address -fno-omit-frame-pointer)
@@ -118,3 +121,18 @@ if(SPIRV_REFLECT_STATIC_LIB)
118121 ARCHIVE DESTINATION lib)
119122endif ()
120123
124+ if (BUILD_SHARED_LIBS )
125+ add_library (spirv-reflect SHARED ${CMAKE_CURRENT_SOURCE_DIR} /spirv_reflect.h
126+ ${CMAKE_CURRENT_SOURCE_DIR} /spirv_reflect.c)
127+
128+ target_include_directories (spirv-reflect
129+ PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} )
130+
131+ target_compile_definitions (spirv-reflect PUBLIC SPIRV_REFLECT_SHARED)
132+ target_compile_options (spirv-reflect PRIVATE
133+ $<$<CXX_COMPILER_ID:GNU>:-fvisibility=hidden>)
134+
135+ install (TARGETS spirv-reflect
136+ LIBRARY DESTINATION lib
137+ ARCHIVE DESTINATION lib)
138+ endif ()
0 commit comments