mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-07 21:13:44 +02:00
back to go main
This commit is contained in:
parent
69f1c8701b
commit
1a38dfdbde
3 changed files with 12 additions and 84 deletions
|
@ -62,6 +62,11 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
add_definitions(-DZT_DEBUG)
|
add_definitions(-DZT_DEBUG)
|
||||||
endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
|
||||||
|
set(GOFLAGS
|
||||||
|
-trimpath
|
||||||
|
-buildmode=pie
|
||||||
|
)
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
message("++ Setting Windows Compiler Flags ${CMAKE_BUILD_TYPE}")
|
message("++ Setting Windows Compiler Flags ${CMAKE_BUILD_TYPE}")
|
||||||
add_definitions(-DNOMINMAX)
|
add_definitions(-DNOMINMAX)
|
||||||
|
@ -121,6 +126,7 @@ else(WIN32)
|
||||||
)
|
)
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "-static ${CMAKE_EXE_LINKER_FLAGS}")
|
set(CMAKE_EXE_LINKER_FLAGS "-static ${CMAKE_EXE_LINKER_FLAGS}")
|
||||||
set(GOFLAGS
|
set(GOFLAGS
|
||||||
|
${GOFLAGS}
|
||||||
-a
|
-a
|
||||||
-tags netgo
|
-tags netgo
|
||||||
-ldflags '-w -extldflags \"-static\"')
|
-ldflags '-w -extldflags \"-static\"')
|
||||||
|
@ -152,34 +158,11 @@ file(GLOB go_src
|
||||||
${CMAKE_SOURCE_DIR}/cmd/cmd/*.go
|
${CMAKE_SOURCE_DIR}/cmd/cmd/*.go
|
||||||
${CMAKE_SOURCE_DIR}/pkg/zerotier/*.go)
|
${CMAKE_SOURCE_DIR}/pkg/zerotier/*.go)
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_target(
|
||||||
OUTPUT ${CMAKE_BINARY_DIR}/zerotier_cgo.h ${CMAKE_BINARY_DIR}/zerotier_cgo.a
|
zerotier ALL
|
||||||
COMMAND ${GOARCH} CGO_ENABLED=1 ${GO} build -buildmode=c-archive ${GOFLAGS} -o ${CMAKE_BINARY_DIR}/zerotier_cgo.a ${CMAKE_SOURCE_DIR}/cmd/zerotier/zerotier.go
|
BYPRODUCTS ${CMAKE_BINARY_DIR}/zerotier
|
||||||
IMPLICIT_DEPENDS ${go_src}
|
SOURCES ${go_src}
|
||||||
|
COMMAND ${GOARCH} CGO_ENABLED=1 CGO_LDFLAGS=\"$<TARGET_FILE:zt_osdep> $<TARGET_FILE:zt_core> $<TARGET_FILE:zt_controller> $<TARGET_FILE:zt_service_io_core>\" ${GO} build ${GOFLAGS} -o ${CMAKE_BINARY_DIR}/zerotier ${CMAKE_SOURCE_DIR}/cmd/zerotier/zerotier.go
|
||||||
COMMENT "Compiling Go Code..."
|
COMMENT "Compiling Go Code..."
|
||||||
)
|
)
|
||||||
add_custom_target(
|
add_dependencies(zerotier zt_osdep zt_core zt_controller zt_service_io_core)
|
||||||
zerotier_cgo_target
|
|
||||||
DEPENDS ${CMAKE_BINARY_DIR}/zerotier_cgo.a
|
|
||||||
SOURCES ${go_src}
|
|
||||||
)
|
|
||||||
add_library(zerotier_cgo STATIC IMPORTED GLOBAL)
|
|
||||||
add_dependencies(zerotier_cgo zerotier_cgo_target)
|
|
||||||
set_target_properties(
|
|
||||||
zerotier_cgo
|
|
||||||
PROPERTIES
|
|
||||||
IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/zerotier_cgo.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
add_executable(zerotier main.cpp)
|
|
||||||
target_include_directories(zerotier PUBLIC ${CMAKE_BINARY_DIR})
|
|
||||||
add_dependencies(zerotier zerotier_cgo zt_osdep zt_core zt_controller zt_service_io_core)
|
|
||||||
target_link_libraries(zerotier zerotier_cgo zt_service_io_core zt_core zt_osdep zt_controller )
|
|
||||||
if (APPLE)
|
|
||||||
target_link_libraries(zerotier "-framework CoreFoundation" "-framework Security")
|
|
||||||
else(APPLE)
|
|
||||||
if ("${CMAKE_SYSTEM}" MATCHES "Linux")
|
|
||||||
target_link_libraries(zerotier "-lpthread" "-lm")
|
|
||||||
endif ("${CMAKE_SYSTEM}" MATCHES "Linux")
|
|
||||||
endif (APPLE)
|
|
||||||
|
|
|
@ -52,10 +52,6 @@ func authTokenRequired(authToken string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
}
|
|
||||||
|
|
||||||
//export ZeroTierMain
|
|
||||||
func ZeroTierMain() {
|
|
||||||
// Reduce Go's thread and memory footprint. This would slow things down if the Go code
|
// Reduce Go's thread and memory footprint. This would slow things down if the Go code
|
||||||
// were doing a lot, but it's not. It just manages the core and is not directly involved
|
// were doing a lot, but it's not. It just manages the core and is not directly involved
|
||||||
// in pushing a lot of packets around. If that ever changes this should be adjusted.
|
// in pushing a lot of packets around. If that ever changes this should be adjusted.
|
||||||
|
|
51
main.cpp
51
main.cpp
|
@ -1,51 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c)2013-2020 ZeroTier, Inc.
|
|
||||||
*
|
|
||||||
* Use of this software is governed by the Business Source License included
|
|
||||||
* in the LICENSE.TXT file in the project's root directory.
|
|
||||||
*
|
|
||||||
* Change Date: 2024-01-01
|
|
||||||
*
|
|
||||||
* On the date above, in accordance with the Business Source License, use
|
|
||||||
* of this software will be governed by version 2.0 of the Apache License.
|
|
||||||
*/
|
|
||||||
/****/
|
|
||||||
|
|
||||||
#if !defined(_WIN32) && !defined(_WIN64)
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "zerotier_cgo.h"
|
|
||||||
|
|
||||||
int main(int argc,char **argv)
|
|
||||||
{
|
|
||||||
// Fork into background if run with 'service -d'. This is best done prior
|
|
||||||
// to launching the Go code, since Go likes to start thread pools and stuff
|
|
||||||
// that don't play nice with fork. This is obviously unsupported on Windows.
|
|
||||||
#if !defined(_WIN32) && !defined(_WIN64)
|
|
||||||
for(int i=1;i<argc;) {
|
|
||||||
if (strcmp(argv[i++], "service") == 0) {
|
|
||||||
for(;i<argc;) {
|
|
||||||
if (strcmp(argv[i++], "-d") == 0) {
|
|
||||||
long p = (long)fork();
|
|
||||||
if (p < 0) {
|
|
||||||
fprintf(stderr,"FATAL: fork() failed!\n");
|
|
||||||
return -1;
|
|
||||||
} else if (p > 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ZeroTierMain();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
Loading…
Add table
Reference in a new issue