Removes the BUILD_QT5 flag and adds a new FREECAD_QT_VERSION option, which can be set to either "Auto" (default), 5, or 6. Auto detects which version of Qt is installed on the system and chooses it. If both version are installed, Qt5 is used. Note that this DOES NOT implement compiling against Qt6, it only adds the necessary cMake infrastructure to begin work on the source code changes that will be required.
402 lines
9.2 KiB
CMake
402 lines
9.2 KiB
CMake
if(WIN32)
|
|
add_definitions(-DFCBase)
|
|
add_definitions(-DPYCXX_DLL)
|
|
add_definitions(-DBOOST_DYN_LINK)
|
|
add_definitions(-DZIPIOS_UTF8)
|
|
endif(WIN32)
|
|
|
|
include_directories(
|
|
${CMAKE_BINARY_DIR}/src
|
|
${CMAKE_SOURCE_DIR}/src
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
${Boost_INCLUDE_DIRS}
|
|
${PYTHON_INCLUDE_DIRS}
|
|
${XercesC_INCLUDE_DIRS}
|
|
${ZLIB_INCLUDE_DIR}
|
|
${PYCXX_INCLUDE_DIR}
|
|
)
|
|
|
|
if(MSVC)
|
|
set(FreeCADBase_LIBS
|
|
${Boost_LIBRARIES}
|
|
${XercesC_LIBRARIES}
|
|
${ZLIB_LIBRARIES}
|
|
debug MSVCRTD.LIB
|
|
debug MSVCPRTD.LIB
|
|
optimized MSVCRT.LIB
|
|
optimized MSVCPRT.LIB
|
|
Rpcrt4.lib
|
|
version.lib
|
|
)
|
|
|
|
#Universal C runtime introduced in VS 2015 (cl version 19)
|
|
if (NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19"))
|
|
list(APPEND FreeCADBase_LIBS
|
|
debug vcruntimed.lib
|
|
debug ucrtd.lib
|
|
debug concrtd.lib
|
|
optimized vcruntime.lib
|
|
optimized ucrt.lib
|
|
optimized concrt.lib
|
|
)
|
|
endif()
|
|
elseif(MINGW)
|
|
set(FreeCADBase_LIBS
|
|
${XercesC_LIBRARIES}
|
|
${Boost_LIBRARIES}
|
|
${ZLIB_LIBRARIES}
|
|
Rpcrt4.lib
|
|
)
|
|
else(MSVC)
|
|
set(FreeCADBase_LIBS
|
|
${XercesC_LIBRARIES}
|
|
${Boost_LIBRARIES}
|
|
${ZLIB_LIBRARIES}
|
|
)
|
|
endif(MSVC)
|
|
|
|
include_directories(
|
|
${QtCore_INCLUDE_DIRS}
|
|
)
|
|
list(APPEND FreeCADBase_LIBS ${QtCore_LIBRARIES})
|
|
|
|
|
|
if (BUILD_DYNAMIC_LINK_PYTHON)
|
|
list(APPEND FreeCADBase_LIBS ${PYTHON_LIBRARIES})
|
|
endif (BUILD_DYNAMIC_LINK_PYTHON)
|
|
|
|
# needed for OpenSUSE
|
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
|
list(APPEND FreeCADBase_LIBS -lutil -ldl)
|
|
endif()
|
|
|
|
generate_from_xml(TypePy)
|
|
generate_from_xml(BaseClassPy)
|
|
generate_from_xml(BoundBoxPy)
|
|
generate_from_xml(CoordinateSystemPy)
|
|
generate_from_xml(PersistencePy)
|
|
generate_from_xml(VectorPy)
|
|
generate_from_xml(MatrixPy)
|
|
generate_from_xml(RotationPy)
|
|
generate_from_xml(PlacementPy)
|
|
generate_from_xml(AxisPy)
|
|
generate_from_xml(UnitPy)
|
|
generate_from_xml(QuantityPy)
|
|
generate_from_xml(PrecisionPy)
|
|
generate_from_any(Parameter.xsd Parameter.inl xmlSchemeString)
|
|
|
|
if(SWIG_FOUND)
|
|
# Create the file swigpyrun.hh and then compare with the file swigpyrun.h.
|
|
# If the files are different or if swigpyrun.h doesn't exist then copy swigpyrun.hh.
|
|
# This is to avoid to having to build the target each time cmake configure is executed.
|
|
execute_process(COMMAND ${SWIG_EXECUTABLE} -python -external-runtime ${CMAKE_CURRENT_BINARY_DIR}/swigpyrun.hh)
|
|
|
|
fc_copy_file_if_different(
|
|
"${CMAKE_CURRENT_BINARY_DIR}/swigpyrun.hh"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/swigpyrun.h"
|
|
)
|
|
add_definitions(-DHAVE_SWIG=1)
|
|
endif(SWIG_FOUND)
|
|
|
|
if (EXISTS ${CMAKE_SOURCE_DIR}/src/zipios++ AND NOT FREECAD_USE_EXTERNAL_ZIPIOS)
|
|
SET(zipios_SRCS
|
|
../zipios++/backbuffer.h
|
|
../zipios++/basicentry.cpp
|
|
../zipios++/basicentry.h
|
|
../zipios++/collcoll.cpp
|
|
../zipios++/collcoll.h
|
|
../zipios++/deflateoutputstreambuf.cpp
|
|
../zipios++/deflateoutputstreambuf.h
|
|
../zipios++/dircoll.cpp
|
|
../zipios++/dircoll.h
|
|
../zipios++/directory.cpp
|
|
../zipios++/directory.h
|
|
../zipios++/fcoll.cpp
|
|
../zipios++/fcoll.h
|
|
../zipios++/fcollexceptions.cpp
|
|
../zipios++/fcollexceptions.h
|
|
../zipios++/fileentry.cpp
|
|
../zipios++/fileentry.h
|
|
../zipios++/filepath.cpp
|
|
../zipios++/filepath.h
|
|
../zipios++/filterinputstreambuf.cpp
|
|
../zipios++/filterinputstreambuf.h
|
|
../zipios++/filteroutputstreambuf.cpp
|
|
../zipios++/filteroutputstreambuf.h
|
|
../zipios++/gzipoutputstream.cpp
|
|
../zipios++/gzipoutputstream.h
|
|
../zipios++/gzipoutputstreambuf.cpp
|
|
../zipios++/gzipoutputstreambuf.h
|
|
../zipios++/inflateinputstreambuf.cpp
|
|
../zipios++/inflateinputstreambuf.h
|
|
../zipios++/meta-iostreams.h
|
|
../zipios++/outputstringstream.h
|
|
../zipios++/simplesmartptr.h
|
|
../zipios++/virtualseeker.h
|
|
../zipios++/zipfile.cpp
|
|
../zipios++/zipfile.h
|
|
../zipios++/ziphead.cpp
|
|
../zipios++/ziphead.h
|
|
../zipios++/zipheadio.cpp
|
|
../zipios++/zipheadio.h
|
|
../zipios++/zipinputstream.cpp
|
|
../zipios++/zipinputstream.h
|
|
../zipios++/zipinputstreambuf.cpp
|
|
../zipios++/zipinputstreambuf.h
|
|
../zipios++/zipios_common.h
|
|
../zipios++/zipios-config.h
|
|
../zipios++/zipios_defs.h
|
|
../zipios++/zipoutputstreambuf.cpp
|
|
../zipios++/zipoutputstreambuf.h
|
|
../zipios++/zipoutputstream.cpp
|
|
../zipios++/zipoutputstream.h
|
|
)
|
|
SOURCE_GROUP("zipios" FILES ${zipios_SRCS})
|
|
endif ()
|
|
|
|
SOURCE_GROUP("pycxx" FILES ${PYCXX_SOURCES})
|
|
|
|
SET(FreeCADBase_XML_SRCS
|
|
AxisPy.xml
|
|
BaseClassPy.xml
|
|
BoundBoxPy.xml
|
|
CoordinateSystemPy.xml
|
|
MatrixPy.xml
|
|
PersistencePy.xml
|
|
PlacementPy.xml
|
|
RotationPy.xml
|
|
VectorPy.xml
|
|
QuantityPy.xml
|
|
TypePy.xml
|
|
UnitPy.xml
|
|
PrecisionPy.xml
|
|
)
|
|
SOURCE_GROUP("XML" FILES ${FreeCADBase_XML_SRCS})
|
|
|
|
SET(FreeCADBase_UNITAPI_SRCS
|
|
UnitsApi.cpp
|
|
UnitsApiPy.cpp
|
|
UnitsApi.h
|
|
UnitsSchema.h
|
|
UnitsSchema.cpp
|
|
UnitsSchemaInternal.h
|
|
UnitsSchemaInternal.cpp
|
|
UnitsSchemaMKS.h
|
|
UnitsSchemaMKS.cpp
|
|
UnitsSchemaImperial1.h
|
|
UnitsSchemaImperial1.cpp
|
|
UnitsSchemaCentimeters.h
|
|
UnitsSchemaCentimeters.cpp
|
|
UnitsSchemaMmMin.h
|
|
UnitsSchemaMmMin.cpp
|
|
UnitsSchemaFemMilliMeterNewton.h
|
|
UnitsSchemaFemMilliMeterNewton.cpp
|
|
Quantity.h
|
|
Quantity.cpp
|
|
QuantityPyImp.cpp
|
|
QuantityParser.l
|
|
QuantityParser.y
|
|
Unit.h
|
|
Unit.cpp
|
|
UnitPyImp.cpp
|
|
|
|
)
|
|
SOURCE_GROUP("Units" FILES ${FreeCADBase_UNITAPI_SRCS})
|
|
|
|
SET(SWIG_SRCS
|
|
swigpyrun.cpp
|
|
)
|
|
|
|
SET(FreeCADBase_CPP_SRCS
|
|
Axis.cpp
|
|
AxisPyImp.cpp
|
|
Base64.cpp
|
|
BaseClass.cpp
|
|
BaseClassPyImp.cpp
|
|
BindingManager.cpp
|
|
BoundBoxPyImp.cpp
|
|
Builder3D.cpp
|
|
Console.cpp
|
|
ConsoleObserver.cpp
|
|
CoordinateSystem.cpp
|
|
CoordinateSystemPyImp.cpp
|
|
Debugger.cpp
|
|
DualQuaternion.cpp
|
|
Exception.cpp
|
|
ExceptionFactory.cpp
|
|
Factory.cpp
|
|
FileInfo.cpp
|
|
FileTemplate.cpp
|
|
FutureWatcherProgress.cpp
|
|
gzstream.cpp
|
|
gzstream.h
|
|
GeometryPyCXX.cpp
|
|
Handle.cpp
|
|
InputSource.cpp
|
|
Interpreter.cpp
|
|
Matrix.cpp
|
|
MatrixPyImp.cpp
|
|
MemDebug.cpp
|
|
Mutex.cpp
|
|
Parameter.xsd
|
|
Parameter.cpp
|
|
ParameterPy.cpp
|
|
Persistence.cpp
|
|
PersistencePyImp.cpp
|
|
Placement.cpp
|
|
PlacementPyImp.cpp
|
|
PrecisionPyImp.cpp
|
|
PyExport.cpp
|
|
PyObjectBase.cpp
|
|
QtTools.cpp
|
|
Reader.cpp
|
|
Rotation.cpp
|
|
RotationPyImp.cpp
|
|
Sequencer.cpp
|
|
SmartPtrPy.cpp
|
|
Stream.cpp
|
|
Swap.cpp
|
|
${SWIG_SRCS}
|
|
TimeInfo.cpp
|
|
Tools.cpp
|
|
Tools2D.cpp
|
|
Tools3D.cpp
|
|
Translate.cpp
|
|
Type.cpp
|
|
TypePyImp.cpp
|
|
Uuid.cpp
|
|
Vector3D.cpp
|
|
VectorPyImp.cpp
|
|
ViewProj.cpp
|
|
Writer.cpp
|
|
XMLTools.cpp
|
|
ZipHeader.cpp
|
|
)
|
|
|
|
SET(SWIG_HEADERS
|
|
swigpyrun.inl
|
|
)
|
|
|
|
SET(FreeCADBase_HPP_SRCS
|
|
Axis.h
|
|
Base64.h
|
|
BaseClass.h
|
|
BindingManager.h
|
|
Bitmask.h
|
|
BoundBox.h
|
|
Builder3D.h
|
|
Console.h
|
|
ConsoleObserver.h
|
|
Converter.h
|
|
CoordinateSystem.h
|
|
Debugger.h
|
|
DualNumber.h
|
|
DualQuaternion.h
|
|
Exception.h
|
|
ExceptionFactory.h
|
|
Factory.h
|
|
FileInfo.h
|
|
FileTemplate.h
|
|
FutureWatcherProgress.h
|
|
fdstream.hpp
|
|
gzstream.h
|
|
GeometryPyCXX.h
|
|
Handle.h
|
|
InputSource.h
|
|
Interpreter.h
|
|
Matrix.h
|
|
MemDebug.h
|
|
Mutex.h
|
|
Observer.h
|
|
Parameter.h
|
|
Persistence.h
|
|
Placement.h
|
|
Precision.h
|
|
PyExport.h
|
|
PyObjectBase.h
|
|
QtTools.h
|
|
Reader.h
|
|
Rotation.h
|
|
Sequencer.h
|
|
SmartPtrPy.h
|
|
Stream.h
|
|
Swap.h
|
|
${SWIG_HEADERS}
|
|
TimeInfo.h
|
|
Tools.h
|
|
Tools2D.h
|
|
Tools3D.h
|
|
Translate.h
|
|
Type.h
|
|
Uuid.h
|
|
Vector3D.h
|
|
ViewProj.h
|
|
Writer.h
|
|
XMLTools.h
|
|
ZipHeader.h
|
|
)
|
|
|
|
SET(FreeCADBase_SRCS
|
|
${PYCXX_SOURCES}
|
|
${FreeCADBase_CPP_SRCS}
|
|
${FreeCADBase_HPP_SRCS}
|
|
${FreeCADBase_XML_SRCS}
|
|
${FreeCADBase_UNITAPI_SRCS}
|
|
PyTools.c
|
|
PyTools.h
|
|
PreCompiled.cpp
|
|
PreCompiled.h
|
|
)
|
|
|
|
IF (MSVC)
|
|
SET(FreeCADBase_SRCS
|
|
${FreeCADBase_SRCS}
|
|
StackWalker.cpp
|
|
StackWalker.h
|
|
)
|
|
ENDIF(MSVC)
|
|
|
|
# Use external zipios++ if specified.
|
|
if(FREECAD_USE_EXTERNAL_ZIPIOS)
|
|
find_library(ZIPIOS_LIBRARY zipios)
|
|
find_path(ZIPIOS_INCLUDES zipios++/zipios-config.h)
|
|
if(ZIPIOS_LIBRARY)
|
|
message(STATUS "Found zipios++: ${ZIPIOS}")
|
|
endif()
|
|
if(ZIPIOS_INCLUDES)
|
|
message(STATUS "Found zipios++ headers.")
|
|
endif()
|
|
if(ZIPIOS_LIBRARY AND ZIPIOS_INCLUDES)
|
|
list(APPEND FreeCADBase_LIBS ${ZIPIOS_LIBRARY})
|
|
include_directories(${ZIPIOS_INCLUDES})
|
|
else()
|
|
message(FATAL_ERROR "Using external zipios++ was specified but was not found.")
|
|
endif()
|
|
else(FREECAD_USE_EXTERNAL_ZIPIOS)
|
|
list(APPEND FreeCADBase_SRCS ${zipios_SRCS})
|
|
endif(FREECAD_USE_EXTERNAL_ZIPIOS)
|
|
|
|
|
|
if(FREECAD_USE_PCH)
|
|
add_definitions(-D_PreComp_)
|
|
ADD_MSVC_PRECOMPILED_HEADER(FreeCADBase PreCompiled.h PreCompiled.cpp FreeCADBase_CPP_SRCS)
|
|
endif(FREECAD_USE_PCH)
|
|
|
|
add_library(FreeCADBase SHARED ${FreeCADBase_SRCS})
|
|
|
|
target_link_libraries(FreeCADBase ${FreeCADBase_LIBS})
|
|
|
|
SET_BIN_DIR(FreeCADBase FreeCADBase)
|
|
|
|
if(WIN32)
|
|
INSTALL(TARGETS FreeCADBase
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
)
|
|
else(WIN32)
|
|
INSTALL(TARGETS FreeCADBase
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
)
|
|
endif(WIN32)
|