Added -fPIC enabled variant targets to CMake file

This commit is contained in:
Joseph Henry
2017-12-14 11:17:13 -08:00
parent 5eda430a87
commit 86712e9b11

View File

@@ -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