Skip to content

Commit ca21dac

Browse files
authored
Add an option to avoid building shared libraries. (google#766)
Add an option to avoid building shared libraries (for building with EMCC) Drive-by: * maven: ramp up java level to minimal required * travis: replace deprecated clang-5.0 with clang-7 * maven: fallback to jdk10 to void javadoc bug
1 parent 3d17671 commit ca21dac

File tree

3 files changed

+36
-23
lines changed

3 files changed

+36
-23
lines changed

.travis.yml

+18-15
Original file line numberDiff line numberDiff line change
@@ -44,27 +44,27 @@ matrix:
4444
## Test that fuzzer is compiling / working.
4545
###
4646
- os: linux
47-
env: BUILD_SYSTEM=fuzz C_COMPILER=clang-5.0 CXX_COMPILER=clang++-5.0 ASAN_OPTIONS=detect_leaks=0
47+
env: BUILD_SYSTEM=fuzz C_COMPILER=clang-7 CXX_COMPILER=clang++-7 ASAN_OPTIONS=detect_leaks=0
4848
addons:
4949
apt:
5050
sources:
5151
- ubuntu-toolchain-r-test
52-
- llvm-toolchain-trusty-5.0
52+
- llvm-toolchain-xenial-7
5353
packages:
54-
- clang-5.0
54+
- clang-7
5555

5656
###
5757
## clang on Linux
5858
###
5959
- os: linux
60-
env: BUILD_SYSTEM=cmake C_COMPILER=clang-5.0 CXX_COMPILER=clang++-5.0
60+
env: BUILD_SYSTEM=cmake C_COMPILER=clang-7 CXX_COMPILER=clang++-7
6161
addons:
6262
apt:
6363
sources:
64-
- llvm-toolchain-trusty-5.0
64+
- llvm-toolchain-xenial-7
6565
- ubuntu-toolchain-r-test
6666
packages:
67-
- clang-5.0
67+
- clang-7
6868
- os: linux
6969
env: BUILD_SYSTEM=cmake C_COMPILER=clang-3.5 CXX_COMPILER=clang++-3.5
7070
addons:
@@ -145,35 +145,38 @@ matrix:
145145
## Sanitizers
146146
###
147147
- os: linux
148-
env: BUILD_SYSTEM=cmake C_COMPILER=clang-5.0 CXX_COMPILER=clang++-5.0 SANITIZER=address ASAN_OPTIONS=detect_leaks=0
148+
env: BUILD_SYSTEM=cmake C_COMPILER=clang-7 CXX_COMPILER=clang++-7 SANITIZER=address ASAN_OPTIONS=detect_leaks=0
149149
addons:
150150
apt:
151151
sources:
152152
- ubuntu-toolchain-r-test
153-
- llvm-toolchain-trusty-5.0
153+
- llvm-toolchain-xenial-7
154154
packages:
155-
- clang-5.0
155+
- clang-7
156156
- os: linux
157-
env: BUILD_SYSTEM=cmake C_COMPILER=clang-5.0 CXX_COMPILER=clang++-5.0 SANITIZER=thread
157+
env: BUILD_SYSTEM=cmake C_COMPILER=clang-7 CXX_COMPILER=clang++-7 SANITIZER=thread
158158
addons:
159159
apt:
160160
sources:
161161
- ubuntu-toolchain-r-test
162-
- llvm-toolchain-trusty-5.0
162+
- llvm-toolchain-xenial-7
163163
packages:
164-
- clang-5.0
164+
- clang-7
165165
- os: linux
166-
env: BUILD_SYSTEM=cmake C_COMPILER=clang-5.0 CXX_COMPILER=clang++-5.0 SANITIZER=undefined CFLAGS="-fno-sanitize-recover=undefined,integer"
166+
env: BUILD_SYSTEM=cmake C_COMPILER=clang-7 CXX_COMPILER=clang++-7 SANITIZER=undefined CFLAGS="-fno-sanitize-recover=undefined,integer"
167167
addons:
168168
apt:
169169
sources:
170170
- ubuntu-toolchain-r-test
171-
- llvm-toolchain-trusty-5.0
171+
- llvm-toolchain-xenial-7
172172
packages:
173-
- clang-5.0
173+
- clang-7
174174

175175
- os: linux
176176
env: BUILD_SYSTEM=maven
177+
jdk:
178+
# maven + jdk11 + javadoc == trouble
179+
- openjdk10
177180
language: java
178181

179182
- os: linux

CMakeLists.txt

+16-6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ cmake_minimum_required(VERSION 2.8.6)
66

77
project(brotli C)
88

9+
option(BROTLI_DISABLE_SHARED "do not build shared libraries")
10+
911
# If Brotli is being bundled in another project, we don't want to
1012
# install anything. However, we want to let people override this, so
1113
# we'll use the BROTLI_BUNDLED_MODE variable to let them do that; just
@@ -137,24 +139,30 @@ endfunction()
137139
transform_sources_list("scripts/sources.lst" "${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake")
138140
include("${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake")
139141

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()
143150

151+
set(BROTLI_STATIC_LIBS brotlicommon-static brotlidec-static brotlienc-static)
144152
add_library(brotlicommon-static STATIC ${BROTLI_COMMON_C})
145153
add_library(brotlidec-static STATIC ${BROTLI_DEC_C})
146154
add_library(brotlienc-static STATIC ${BROTLI_ENC_C})
147155

148156
# Older CMake versions does not understand INCLUDE_DIRECTORIES property.
149157
include_directories(${BROTLI_INCLUDE_DIRS})
150158

151-
foreach(lib brotlicommon brotlidec brotlienc)
159+
foreach(lib IN LISTS BROTLI_SHARED_LIBS)
152160
target_compile_definitions(${lib} PUBLIC "BROTLI_SHARED_COMPILATION" )
153161
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")
155163
endforeach()
156164

157-
foreach(lib brotlicommon brotlidec brotlienc brotlicommon-static brotlidec-static brotlienc-static)
165+
foreach(lib IN LISTS BROTLI_SHARED_LIBS BROTLI_STATIC_LIBS)
158166
target_link_libraries(${lib} ${LIBM_LIBRARY})
159167
set_property(TARGET ${lib} APPEND PROPERTY INCLUDE_DIRECTORIES ${BROTLI_INCLUDE_DIRS})
160168
set_target_properties(${lib} PROPERTIES
@@ -164,8 +172,10 @@ foreach(lib brotlicommon brotlidec brotlienc brotlicommon-static brotlidec-stati
164172
set_property(TARGET ${lib} APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${BROTLI_INCLUDE_DIRS}")
165173
endforeach()
166174

175+
if(NOT BROTLI_DISABLE_SHARED)
167176
target_link_libraries(brotlidec brotlicommon)
168177
target_link_libraries(brotlienc brotlicommon)
178+
endif()
169179

170180
target_link_libraries(brotlidec-static brotlicommon-static)
171181
target_link_libraries(brotlienc-static brotlicommon-static)

java/org/brotli/pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@
8080
<artifactId>maven-compiler-plugin</artifactId>
8181
<version>3.1</version>
8282
<configuration>
83-
<source>1.5</source>
84-
<target>1.5</target>
83+
<source>1.6</source>
84+
<target>1.6</target>
8585
</configuration>
8686
</plugin>
8787
<plugin>

0 commit comments

Comments
 (0)