Skip to content

Commit

Permalink
CMakeLists conditionals for FreeBSD
Browse files Browse the repository at this point in the history
This needs to be done differently, so arch-specific
configurations scale better.
  • Loading branch information
Reflejo committed Feb 21, 2017
1 parent 5e9f81d commit 8641558
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 10 deletions.
11 changes: 10 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,16 @@ include(thirdparty.cmake)

# Setup build ID via the linker. Also, statically link GCC libraries to lock GCC version.
execute_process(COMMAND git -C ${CMAKE_SOURCE_DIR} rev-parse --sq HEAD OUTPUT_VARIABLE GIT_COMMIT WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--build-id=0x${GIT_COMMIT} -static-libstdc++ -static-libgcc ${ENVOY_EXE_EXTRA_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}")

if (NOT DARWIN)
set(BUILD_ID "-Wl,--build-id=0x${GIT_COMMIT}")
endif (NOT DARWIN)

if (NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CMAKE_EXE_LINKER_FLAGS "${BUILD_ID} -static-libstdc++ -static-libgcc ${ENVOY_EXE_EXTRA_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}")
else ()
set(CMAKE_EXE_LINKER_FLAGS "${ENVOY_EXE_EXTRA_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}")
endif ()

include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_BINARY_DIR}/source)
Expand Down
20 changes: 19 additions & 1 deletion common.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,18 @@
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb3 -fno-omit-frame-pointer -Wall -Wextra -Werror -Wnon-virtual-dtor -Woverloaded-virtual -Wold-style-cast -std=c++0x")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb3 -fno-omit-frame-pointer -Wall -Wextra -Werror -Wnon-virtual-dtor -Woverloaded-virtual -Wold-style-cast -std=c++0x -fexceptions")

if (CMAKE_SYSTEM_NAME MATCHES "Linux")
set(LINUX TRUE)
endif(CMAKE_SYSTEM_NAME MATCHES "Linux")

if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
set(FREEBSD TRUE)
set(BSD TRUE)
endif (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")

if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
set(DARWIN TRUE)
set(BSD TRUE)
endif (CMAKE_SYSTEM_NAME MATCHES "Darwin")

if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.9")
Expand Down Expand Up @@ -27,6 +41,10 @@ if (ENVOY_SANITIZE)
set(ENVOY_TCMALLOC OFF CACHE BOOL "" FORCE)
endif()

if (BSD)
set(ENVOY_TCMALLOC OFF CACHE BOOL "" FORCE)
endif()

option(ENVOY_TCMALLOC "build with tcmalloc" ON)
if (ENVOY_TCMALLOC)
add_definitions(-DTCMALLOC)
Expand Down
13 changes: 10 additions & 3 deletions source/common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ add_custom_command(

set_source_files_properties(generated/ratelimit.pb.cc PROPERTIES COMPILE_FLAGS -Wno-unused-parameter)

add_library(
envoy-common OBJECT
set(envoy-common-sources)
list(APPEND envoy-common-sources
api/api_impl.cc
access_log/access_log_manager_impl.cc
buffer/buffer_impl.cc
Expand All @@ -39,7 +39,6 @@ add_library(
event/signal_impl.cc
event/timer_impl.cc
filesystem/filesystem_impl.cc
filesystem/watcher_impl.cc
filter/auth/client_ssl.cc
filter/echo.cc
filter/ratelimit.cc
Expand Down Expand Up @@ -118,6 +117,14 @@ add_library(
upstream/upstream_impl.cc
${gen_git_sha_target})

if (LINUX)
list(APPEND envoy-common-sources filesystem/watcher_impl_linux.cc)
elseif (BSD)
list(APPEND envoy-common-sources filesystem/watcher_impl_bsd.cc)
endif ()

add_library(envoy-common OBJECT ${envoy-common-sources})

include_directories(SYSTEM ${ENVOY_HTTP_PARSER_INCLUDE_DIR})
include_directories(${ENVOY_RAPIDJSON_INCLUDE_DIR})

Expand Down
12 changes: 9 additions & 3 deletions source/exe/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,15 @@ target_link_libraries(envoy lightstep_core_cxx11)
target_link_libraries(envoy cares)
target_link_libraries(envoy protobuf)
target_link_libraries(envoy pthread)
target_link_libraries(envoy anl)
target_link_libraries(envoy rt)
target_link_libraries(envoy dl)

if (NOT DARWIN)
target_link_libraries(envoy rt)
endif (NOT DARWIN)

if (LINUX)
target_link_libraries(envoy anl)
target_link_libraries(envoy dl)
endif (LINUX)

include_directories(SYSTEM ${ENVOY_OPENSSL_INCLUDE_DIR})
include_directories(SYSTEM ${ENVOY_LIGHTSTEP_TRACER_INCLUDE_DIR})
Expand Down
7 changes: 5 additions & 2 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -176,8 +176,11 @@ target_link_libraries(envoy-test cares)
target_link_libraries(envoy-test protobuf)
target_link_libraries(envoy-test gmock)
target_link_libraries(envoy-test pthread)
target_link_libraries(envoy-test anl)
target_link_libraries(envoy-test dl)

if (LINUX)
target_link_libraries(envoy-test anl)
target_link_libraries(envoy-test dl)
endif (LINUX)

add_custom_target(
envoy.generate_example_configs configs/configgen.sh generated/configs ${PROJECT_BINARY_DIR}
Expand Down

0 comments on commit 8641558

Please sign in to comment.