aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSaturneric <[email protected]>2022-07-24 14:07:44 +0000
committerSaturneric <[email protected]>2022-07-24 14:07:44 +0000
commit7dfe0bdb6f05efc1a5ac19d64980fd29499f63ec (patch)
tree560c0e32aef2bd23b11a745d380435cc7ab323fa
parentfeat(project): add rpm package support (diff)
downloadGpgFrontend-7dfe0bdb6f05efc1a5ac19d64980fd29499f63ec.tar.gz
GpgFrontend-7dfe0bdb6f05efc1a5ac19d64980fd29499f63ec.zip
feat(project): support freebsd build
-rw-r--r--CMakeLists.txt24
-rw-r--r--src/CMakeLists.txt33
-rw-r--r--src/main.cpp4
-rw-r--r--src/signal.cpp4
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.