Skip to content

Commit 35ef5c5

Browse files
authored
Disable PIC in EMCC mode. (google#768)
1 parent ca21dac commit 35ef5c5

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

CMakeLists.txt

+24-7
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,18 @@ cmake_minimum_required(VERSION 2.8.6)
66

77
project(brotli C)
88

9-
option(BROTLI_DISABLE_SHARED "do not build shared libraries")
9+
include(CheckCSourceCompiles)
10+
check_c_source_compiles(
11+
"#if defined(__EMSCRIPTEN__)
12+
int main() {return 0;}
13+
#endif"
14+
BROTLI_EMSCRIPTEN
15+
)
16+
if (BROTLI_EMSCRIPTEN)
17+
message("-- Compiler is EMSCRIPTEN")
18+
else()
19+
message("-- Compiler is not EMSCRIPTEN")
20+
endif()
1021

1122
# If Brotli is being bundled in another project, we don't want to
1223
# install anything. However, we want to let people override this, so
@@ -139,7 +150,7 @@ endfunction()
139150
transform_sources_list("scripts/sources.lst" "${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake")
140151
include("${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake")
141152

142-
if(BROTLI_DISABLE_SHARED)
153+
if(BROTLI_EMSCRIPTEN)
143154
set(BROTLI_SHARED_LIBS "")
144155
else()
145156
set(BROTLI_SHARED_LIBS brotlicommon brotlidec brotlienc)
@@ -167,12 +178,14 @@ foreach(lib IN LISTS BROTLI_SHARED_LIBS BROTLI_STATIC_LIBS)
167178
set_property(TARGET ${lib} APPEND PROPERTY INCLUDE_DIRECTORIES ${BROTLI_INCLUDE_DIRS})
168179
set_target_properties(${lib} PROPERTIES
169180
VERSION "${BROTLI_ABI_COMPATIBILITY}.${BROTLI_ABI_AGE}.${BROTLI_ABI_REVISION}"
170-
SOVERSION "${BROTLI_ABI_COMPATIBILITY}"
171-
POSITION_INDEPENDENT_CODE TRUE)
181+
SOVERSION "${BROTLI_ABI_COMPATIBILITY}")
182+
if(NOT BROTLI_EMSCRIPTEN)
183+
set_target_properties(${lib} PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
184+
endif()
172185
set_property(TARGET ${lib} APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${BROTLI_INCLUDE_DIRS}")
173186
endforeach()
174187

175-
if(NOT BROTLI_DISABLE_SHARED)
188+
if(NOT BROTLI_EMSCRIPTEN)
176189
target_link_libraries(brotlidec brotlicommon)
177190
target_link_libraries(brotlienc brotlicommon)
178191
endif()
@@ -196,6 +209,7 @@ add_executable(brotli ${BROTLI_CLI_C})
196209
target_link_libraries(brotli ${BROTLI_LIBRARIES_STATIC})
197210

198211
# Installation
212+
if(NOT BROTLI_EMSCRIPTEN)
199213
if(NOT BROTLI_BUNDLED_MODE)
200214
install(
201215
TARGETS brotli
@@ -220,7 +234,8 @@ if(NOT BROTLI_BUNDLED_MODE)
220234
DIRECTORY ${BROTLI_INCLUDE_DIRS}/brotli
221235
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
222236
)
223-
endif()
237+
endif() # BROTLI_BUNDLED_MODE
238+
endif() # BROTLI_EMSCRIPTEN
224239

225240
# Tests
226241

@@ -376,14 +391,16 @@ transform_pc_file("scripts/libbrotlidec.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libb
376391

377392
transform_pc_file("scripts/libbrotlienc.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libbrotlienc.pc" "${BROTLI_VERSION}")
378393

394+
if(NOT BROTLI_EMSCRIPTEN)
379395
if(NOT BROTLI_BUNDLED_MODE)
380396
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libbrotlicommon.pc"
381397
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
382398
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libbrotlidec.pc"
383399
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
384400
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libbrotlienc.pc"
385401
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
386-
endif()
402+
endif() # BROTLI_BUNDLED_MODE
403+
endif() # BROTLI_EMSCRIPTEN
387404

388405
if (ENABLE_COVERAGE STREQUAL "yes")
389406
SETUP_TARGET_FOR_COVERAGE(coverage test coverage)

0 commit comments

Comments
 (0)