From 95297a0c3146fdb40071b802f3b276d292a43c55 Mon Sep 17 00:00:00 2001 From: looooo Date: Thu, 1 Jun 2017 16:29:08 +0200 Subject: [PATCH] py3: /cMake gathering commits for cmake mostly this changes are necessary to build FreeCAD with py3 (and conda) on windows. issue 0000995 --- CMakeLists.txt | 2 +- cMake/FindCoin3D.cmake | 13 +++++++++++-- cMake/FindNETGEN.cmake | 4 +++- cMake/FindPySideTools.cmake | 9 +++++++-- cMake/FindXercesC.cmake | 3 +++ 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 448eb9ac31..bfa645b80f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -620,7 +620,7 @@ endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") ) # check which modules are available - if(UNIX) + if(UNIX OR WIN32) find_package(VTK COMPONENTS vtkCommonCore REQUIRED NO_MODULE) list(APPEND VTK_COMPONENTS vtkIOMPIParallel vtkParallelMPI vtkhdf5) foreach(_module ${VTK_COMPONENTS}) diff --git a/cMake/FindCoin3D.cmake b/cMake/FindCoin3D.cmake index 2680b694e5..9d5898cc34 100644 --- a/cMake/FindCoin3D.cmake +++ b/cMake/FindCoin3D.cmake @@ -12,12 +12,14 @@ IF (WIN32) IF (CYGWIN) FIND_PATH(COIN3D_INCLUDE_DIRS Inventor/So.h + ${CMAKE_INCLUDE_PATH} /usr/include /usr/local/include /usr/include/coin ) FIND_LIBRARY(COIN3D_LIBRARIES Coin + ${CMAKE_LIBRARY_PATH} /usr/lib /usr/local/lib ) @@ -32,8 +34,13 @@ IF (WIN32) "[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\Coin3D\\2;Installation Path]/lib" ) - FIND_LIBRARY(COIN3D_LIBRARY_RELEASE coin2 - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\Coin3D\\2;Installation Path]/lib" + FIND_LIBRARY(COIN3D_LIBRARY_RELEASE + NAMES + coin2 + Coin4 + PATHS + ${CMAKE_LIBRARY_PATH} + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\Coin3D\\2;Installation Path]/lib" ) IF (COIN3D_LIBRARY_DEBUG AND COIN3D_LIBRARY_RELEASE) @@ -76,6 +83,7 @@ ELSE (WIN32) # ... then fall back to manual lookup IF(NOT COIN3D_FOUND) FIND_PATH(COIN3D_INCLUDE_DIRS Inventor/So.h + ${CMAKE_INCLUDE_PATH} /usr/include/Coin3 /usr/include /usr/include/coin @@ -83,6 +91,7 @@ ELSE (WIN32) ) FIND_LIBRARY(COIN3D_LIBRARIES Coin + ${CMAKE_LIBRARY_PATH} /usr/lib /usr/local/lib PATH_SUFFIXES Coin2 Coin3 diff --git a/cMake/FindNETGEN.cmake b/cMake/FindNETGEN.cmake index cdc0df32c8..a642e67889 100644 --- a/cMake/FindNETGEN.cmake +++ b/cMake/FindNETGEN.cmake @@ -140,7 +140,9 @@ IF(NGLIB_INCLUDE_DIR AND NGLIB_LIBRARIES) elseif(HAS_CPP1Y_FLAG) set(NETGEN_CXX_FLAGS "-std=c++1y") else() - message(FATAL_ERROR "Unsupported compiler -- C++1y support or newer required!") + # message(FATAL_ERROR "Unsupported compiler -- C++1y support or newer required!") + message(STATUS "can not detect c++1y support, but will try to build with c++1y") + set(NETGEN_CXX_FLAGS "-std=c++1y") endif() if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") # Clang sometimes fails to include diff --git a/cMake/FindPySideTools.cmake b/cMake/FindPySideTools.cmake index ca26d9f6ad..1a421bbfa7 100644 --- a/cMake/FindPySideTools.cmake +++ b/cMake/FindPySideTools.cmake @@ -57,16 +57,21 @@ MACRO(PYSIDE_WRAP_RC outfiles) #ADD_CUSTOM_TARGET(${it} ALL # DEPENDS ${outfile} #) + if (${PYTHON_VERSION_MAJOR} LESS 3) + SET(PY_ATTRIBUTE "") + else (${PYTHON_VERSION_MAJOR} LESS 3) + SET(PY_ATTRIBUTE "-py3") + endif (${PYTHON_VERSION_MAJOR} LESS 3) if(WIN32) ADD_CUSTOM_COMMAND(OUTPUT ${outfile} - COMMAND ${PYSIDERCC4BINARY} ${infile} -o ${outfile} + COMMAND ${PYSIDERCC4BINARY} ${infile} ${PY_ATTRIBUTE} -o ${outfile} MAIN_DEPENDENCY ${infile} ) else(WIN32) # Especially on Open Build Service we don't want changing date like # pyside-rcc generates in comments at beginning. EXECUTE_PROCESS( - COMMAND ${PYSIDERCC4BINARY} ${infile} + COMMAND ${PYSIDERCC4BINARY} ${infile} ${PY_ATTRIBUTE} COMMAND sed "/^# /d" OUTPUT_FILE ${outfile} ) diff --git a/cMake/FindXercesC.cmake b/cMake/FindXercesC.cmake index f714b5bc9e..a4181c41d7 100644 --- a/cMake/FindXercesC.cmake +++ b/cMake/FindXercesC.cmake @@ -9,6 +9,7 @@ # XercesC_FOUND, If false, don't try to use pwlib. FIND_PATH(XercesC_INCLUDE_DIRS xercesc/dom/DOM.hpp + ${CMAKE_INCLUDE_PATH} "[HKEY_CURRENT_USER\\software\\xerces-c\\src]" "[HKEY_CURRENT_USER\\xerces-c\\src]" $ENV{XERCESCROOT}/src/ @@ -19,7 +20,9 @@ FIND_PATH(XercesC_INCLUDE_DIRS xercesc/dom/DOM.hpp FIND_LIBRARY(XercesC_LIBRARIES NAMES xerces-c + xerces-c_3 PATHS + ${CMAKE_LIBRARY_PATH} "[HKEY_CURRENT_USER\\software\\xerces-c\\lib]" "[HKEY_CURRENT_USER\\xerces-c\\lib]" $ENV{XERCESCROOT}/${LIB_DESTINATION}