|
# March 2021, the oldest we have to support : Ununtu 18.04 LTS
|
|
cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR)
|
|
|
|
# policy CMP0072 was introduced with CMake 3.11
|
|
# relates to FindOpenGL module
|
|
# and cache variables OPENGL_gl_LIBRARY, OPENGL_glu_LIBRARY
|
|
if (POLICY CMP0072)
|
|
cmake_policy(SET CMP0072 OLD)
|
|
endif(POLICY CMP0072)
|
|
|
|
find_program(CCACHE_PROGRAM ccache) #This check should occur before project()
|
|
if(CCACHE_PROGRAM)
|
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
|
|
endif()
|
|
|
|
project(FreeCAD)
|
|
|
|
set(PACKAGE_VERSION_NAME "Vulcan")
|
|
set(PACKAGE_VERSION_MAJOR "0")
|
|
set(PACKAGE_VERSION_MINOR "20")
|
|
set(PACKAGE_VERSION_PATCH "0")
|
|
set(PACKAGE_VERSION_SUFFIX "dev") # either "dev" for development snapshot or "" (empty string)
|
|
set(FREECAD_VERSION_PATCH "0") # number of patch release (e.g. "4" for the 0.18.4 release)
|
|
|
|
set(FREECAD_VERSION "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}")
|
|
set(PACKAGE_VERSION "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}.${PACKAGE_VERSION_PATCH}")
|
|
set(PACKAGE_STRING "${PROJECT_NAME} ${PACKAGE_VERSION}")
|
|
|
|
# include local modules
|
|
include(CheckCXXCompilerFlag)
|
|
include(AddFileDependencies)
|
|
include(cMake/FreeCadMacros.cmake)
|
|
# include helper functions/macros
|
|
add_subdirectory(cMake/FreeCAD_Helpers)
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cMake")
|
|
|
|
CompilerChecksAndSetups()
|
|
ConfigureCMakeVariables()
|
|
InitializeFreeCADBuildOptions()
|
|
CheckInterModuleDependencies()
|
|
FreeCADLibpackChecks()
|
|
SetupDoxygen()
|
|
if(NOT FREECAD_LIBPACK_USE OR FREECAD_LIBPACK_CHECKFILE_CLBUNDLER)
|
|
SetupPython()
|
|
SetupPCL()
|
|
SetupPybind11()
|
|
SetupBoost()
|
|
SetupXercesC()
|
|
find_package(ZLIB REQUIRED)
|
|
find_package(PyCXX REQUIRED)
|
|
SetupOpenCasCade()
|
|
if(BUILD_GUI)
|
|
# Do this before the check for SMESH because it depends on vtk
|
|
# that may have its own OpenGL check but possibly fails and leaves
|
|
# OPENGL_gl_LIBRARY empty that results into linker errors
|
|
SetupOpenGL()
|
|
endif(BUILD_GUI)
|
|
SetupSalomeSMESH()
|
|
if (BUILD_FEM_NETGEN)
|
|
find_package(NETGEN)
|
|
endif(BUILD_FEM_NETGEN)
|
|
# not needed at the moment
|
|
#find_package(OpenCV REQUIRED)
|
|
SetupSwig()
|
|
SetupEigen()
|
|
# This file is included directly due to some cMake macros that are defined within.
|
|
# If these macro definitions are embedded within another macro, it causes problems.
|
|
include(cMake/FreeCAD_Helpers/SetupQt.cmake)
|
|
SetupFreetype()
|
|
|
|
if(BUILD_GUI)
|
|
SetupCoin3D()
|
|
SetupSpaceball()
|
|
SetupShibokenAndPyside()
|
|
SetupMatplotlib()
|
|
endif(BUILD_GUI)
|
|
endif(NOT FREECAD_LIBPACK_USE OR FREECAD_LIBPACK_CHECKFILE_CLBUNDLER)
|
|
|
|
if(BUILD_VR)
|
|
find_package(Rift)
|
|
endif(BUILD_VR)
|
|
|
|
SetLibraryVersions()
|
|
SetGlobalCompilerAndLinkerSettings()
|
|
|
|
add_subdirectory(src)
|
|
add_subdirectory(data)
|
|
|
|
CreatePackagingTargets()
|
|
|
|
PrintFinalReport()
|