mirror of
https://github.com/fwbuilder/fwbuilder
synced 2026-06-23 17:39:35 +02:00
fix: Support macOS target in cmake
This commit is contained in:
@@ -1,10 +1,21 @@
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9"
|
||||
CACHE STRING "Minimum macOS deployment version"
|
||||
)
|
||||
|
||||
project(firewallbuilder LANGUAGES CXX C)
|
||||
|
||||
include(VERSION)
|
||||
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Release CACHE STRING
|
||||
"Choose the type of build, options are: Debug or Release."
|
||||
FORCE)
|
||||
endif()
|
||||
|
||||
### Dependencies
|
||||
|
||||
find_package(Qt5Widgets REQUIRED)
|
||||
find_package(Qt5Network REQUIRED)
|
||||
@@ -12,19 +23,15 @@ find_package(Qt5PrintSupport REQUIRED)
|
||||
find_package(LibXml2 REQUIRED)
|
||||
find_package(LibXslt REQUIRED)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
set(FWB_INSTALL_DATADIR ${CMAKE_INSTALL_DATADIR}/fwbuilder-${PROJECT_VERSION})
|
||||
set(FWB_INSTALL_DOCDIR ${CMAKE_INSTALL_DATADIR}/doc/fwbuilder-${PROJECT_VERSION})
|
||||
set(FWB_INSTALL_BINDIR ${CMAKE_INSTALL_BINDIR})
|
||||
find_package(NetSNMP)
|
||||
if(NETSNMP_FOUND)
|
||||
add_definitions(-DHAVE_LIBSNMP -DNET_SNMP -DHAVE_SNPRINT_OBJID)
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
set(CMAKE_INSTALL_PREFIX ${PROJECT_BINARY_DIR})
|
||||
set(FWB_INSTALL_DATADIR release/resources)
|
||||
set(FWB_INSTALL_DOCDIR release)
|
||||
set(FWB_INSTALL_BINDIR release)
|
||||
ENDIF()
|
||||
### Compiler options
|
||||
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
set(CXX_DEFAULT_FLAGS # clang/GCC warnings
|
||||
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:GNU>>:-Wall;-Wextra;-Werror;-Wno-overloaded-virtual>
|
||||
# MSVC warnings
|
||||
@@ -37,27 +44,48 @@ add_definitions(-DFS_SEPARATOR="/")
|
||||
add_definitions(-DFWBUILDER_XML_VERSION="${FWBUILDER_XML_VERSION}")
|
||||
add_definitions(-DPREFIX="${CMAKE_INSTALL_PREFIX}")
|
||||
|
||||
IF (WIN32)
|
||||
if(APPLE)
|
||||
add_definitions(-DRES_DIR="../Resources")
|
||||
elseif(WIN32)
|
||||
add_definitions(-DRES_DIR="resources")
|
||||
ELSE()
|
||||
else()
|
||||
add_definitions(-DRES_DIR="${CMAKE_INSTALL_PREFIX}/${FWB_INSTALL_DATADIR}")
|
||||
ENDIF()
|
||||
endif()
|
||||
|
||||
IF (WIN32)
|
||||
if(WIN32)
|
||||
#add_definitions(-DIN_LIBXML) # Enable for static build
|
||||
add_definitions(-DWIN32_LEAN_AND_MEAN)
|
||||
ENDIF()
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Release CACHE STRING
|
||||
"Choose the type of build, options are: Debug or Release."
|
||||
FORCE)
|
||||
endif(NOT CMAKE_BUILD_TYPE)
|
||||
### Install
|
||||
|
||||
FIND_PACKAGE(NetSNMP)
|
||||
IF (NETSNMP_FOUND)
|
||||
add_definitions(-DHAVE_LIBSNMP -DNET_SNMP -DHAVE_SNPRINT_OBJID)
|
||||
ENDIF()
|
||||
if(APPLE)
|
||||
set(APP_ICON_FILE fwbuilder-macosx.icns)
|
||||
set(APP_ICON "${PROJECT_SOURCE_DIR}/src/gui/${APP_ICON_FILE}")
|
||||
set(APPLICATION_NAME fwbuilder)
|
||||
set(MACOSX_BUNDLE_ICON_FILE ${APP_ICON_FILE})
|
||||
set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_GENERATION})
|
||||
set(MACOSX_BUNDLE_VERSION ${VERSION})
|
||||
set(MACOSX_BUNDLE_LONG_VERSION_STRING ${VERSION})
|
||||
set_source_files_properties(${APP_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
||||
|
||||
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install")
|
||||
set(FWB_INSTALL_DATADIR ${APPLICATION_NAME}.app/Contents/Resources)
|
||||
set(FWB_INSTALL_DOCDIR ${FWB_INSTALL_DATADIR}/doc)
|
||||
set(FWB_INSTALL_BINDIR ${APPLICATION_NAME}.app/Contents/MacOS)
|
||||
elseif(WIN32)
|
||||
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR})
|
||||
set(FWB_INSTALL_DATADIR release/resources)
|
||||
set(FWB_INSTALL_DOCDIR release)
|
||||
set(FWB_INSTALL_BINDIR release)
|
||||
else()
|
||||
include(GNUInstallDirs)
|
||||
set(FWB_INSTALL_DATADIR ${CMAKE_INSTALL_DATADIR}/fwbuilder-${PROJECT_VERSION})
|
||||
set(FWB_INSTALL_DOCDIR ${CMAKE_INSTALL_DATADIR}/doc/fwbuilder-${PROJECT_VERSION})
|
||||
set(FWB_INSTALL_BINDIR ${CMAKE_INSTALL_BINDIR})
|
||||
endif()
|
||||
|
||||
### Sources
|
||||
|
||||
add_subdirectory(src/libfwbuilder/src/fwcompiler)
|
||||
add_subdirectory(src/libfwbuilder/src/fwbuilder)
|
||||
@@ -87,3 +115,5 @@ add_subdirectory(src/libfwbuilder/migration)
|
||||
add_subdirectory(src/res)
|
||||
add_subdirectory(doc)
|
||||
|
||||
### Packaging
|
||||
add_subdirectory(packaging)
|
||||
|
||||
46
packaging/CMakeLists.txt
Normal file
46
packaging/CMakeLists.txt
Normal file
@@ -0,0 +1,46 @@
|
||||
set(CPACK_PACKAGE_VENDOR fwbuilder)
|
||||
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
|
||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY fwbuilder)
|
||||
set(CPACK_PACKAGE_EXECUTABLES fwbuilder fwbuilder)
|
||||
|
||||
if(APPLE)
|
||||
set(BUNDLE_DIR "\${CMAKE_INSTALL_PREFIX}/fwbuilder.app")
|
||||
set(BUNDLE_BIN_DIR "${BUNDLE_DIR}/Contents/MacOS")
|
||||
set(BUNDLE_FRAMEWORKS_DIR "${BUNDLE_DIR}/Contents/Frameworks")
|
||||
set(BUNDLE_PLUGINS_DIR "${BUNDLE_DIR}/Contents/PlugIns")
|
||||
set(MACDEPLOYQT_BIN "${_qt5Core_install_prefix}/bin/macdeployqt")
|
||||
|
||||
install(CODE "
|
||||
EXECUTE_PROCESS(COMMAND ${MACDEPLOYQT_BIN} ${BUNDLE_DIR}
|
||||
-executable=${BUNDLE_BIN_DIR}/fwbedit
|
||||
-executable=${BUNDLE_BIN_DIR}/fwb_iosacl
|
||||
-executable=${BUNDLE_BIN_DIR}/fwb_ipt
|
||||
-executable=${BUNDLE_BIN_DIR}/fwb_ipf
|
||||
-executable=${BUNDLE_BIN_DIR}/fwb_ipfw
|
||||
-executable=${BUNDLE_BIN_DIR}/fwb_junosacl
|
||||
-executable=${BUNDLE_BIN_DIR}/fwb_nxosacl
|
||||
-executable=${BUNDLE_BIN_DIR}/fwb_procurve_acl
|
||||
-executable=${BUNDLE_BIN_DIR}/fwb_pf
|
||||
WORKING_DIRECTORY \"\${CMAKE_BINARY_DIR}\"
|
||||
OUTPUT_FILE macdeployqt-fwbuilder.log
|
||||
ERROR_FILE macdeployqt-fwbuilder.error)
|
||||
")
|
||||
|
||||
install(CODE "
|
||||
EXECUTE_PROCESS(COMMAND rm -rf
|
||||
${BUNDLE_FRAMEWORKS_DIR}/QtQml.framework
|
||||
${BUNDLE_FRAMEWORKS_DIR}/QtQuick.framework
|
||||
${BUNDLE_FRAMEWORKS_DIR}/QtSvg.framework
|
||||
${BUNDLE_FRAMEWORKS_DIR}/QtVirtualKeyboard.framework
|
||||
${BUNDLE_PLUGINS_DIR}/virtualkeyboard
|
||||
${BUNDLE_PLUGINS_DIR}/imageformats
|
||||
)
|
||||
")
|
||||
|
||||
set(CPACK_GENERATOR "DragNDrop")
|
||||
set(CPACK_DMG_FORMAT "UDBZ")
|
||||
set(CPACK_DMG_VOLUME_NAME fwbuilder)
|
||||
set(CPACK_PACKAGE_FILE_NAME fwbuilder-${PROJECT_VERSION})
|
||||
endif()
|
||||
|
||||
include(CPack)
|
||||
@@ -1,5 +1,7 @@
|
||||
project(fwbedit)
|
||||
|
||||
find_package(OpenSSL REQUIRED)
|
||||
|
||||
set(fwbedit_srcs
|
||||
fwbedit.cpp
|
||||
new_object.cpp
|
||||
@@ -12,7 +14,7 @@ set(fwbedit_srcs
|
||||
|
||||
add_executable(fwbedit ${fwbedit_srcs})
|
||||
|
||||
target_link_libraries(fwbedit gui import fwbparser antlr common iptlib fwbpf fwbcisco compilerdriver fwcompiler fwbuilder xml2 m xslt z crypto pthread)
|
||||
target_link_libraries(fwbedit gui import fwbparser antlr common iptlib fwbpf fwbcisco compilerdriver fwcompiler fwbuilder xml2 m xslt z OpenSSL::Crypto pthread)
|
||||
|
||||
IF (WIN32)
|
||||
target_link_libraries(fwbedit lzma iconv)
|
||||
@@ -30,5 +32,5 @@ target_compile_options(fwbedit PRIVATE ${CXX_DEFAULT_FLAGS})
|
||||
|
||||
install(TARGETS fwbedit RUNTIME DESTINATION ${FWB_INSTALL_BINDIR})
|
||||
|
||||
qt5_use_modules(fwbedit Widgets Network PrintSupport)
|
||||
qt5_use_modules(fwbedit Widgets PrintSupport)
|
||||
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
project(fwbuilder-gui)
|
||||
|
||||
find_package(OpenSSL REQUIRED)
|
||||
|
||||
set(fwbuilder-gui_srcs
|
||||
main.cpp)
|
||||
|
||||
add_executable(fwbuilder-gui ${fwbuilder-gui_srcs})
|
||||
if(APPLE)
|
||||
set_source_files_properties(${APP_ICON_FILE} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
||||
add_executable(fwbuilder-gui MACOSX_BUNDLE ${fwbuilder-gui_srcs} ${APP_ICON_FILE})
|
||||
else()
|
||||
add_executable(fwbuilder-gui ${fwbuilder-gui_srcs})
|
||||
endif()
|
||||
|
||||
target_link_libraries(fwbuilder-gui gui import fwbparser antlr common iptlib fwbpf fwbjuniper fwbcisco compilerdriver fwcompiler fwbuilder xml2 m xslt z crypto pthread)
|
||||
target_link_libraries(fwbuilder-gui gui import fwbparser antlr common iptlib fwbpf fwbjuniper fwbcisco compilerdriver fwcompiler fwbuilder xml2 m xslt z OpenSSL::Crypto pthread)
|
||||
|
||||
IF (WIN32)
|
||||
target_link_libraries(fwbuilder-gui lzma iconv)
|
||||
@@ -23,7 +30,11 @@ target_compile_options(fwbuilder-gui PRIVATE ${CXX_DEFAULT_FLAGS})
|
||||
|
||||
set_target_properties(fwbuilder-gui PROPERTIES OUTPUT_NAME "fwbuilder")
|
||||
|
||||
install(TARGETS fwbuilder-gui RUNTIME DESTINATION ${FWB_INSTALL_BINDIR})
|
||||
if(APPLE)
|
||||
install(TARGETS fwbuilder-gui DESTINATION .)
|
||||
else()
|
||||
install(TARGETS fwbuilder-gui DESTINATION ${FWB_INSTALL_BINDIR} COMPONENT Runtime)
|
||||
endif()
|
||||
|
||||
qt5_use_modules(fwbuilder-gui Widgets Network PrintSupport)
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ install(FILES ${platform_files} DESTINATION ${FWB_INSTALL_DATADIR}/platform)
|
||||
install(FILES ${help_files} DESTINATION ${FWB_INSTALL_DATADIR}/help/en_US)
|
||||
install(DIRECTORY configlets DESTINATION ${FWB_INSTALL_DATADIR})
|
||||
|
||||
if (NOT WIN32)
|
||||
if (UNIX AND NOT APPLE)
|
||||
install(FILES fwbuilder.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
||||
install(FILES Icons/16x16/fwbuilder.png DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/16x16/apps)
|
||||
install(FILES Icons/24x24/fwbuilder.png DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/24x24/apps)
|
||||
|
||||
Reference in New Issue
Block a user