Skip to content

Commit 7b62fde

Browse files
committed
Add support for shared library build
1 parent 90add1d commit 7b62fde

File tree

4 files changed

+91
-15
lines changed

4 files changed

+91
-15
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 & 0 deletions
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)
@@ -13,6 +14,8 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
1314
set(CMAKE_CXX_STANDARD 14)
1415

1516
set(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

1720
if (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)
119122
endif()
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 ()

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)