diff options
author | Saturneric <[email protected]> | 2022-07-24 14:07:44 +0000 |
---|---|---|
committer | Saturneric <[email protected]> | 2022-07-24 14:07:44 +0000 |
commit | 7dfe0bdb6f05efc1a5ac19d64980fd29499f63ec (patch) | |
tree | 560c0e32aef2bd23b11a745d380435cc7ab323fa | |
parent | feat(project): add rpm package support (diff) | |
download | GpgFrontend-7dfe0bdb6f05efc1a5ac19d64980fd29499f63ec.tar.gz GpgFrontend-7dfe0bdb6f05efc1a5ac19d64980fd29499f63ec.zip |
feat(project): support freebsd build
-rw-r--r-- | CMakeLists.txt | 24 | ||||
-rw-r--r-- | src/CMakeLists.txt | 33 | ||||
-rw-r--r-- | src/main.cpp | 4 | ||||
-rw-r--r-- | src/signal.cpp | 4 |
4 files changed, 54 insertions, 11 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 171238eb..194e0d39 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,8 @@ option(GPGFRONTEND_BUILD_TYPE_STABLE "Generate release version" ON) option(GPGFRONTEND_GENERATE_LINUX_INSTALL_SOFTWARE "Generate an installable version" OFF) option(GPGFRONTEND_GENERATE_APP_PACKAGE_DEB "Generate DEB package" OFF) +option(GPGFRONTEND_GENERATE_APP_PACKAGE_RPM "Generate RPM package" OFF) +option(GPGFRONTEND_GENERATE_APP_PACKAGE_FREEBSD "Generate PKG package" OFF) option(GPGFRONTEND_CONFIGURE_FOR_XCODE_BUILD "Generate a version that can be successfully compiled and packaged in Xcode" OFF) option(GPGFRONTEND_XCODE_TEAM_ID "GpgFrontend Apple Team ID" "NONE") option(GPGFRONTEND_XOCDE_CODE_SIGN_IDENTITY "GpgFrontend Signing Certificate" "NONE") @@ -108,11 +110,21 @@ if (GPGFRONTEND_GENERATE_LINUX_INSTALL_SOFTWARE) set(GPGFRONTEND_GENERATE_APP_PACKAGE_DEB 1) endif () -# linux package build +# linux package build deb if (GPGFRONTEND_GENERATE_LINUX_INSTALL_SOFTWARE AND GPGFRONTEND_GENERATE_APP_PACKAGE_DEB) set(APP_PACKAGE_DEB 1) endif () +# linux package build rpm +if (GPGFRONTEND_GENERATE_LINUX_INSTALL_SOFTWARE AND GPGFRONTEND_GENERATE_APP_PACKAGE_RPM) + set(APP_PACKAGE_RPM 1) +endif () + +# linux package build pkg +if (GPGFRONTEND_GENERATE_LINUX_INSTALL_SOFTWARE AND GPGFRONTEND_GENERATE_APP_PACKAGE_FREEBSD) + set(APP_PACKAGE_FREEBSD 1) +endif () + # xcode archive build if (GPGFRONTEND_CONFIGURE_FOR_XCODE_BUILD) set(GPGFRONTEND_GENERATE_LINUX_INSTALL_SOFTWARE 0) @@ -333,6 +345,16 @@ if (LINUX) set(OS_PLATFORM 2) ADD_DEFINITIONS(-DLINUX) + # Get Env Info + exec_program(uname OUTPUT_VARIABLE SYSTEM_NAME) + set(SYSTEM_NAME "${SYSTEM_NAME}" CACHE INTERNAL "") + + if(SYSTEM_NAME STREQUAL "FreeBSD") + message(STATUS "FreeBSD BOX") + ADD_DEFINITIONS(-DFREEBSD) + set(FREEBSD TRUE) + endif() + message(STATUS "GCC Version ${CMAKE_CXX_COMPILER_VERSION}") if (CMAKE_CXX_COMPILER_VERSION LESS 9) message(STATUS "GCC CXX_FLAGS add filesystem support manually") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4df4579a..e00f9b60 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -271,6 +271,10 @@ if (APPLICATION_BUILD) else () message(STATUS "Link Application Library For Linux") target_link_libraries(${AppName} crypto pthread) + # link for freebsd + if(FREEBSD) + target_link_libraries(${AppName} intl) + endif() # issue on filesystem support of gcc if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 9.0) target_link_libraries(${AppName} stdc++fs) @@ -315,15 +319,8 @@ if (LINUX AND LINUX_INSTALL_SOFTWARE) DESTINATION ${CMAKE_INSTALL_FULL_LOCALEDIR}) endif () - cmake_host_system_information(RESULT PRETTY_NAME QUERY DISTRIB_PRETTY_NAME) - cmake_host_system_information(RESULT DISTRO QUERY DISTRIB_INFO) - - foreach(VAR IN LISTS DISTRO) - message(STATUS "${VAR}=`${${VAR}}`") - endforeach() - if (APP_PACKAGE_DEB) - message(STATUS "Configure Deb Package") + message(STATUS "Configure DEB Package") SET(CPACK_GENERATOR "DEB") set(CPACK_INSTALL_PREFIX "/usr/local/") set(CPACK_PACKAGE_NAME "gpgfrontend") @@ -345,8 +342,9 @@ if (LINUX AND LINUX_INSTALL_SOFTWARE) set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") include(CPack) endif () - if (APP_PACKAGE_RPM) - message(STATUS "Configure Rpm Package") + + if (APP_PACKAGE_RPM) + message(STATUS "Configure RPM Package") SET(CPACK_GENERATOR "RPM") set(CPACK_INSTALL_PREFIX "/usr/local/") set(CPACK_PACKAGE_NAME "gpgfrontend") @@ -360,6 +358,21 @@ if (LINUX AND LINUX_INSTALL_SOFTWARE) set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") include(CPack) endif () + + if (APP_PACKAGE_FREEBSD) + message(STATUS "Configure PKG Package") + SET(CPACK_GENERATOR "FREEBSD") + set(CPACK_INSTALL_PREFIX "/usr/local/") + set(CPACK_FREEBSD_PACKAGE_NAME "gpgfrontend") + set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64") + set(CPACK_PACKAGE_CONTACT "[email protected]") + SET(CPACK_FREEBSD_PACKAGE_MAINTAINER "Saturneric") + + set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") + set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") + set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") + include(CPack) + endif () endif () message(STATUS "Resource Files: ${RESOURCE_OUTPUT_DIRECTORY}") diff --git a/src/main.cpp b/src/main.cpp index b51c44ea..4cb3849f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -46,7 +46,11 @@ INITIALIZE_EASYLOGGINGPP /** * \brief Store the jump buff and make it possible to recover from a crash. */ +#ifdef FREEBSD +sigjmp_buf recover_env; +#else jmp_buf recover_env; +#endif constexpr int CRASH_CODE = ~0; ///< diff --git a/src/signal.cpp b/src/signal.cpp index 135bdead..bd4cfdb1 100644 --- a/src/signal.cpp +++ b/src/signal.cpp @@ -30,7 +30,11 @@ #include "GpgFrontend.h" +#ifdef FREEBSD +extern sigjmp_buf recover_env; +#else extern jmp_buf recover_env; +#endif /** * @brief handle the signal caught. |