Skip to content

Commit 3f8136a

Browse files
authored
Merge pull request #268 from riptano/CPP-796
CPP-796 - Fixing compiler flags for mixed C and C++ code
2 parents 19f9d04 + 4904bd5 commit 3f8136a

77 files changed

Lines changed: 8571 additions & 175 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CMakeLists.txt

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ option(DSE_USE_SPARSEHASH "Use sparsehash" OFF)
5353
option(DSE_USE_STATIC_LIBS "Link static libraries when building executables" OFF)
5454
option(DSE_USE_STD_ATOMIC "Use C++11 atomics library" OFF)
5555
option(DSE_USE_TCMALLOC "Use tcmalloc" OFF)
56-
option(DSE_USE_ZLIB "Use zlib" OFF)
56+
option(DSE_USE_ZLIB "Use zlib" ON)
5757
option(DSE_USE_TIMERFD "Use timerfd (Linux only)" ON)
5858

5959
# Handle testing dependencies
@@ -141,10 +141,6 @@ find_package(Kerberos REQUIRED)
141141
set(DSE_INCLUDES ${DSE_INCLUDES} ${KERBEROS_INCLUDE_DIR})
142142
set(DSE_LIBS ${DSE_LIBS} ${KERBEROS_LIBRARIES})
143143

144-
# Build up compiler flags
145-
set(DSE_DRIVER_CXX_FLAGS ${CASS_DRIVER_CXX_FLAGS})
146-
set(TEST_CXX_FLAGS ${CASS_TEST_CXX_FLAGS})
147-
148144
#------------------------------
149145
# DSE static and shared
150146
#------------------------------
@@ -190,7 +186,6 @@ if(DSE_BUILD_SHARED)
190186
# macro, but if you do, something goes wrong and the cmake output
191187
# warns that policy CMP0042 is violated.
192188
add_library(${PROJECT_LIB_NAME} SHARED ${DSE_ALL_SOURCE_FILES})
193-
set(DSE_DRIVER_CXX_FLAGS "${DSE_DRIVER_CXX_FLAGS} -DDSE_BUILDING")
194189
if(LIBUV_LIBRARY_NAME)
195190
add_dependencies(${PROJECT_LIB_NAME} ${LIBUV_LIBRARY_NAME})
196191
endif()
@@ -207,7 +202,6 @@ if(DSE_BUILD_STATIC)
207202
# macro, but if you do, something goes wrong and the cmake output
208203
# warns that policy CMP0042 is violated.
209204
add_library(${PROJECT_LIB_NAME_STATIC} STATIC ${DSE_ALL_SOURCE_FILES})
210-
set(DSE_DRIVER_CXX_FLAGS "${DSE_DRIVER_CXX_FLAGS} -DDSE_STATIC")
211205
if(LIBUV_LIBRARY_NAME)
212206
add_dependencies(${PROJECT_LIB_NAME_STATIC} ${LIBUV_LIBRARY_NAME})
213207
endif()
@@ -216,12 +210,6 @@ if(DSE_BUILD_STATIC)
216210
endif()
217211
CassConfigureStatic("DSE")
218212

219-
# Update the test flags to indicate the use of the static library
220-
if(DSE_USE_STATIC_LIBS)
221-
set(TEST_CXX_FLAGS "${TEST_CXX_FLAGS} -DDSE_STATIC -DCASS_STATIC")
222-
set(CASS_TEST_CXX_FLAGS "${CASS_TEST_CXX_FLAGS} -DDSE_STATIC -DCASS_STATIC")
223-
endif()
224-
225213
set_property(TARGET ${PROJECT_LIB_NAME_STATIC} PROPERTY FOLDER "Driver/DSE")
226214
endif()
227215

@@ -244,10 +232,6 @@ endif()
244232
# no need to update CMakeLists.txt!
245233

246234
if(DSE_BUILD_EXAMPLES)
247-
if(DSE_USE_STATIC_LIBS)
248-
set(EXAMPLE_C_FLAGS "${EXAMPLE_C_FLAGS} -DDSE_STATIC")
249-
set(CASS_EXAMPLE_C_FLAGS "${CASS_EXAMPLE_C_FLAGS} -DCASS_STATIC")
250-
endif()
251235
CassBuildExamples("examples")
252236
CassBuildExamples("cpp-driver/examples")
253237
endif()

