diff --git a/CMakeLists.txt b/CMakeLists.txt index ca6a5c1a8..5ee1122b8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -113,181 +113,181 @@ endif(MSVC) # ============================================================================== # == All the options for the build process ============ -OPTION(FREECAD_BUILD_GUI "Build FreeCAD Gui. Otherwise you have only the command line and the Python import module." ON) +OPTION(BUILD_GUI "Build FreeCAD Gui. Otherwise you have only the command line and the Python import module." ON) OPTION(FREECAD_MAINTAINERS_BUILD "Build FreeCAD for Maintainers, with Docu and 3rd party libs. On Windows the Installer is build." OFF) OPTION(FREECAD_USE_EXTERNAL_ZIPIOS "Use system installed zipios++ instead of the bundled." OFF) OPTION(FREECAD_USE_EXTERNAL_PIVY "Use system installed python-pivy instead of the bundled." OFF) -OPTION(FREECAD_BUILD_DEBIAN "Prepare for a build of a Debian package" OFF) +OPTION(BUILD_DEBIAN "Prepare for a build of a Debian package" OFF) -OPTION(FREECAD_BUILD_CAM "Build the FreeCAD CAM module and the needed libs, be aware, unfinished code!" OFF) -OPTION(FREECAD_BUILD_FEM "Build the FreeCAD FEM module, be aware, unfinished code!" ON) -OPTION(FREECAD_BUILD_SANDBOX "Build the FreeCAD Sandbox module which is only for testing purposes" OFF) -OPTION(FREECAD_BUILD_TEMPLATE "Build the FreeCAD template module which is only for testing purposes" OFF) -OPTION(FREECAD_BUILD_ARCH "Build the FreeCAD Architecture module" ON) -OPTION(FREECAD_BUILD_ASSEMBLY "Build the FreeCAD Assembly module" ON) -OPTION(FREECAD_BUILD_COMPLETE "Build the FreeCAD complete module" ON) -OPTION(FREECAD_BUILD_DRAFT "Build the FreeCAD draft module" ON) -OPTION(FREECAD_BUILD_DRAWING "Build the FreeCAD drawing module" ON) -OPTION(FREECAD_BUILD_IDF "Build the FreeCAD idf module" ON) -OPTION(FREECAD_BUILD_IMAGE "Build the FreeCAD image module" ON) -OPTION(FREECAD_BUILD_IMPORT "Build the FreeCAD import module" ON) -OPTION(FREECAD_BUILD_INSPECTION "Build the FreeCAD inspection module" ON) -OPTION(FREECAD_BUILD_JTREADER "Build the FreeCAD jt reader module" OFF) -OPTION(FREECAD_BUILD_MATERIAL "Build the FreeCAD material module" ON) -OPTION(FREECAD_BUILD_MESH "Build the FreeCAD mesh module" ON) -OPTION(FREECAD_BUILD_MESH_PART "Build the FreeCAD mesh part module" ON) -OPTION(FREECAD_BUILD_OPENSCAD "Build the FreeCAD openscad module" ON) -OPTION(FREECAD_BUILD_PART "Build the FreeCAD part module" ON) -OPTION(FREECAD_BUILD_PART_DESIGN "Build the FreeCAD part design module" ON) -OPTION(FREECAD_BUILD_PLOT "Build the FreeCAD plot module" ON) -OPTION(FREECAD_BUILD_POINTS "Build the FreeCAD points module" ON) -OPTION(FREECAD_BUILD_RAYTRACING "Build the FreeCAD ray tracing module" ON) -OPTION(FREECAD_BUILD_REVERSEENGINEERING "Build the FreeCAD reverse engineering module" ON) -OPTION(FREECAD_BUILD_ROBOT "Build the FreeCAD robot module" ON) -OPTION(FREECAD_BUILD_SHIP "Build the FreeCAD ship module" ON) -OPTION(FREECAD_BUILD_SKETCHER "Build the FreeCAD sketcher module" ON) -OPTION(FREECAD_BUILD_SPREADSHEET "Build the FreeCAD spreadsheet module" ON) -OPTION(FREECAD_BUILD_START "Build the FreeCAD start module" ON) -OPTION(FREECAD_BUILD_TEST "Build the FreeCAD test module" ON) -OPTION(FREECAD_BUILD_WEB "Build the FreeCAD web module" ON) +OPTION(BUILD_CAM "Build the FreeCAD CAM module and the needed libs, be aware, unfinished code!" OFF) +OPTION(BUILD_FEM "Build the FreeCAD FEM module, be aware, unfinished code!" ON) +OPTION(BUILD_SANDBOX "Build the FreeCAD Sandbox module which is only for testing purposes" OFF) +OPTION(BUILD_TEMPLATE "Build the FreeCAD template module which is only for testing purposes" OFF) +OPTION(BUILD_ARCH "Build the FreeCAD Architecture module" ON) +OPTION(BUILD_ASSEMBLY "Build the FreeCAD Assembly module" ON) +OPTION(BUILD_COMPLETE "Build the FreeCAD complete module" ON) +OPTION(BUILD_DRAFT "Build the FreeCAD draft module" ON) +OPTION(BUILD_DRAWING "Build the FreeCAD drawing module" ON) +OPTION(BUILD_IDF "Build the FreeCAD idf module" ON) +OPTION(BUILD_IMAGE "Build the FreeCAD image module" ON) +OPTION(BUILD_IMPORT "Build the FreeCAD import module" ON) +OPTION(BUILD_INSPECTION "Build the FreeCAD inspection module" ON) +OPTION(BUILD_JTREADER "Build the FreeCAD jt reader module" OFF) +OPTION(BUILD_MATERIAL "Build the FreeCAD material module" ON) +OPTION(BUILD_MESH "Build the FreeCAD mesh module" ON) +OPTION(BUILD_MESH_PART "Build the FreeCAD mesh part module" ON) +OPTION(BUILD_OPENSCAD "Build the FreeCAD openscad module" ON) +OPTION(BUILD_PART "Build the FreeCAD part module" ON) +OPTION(BUILD_PART_DESIGN "Build the FreeCAD part design module" ON) +OPTION(BUILD_PLOT "Build the FreeCAD plot module" ON) +OPTION(BUILD_POINTS "Build the FreeCAD points module" ON) +OPTION(BUILD_RAYTRACING "Build the FreeCAD ray tracing module" ON) +OPTION(BUILD_REVERSEENGINEERING "Build the FreeCAD reverse engineering module" ON) +OPTION(BUILD_ROBOT "Build the FreeCAD robot module" ON) +OPTION(BUILD_SHIP "Build the FreeCAD ship module" ON) +OPTION(BUILD_SKETCHER "Build the FreeCAD sketcher module" ON) +OPTION(BUILD_SPREADSHEET "Build the FreeCAD spreadsheet module" ON) +OPTION(BUILD_START "Build the FreeCAD start module" ON) +OPTION(BUILD_TEST "Build the FreeCAD test module" ON) +OPTION(BUILD_WEB "Build the FreeCAD web module" ON) if(MSVC) OPTION(FREECAD_USE_3DCONNEXION "Use the 3D connexion SDK to support 3d mouse." ON) OPTION(FREECAD_USE_FREETYPE "Builds the features using FreeType libs" OFF) -OPTION(FREECAD_BUILD_FEM_NETGEN "Build the FreeCAD FEM module with the NETGEN mesher" ON) +OPTION(BUILD_FEM_NETGEN "Build the FreeCAD FEM module with the NETGEN mesher" ON) else(MSVC) set(FREECAD_USE_3DCONNEXION OFF) OPTION(FREECAD_USE_FREETYPE "Builds the features using FreeType libs" ON) -OPTION(FREECAD_BUILD_FEM_NETGEN "Build the FreeCAD FEM module with the NETGEN mesher" OFF) +OPTION(BUILD_FEM_NETGEN "Build the FreeCAD FEM module with the NETGEN mesher" OFF) endif(MSVC) # if this is set override some options -if (FREECAD_BUILD_DEBIAN) +if (BUILD_DEBIAN) set(FREECAD_USE_EXTERNAL_ZIPIOS ON) set(FREECAD_USE_EXTERNAL_PIVY ON) -endif (FREECAD_BUILD_DEBIAN) +endif (BUILD_DEBIAN) # ============================================================================== #inter-module dependencies #took these from Mod/Complete/App/AppComplete.cpp. appears to be working. -if(FREECAD_BUILD_COMPLETE) - set(FREECAD_BUILD_MESH ON) - set(FREECAD_BUILD_POINTS ON) - set(FREECAD_BUILD_DRAWING ON) - set(FREECAD_BUILD_RAYTRACING ON) - set(FREECAD_BUILD_PART_DESIGN ON) - set(FREECAD_BUILD_IMAGE ON) - set(FREECAD_BUILD_DRAFT ON) -endif(FREECAD_BUILD_COMPLETE) +if(BUILD_COMPLETE) + set(BUILD_MESH ON) + set(BUILD_POINTS ON) + set(BUILD_DRAWING ON) + set(BUILD_RAYTRACING ON) + set(BUILD_PART_DESIGN ON) + set(BUILD_IMAGE ON) + set(BUILD_DRAFT ON) +endif(BUILD_COMPLETE) #inferred from .py files. appears to be working. -if(FREECAD_BUILD_ARCH) - set(FREECAD_BUILD_PART ON) - set(FREECAD_BUILD_MESH ON) - set(FREECAD_BUILD_DRAFT ON) -endif(FREECAD_BUILD_ARCH) +if(BUILD_ARCH) + set(BUILD_PART ON) + set(BUILD_MESH ON) + set(BUILD_DRAFT ON) +endif(BUILD_ARCH) #inferred from .py files. appears to be working. -if(FREECAD_BUILD_OPENSCAD) - set(FREECAD_BUILD_MESH_PART ON) - set(FREECAD_BUILD_DRAFT ON) -endif(FREECAD_BUILD_OPENSCAD) +if(BUILD_OPENSCAD) + set(BUILD_MESH_PART ON) + set(BUILD_DRAFT ON) +endif(BUILD_OPENSCAD) #inferred from cmakelists.txt. appears to be working. -if(FREECAD_BUILD_INSPECTION) - set(FREECAD_BUILD_MESH ON) - set(FREECAD_BUILD_POINTS ON) - set(FREECAD_BUILD_PART ON) -endif(FREECAD_BUILD_INSPECTION) +if(BUILD_INSPECTION) + set(BUILD_MESH ON) + set(BUILD_POINTS ON) + set(BUILD_PART ON) +endif(BUILD_INSPECTION) #inferred from .py files. appears to be working. -if(FREECAD_BUILD_SHIP) - set(FREECAD_BUILD_PART ON) - set(FREECAD_BUILD_PLOT ON) - set(FREECAD_BUILD_IMAGE ON) -endif(FREECAD_BUILD_SHIP) +if(BUILD_SHIP) + set(BUILD_PART ON) + set(BUILD_PLOT ON) + set(BUILD_IMAGE ON) +endif(BUILD_SHIP) #inferred from .py files. appears to be working. -if(FREECAD_BUILD_SPREADSHEET) - set(FREECAD_BUILD_DRAFT ON) -endif(FREECAD_BUILD_SPREADSHEET) +if(BUILD_SPREADSHEET) + set(BUILD_DRAFT ON) +endif(BUILD_SPREADSHEET) #this has been tested. appears to be working. -if(FREECAD_BUILD_DRAFT) - set(FREECAD_BUILD_SKETCHER ON) -endif(FREECAD_BUILD_DRAFT) +if(BUILD_DRAFT) + set(BUILD_SKETCHER ON) +endif(BUILD_DRAFT) #inferred from cmakelists.txt. appears to be working. -if(FREECAD_BUILD_PART_DESIGN) - set(FREECAD_BUILD_SKETCHER ON) -endif(FREECAD_BUILD_PART_DESIGN) +if(BUILD_PART_DESIGN) + set(BUILD_SKETCHER ON) +endif(BUILD_PART_DESIGN) #inferred from cmakelists.txt. appears to be working. -if(FREECAD_BUILD_REVERSEENGINEERING) - set(FREECAD_BUILD_PART ON) - set(FREECAD_BUILD_MESH ON) -endif(FREECAD_BUILD_REVERSEENGINEERING) +if(BUILD_REVERSEENGINEERING) + set(BUILD_PART ON) + set(BUILD_MESH ON) +endif(BUILD_REVERSEENGINEERING) #inferred from cmakelists.txt. appears to be working. -if(FREECAD_BUILD_MESH_PART) - set(FREECAD_BUILD_PART ON) - set(FREECAD_BUILD_MESH ON) - set(FREECAD_BUILD_SMESH ON) -endif(FREECAD_BUILD_MESH_PART) +if(BUILD_MESH_PART) + set(BUILD_PART ON) + set(BUILD_MESH ON) + set(BUILD_SMESH ON) +endif(BUILD_MESH_PART) #inferred from cmakelists.txt. build errors. obsolete? -if(FREECAD_BUILD_CAM) - set(FREECAD_BUILD_PART ON) - set(FREECAD_BUILD_MESH ON) -endif(FREECAD_BUILD_CAM) +if(BUILD_CAM) + set(BUILD_PART ON) + set(BUILD_MESH ON) +endif(BUILD_CAM) #inferred from cmakelists.txt. appears to be working. -if(FREECAD_BUILD_RAYTRACING) - set(FREECAD_BUILD_PART ON) -endif(FREECAD_BUILD_RAYTRACING) +if(BUILD_RAYTRACING) + set(BUILD_PART ON) +endif(BUILD_RAYTRACING) #inferred from cmakelists.txt. appears to be working. -if(FREECAD_BUILD_DRAWING) - set(FREECAD_BUILD_PART ON) -endif(FREECAD_BUILD_DRAWING) +if(BUILD_DRAWING) + set(BUILD_PART ON) +endif(BUILD_DRAWING) #inferred from cmakelists.txt. appears to be working. -if(FREECAD_BUILD_ROBOT) - set(FREECAD_BUILD_PART ON) -endif(FREECAD_BUILD_ROBOT) +if(BUILD_ROBOT) + set(BUILD_PART ON) +endif(BUILD_ROBOT) #inferred from cmakelists.txt. appears to be working. -if(FREECAD_BUILD_SKETCHER) - set(FREECAD_BUILD_PART ON) -endif(FREECAD_BUILD_SKETCHER) +if(BUILD_SKETCHER) + set(BUILD_PART ON) +endif(BUILD_SKETCHER) #inferred from .py files. built, but not sure how to test. -if(FREECAD_BUILD_IDF) - set(FREECAD_BUILD_PART ON) -endif(FREECAD_BUILD_IDF) +if(BUILD_IDF) + set(BUILD_PART ON) +endif(BUILD_IDF) #inferred from cmakelists.txt. built, but not sure how to test. -if(FREECAD_BUILD_IMPORT) - set(FREECAD_BUILD_PART ON) -endif(FREECAD_BUILD_IMPORT) +if(BUILD_IMPORT) + set(BUILD_PART ON) +endif(BUILD_IMPORT) #inferred from cmakelists.txt. appears to be working. -if(FREECAD_BUILD_FEM) - set(FREECAD_BUILD_PART ON) - set(FREECAD_BUILD_SMESH ON) -endif(FREECAD_BUILD_FEM) +if(BUILD_FEM) + set(BUILD_PART ON) + set(BUILD_SMESH ON) +endif(BUILD_FEM) #inferred from cmakelists.txt. appears to be working. -if(FREECAD_BUILD_SANDBOX) - set(FREECAD_BUILD_PART ON) - set(FREECAD_BUILD_MESH ON) -endif(FREECAD_BUILD_SANDBOX) +if(BUILD_SANDBOX) + set(BUILD_PART ON) + set(BUILD_MESH ON) +endif(BUILD_SANDBOX) #inferred from header includes. not tested. -if(FREECAD_BUILD_JTREADER) - set(FREECAD_BUILD_MESH ON) -endif(FREECAD_BUILD_JTREADER) +if(BUILD_JTREADER) + set(BUILD_MESH ON) +endif(BUILD_JTREADER) #leaving test module for someone else. #image has none. as far as I can tell. @@ -309,6 +309,7 @@ if(FREECAD_LIBPACK_USE) find_file(FREECAD_LIBPACK_CHECKFILE7X boost_program_options-vc90-mt-gd-1_39.lib ${FREECAD_LIBPACK_DIR}/lib ) find_file(FREECAD_LIBPACK_CHECKFILE8X boost_program_options-vc90-mt-gd-1_48.lib ${FREECAD_LIBPACK_DIR}/lib ) find_file(FREECAD_LIBPACK_CHECKFILE9X boost_program_options-vc90-mt-gd-1_54.lib ${FREECAD_LIBPACK_DIR}/lib ) + find_file(FREECAD_LIBPACK_CHECKFILE10X boost_program_options-vc110-mt-1_55.lib ${FREECAD_LIBPACK_DIR}/lib ) find_file(FREECAD_LIBPACK_CHECKCUSTOM boost_program_options-vc90-mt-gd-1_41.lib ${FREECAD_LIBPACK_DIR}/lib ) # don't show them in the GUI @@ -316,6 +317,7 @@ if(FREECAD_LIBPACK_USE) set(FREECAD_LIBPACK_CHECKFILE7X "${FREECAD_LIBPACK_CHECKFILE7X}" CACHE INTERNAL "Find libpack") set(FREECAD_LIBPACK_CHECKFILE8X "${FREECAD_LIBPACK_CHECKFILE8X}" CACHE INTERNAL "Find libpack") set(FREECAD_LIBPACK_CHECKFILE9X "${FREECAD_LIBPACK_CHECKFILE9X}" CACHE INTERNAL "Find libpack") + set(FREECAD_LIBPACK_CHECKFILE10X "${FREECAD_LIBPACK_CHECKFILE10X}" CACHE INTERNAL "Find libpack") set(FREECAD_LIBPACK_CHECKCUSTOM "${FREECAD_LIBPACK_CHECKCUSTOM}" CACHE INTERNAL "Find libpack") IF(FREECAD_LIBPACK_CHECKFILE6X) @@ -340,6 +342,10 @@ if(FREECAD_LIBPACK_USE) file(GLOB FREECAD_LIBPACK_PYSIDE "${FREECAD_LIBPACK_DIR}/pyside/lib/site-packages/PySide/*.py*") file(GLOB_RECURSE FREECAD_LIBPACK_PYSIDEUIC RELATIVE "${FREECAD_LIBPACK_PYSIDEUIC_REL}" "${FREECAD_LIBPACK_PYSIDEUIC_REL}/pysideuic/*.py") file(GLOB FREECAD_LIBPACK_PYTHON "${FREECAD_LIBPACK_DIR}/bin/*.py*") + ELSEIF(FREECAD_LIBPACK_CHECKFILE10X) + set(FREECAD_LIBPACK_VERSION "10.x" CACHE STRING "Displays if the libpack has been found" FORCE) + include(cMake/UseLibPack10x.cmake) + set(SWIG_EXECUTABLE ${FREECAD_LIBPACK_DIR}/tools/swigwin-3.0.2/swig.exe CACHE STRING "Swig" FORCE) ELSEIF(FREECAD_LIBPACK_CHECKCUSTOM) set(FREECAD_LIBPACK_VERSION "Custom" CACHE STRING "Displays if the libpack has been found" FORCE) include(cMake/UseLibPackCustom.cmake) @@ -494,9 +500,9 @@ else(FREECAD_LIBPACK_USE) # -------------------------------- Netgen -------------------------------- - if (FREECAD_BUILD_FEM_NETGEN) + if (BUILD_FEM_NETGEN) find_package(NETGEN) - endif(FREECAD_BUILD_FEM_NETGEN) + endif(BUILD_FEM_NETGEN) # -------------------------------- OpenCV -------------------------------- @@ -526,12 +532,12 @@ else(FREECAD_LIBPACK_USE) SET(QT_MIN_VERSION 4.5.0) set(QT_USE_QTNETWORK TRUE) set(QT_USE_QTXML TRUE) - if(FREECAD_BUILD_GUI) + if(BUILD_GUI) set(QT_USE_QTOPENGL TRUE) set(QT_USE_QTSVG TRUE) set(QT_USE_QTUITOOLS TRUE) set(QT_USE_QTWEBKIT TRUE) - endif(FREECAD_BUILD_GUI) + endif(BUILD_GUI) find_package(Qt4 REQUIRED) include(${QT_USE_FILE}) @@ -577,7 +583,7 @@ else(FREECAD_LIBPACK_USE) #--------------------------------------------------- - if(FREECAD_BUILD_GUI) + if(BUILD_GUI) # -------------------------------- OpenGL -------------------------------- find_package(OpenGL) @@ -623,7 +629,7 @@ else(FREECAD_LIBPACK_USE) # ------------------------------------------------------------------------ - endif(FREECAD_BUILD_GUI) + endif(BUILD_GUI) endif(FREECAD_LIBPACK_USE) diff --git a/cMake/UseLibPack10x.cmake b/cMake/UseLibPack10x.cmake new file mode 100644 index 000000000..2e6aed4f7 --- /dev/null +++ b/cMake/UseLibPack10x.cmake @@ -0,0 +1,465 @@ +# ================================================================================ +# == Win32 is default behaviour use the LibPack copied in Source tree ============ + +# -------------------------------------------------------------------------------- +# General includes + +link_directories(${FREECAD_LIBPACK_DIR}/lib) +include_directories(${FREECAD_LIBPACK_DIR}/include) + +# OpenGL +set(OPENGL_gl_LIBRARY opengl32 glu32) + +# Python +set(PYTHON_DEBUG_LIBRARY python27_d.lib) +set(PYTHON_LIBRARY python27.lib) +set(PYTHON_INCLUDE_PATH ${FREECAD_LIBPACK_DIR}/include/Python-2.7.5) +set(PYTHON_EXECUTABLE ${FREECAD_LIBPACK_DIR}/bin/python.exe) +set(PYTHONLIBS_FOUND TRUE) + +# XercesC +set(XERCESC_INCLUDE_DIR ${FREECAD_LIBPACK_DIR}/include/xerces-c-3.1.1) +set(XERCESC_LIBRARIES xerces-c_3.lib) +set(XERCESC_DEBUG_LIBRARIES xerces-c_3D.lib) +set(XERCESC_FOUND TRUE) + +# Boost +set(Boost_INCLUDE_DIRS ${FREECAD_LIBPACK_DIR}/include/boost-1_55) +set(Boost_LIBRARIES + optimized boost_filesystem-vc110-mt-1_55.lib + optimized boost_system-vc110-mt-1_55.lib + optimized boost_graph-vc110-mt-1_55.lib + optimized boost_program_options-vc110-mt-1_55.lib + optimized boost_regex-vc110-mt-1_55.lib + optimized boost_signals-vc110-mt-1_55.lib + optimized boost_thread-vc110-mt-1_55.lib +) +set(Boost_DEBUG_LIBRARIES + debug boost_filesystem-vc110-mt-gd-1_55.lib + debug boost_system-vc110-mt-gd-1_55.lib + debug boost_graph-vc110-mt-gd-1_55.lib + debug boost_program_options-vc110-mt-gd-1_55.lib + debug boost_regex-vc110-mt-gd-1_55.lib + debug boost_signals-vc110-mt-gd-1_55.lib + debug boost_thread-vc110-mt-gd-1_55.lib +) +set(Boost_FOUND TRUE) + +# Zlib +set(ZLIB_INCLUDE_DIR ${FREECAD_LIBPACK_DIR}/include/zlib-1.2.3) +set(ZLIB_LIBRARIES zlib.lib) +set(ZLIB_FOUND TRUE) + +# SMESH +#set(SMESH_INCLUDE_DIR ${FREECAD_LIBPACK_DIR}/include/smesh) +#set(SMESH_LIBRARIES +# StdMeshers.lib +# MEFISTO2.lib +# SMESH.lib +# DriverUNV.lib +# SMESHDS.lib +# DriverSTL.lib +# DriverDAT.lib +# Driver.lib +# SMDS.lib +#) + +set(SMESH_FOUND TRUE) + +# Coin3D + +find_path(COIN3D_INCLUDE_DIR Inventor/So.h +${FREECAD_LIBPACK_DIR}/include/Coin-4.0.0 +) +find_library(COIN3D_LIBRARY_RELEASE coin4 + "${FREECAD_LIBPACK_DIR}/lib" +) +find_library(COIN3D_LIBRARY_DEBUG coin4d + "${FREECAD_LIBPACK_DIR}/lib" +) + +set(COIN3D_FOUND TRUE) + + +# QT +set(QT_INCLUDE_DIR + ${FREECAD_LIBPACK_DIR}/include/Qt-4.8.6/ + ${FREECAD_LIBPACK_DIR}/include/Qt-4.8.6/Qt + ${FREECAD_LIBPACK_DIR}/include/Qt-4.8.6/QtCore + ${FREECAD_LIBPACK_DIR}/include/Qt-4.8.6/QtGui + ${FREECAD_LIBPACK_DIR}/include/Qt-4.8.6/QtDesigner + ${FREECAD_LIBPACK_DIR}/include/Qt-4.8.6/QtSvg + ${FREECAD_LIBPACK_DIR}/include/Qt-4.8.6/QtNetwork + ${FREECAD_LIBPACK_DIR}/include/Qt-4.8.6/QtSql + ${FREECAD_LIBPACK_DIR}/include/Qt-4.8.6/QtTest + ${FREECAD_LIBPACK_DIR}/include/Qt-4.8.6/QtUiTools + ${FREECAD_LIBPACK_DIR}/include/Qt-4.8.6/QtXml + ${FREECAD_LIBPACK_DIR}/include/Qt-4.8.6/QtOpenGl + ${FREECAD_LIBPACK_DIR}/include/Qt-4.8.6/QtWebKit +) + +set(QT_QTCORE_INCLUDE_DIR + ${FREECAD_LIBPACK_DIR}/include/Qt-4.8.6/ + ${FREECAD_LIBPACK_DIR}/include/Qt-4.8.6/QtCore +) + +set(QT_QT3SUPPORT_INCLUDE_DIR + ${FREECAD_LIBPACK_DIR}/include/Qt-4.8.6/Qt3Support +) + +set(QT_LIBRARIES + optimized QtCore4.lib + optimized QtGui4.lib + optimized QtDesigner4.lib + optimized QtSvg4.lib + optimized QtNetwork4.lib + optimized QtSql4.lib + optimized QtTest4.lib + optimized QtXml4.lib + optimized QtOpenGl4.lib + optimized QtWebKit4.lib +) +set(QT_DEBUG_LIBRARIES + debug QtCored4.lib + debug QtGuid4.lib + debug QtDesignerd4.lib + debug QtSvgd4.lib + debug QtNetworkd4.lib + debug QtSqld4.lib + debug QtTestd4.lib + debug QtXmld4.lib + debug QtOpenGld4.lib + debug QtWebKitd4.lib +) + +set(QT_QTCORE_LIBRARY_DEBUG + debug QtCored4.lib +) + +set(QT_QTCORE_LIBRARY + optimized QtCore4.lib +) + +set(QT_QT3SUPPORT_LIBRARY_DEBUG + debug Qt3Supportd4.lib +) + +set(QT_QT3SUPPORT_LIBRARY + optimized Qt3Support4.lib +) + +set(QT_UIC_EXECUTABLE ${FREECAD_LIBPACK_DIR}/bin/uic.exe) +set(QT_MOC_EXECUTABLE ${FREECAD_LIBPACK_DIR}/bin/moc.exe) +set(QT_RCC_EXECUTABLE ${FREECAD_LIBPACK_DIR}/bin/rcc.exe) +set(QT_HELPCOMPILER_EXECUTABLE ${FREECAD_LIBPACK_DIR}/bin/qhelpgenerator.exe) +set(QT_COLLECTIOMGENERATOR_EXECUTABLE ${FREECAD_LIBPACK_DIR}/bin/qcollectiongenerator.exe) + + + +MACRO (QT4_EXTRACT_OPTIONS _qt4_files _qt4_options) + SET(${_qt4_files}) + SET(${_qt4_options}) + #SET(_QT4_DOING_OPTIONS FALSE) + FOREACH(_currentArg ${ARGN}) + # IF ("${_currentArg}" STREQUAL "OPTIONS") + # SET(_QT4_DOING_OPTIONS TRUE) + # ELSE ("${_currentArg}" STREQUAL "OPTIONS") + # IF(_QT4_DOING_OPTIONS) + # LIST(APPEND ${_qt4_options} "${_currentArg}") + # ELSE(_QT4_DOING_OPTIONS) + LIST(APPEND ${_qt4_files} "${_currentArg}") + # ENDIF(_QT4_DOING_OPTIONS) + # ENDIF ("${_currentArg}" STREQUAL "OPTIONS") + ENDFOREACH(_currentArg) +ENDMACRO (QT4_EXTRACT_OPTIONS) + +# macro used to create the names of output files preserving relative dirs +MACRO (QT4_MAKE_OUTPUT_FILE infile prefix ext outfile ) + STRING(LENGTH ${CMAKE_CURRENT_BINARY_DIR} _binlength) + STRING(LENGTH ${infile} _infileLength) + SET(_checkinfile ${CMAKE_CURRENT_SOURCE_DIR}) + IF(_infileLength GREATER _binlength) + STRING(SUBSTRING "${infile}" 0 ${_binlength} _checkinfile) + IF(_checkinfile STREQUAL "${CMAKE_CURRENT_BINARY_DIR}") + FILE(RELATIVE_PATH rel ${CMAKE_CURRENT_BINARY_DIR} ${infile}) + ELSE(_checkinfile STREQUAL "${CMAKE_CURRENT_BINARY_DIR}") + FILE(RELATIVE_PATH rel ${CMAKE_CURRENT_SOURCE_DIR} ${infile}) + ENDIF(_checkinfile STREQUAL "${CMAKE_CURRENT_BINARY_DIR}") + ELSE(_infileLength GREATER _binlength) + FILE(RELATIVE_PATH rel ${CMAKE_CURRENT_SOURCE_DIR} ${infile}) + ENDIF(_infileLength GREATER _binlength) + SET(_outfile "${CMAKE_CURRENT_BINARY_DIR}/${rel}") + STRING(REPLACE ".." "__" _outfile ${_outfile}) + GET_FILENAME_COMPONENT(outpath ${_outfile} PATH) + GET_FILENAME_COMPONENT(_outfile ${_outfile} NAME_WE) + FILE(MAKE_DIRECTORY ${outpath}) + SET(${outfile} ${outpath}/${prefix}${_outfile}.${ext}) +ENDMACRO (QT4_MAKE_OUTPUT_FILE ) + +MACRO (QT4_WRAP_CPP outfiles ) + QT4_EXTRACT_OPTIONS(moc_files moc_options ${ARGN}) + SET(ARGN) + foreach(it ${moc_files}) + get_filename_component(it ${it} ABSOLUTE) + QT4_MAKE_OUTPUT_FILE(${it} moc_ cpp outfile) + ADD_CUSTOM_COMMAND(OUTPUT ${outfile} + COMMAND ${QT_MOC_EXECUTABLE} + ARGS ${moc_options} ${it} -o ${outfile} + MAIN_DEPENDENCY ${it} + ) + SET(${outfiles} ${${outfiles}} ${outfile}) + endforeach(it) +ENDMACRO (QT4_WRAP_CPP) + + +# This is a special version of the built in macro qt4_wrap_cpp +# It is required since moc'ed files are now included instead of being added to projects directly +# It adds a reverse dependency to solve this +# This has the unfortunate side effect that some files are always rebuilt +# There is probably a cleaner solution than this + +include(AddFileDependencies) + +macro(fc_wrap_cpp outfiles ) + QT4_EXTRACT_OPTIONS(moc_files moc_options ${ARGN}) + # fixes bug 0000585: bug with boost 1.48 + SET(moc_options ${moc_options} -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED) + SET(ARGN) + foreach(it ${moc_files}) + get_filename_component(it ${it} ABSOLUTE) + QT4_MAKE_OUTPUT_FILE(${it} moc_ cpp outfile) + ADD_CUSTOM_COMMAND(OUTPUT ${outfile} + COMMAND ${QT_MOC_EXECUTABLE} + ARGS ${moc_options} ${it} -o ${outfile} + MAIN_DEPENDENCY ${it} + ) + SET(${outfiles} ${${outfiles}} ${outfile}) + add_file_dependencies(${it} ${outfile}) + endforeach(it) +endmacro(fc_wrap_cpp) + + +MACRO (QT4_ADD_RESOURCES outfiles ) + QT4_EXTRACT_OPTIONS(rcc_files rcc_options ${ARGN}) + SET(ARGN) + FOREACH (it ${rcc_files}) + GET_FILENAME_COMPONENT(outfilename ${it} NAME_WE) + GET_FILENAME_COMPONENT(infile ${it} ABSOLUTE) + GET_FILENAME_COMPONENT(rc_path ${infile} PATH) + SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${outfilename}.cxx) + # parse file for dependencies + # all files are absolute paths or relative to the location of the qrc file + FILE(READ "${infile}" _RC_FILE_CONTENTS) + STRING(REGEX MATCHALL "]*>" "" _RC_FILE "${_RC_FILE}") + STRING(REGEX MATCH "^/|([A-Za-z]:/)" _ABS_PATH_INDICATOR "${_RC_FILE}") + IF(NOT _ABS_PATH_INDICATOR) + SET(_RC_FILE "${rc_path}/${_RC_FILE}") + ENDIF(NOT _ABS_PATH_INDICATOR) + SET(_RC_DEPENDS ${_RC_DEPENDS} "${_RC_FILE}") + ENDFOREACH(_RC_FILE) + ADD_CUSTOM_COMMAND(OUTPUT ${outfile} + COMMAND ${QT_RCC_EXECUTABLE} + ARGS ${rcc_options} -name ${outfilename} -o ${outfile} ${infile} + MAIN_DEPENDENCY ${infile} + DEPENDS ${_RC_DEPENDS}) + SET(${outfiles} ${${outfiles}} ${outfile}) + ENDFOREACH (it) +ENDMACRO (QT4_ADD_RESOURCES) + +MACRO (QT4_WRAP_UI outfiles ) +QT4_EXTRACT_OPTIONS(ui_files ui_options ${ARGN}) + +FOREACH (it ${ui_files}) + GET_FILENAME_COMPONENT(outfile ${it} NAME_WE) + GET_FILENAME_COMPONENT(infile ${it} ABSOLUTE) + SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/ui_${outfile}.h) + ADD_CUSTOM_COMMAND(OUTPUT ${outfile} + COMMAND ${QT_UIC_EXECUTABLE} + ARGS -o ${outfile} ${infile} + MAIN_DEPENDENCY ${infile}) + SET(${outfiles} ${${outfiles}} ${outfile}) + ENDFOREACH (it) +ENDMACRO (QT4_WRAP_UI) + + +set(QT4_FOUND TRUE) + +# SoQt +set(SOQT_INCLUDE_DIR ${FREECAD_LIBPACK_DIR}/include/SoQt-1.6.0) +set(SOQT_LIBRARY_RELEASE soqt1.lib) +set(SOQT_LIBRARY_DEBUG soqt1d.lib) +set(SOQT_FOUND TRUE) + +# OpenCV +set(OPENCV_INCLUDE_DIR ${FREECAD_LIBPACK_DIR}/include/opencv) +set(OPENCV_LIBRARIES cv.lib cvaux.lib cxcore.lib cxts.lib highgui.lib) +set(OPENCV_FOUND TRUE) + +# NGLIB (NetGen) + +set(NGLIB_INCLUDE_DIR ${FREECAD_LIBPACK_DIR}/include/nglib/include) +set(NGLIB_LIBRARY_DIR + ${FREECAD_LIBPACK_DIR}/lib +) +set(NGLIB_LIBRARIES + optimized nglib +) +set(NGLIB_DEBUG_LIBRARIES + debug nglibd +) + +# OCC +#set(OCC_INCLUDE_DIR C:/Projects/LibPack/oce-0.10.0/include/oce) +#set(OCC_LIBRARY_DIR C:/Projects/LibPack/oce-0.10.0/Win64/lib) +#set(OCC_LIBRARIES +# ${OCC_LIBRARY_DIR}/TKFillet.lib +# ${OCC_LIBRARY_DIR}/TKMesh.lib +# ${OCC_LIBRARY_DIR}/TKernel.lib +# ${OCC_LIBRARY_DIR}/TKG2d.lib +# ${OCC_LIBRARY_DIR}/TKG3d.lib +# ${OCC_LIBRARY_DIR}/TKMath.lib +# ${OCC_LIBRARY_DIR}/TKIGES.lib +# ${OCC_LIBRARY_DIR}/TKSTL.lib +# ${OCC_LIBRARY_DIR}/TKShHealing.lib +# ${OCC_LIBRARY_DIR}/TKXSBase.lib +# ${OCC_LIBRARY_DIR}/TKBool.lib +# ${OCC_LIBRARY_DIR}/TKBO.lib +# ${OCC_LIBRARY_DIR}/TKBRep.lib +# ${OCC_LIBRARY_DIR}/TKTopAlgo.lib +# ${OCC_LIBRARY_DIR}/TKGeomAlgo.lib +# ${OCC_LIBRARY_DIR}/TKGeomBase.lib +# ${OCC_LIBRARY_DIR}/TKOffset.lib +# ${OCC_LIBRARY_DIR}/TKPrim.lib +# ${OCC_LIBRARY_DIR}/TKSTEP.lib +# ${OCC_LIBRARY_DIR}/TKSTEPBase.lib +# ${OCC_LIBRARY_DIR}/TKSTEPAttr.lib +# ${OCC_LIBRARY_DIR}/TKHLR.lib +# ${OCC_LIBRARY_DIR}/TKFeat.lib +#) +#set(OCC_OCAF_LIBRARIES +# ${OCC_LIBRARY_DIR}/TKCAF.lib +# ${OCC_LIBRARY_DIR}/TKXCAF.lib +# ${OCC_LIBRARY_DIR}/TKLCAF.lib +# ${OCC_LIBRARY_DIR}/TKXDESTEP.lib +# ${OCC_LIBRARY_DIR}/TKXDEIGES.lib +#) +set(OCC_INCLUDE_DIR ${FREECAD_LIBPACK_DIR}/include/oce-0.13) +set(OCC_LIBRARY_DIR ${FREECAD_LIBPACK_DIR}/lib) +set(OCC_LIBRARIES + optimized TKFillet + optimized TKMesh + optimized TKernel + optimized TKG2d + optimized TKG3d + optimized TKMath + optimized TKIGES + optimized TKSTL + optimized TKShHealing + optimized TKXSBase + optimized TKBool + optimized TKBO + optimized TKBRep + optimized TKTopAlgo + optimized TKGeomAlgo + optimized TKGeomBase + optimized TKOffset + optimized TKPrim + optimized TKSTEP + optimized TKSTEPBase + optimized TKSTEPAttr + optimized TKHLR + optimized TKFeat +) +set(OCC_DEBUG_LIBRARIES + debug TKFilletd + debug TKMeshd + debug TKerneld + debug TKG2dd + debug TKG3dd + debug TKMathd + debug TKIGESd + debug TKSTLd + debug TKShHealingd + debug TKXSBased + debug TKBoold + debug TKBOd + debug TKBRepd + debug TKTopAlgod + debug TKGeomAlgod + debug TKGeomBased + debug TKOffsetd + debug TKPrimd + debug TKSTEPd + debug TKSTEPBased + debug TKSTEPAttrd + debug TKHLRd + debug TKFeatd +) +set(OCC_OCAF_LIBRARIES + optimized TKCAF + optimized TKXCAF + optimized TKLCAF + optimized TKXDESTEP + optimized TKXDEIGES + optimized TKMeshVS + optimized TKAdvTools +) +set(OCC_OCAF_DEBUG_LIBRARIES + debug TKCAFd + debug TKXCAFd + debug TKLCAFd + debug TKXDESTEPd + debug TKXDEIGESd + debug TKMeshVSd + debug TKAdvToolsd +) +set(OCC_FOUND TRUE) + +set(EIGEN2_INCLUDE_DIR ${FREECAD_LIBPACK_DIR}/include/eigen2) +set(EIGEN2_FOUND TRUE) + +set(EIGEN3_INCLUDE_DIR ${FREECAD_LIBPACK_DIR}/include/eigen3) +set(EIGEN3_FOUND TRUE) + +set(ODE_INCLUDE_DIRS ${FREECAD_LIBPACK_DIR}/include/ode-0.11.1) +set(ODE_LIBRARIES ${FREECAD_LIBPACK_DIR}/lib/ode_double.lib) +set(ODE_FOUND TRUE) + +# FreeType +if(FREECAD_USE_FREETYPE) + set(FREETYPE_LIBRARIES + optimized ${FREECAD_LIBPACK_DIR}/lib/freetype.lib + debug ${FREECAD_LIBPACK_DIR}/lib/freetyped.lib + ) + set(FREETYPE_INCLUDE_DIRS + ${FREECAD_LIBPACK_DIR}/include/FreeType-2.4.12 + ) + set(FREETYPE_VERSION_STRING + "2.4.12" + ) + set(FREETYPE_FOUND + TRUE + ) +endif(FREECAD_USE_FREETYPE) + + +# SHIBOKEN_INCLUDE_DIR - Directories to include to use SHIBOKEN +# SHIBOKEN_LIBRARY - Files to link against to use SHIBOKEN +# SHIBOKEN_BINARY - Executable name + +SET(SHIBOKEN_INCLUDE_DIR ${FREECAD_LIBPACK_DIR}/include/shiboken-1.2.1) +SET(SHIBOKEN_LIBRARY optimized ${FREECAD_LIBPACK_DIR}/lib/shiboken-python2.7.lib debug ${FREECAD_LIBPACK_DIR}/lib/shiboken-python2.7_d.lib) +set(SHIBOKEN_BINARY ${FREECAD_LIBPACK_DIR}/bin/shiboken) + +# PYSIDE_INCLUDE_DIR - Directories to include to use PySide +# PYSIDE_LIBRARY - Files to link against to use PySide +# PYSIDE_PYTHONPATH - Path to where the PySide Python module files could be found +# PYSIDE_TYPESYSTEMS - Type system files that should be used by other bindings extending PySide + +SET(PYSIDE_INCLUDE_DIR ${FREECAD_LIBPACK_DIR}/include/PySide-1.2.1) +SET(PYSIDE_LIBRARY optimized ${FREECAD_LIBPACK_DIR}/lib/pyside-python2.7.lib debug ${FREECAD_LIBPACK_DIR}/lib/pyside-python2.7_d.lib) +SET(PYSIDE_PYTHONPATH ${FREECAD_LIBPACK_DIR}/pyside/Lib/site-packages) +SET(PYSIDE_TYPESYSTEMS ${FREECAD_LIBPACK_DIR}/pyside/share/PySide/typesystems)