mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-05 20:13:44 +02:00
figure out conditional compilation & cgo based on go build tags
This commit is contained in:
parent
bf33368add
commit
736edeeed0
4 changed files with 23 additions and 14 deletions
|
@ -42,6 +42,8 @@ if(BUILD_CENTRAL_CONTROLLER)
|
|||
pkg_check_modules(hiredis REQUIRED IMPORTED_TARGET hiredis)
|
||||
|
||||
add_subdirectory(controller/thirdparty/redis-plus-plus-1.1.1)
|
||||
set(redispp_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/controller/thirdparty/redis-plus-plus-1.1.1/src/sw)
|
||||
set(redispp_STATIC_LIB redispp_static)
|
||||
endif(BUILD_CENTRAL_CONTROLLER)
|
||||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
|
@ -100,8 +102,10 @@ if (
|
|||
add_compile_options(-maes -mrdrnd -mpclmul -msse -msse2 -mssse3)
|
||||
endif()
|
||||
|
||||
set(GO_BUILD_TAGS)
|
||||
if(BUILD_CENTRAL_CONTROLLER)
|
||||
add_definitions(-DZT_CONTROLLER_USE_LIBPQ=1)
|
||||
set(GO_BUILD_TAGS -tags central)
|
||||
endif(BUILD_CENTRAL_CONTROLLER)
|
||||
|
||||
add_subdirectory(core)
|
||||
|
@ -118,7 +122,7 @@ set(
|
|||
|
||||
add_custom_target(zerotier ALL
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
COMMAND rm -f ./build/zerotier && go build -trimpath -ldflags -s -buildmode=pie -o ./build/zerotier cmd/zerotier/zerotier.go
|
||||
COMMAND rm -f ./build/zerotier && go build ${GO_BUILD_TAGS} -trimpath -ldflags -s -buildmode=pie -o ./build/zerotier cmd/zerotier/zerotier.go
|
||||
BYPRODUCTS zerotier
|
||||
)
|
||||
add_dependencies(zerotier zt_osdep zt_core zt_controller zt_service_io_core)
|
||||
|
|
|
@ -28,9 +28,12 @@ if(BUILD_CENTRAL_CONTROLLER)
|
|||
set(ctl_hdr ${ctl_hdr} PostgreSQL.hpp)
|
||||
endif(BUILD_CENTRAL_CONTROLLER)
|
||||
|
||||
add_library(${PROJECT_NAME} STATIC ${ctl_src} ${ctl_hdr} ${PostgreSQL_LIBRARIES} ${STATIC_LIB} ${hiredis_libraries})
|
||||
add_library(${PROJECT_NAME} STATIC ${ctl_src} ${ctl_hdr} ${PostgreSQL_LIBRARIES} ${hiredis_libraries})
|
||||
target_include_directories(${PROJECT_NAME}
|
||||
PUBLIC ${hiredis_INCLUDE_DIRS}/../ ${CMAKE_CURRENT_LIST_DIR}/thirdparty/redis-plus-plus-1.1.1/src/sw ${PostgreSQL_INCLUDE_DIRS}
|
||||
PUBLIC ${hiredis_INCLUDE_DIRS}/../ ${redispp_INCLUDE_DIRS} ${PostgreSQL_INCLUDE_DIRS}
|
||||
PRIVATE ${CMAKE_BINARY_DIR}/core)
|
||||
if(BUILD_CENTRAL_CONTROLLER)
|
||||
add_dependencies(${PROJECT_NAME} redispp_static)
|
||||
endif(BUILD_CENTRAL_CONTROLLER)
|
||||
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_11)
|
||||
|
||||
|
|
|
@ -14,33 +14,33 @@ set(PROJECT_SOURCE_DIR ${PROJECT_SOURCE_DIR}/src/sw/redis++)
|
|||
|
||||
file(GLOB PROJECT_SOURCE_FILES "${PROJECT_SOURCE_DIR}/*.cpp")
|
||||
|
||||
set(STATIC_LIB static)
|
||||
set(SHARED_LIB shared)
|
||||
set(STATIC_LIB redispp_static)
|
||||
# set(SHARED_LIB shared)
|
||||
|
||||
add_library(${STATIC_LIB} STATIC ${PROJECT_SOURCE_FILES})
|
||||
add_library(${SHARED_LIB} SHARED ${PROJECT_SOURCE_FILES})
|
||||
# add_library(${SHARED_LIB} SHARED ${PROJECT_SOURCE_FILES})
|
||||
|
||||
# hiredis dependency
|
||||
find_path(HIREDIS_HEADER hiredis)
|
||||
target_include_directories(${STATIC_LIB} PUBLIC ${HIREDIS_HEADER})
|
||||
target_include_directories(${SHARED_LIB} PUBLIC ${HIREDIS_HEADER})
|
||||
# target_include_directories(${SHARED_LIB} PUBLIC ${HIREDIS_HEADER})
|
||||
|
||||
find_library(HIREDIS_LIB hiredis)
|
||||
target_link_libraries(${SHARED_LIB} ${HIREDIS_LIB})
|
||||
# target_link_libraries(${SHARED_LIB} ${HIREDIS_LIB})
|
||||
|
||||
set_target_properties(${STATIC_LIB} PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
|
||||
set_target_properties(${SHARED_LIB} PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
|
||||
# set_target_properties(${SHARED_LIB} PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
|
||||
|
||||
set_target_properties(${STATIC_LIB} PROPERTIES CLEAN_DIRECT_OUTPUT 1)
|
||||
set_target_properties(${SHARED_LIB} PROPERTIES CLEAN_DIRECT_OUTPUT 1)
|
||||
# set_target_properties(${SHARED_LIB} PROPERTIES CLEAN_DIRECT_OUTPUT 1)
|
||||
|
||||
# Install static lib.
|
||||
install(TARGETS ${STATIC_LIB}
|
||||
ARCHIVE DESTINATION lib)
|
||||
|
||||
# Install shared lib.
|
||||
install(TARGETS ${SHARED_LIB}
|
||||
LIBRARY DESTINATION lib)
|
||||
# install(TARGETS ${SHARED_LIB}
|
||||
# LIBRARY DESTINATION lib)
|
||||
|
||||
#Install headers.
|
||||
set(HEADER_PATH "sw/redis++")
|
||||
|
|
|
@ -14,8 +14,10 @@
|
|||
package zerotier
|
||||
|
||||
// #cgo CFLAGS: -O3
|
||||
// #cgo darwin LDFLAGS: ${SRCDIR}/../../build/serviceiocore/libzt_service_io_core.a ${SRCDIR}/../../build/core/libzt_core.a ${SRCDIR}/../../build/osdep/libzt_osdep.a -lc++ -lpthread
|
||||
// #cgo linux android LDFLAGS: ${SRCDIR}/../../build/serviceiocore/libzt_service_io_core.a ${SRCDIR}/../../build/core/libzt_core.a ${SRCDIR}/../../build/osdep/libzt_osdep.a -lstdc++ -lpthread -lm
|
||||
// #cgo darwin,!central LDFLAGS: ${SRCDIR}/../../build/serviceiocore/libzt_service_io_core.a ${SRCDIR}/../../build/core/libzt_core.a ${SRCDIR}/../../build/osdep/libzt_osdep.a ${SRCDIR}/../../build/controller/libzt_controller.a -lc++ -lpthread
|
||||
// #cgo darwin,central LDFLAGS: ${SRCDIR}/../../build/serviceiocore/libzt_service_io_core.a ${SRCDIR}/../../build/core/libzt_core.a ${SRCDIR}/../../build/osdep/libzt_osdep.a ${SRCDIR}/../../build/controller/libzt_controller.a ${SRCDIR}/../../build/lib/libredis++.a -lhiredis -lpq -lc++ -lpthread
|
||||
// #cgo linux,!central android,!central LDFLAGS: ${SRCDIR}/../../build/serviceiocore/libzt_service_io_core.a ${SRCDIR}/../../build/core/libzt_core.a ${SRCDIR}/../../build/osdep/libzt_osdep.a ${SRCDIR}/../../build/controller/libzt_controller.a -lstdc++ -lpthread -lm
|
||||
// #cgo linux,central android,central LDFLAGS: ${SRCDIR}/../../build/serviceiocore/libzt_service_io_core.a ${SRCDIR}/../../build/core/libzt_core.a ${SRCDIR}/../../build/osdep/libzt_osdep.a ${SRCDIR}/../../build/controller/libzt_controller.a ${SRCDIR}/../../build/lib/libredis++.a -lhiredis -lpq -lstdc++ -lpthread -lm
|
||||
// #include "../../serviceiocore/GoGlue.h"
|
||||
import "C"
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue