@@ -6,6 +6,8 @@ cmake_minimum_required(VERSION 2.8.6)
6
6
7
7
project (brotli C)
8
8
9
+ option (BROTLI_DISABLE_SHARED "do not build shared libraries" )
10
+
9
11
# If Brotli is being bundled in another project, we don't want to
10
12
# install anything. However, we want to let people override this, so
11
13
# we'll use the BROTLI_BUNDLED_MODE variable to let them do that; just
@@ -137,24 +139,30 @@ endfunction()
137
139
transform_sources_list("scripts/sources.lst" "${CMAKE_CURRENT_BINARY_DIR} /sources.lst.cmake" )
138
140
include ("${CMAKE_CURRENT_BINARY_DIR} /sources.lst.cmake" )
139
141
140
- add_library (brotlicommon SHARED ${BROTLI_COMMON_C} )
141
- add_library (brotlidec SHARED ${BROTLI_DEC_C} )
142
- add_library (brotlienc SHARED ${BROTLI_ENC_C} )
142
+ if (BROTLI_DISABLE_SHARED)
143
+ set (BROTLI_SHARED_LIBS "" )
144
+ else ()
145
+ set (BROTLI_SHARED_LIBS brotlicommon brotlidec brotlienc)
146
+ add_library (brotlicommon SHARED ${BROTLI_COMMON_C} )
147
+ add_library (brotlidec SHARED ${BROTLI_DEC_C} )
148
+ add_library (brotlienc SHARED ${BROTLI_ENC_C} )
149
+ endif ()
143
150
151
+ set (BROTLI_STATIC_LIBS brotlicommon-static brotlidec-static brotlienc-static )
144
152
add_library (brotlicommon-static STATIC ${BROTLI_COMMON_C} )
145
153
add_library (brotlidec-static STATIC ${BROTLI_DEC_C} )
146
154
add_library (brotlienc-static STATIC ${BROTLI_ENC_C} )
147
155
148
156
# Older CMake versions does not understand INCLUDE_DIRECTORIES property.
149
157
include_directories (${BROTLI_INCLUDE_DIRS} )
150
158
151
- foreach (lib brotlicommon brotlidec brotlienc )
159
+ foreach (lib IN LISTS BROTLI_SHARED_LIBS )
152
160
target_compile_definitions (${lib} PUBLIC "BROTLI_SHARED_COMPILATION" )
153
161
string (TOUPPER "${lib} " LIB)
154
- set_target_properties (${lib} PROPERTIES DEFINE_SYMBOL "${LIB} _SHARED_COMPILATION" )
162
+ set_target_properties (${lib} PROPERTIES DEFINE_SYMBOL "${LIB} _SHARED_COMPILATION" )
155
163
endforeach ()
156
164
157
- foreach (lib brotlicommon brotlidec brotlienc brotlicommon- static brotlidec- static brotlienc- static )
165
+ foreach (lib IN LISTS BROTLI_SHARED_LIBS BROTLI_STATIC_LIBS )
158
166
target_link_libraries (${lib} ${LIBM_LIBRARY} )
159
167
set_property (TARGET ${lib} APPEND PROPERTY INCLUDE_DIRECTORIES ${BROTLI_INCLUDE_DIRS} )
160
168
set_target_properties (${lib} PROPERTIES
@@ -164,8 +172,10 @@ foreach(lib brotlicommon brotlidec brotlienc brotlicommon-static brotlidec-stati
164
172
set_property (TARGET ${lib} APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${BROTLI_INCLUDE_DIRS} " )
165
173
endforeach ()
166
174
175
+ if (NOT BROTLI_DISABLE_SHARED)
167
176
target_link_libraries (brotlidec brotlicommon)
168
177
target_link_libraries (brotlienc brotlicommon)
178
+ endif ()
169
179
170
180
target_link_libraries (brotlidec-static brotlicommon-static )
171
181
target_link_libraries (brotlienc-static brotlicommon-static )
0 commit comments