mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-30 05:26:45 +00:00
feat(GODT-2373): introducing bridgelib Go dynamic library in bridge-gui.
This commit is contained in:
@ -86,6 +86,48 @@ message(STATUS "Using Qt ${Qt6_VERSION}")
|
||||
find_package(sentry CONFIG REQUIRED)
|
||||
|
||||
|
||||
#*****************************************************************************************************************************************************
|
||||
# bridgelib
|
||||
#*****************************************************************************************************************************************************
|
||||
find_program(GO_BIN "go")
|
||||
if (NOT GO_BIN)
|
||||
message(FATAL_ERROR "Could not location go compiler")
|
||||
endif()
|
||||
message(STATUS "go compiler is ${GO_BIN}")
|
||||
|
||||
if (APPLE) # set some env variable for go compiler on macOS. Note the CGO_ENABLED=1 is required when cross-compiling.
|
||||
if (CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
|
||||
set(GO_BIN "MACOSX_DEPLOYMENT_TARGET=11.0" "GOARCH=arm64" "CGO_CFLAGS=\"-mmacosx-version-min=11.0\"" CGO_ENABLED=1 ${GO_BIN})
|
||||
else ()
|
||||
set(GO_BIN "MACOSX_DEPLOYMENT_TARGET=10.15" "GOARCH=amd64" "CGO_CFLAGS=\"-mmacosx-version-min=10.15\"" CGO_ENABLED=1 ${GO_BIN})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
file(REAL_PATH "pkg/bridgelib" BRIDGELIB_DIR BASE_DIRECTORY "${BRIDGE_REPO_ROOT}")
|
||||
message(STATUS "bridgelib folder is ${BRIDGELIB_DIR}")
|
||||
|
||||
set(BRIDGELIB_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
||||
set(BRIDGELIB_BASE_NAME "bridgelib")
|
||||
if (UNIX AND NOT APPLE)
|
||||
set(BRIDGELIB_LIB_FILE "${BRIDGELIB_BASE_NAME}.so")
|
||||
endif()
|
||||
if (APPLE)
|
||||
set(BRIDGELIB_OUTPUT_DIR ${BRIDGELIB_OUTPUT_DIR}/${CMAKE_PROJECT_NAME}.app/Contents/MacOS)
|
||||
set(BRIDGELIB_LIB_FILE "${BRIDGELIB_BASE_NAME}.dylib")
|
||||
endif()
|
||||
if (WIN32)
|
||||
set(BRIDGELIB_LIB_FILE "${BRIDGELIB_BASE_NAME}.dll")
|
||||
endif()
|
||||
|
||||
set(BRIDGELIB_OUTPUT_PATH "${BRIDGELIB_OUTPUT_DIR}/${BRIDGELIB_LIB_FILE}")
|
||||
|
||||
add_custom_target(
|
||||
bridgelib
|
||||
COMMAND ${GO_BIN} build -o ${BRIDGELIB_OUTPUT_PATH} --buildmode c-shared
|
||||
WORKING_DIRECTORY ${BRIDGELIB_DIR}
|
||||
COMMENT "Compile bridgelib library"
|
||||
)
|
||||
|
||||
#*****************************************************************************************************************************************************
|
||||
# Source files and output
|
||||
#*****************************************************************************************************************************************************
|
||||
@ -110,22 +152,23 @@ add_executable(bridge-gui
|
||||
Resources.qrc
|
||||
AppController.cpp AppController.h
|
||||
BridgeApp.cpp BridgeApp.h
|
||||
BridgeLib.cpp BridgeLib.h
|
||||
CommandLine.cpp CommandLine.h
|
||||
EventStreamWorker.cpp EventStreamWorker.h
|
||||
Log.cpp Log.h
|
||||
main.cpp
|
||||
Pch.h
|
||||
BuildConfig.h
|
||||
QMLBackend.cpp QMLBackend.h
|
||||
UserList.cpp UserList.h
|
||||
SentryUtils.cpp SentryUtils.h
|
||||
${DOCK_ICON_SRC_FILE} MacOS/DockIcon.h
|
||||
)
|
||||
|
||||
|
||||
if (APPLE)
|
||||
target_sources(bridge-gui PRIVATE MacOS/SecondInstance.mm MacOS/SecondInstance.h)
|
||||
endif(APPLE)
|
||||
|
||||
add_dependencies(bridge-gui bridgelib)
|
||||
|
||||
if (WIN32) # on Windows, we add a (non-Qt) resource file that contains the application icon and version information.
|
||||
string(TIMESTAMP BRIDGE_BUILD_YEAR "%Y")
|
||||
|
||||
Reference in New Issue
Block a user