From 86712e9b11d16361c8fbbcab4a674dda36893d17 Mon Sep 17 00:00:00 2001 From: Joseph Henry Date: Thu, 14 Dec 2017 11:17:13 -0800 Subject: [PATCH] Added -fPIC enabled variant targets to CMake file --- CMakeLists.txt | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c14ba72..b3d14e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,11 +52,10 @@ set (libzt_VERSION_MAJOR 1) set (libzt_VERSION_MINOR 0) set (ZT_DEFS -std=c++11 "-DZT_SDK=1") set (LIBZT_DEFS -std=c++11 "-DZT_SDK=1") -#set(CMAKE_POSITION_INDEPENDENT_CODE ON) # --- dirs --- set (PROJ_DIR ${PROJECT_SOURCE_DIR}) -set (CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/bin) +set (CMAKE_BINARY_DIR ${PROJECT_SOURCE_DIR}/bin) set (EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}) set (LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib) @@ -76,6 +75,12 @@ file(GLOB lwip_src_glob add_library(lwip STATIC ${lwip_src_glob}) target_compile_options(lwip PRIVATE ${NS_DEFS}) +add_library(lwip_pic STATIC ${lwip_src_glob}) +target_compile_options(lwip_pic PRIVATE ${NS_DEFS}) +set_target_properties(lwip_pic PROPERTIES POSITION_INDEPENDENT_CODE ON) + + + # (zto) ZeroTier Core Service set(ZTO_SRC_DIR ${PROJ_DIR}/zto) include_directories(${ZTO_SRC_DIR}/include) @@ -89,12 +94,26 @@ file(GLOB zto_src_glob ${ZTO_SRC_DIR}/controller/*.cpp ${ZTO_SRC_DIR}/osdep/ManagedRoute.cpp) add_library(zto STATIC ${zto_src_glob}) +target_compile_options(zto PRIVATE ${ZT_DEFS}) +target_link_libraries(zto http) target_link_libraries(zto zt) +add_library(zto_pic STATIC ${zto_src_glob}) +target_compile_options(zto_pic PRIVATE ${ZT_DEFS}) +target_link_libraries(zto_pic http_pic) +target_link_libraries(zto_pic zt) +set_target_properties(zto_pic PROPERTIES POSITION_INDEPENDENT_CODE ON) + + + + # (http) HTTP Control Plane for ZT Service add_library(http STATIC "${ZTO_SRC_DIR}/ext/http-parser/http_parser.c") -target_compile_options(zto PRIVATE ${ZT_DEFS}) -target_link_libraries(zto http) + +add_library(http_pic STATIC "${ZTO_SRC_DIR}/ext/http-parser/http_parser.c") +set_target_properties(http_pic PROPERTIES POSITION_INDEPENDENT_CODE ON) + + # (libzt) Static Library variant of ZeroTier paired with userspace stack and virtual tap interface set (LIBZT_SRC_DIR ${PROJ_DIR}/src) @@ -110,18 +129,25 @@ set_target_properties(zt PROPERTIES OUTPUT_NAME zt) # (libzt) Shared Library variant of ZeroTier paired with userspace stack and virtual tap interface add_library(ztshared SHARED ${libzt_src_glob}) target_compile_options(ztshared PRIVATE ${LIBZT_DEFS}) -target_link_libraries(ztshared zto) -target_link_libraries(ztshared lwip) +target_link_libraries(ztshared zto_pic) +target_link_libraries(ztshared lwip_pic) set_target_properties(ztshared PROPERTIES OUTPUT_NAME zt) + # --- executables --- -# test +# Test Executables/Apps add_executable(ipv4simple ${PROJ_DIR}/examples/bindings/cpp/ipv4simple/server.cpp) target_link_libraries(ipv4simple lwip zto zt pthread) target_compile_options(ipv4simple PRIVATE -std=c++11 -DLIBZT_TRACE=1) -file(REMOVE_RECURSE ${CMAKE_BINARY_DIR}/bin/lib/libhttp.a) +# Clean up intermediate library targets +file(REMOVE {LIBRARY_OUTPUT_PATH}/libhttp.a) +file(REMOVE {LIBRARY_OUTPUT_PATH}/libhttp_pic.a) +file(REMOVE {LIBRARY_OUTPUT_PATH}/libzto.a) +file(REMOVE {LIBRARY_OUTPUT_PATH}/libzto_pic.a) +file(REMOVE {LIBRARY_OUTPUT_PATH}/liblwip.a) +file(REMOVE {LIBRARY_OUTPUT_PATH}/liblwip_pic.a) # --- CONFIGURATION