diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 4084d02f24..63c8712908 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -88,6 +88,12 @@ UNIFY_ENVVARS_AND_CACHE(OPENCOLLADA_INCLUDE_DIR) UNIFY_ENVVARS_AND_CACHE(OPENCOLLADA_LIBRARY_DIR) UNIFY_ENVVARS_AND_CACHE(PCRE_LIBRARY_DIR) UNIFY_ENVVARS_AND_CACHE(PYTHON_EXECUTABLE) +UNIFY_ENVVARS_AND_CACHE(CGAL_INCLUDE_DIR) +UNIFY_ENVVARS_AND_CACHE(CGAL_LIBRARY_DIR) +UNIFY_ENVVARS_AND_CACHE(GMP_INCLUDE_DIR) +UNIFY_ENVVARS_AND_CACHE(GMP_LIBRARY_DIR) +UNIFY_ENVVARS_AND_CACHE(MPFR_INCLUDE_DIR) +UNIFY_ENVVARS_AND_CACHE(MPFR_LIBRARY_DIR) IF(WIN32) UNIFY_ENVVARS_AND_CACHE(THREEDS_MAX_SDK_HOME) ENDIF() @@ -193,6 +199,48 @@ foreach(lib ${OPENCASCADE_LIBRARY_NAMES}) list(APPEND OPENCASCADE_LIBRARIES "${lib_path}") endforeach() +SET(CGAL_LIBRARY_NAMES libCGAL_Core libCGAL_ImageIO libCGAL) +# Find CGAL +IF("${CGAL_INCLUDE_DIR}" STREQUAL "") + SET(CGAL_INCLUDE_DIR "/usr/include/" CACHE FILEPATH "CGAL header files") + MESSAGE(STATUS "Looking for CGAL include files in: ${CGAL_INCLUDE_DIR}") + MESSAGE(STATUS "Use CGAL_INCLUDE_DIR to specify another directory") +ELSE() + SET(CGAL_INCLUDE_DIR ${CGAL_INCLUDE_DIR} CACHE FILEPATH "CGAL header files") + MESSAGE(STATUS "Looking for CGAL include files in: ${CGAL_INCLUDE_DIR}") +ENDIF() +IF("${CGAL_LIBRARY_DIR}" STREQUAL "") + SET(CGAL_LIBRARY_DIR "/usr/lib/" CACHE FILEPATH "CGAL library files") + MESSAGE(STATUS "Looking for CGAL library files in: ${CGAL_LIBRARY_DIR}") + MESSAGE(STATUS "Use CGAL_LIBRARY_DIR to specify another directory") +ELSE() + SET(CGAL_LIBRARY_DIR ${CGAL_LIBRARY_DIR} CACHE FILEPATH "CGAL library files") + MESSAGE(STATUS "Looking for CGAL library files in: ${CGAL_LIBRARY_DIR}") +ENDIF() +FIND_LIBRARY(libCGAL NAMES CGAL PATHS ${CGAL_LIBRARY_DIR} NO_DEFAULT_PATH) +IF(libCGAL) + MESSAGE(STATUS "CGAL library files found") +ELSE() + MESSAGE(FATAL_ERROR "Unable to find CGAL library files, aborting") +ENDIF() +foreach(lib ${CGAL_LIBRARY_NAMES}) + string(REPLACE libCGAL "${lib}" lib_path "${libCGAL}") + list(APPEND CGAL_LIBRARIES "${lib_path}") +endforeach() +FIND_LIBRARY(libGMP NAMES gmp PATHS ${GMP_LIBRARY_DIR} NO_DEFAULT_PATH) +FIND_LIBRARY(libMPFR NAMES mpfr PATHS ${MPFR_LIBRARY_DIR} NO_DEFAULT_PATH) +IF(NOT libGMP) + MESSAGE(FATAL_ERROR "Unable to find GMP library files, aborting") +ENDIF() +IF(NOT libMPFR) + MESSAGE(FATAL_ERROR "Unable to find MPFR library files, aborting") +ENDIF() +list(APPEND CGAL_LIBRARIES "${libGMP}") +list(APPEND CGAL_LIBRARIES "${libMPFR}") + + + + if(MSVC) add_definitions(-DHAVE_NO_DLL) add_debug_variants(OPENCASCADE_LIBRARIES "${OPENCASCADE_LIBRARIES}" d) @@ -384,7 +432,8 @@ ElSE() ENDIF() INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} ${OCC_INCLUDE_DIR} ${OPENCOLLADA_INCLUDE_DIRS} - ${ICU_INCLUDE_DIR} ${Boost_INCLUDE_DIRS} + ${ICU_INCLUDE_DIR} ${Boost_INCLUDE_DIRS} ${CGAL_INCLUDE_DIR} + ${GMP_INCLUDE_DIR} ${MPFR_INCLUDE_DIR} ) function(files_for_ifc_version IFC_VERSION RESULT_NAME) @@ -517,6 +566,14 @@ if(NOT MSVC) endif() endif() +include(CheckCXXCompilerFlag) +CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) +if(COMPILER_SUPPORTS_CXX11) + add_definitions(-std=c++11) +else() + message(FATAL_ERROR "CGAL kernel requires a compiler with C++11 support") +endif() + set(IFCOPENSHELL_LIBRARIES IfcParse IfcGeom) # IfcParse @@ -548,7 +605,7 @@ set(IFCGEOM_FILES ${IFCGEOM_CPP_FILES} ${IFCGEOM_H_FILES}) add_library(IfcGeom ${IFCGEOM_FILES}) set_target_properties(IfcGeom PROPERTIES COMPILE_FLAGS -DIFC_GEOM_EXPORTS) -TARGET_LINK_LIBRARIES(IfcGeom IfcParse ${OPENCASCADE_LIBRARIES}) +TARGET_LINK_LIBRARIES(IfcGeom IfcParse ${OPENCASCADE_LIBRARIES} ${CGAL_LIBRARIES}) # IfcConvert file(GLOB IFCCONVERT_CPP_FILES ../src/ifcconvert/*.cpp) @@ -559,7 +616,7 @@ if (IFCCONVERT_DOUBLE_PRECISION) set_target_properties(IfcConvert PROPERTIES COMPILE_FLAGS -DIFCCONVERT_DOUBLE_PRECISION) endif() -TARGET_LINK_LIBRARIES(IfcConvert ${IFCOPENSHELL_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${Boost_LIBRARIES} ${OPENCOLLADA_LIBRARIES} ${ICU_LIBRARIES}) +TARGET_LINK_LIBRARIES(IfcConvert ${IFCOPENSHELL_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${OPENCOLLADA_LIBRARIES} ${ICU_LIBRARIES} ${CGAL_LIBRARIES} ${Boost_LIBRARIES}) if ((NOT WIN32) AND BUILD_SHARED_LIBS) # Only set RPATHs when building shared libraries (i.e. IfcParse and # IfcGeom are dynamically linked). Not necessarily a perfect solution @@ -572,7 +629,7 @@ endif() # file(GLOB H_FILES ../src/ifcgeomserver/*.h) # set(SOURCE_FILES ${CPP_FILES} ${H_FILES}) # ADD_EXECUTABLE(IfcGeomServer ${SOURCE_FILES}) -# TARGET_LINK_LIBRARIES(IfcGeomServer ${IFCOPENSHELL_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${Boost_LIBRARIES} ${ICU_LIBRARIES}) +# TARGET_LINK_LIBRARIES(IfcGeomServer ${IFCOPENSHELL_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${Boost_LIBRARIES} ${ICU_LIBRARIES} ${CGAL_LIBRARIES}) # if ((NOT WIN32) AND BUILD_SHARED_LIBS) # SET_INSTALL_RPATHS(IfcGeomServer "${IFCOPENSHELL_LIBARY_DIR};${OCC_LIBRARY_DIR};${Boost_LIBRARY_DIRS};${ICU_LIBRARY_DIR}") # endif() diff --git a/nix/build-all.py b/nix/build-all.py index 9fd36bd27d..277b89f439 100644 --- a/nix/build-all.py +++ b/nix/build-all.py @@ -460,7 +460,7 @@ OLD_BUILD_CFG = BUILD_CFG if BUILD_CFG != "Debug": # CGAL only supports Debug and Release for CMAKE_BUILD_TYPE BUILD_CFG = "Release" -build_dependency(name="cgal", mode="cmake", build_tool_args=["-DGMP_LIBRARIES=%s/install/gmp-%s/lib/libgmp.a" % (DEPS_DIR, GMP_VERSION), "-DGMP_INCLUDE_DIR=%s/install/gmp-%s/include" % (DEPS_DIR, GMP_VERSION), "-DMPFR_LIBRARIES=%s/install/mpfr-%s/lib/libmpfr.a" % (DEPS_DIR, MPFR_VERSION), "-DMPFR_INCLUDE_DIR=%s/install/mpfr-%s/include" % (DEPS_DIR, MPFR_VERSION), "-DBoost_INCLUDE_DIR=%s/install/boost-%s" % (DEPS_DIR, BOOST_VERSION), "-DCMAKE_INSTALL_PREFIX=%s/install/cgal/" % (DEPS_DIR,)], download_url="https://github.com/CGAL/cgal.git", download_name="cgal", download_tool=download_tool_git) +build_dependency(name="cgal", mode="cmake", build_tool_args=["-DBUILD_SHARED_LIBS=Off", "-DGMP_LIBRARIES=%s/install/gmp-%s/lib/libgmp.a" % (DEPS_DIR, GMP_VERSION), "-DGMP_INCLUDE_DIR=%s/install/gmp-%s/include" % (DEPS_DIR, GMP_VERSION), "-DMPFR_LIBRARIES=%s/install/mpfr-%s/lib/libmpfr.a" % (DEPS_DIR, MPFR_VERSION), "-DMPFR_INCLUDE_DIR=%s/install/mpfr-%s/include" % (DEPS_DIR, MPFR_VERSION), "-DBoost_INCLUDE_DIR=%s/install/boost-%s" % (DEPS_DIR, BOOST_VERSION), "-DCMAKE_INSTALL_PREFIX=%s/install/cgal/" % (DEPS_DIR,)], download_url="https://github.com/CGAL/cgal.git", download_name="cgal", download_tool=download_tool_git) BUILD_CFG = OLD_BUILD_CFG build_dependency(name="icu-%s" % (ICU_VERSION,), mode="icu", build_tool_args=["--enable-static", "--disable-shared"], download_url="http://download.icu-project.org/files/icu4c/%s/" % (ICU_VERSION,), download_name="icu4c-%s-src.tgz" % (ICU_VERSION_UNDERSCORE,)) @@ -482,6 +482,14 @@ run_cmake("", cmake_args=[ "-DBOOST_ROOT=" "%s/install/boost-%s" % (DEPS_DIR, BOOST_VERSION), "-DOCC_INCLUDE_DIR=" "%s/install/oce-%s/include/oce" % (DEPS_DIR, OCE_VERSION), "-DOCC_LIBRARY_DIR=" "%s/install/oce-%s/lib" % (DEPS_DIR, OCE_VERSION), + + "-DCGAL_INCLUDE_DIR=" "%s/install/cgal/include" % (DEPS_DIR,), + "-DCGAL_LIBRARY_DIR=" "%s/install/cgal/lib" % (DEPS_DIR,), + "-DGMP_INCLUDE_DIR=" "%s/install/gmp-%s/include" % (DEPS_DIR, GMP_VERSION), + "-DGMP_LIBRARY_DIR=" "%s/install/gmp-%s/lib" % (DEPS_DIR, GMP_VERSION), + "-DMPFR_INCLUDE_DIR=" "%s/install/mpfr-%s/include" % (DEPS_DIR, MPFR_VERSION), + "-DMPFR_LIBRARY_DIR=" "%s/install/mpfr-%s/lib" % (DEPS_DIR, MPFR_VERSION), + "-DOPENCOLLADA_INCLUDE_DIR=" "%s/install/OpenCOLLADA/include/opencollada" % (DEPS_DIR,), "-DOPENCOLLADA_LIBRARY_DIR=" "%s/install/OpenCOLLADA/lib/opencollada" % (DEPS_DIR,), "-DICU_INCLUDE_DIR=" "%s/install/icu-%s/include" % (DEPS_DIR, ICU_VERSION),