appveyor.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ environment:
4545
LIBUV_VERSION: 1.29.1
4646
OPENSSL_1_0_VERSION: 1.0.2s
4747
OPENSSL_1_1_VERSION: 1.1.1c
48+
ZLIB_VERSION: 1.2.11
4849
matrix:
4950
- CMAKE_GENERATOR: Visual Studio 10 2010
5051
OPENSSL_MAJOR_MINOR: 1.0

cpp-driver/.build.linux.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ install_openssl() {
5454
true # Already installed on image
5555
}
5656

57+
install_zlib() {
58+
true # Already installed on image
59+
}
60+
5761
install_driver() {(
5862
cd packaging
5963

cpp-driver/.build.osx.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,16 @@ install_openssl() {
3939
fi
4040
}
4141

42+
install_zlib() {
43+
if brew ls --versions zlib > /dev/null; then
44+
if ! brew outdated zlib; then
45+
brew upgrade zlib
46+
fi
47+
else
48+
brew install zlib
49+
fi
50+
}
51+
4252
install_driver() {
4353
true
4454
}

cpp-driver/.build.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ get_driver_version() {
6161
install_dependencies() {
6262
install_libuv
6363
install_openssl
64+
install_zlib
6465
}
6566

6667
build_driver() {

cpp-driver/CMakeLists.txt

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ option(CASS_USE_OPENSSL "Use OpenSSL" ON)
4343
option(CASS_USE_STATIC_LIBS "Link static libraries when building executables" OFF)
4444
option(CASS_USE_STD_ATOMIC "Use C++11 atomics library" OFF)
4545
option(CASS_USE_TCMALLOC "Use tcmalloc" OFF)
46-
option(CASS_USE_ZLIB "Use zlib" OFF)
46+
option(CASS_USE_ZLIB "Use zlib" ON)
4747
option(CASS_USE_TIMERFD "Use timerfd (Linux only)" ON)
4848

4949
# Handle testing dependencies
@@ -108,8 +108,6 @@ CassAddIncludes()
108108
CassFindSourceFiles()
109109
CassConfigure()
110110

111-
set(TEST_CXX_FLAGS ${CASS_TEST_CXX_FLAGS})
112-
113111
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
114112
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
115113
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
@@ -147,12 +145,6 @@ if(CASS_BUILD_STATIC)
147145
endif()
148146
CassConfigureStatic("CASS")
149147

150-
# Update the test flags to indicate the use of the static library
151-
if(CASS_USE_STATIC_LIBS)
152-
set(TEST_CXX_FLAGS "${TEST_CXX_FLAGS} -DCASS_STATIC")
153-
set(CASS_TEST_CXX_FLAGS "${CASS_TEST_CXX_FLAGS} -DCASS_STATIC")
154-
endif()
155-
156148
set_property(TARGET ${PROJECT_LIB_NAME_STATIC} PROPERTY FOLDER "Driver/Cassandra")
157149
endif()
158150

@@ -171,9 +163,6 @@ CassConfigureTests()
171163
# no need to update CMakeLists.txt!
172164

173165
if(CASS_BUILD_EXAMPLES)
174-
if(CASS_USE_STATIC_LIBS)
175-
set(CASS_EXAMPLE_C_FLAGS "${CASS_EXAMPLE_C_FLAGS} -DCASS_STATIC")
176-
endif()
177166
CassBuildExamples("examples")
178167
endif()
179168

cpp-driver/appveyor.ps1

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ Boost: v$($Env:BOOST_VERSION)
5555
libssh2: v$($Env:LIBSSH2_VERSION)
5656
libuv: v$($Env:LIBUV_VERSION)
5757
OpenSSL: v$(Get-OpenSSL-Version)
58+
zlib: v$($Env:ZLIB_VERSION)
5859
Build Number: $($Env:APPVEYOR_BUILD_NUMBER)
5960
Branch: $($Env:APPVEYOR_REPO_BRANCH)
6061
SHA: $(Get-Commit-Sha)
@@ -104,6 +105,7 @@ Function Initialize-Build-Environment {
104105
$libuv_version = $Env:LIBUV_VERSION
105106
$openssl_version = Get-OpenSSL-Version
106107
$Env:OPENSSL_VERSION = $openssl_version
108+
$zlib_version = $Env:ZLIB_VERSION
107109
$kerberos_version = "4.1"
108110
$bison_version = "2.4.1"
109111
$perl_version = "5.26.2.1"
@@ -149,13 +151,15 @@ Function Initialize-Build-Environment {
149151
$Env:LIBUV_ROOT_DIR = "$($dependencies_location_prefix)/libuv-$($libuv_version)"
150152
$Env:OPENSSL_BASE_DIR = "$($dependencies_location_prefix)/openssl-$($openssl_version)"
151153
$Env:OPENSSL_ROOT_DIR = "$($Env:OPENSSL_BASE_DIR)/shared"
154+
$Env:ZLIB_ROOT_DIR = "$($dependencies_location_prefix)/zlib-$($zlib_version)"
152155
$Env:DRIVER_INSTALL_DIR = "C:/projects/driver/lib"
153156
$Env:DRIVER_ARTIFACTS_DIR = "C:/projects/driver/artifacts"
154157
$Env:DRIVER_ARTIFACTS_LOGS_DIR = "$($Env:DRIVER_ARTIFACTS_DIR)/logs"
155158

156159
# Generate the environment variables for the third party archives
157160
$Env:LIBUV_ARTIFACT_ARCHIVE = "libuv-$($libuv_version)-win$($architecture)-msvc$($Env:VISUAL_STUDIO_INTERNAL_VERSION).zip"
158161
$Env:OPENSSL_ARTIFACT_ARCHIVE = "openssl-$($openssl_version)-win$($architecture)-msvc$($Env:VISUAL_STUDIO_INTERNAL_VERSION).zip"
162+
$Env:ZLIB_ARTIFACT_ARCHIVE = "zlib-$($zlib_version)-win$($architecture)-msvc$($Env:VISUAL_STUDIO_INTERNAL_VERSION).zip"
159163

160164
# Generate DataStax Enterprise specific environment variables
161165
If ($Env:DRIVER_TYPE -Like "dse") {
@@ -423,6 +427,53 @@ add_dependencies(`${PROJECT_NAME} `${OPENSSL_LIBRARY_NAME})
423427
}
424428
}
425429

430+
If (-Not (Test-Path -Path "$($Env:ZLIB_ROOT_DIR)/lib")) {
431+
New-Item -ItemType Directory -Force -Path "$($dependencies_build_location_prefix)/zlib" | Out-Null
432+
Push-Location -Path "$($dependencies_build_location_prefix)/zlib"
433+
434+
$cmakelists_contents = @"
435+
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
436+
project(zlib)
437+
set(PROJECT_DISPLAY_NAME "AppVeyor CI Build for zlib")
438+
set(PROJECT_MODULE_DIR $cmake_modules_dir)
439+
set(CMAKE_MODULE_PATH `${CMAKE_MODULE_PATH} `${PROJECT_MODULE_DIR})
440+
include(ExternalProject-zlib)
441+
set(GENERATED_SOURCE_FILE `${CMAKE_CURRENT_BINARY_DIR}/main.cpp)
442+
file(REMOVE `${GENERATED_SOURCE_FILE})
443+
file(WRITE `${GENERATED_SOURCE_FILE} "int main () { return 0; }")
444+
add_executable(`${PROJECT_NAME} `${GENERATED_SOURCE_FILE})
445+
add_dependencies(`${PROJECT_NAME} `${ZLIB_LIBRARY_NAME})
446+
"@
447+
$cmakelists_contents | Out-File -FilePath "CMakeLists.txt" -Encoding Utf8 -Force
448+
449+
Write-Host "Configuring zlib"
450+
cmake -G "$($cmake_generator)" -DBUILD_SHARED_LIBS=On "-DZLIB_VERSION=$($Env:ZLIB_VERSION)" "-DZLIB_INSTALL_PREFIX=$($Env:ZLIB_ROOT_DIR)" .
451+
If ($LastExitCode -ne 0) {
452+
If (Test-Path -Path "build/CMakeFiles/CMakeOutput.log") {
453+
Push-AppveyorArtifact "build/CMakeFiles/CMakeOutput.log" -DeploymentName "zlib Output Log"
454+
}
455+
If (Test-Path -Path "build/CMakeFiles/CMakeError.log") {
456+
Push-AppveyorArtifact "build/CMakeFiles/CMakeError.log" -DeploymentName "zlib Error Log"
457+
}
458+
Pop-Location
459+
Throw "Failed to configure zlib for MSVC $($Env:VISUAL_STUDIO_INTERNAL_VERSION)-$($Env:Platform)"
460+
}
461+
Write-Host "Building and Installing zlib"
462+
cmake --build . --config RelWithDebInfo
463+
If ($LastExitCode -ne 0) {
464+
If (Test-Path -Path "build/CMakeFiles/CMakeOutput.log") {
465+
Push-AppveyorArtifact "build/CMakeFiles/CMakeOutput.log" -DeploymentName "zlib Output Log"
466+
}
467+
If (Test-Path -Path "build/CMakeFiles/CMakeError.log") {
468+
Push-AppveyorArtifact "build/CMakeFiles/CMakeError.log" -DeploymentName "zlib Error Log"
469+
}
470+
Pop-Location
471+
Throw "Failed to build zlib for MSVC $($Env:VISUAL_STUDIO_INTERNAL_VERSION)-$($Env:Platform)"
472+
}
473+
474+
Pop-Location
475+
}
476+
426477
# Handle installation of DataStax Enterprise dependencies
427478
If ($Env:DRIVER_TYPE -Like "dse") {
428479
# Determine if Kerberos for Windows should be installed (cached)
@@ -583,7 +634,7 @@ Function Build-Driver {
583634
New-Item -ItemType Directory -Force -Path "$($Env:APPVEYOR_BUILD_FOLDER)/build"
584635
Push-Location "$($Env:APPVEYOR_BUILD_FOLDER)/build"
585636
Write-Host "Configuring DataStax C/C++ $($driver_type) Driver"
586-
cmake -G "$($cmake_generator)" "-D$($Env:DRIVER_TYPE)_MULTICORE_COMPILATION=On" "-D$($Env:DRIVER_TYPE)_USE_OPENSSL=On" "-D$($Env:DRIVER_TYPE)_USE_BOOST_ATOMIC=$($use_boost_atomic)" "-D$($Env:DRIVER_TYPE)_BUILD_EXAMPLES=On" "-D$($Env:DRIVER_TYPE)_BUILD_TESTS=On" "-D$($Env:DRIVER_TYPE)_USE_LIBSSH2=On" "-DCMAKE_INSTALL_PREFIX=`"$($Env:DRIVER_INSTALL_DIR)`"" ..
637+
cmake -G "$($cmake_generator)" "-D$($Env:DRIVER_TYPE)_MULTICORE_COMPILATION=On" "-D$($Env:DRIVER_TYPE)_USE_OPENSSL=On" "-D$($Env:DRIVER_TYPE)_USE_ZLIB=On" "-D$($Env:DRIVER_TYPE)_USE_BOOST_ATOMIC=$($use_boost_atomic)" "-D$($Env:DRIVER_TYPE)_BUILD_EXAMPLES=On" "-D$($Env:DRIVER_TYPE)_BUILD_TESTS=On" "-D$($Env:DRIVER_TYPE)_USE_LIBSSH2=On" "-DCMAKE_INSTALL_PREFIX=`"$($Env:DRIVER_INSTALL_DIR)`"" ..
587638
If ($LastExitCode -ne 0) {
588639
Pop-Location
589640
Throw "Failed to configure DataStax C/C++ $($driver_type) Driver for MSVC $($Env:VISUAL_STUDIO_INTERNAL_VERSION)-$($Env:Platform)"
@@ -707,6 +758,17 @@ a -tzip "$($Env:DRIVER_ARTIFACTS_DIR)/$($Env:OPENSSL_ARTIFACT_ARCHIVE)" -r "$($E
707758
If ($process.ExitCode -ne 0) {
708759
Throw "Failed to archive OpenSSL for MSVC $($Env:VISUAL_STUDIO_INTERNAL_VERSION)-$($Env:Platform)"
709760
}
761+
762+
# Clean up the library dependency directories for zlib packaging
763+
New-Item -ItemType Directory -Force -Path "$($Env:DRIVER_ARTIFACTS_DIR)/zlib" | Out-Null
764+
Copy-Item -Force -Recurse -Path "$($Env:ZLIB_ROOT_DIR)/*" "$($Env:DRIVER_ARTIFACTS_DIR)/zlib" | Out-Null
765+
$argument_list = @"
766+
a -tzip "$($Env:DRIVER_ARTIFACTS_DIR)/$($Env:ZLIB_ARTIFACT_ARCHIVE)" -r "$($Env:DRIVER_ARTIFACTS_DIR)/zlib/*"
767+
"@
768+
$process = Start-Process -FilePath 7z -ArgumentList $argument_list -PassThru -Wait -NoNewWindow
769+
If ($process.ExitCode -ne 0) {
770+
Throw "Failed to archive zlib for MSVC $($Env:VISUAL_STUDIO_INTERNAL_VERSION)-$($Env:Platform)"
771+
}
710772
}
711773

712774
Function Push-Artifacts {
@@ -721,6 +783,7 @@ Function Push-Artifacts {
721783
Push-AppveyorArtifact "$($Env:DRIVER_ARTIFACTS_DIR)/$($Env:DRIVER_ARTIFACT_TESTS_ARCHIVE)" -DeploymentName "DataStax C/C++ $($driver_type) Driver Tests"
722784
Push-AppveyorArtifact "$($Env:DRIVER_ARTIFACTS_DIR)/$($Env:LIBUV_ARTIFACT_ARCHIVE)" -DeploymentName "libuv v$($Env:LIBUV_VERSION)"
723785
Push-AppveyorArtifact "$($Env:DRIVER_ARTIFACTS_DIR)/$($Env:OPENSSL_ARTIFACT_ARCHIVE)" -DeploymentName "OpenSSL v$($Env:OPENSSL_VERSION)"
786+
Push-AppveyorArtifact "$($Env:DRIVER_ARTIFACTS_DIR)/$($Env:ZLIB_ARTIFACT_ARCHIVE)" -DeploymentName "zlib v$($Env:ZLIB_VERSION)"
724787
}
725788
}
726789

@@ -781,6 +844,8 @@ Function Publish-Artifacts {
781844
#TODO: Need to handle OpenSSL v1.1.x if enabled
782845
$openssl_uri = "$($base_uri)/dependencies/openssl/v$($Env:OPENSSL_VERSION)/$($Env:OPENSSL_ARTIFACT_ARCHIVE)"
783846
$openssl_archive = "$($Env:DRIVER_ARTIFACTS_DIR)/$($Env:OPENSSL_ARTIFACT_ARCHIVE)"
847+
$zlib_uri = "$($base_uri)/dependencies/zlib/v$($Env:ZLIB_VERSION)/$($Env:ZLIB_ARTIFACT_ARCHIVE)"
848+
$zlib_archive = "$($Env:DRIVER_ARTIFACTS_DIR)/$($Env:ZLIB_ARTIFACT_ARCHIVE)"
784849

785850
# Publish/Upload the driver and it dependencies to Artifactory
786851
$is_failure = $False
@@ -798,6 +863,10 @@ Function Publish-Artifacts {
798863
$is_failure = $True
799864
$failed_upload += "OpenSSL"
800865
}
866+
If ((Publish-Artifact-To-Artifactory -Uri "$($zlib_uri)" -FilePath "$($zlib_archive)") -ne 0) {
867+
$is_failure = $True
868+
$failed_upload += "zlib"
869+
}
801870

802871
# Check to see if there was a failure uploading the artifacts
803872
If ($is_failure) {

cpp-driver/appveyor.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ environment:
4444
LIBUV_VERSION: 1.29.1
4545
OPENSSL_1_0_VERSION: 1.0.2s
4646
OPENSSL_1_1_VERSION: 1.1.1c
47+
ZLIB_VERSION: 1.2.11
4748
matrix:
4849
- CMAKE_GENERATOR: Visual Studio 10 2010
4950
OPENSSL_MAJOR_MINOR: 1.0

0 commit comments

Comments
 (0)