From 3c6448a7172c1b08dd6e6ffbfc391ed2ddfe723e Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 16 Jun 2020 13:36:43 -0700 Subject: [PATCH] Move all CGO flags into CMakeLists.txt so they can inherit all our system detection and stuff. --- CMakeLists.txt | 34 +++++++++++++++++++++++++++++----- pkg/zerotier/node.go | 4 +--- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a25ea78a2..c32ad3514 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,7 +23,6 @@ else(NOT GO) message(STATUS "Found Golang at ${GO}") endif(NOT GO) - set(CMAKE_CXX_STANDARD 11) set(default_build_type "Release") @@ -68,10 +67,13 @@ set(GOFLAGS ) if(WIN32) + message("++ Setting Windows Compiler Flags ${CMAKE_BUILD_TYPE}") add_definitions(-DNOMINMAX) + else(WIN32) if(APPLE) + message("++ Setting MacOS Compiler Flags ${CMAKE_BUILD_TYPE}") add_compile_options( @@ -85,15 +87,24 @@ else(WIN32) $<$:-ffast-math> $<$:-fPIE> $<$:-flto> - $<$:-Ofast> + $<$:-O1> $<$:-fPIE> $<$:-g> ) + add_link_options( -mmacosx-version-min=10.12 $<$:-flto> ) + + set(GOFLAGS + ${GOFLAGS} + -a + -ldflags '-w -extldflags \"-Wl,-undefined -Wl,dynamic_lookup\"' + ) + else(APPLE) + message("++ Setting Linux/BSD/Posix Compiler Flags (${CMAKE_BUILD_TYPE})") add_compile_options( -Wall @@ -109,8 +120,10 @@ else(WIN32) $<$:-fPIE> $<$:-g> ) + option(BUILD_32BIT "Force building as 32-bit binary" OFF) option(BUILD_STATIC "Build statically linked executable" OFF) + if(BUILD_32BIT) set(CMAKE_SYSTEM_PROCESSOR "x86" CACHE STRING "system processor") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" CACHE STRING "c++ flags") @@ -120,6 +133,7 @@ else(WIN32) -m32 ) endif(BUILD_32BIT) + if(BUILD_STATIC) add_link_options( -static @@ -128,9 +142,18 @@ else(WIN32) set(GOFLAGS ${GOFLAGS} -a - -tags netgo - -ldflags '-w -extldflags \"-static\"') + -tags netgo + -ldflags '-w -extldflags \"-static -Wl,-unresolved-symbols=ignore-all\"' + ) + else(BUILD_STATIC) + set(GOFLAGS + ${GOFLAGS} + -a + -tags netgo + -ldflags '-w -extldflags \"-Wl,-unresolved-symbols=ignore-all\"' + ) endif(BUILD_STATIC) + endif(APPLE) endif(WIN32) @@ -144,6 +167,7 @@ if ( endif() set(GO_BUILD_TAGS) + if(BUILD_CENTRAL_CONTROLLER) add_definitions(-DZT_CONTROLLER_USE_LIBPQ=1) set(GO_BUILD_TAGS -tags central) @@ -163,7 +187,7 @@ add_custom_target( zerotier ALL BYPRODUCTS ${CMAKE_BINARY_DIR}/zerotier SOURCES ${go_src} - COMMAND ${GOARCH} CGO_ENABLED=1 CGO_LDFLAGS=\"$ $ $ $\" ${GO} build ${GOFLAGS} -o ${CMAKE_BINARY_DIR}/zerotier ${CMAKE_SOURCE_DIR}/cmd/zerotier/zerotier.go + COMMAND ${GOARCH} CGO_ENABLED=1 CGO_CFLAGS=\"${CMAKE_C_FLAGS}\" CGO_LDFLAGS=\"$ $ $ $ -l${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES}\" ${GO} build ${GOFLAGS} -o ${CMAKE_BINARY_DIR}/zerotier ${CMAKE_SOURCE_DIR}/cmd/zerotier/zerotier.go COMMENT "Compiling Go Code..." ) add_dependencies(zerotier zt_osdep zt_core zt_controller zt_service_io_core) diff --git a/pkg/zerotier/node.go b/pkg/zerotier/node.go index c7329e625..ddb7726b8 100644 --- a/pkg/zerotier/node.go +++ b/pkg/zerotier/node.go @@ -13,9 +13,7 @@ package zerotier -// #cgo CFLAGS: -O3 -I${SRCDIR}/../../build/core -// #cgo darwin LDFLAGS: -Wl,-undefined -Wl,dynamic_lookup -lc++ -// #cgo !darwin LDFLAGS: -Wl,-unresolved-symbols=ignore-all -lstdc++ +// #cgo CFLAGS: -I${SRCDIR}/../../build/core // #include "../../serviceiocore/GoGlue.h" import "C"