Further generalization of the CMake build script

This commit is contained in:
Joseph Henry
2017-12-14 16:29:44 -08:00
parent 998cc99ad1
commit 0a7bdd5f8f

View File

@@ -100,8 +100,7 @@ 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)
target_link_libraries(zto_pic http_pic zt)
set_target_properties(zto_pic PROPERTIES POSITION_INDEPENDENT_CODE ON)
@@ -122,32 +121,48 @@ include_directories("${PROJ_DIR}/include")
file(GLOB libzt_src_glob ${LIBZT_SRC_DIR}/*.cpp)
add_library(zt ${libzt_src_glob})
target_compile_options(zt PRIVATE ${LIBZT_DEFS})
target_link_libraries(zt zto)
target_link_libraries(zt lwip)
target_link_libraries(zt zto lwip)
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_pic)
target_link_libraries(ztshared lwip_pic)
target_link_libraries(ztshared zto_pic lwip_pic)
set_target_properties(ztshared PROPERTIES OUTPUT_NAME zt)
# --- executables ---
# --- Test applications, examples, etc ---
# 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(GLOB APP_SOURCES ${PROJ_DIR}/examples/bindings/cpp/ipv4simple/*
${PROJ_DIR}/examples/bindings/cpp/ipv6simple/*
${PROJ_DIR}/examples/bindings/cpp/ipv6adhoc/*
${PROJ_DIR}/examples/apps/ztproxy/*.cpp
)
foreach(testsourcefile ${APP_SOURCES})
string(REPLACE ".cpp" "" testname ${testsourcefile})
get_filename_component(testname ${testname} NAME)
add_executable(${testname} ${testsourcefile})
target_compile_options(${testname} PRIVATE -std=c++11)
target_link_libraries(${testname} lwip zto zt pthread)
endforeach(testsourcefile ${APP_SOURCES})
# selftest
add_executable(selftest ${PROJ_DIR}/test/selftest.cpp)
target_compile_options(selftest PRIVATE -std=c++11 -D__SELFTEST__)
target_link_libraries(selftest lwip zto zt pthread)
# nativetest
add_executable(nativetest ${PROJ_DIR}/test/selftest.cpp)
target_compile_options(nativetest PRIVATE -std=c++11 -D__NATIVETEST__)
target_link_libraries(nativetest lwip zto zt pthread)
# 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)
#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