1
0
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:
Sirius Bakke
2019-07-22 19:13:22 +00:00
parent 0c437265a9
commit 477101524a
5 changed files with 120 additions and 31 deletions

View File

@@ -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
View 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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)