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" ) find_program(CCACHE_PROGRAM ccache) if(CCACHE_PROGRAM) set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}") endif() project(firewallbuilder LANGUAGES CXX C) ### Version variables and include file include(VERSION) configure_file("${CMAKE_SOURCE_DIR}/src/version.h.in" "${CMAKE_BINARY_DIR}/src/version.h" @ONLY) include_directories(${CMAKE_BINARY_DIR}/src) ### Build type if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: Debug or Release." FORCE) endif() include( CTest ) ### Dependencies option(UseQt6 "Use Qt6" OFF) if (UseQt6) find_package(Qt6 COMPONENTS Widgets Network PrintSupport REQUIRED) else() find_package(Qt5Widgets REQUIRED) find_package(Qt5Network REQUIRED) find_package(Qt5PrintSupport REQUIRED) endif() find_package(LibXml2 REQUIRED) find_package(LibXslt REQUIRED) find_package(NetSNMP) if(NETSNMP_FOUND) add_definitions(-DHAVE_LIBSNMP -DNET_SNMP -DHAVE_SNPRINT_OBJID) endif() ### Compiler options set(CMAKE_CXX_STANDARD 11) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CXX_DEFAULT_FLAGS # clang/GCC warnings $<$,$>:-Wall;-Wextra;-Werror;-Wno-overloaded-virtual> # MSVC warnings $<$:/WX;/W4>) add_definitions(-D__STDC_FORMAT_MACROS) if(WIN32) #add_definitions(-DIN_LIBXML) # Enable for static build add_definitions(-DWIN32_LEAN_AND_MEAN) endif() ### Install 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/doc) 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) add_subdirectory(src/common) add_subdirectory(src/antlr) add_subdirectory(src/compiler_lib) add_subdirectory(src/cisco_lib) add_subdirectory(src/juniper_lib) add_subdirectory(src/pflib) add_subdirectory(src/iptlib) add_subdirectory(src/ipt) add_subdirectory(src/pf) add_subdirectory(src/ipf) add_subdirectory(src/ipfw) add_subdirectory(src/iosacl) add_subdirectory(src/nxosacl) add_subdirectory(src/junosacl) add_subdirectory(src/pix) add_subdirectory(src/procurve_acl) add_subdirectory(src/libgui) add_subdirectory(src/import) add_subdirectory(src/parsers) add_subdirectory(src/gui) add_subdirectory(src/fwbedit) add_subdirectory(src/libfwbuilder/etc) add_subdirectory(src/libfwbuilder/migration) add_subdirectory(src/res) add_subdirectory(doc) add_subdirectory(src/unit_tests) ### Packaging add_subdirectory(packaging)