2015-10-28 19:45:07 +02:00
|
|
|
################################################################################
|
|
|
|
|
# #
|
|
|
|
|
# This file is part of IfcOpenShell. #
|
|
|
|
|
# #
|
|
|
|
|
# IfcOpenShell is free software: you can redistribute it and/or modify #
|
|
|
|
|
# it under the terms of the Lesser GNU General Public License as published by #
|
|
|
|
|
# the Free Software Foundation, either version 3.0 of the License, or #
|
|
|
|
|
# (at your option) any later version. #
|
|
|
|
|
# #
|
|
|
|
|
# IfcOpenShell is distributed in the hope that it will be useful, #
|
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
|
|
|
# Lesser GNU General Public License for more details. #
|
|
|
|
|
# #
|
|
|
|
|
# You should have received a copy of the Lesser GNU General Public License #
|
|
|
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
|
|
|
|
# #
|
|
|
|
|
################################################################################
|
|
|
|
|
|
2016-02-18 13:17:15 +01:00
|
|
|
cmake_minimum_required (VERSION 2.8.5)
|
2015-10-28 19:45:07 +02:00
|
|
|
|
2011-05-08 11:04:32 +00:00
|
|
|
project (IfcOpenShell)
|
|
|
|
|
|
2015-11-11 13:24:34 +02:00
|
|
|
OPTION(UNICODE_SUPPORT "Build IfcOpenShell with Unicode support (requires ICU)." ON)
|
|
|
|
|
OPTION(COLLADA_SUPPORT "Build IfcConvert with COLLADA support (requires OpenCOLLADA)." ON)
|
2015-10-28 19:45:07 +02:00
|
|
|
OPTION(ENABLE_BUILD_OPTIMIZATIONS "Enable certain compiler and linker optimizations on RelWithDebInfo and Release builds." OFF)
|
2016-03-10 17:00:06 +02:00
|
|
|
OPTION(IFCCONVERT_DOUBLE_PRECISION "IfcConvert: Use double precision floating-point numbers." ON)
|
2015-11-23 15:52:12 +02:00
|
|
|
OPTION(USE_IFC4 "Use IFC 4 instead of IFC 2x3 (full rebuild recommended when switching this)" OFF)
|
2015-10-28 19:45:07 +02:00
|
|
|
OPTION(BUILD_IFCPYTHON "Build IfcPython." ON)
|
|
|
|
|
OPTION(BUILD_EXAMPLES "Build example applications." ON)
|
2016-02-07 12:28:05 +02:00
|
|
|
OPTION(USE_VLD "Use Visual Leak Detector for debugging memory leaks, MSVC-only." OFF)
|
2016-02-19 22:53:09 +02:00
|
|
|
OPTION(BUILD_IFCMAX "Build IfcMax, a 3ds Max plug-in, Windows-only." OFF)
|
2016-05-30 00:59:06 +03:00
|
|
|
OPTION(BUILD_SHARED_LIBS "Build IfcParse and IfcGeom as shared libs (SO/DLL)." OFF)
|
2015-11-11 13:24:34 +02:00
|
|
|
# TODO QtViewer is deprecated ATM as it uses the 0.4 API
|
|
|
|
|
# OPTION(BUILD_QTVIEWER "Build IfcOpenShell Qt GUI Viewer (requires Qt 4 framework)." OFF)
|
2015-10-28 19:45:07 +02:00
|
|
|
|
2016-01-09 06:38:33 +01:00
|
|
|
|
2016-05-15 15:47:21 +02:00
|
|
|
# Specify where to install files
|
|
|
|
|
IF(NOT BINDIR)
|
|
|
|
|
set(BINDIR bin)
|
|
|
|
|
ENDIF()
|
|
|
|
|
IF(NOT IS_ABSOLUTE ${BINDIR})
|
|
|
|
|
set(BINDIR ${CMAKE_INSTALL_PREFIX}/${BINDIR})
|
|
|
|
|
ENDIF()
|
|
|
|
|
MESSAGE(STATUS "BINDIR: ${BINDIR}")
|
|
|
|
|
|
|
|
|
|
IF(NOT INCLUDEDIR)
|
|
|
|
|
set(INCLUDEDIR include)
|
|
|
|
|
ENDIF()
|
|
|
|
|
IF(NOT IS_ABSOLUTE ${INCLUDEDIR})
|
|
|
|
|
set(INCLUDEDIR ${CMAKE_INSTALL_PREFIX}/${INCLUDEDIR})
|
|
|
|
|
ENDIF()
|
|
|
|
|
MESSAGE(STATUS "INCLUDEDIR: ${INCLUDEDIR}")
|
|
|
|
|
|
|
|
|
|
IF(NOT LIBDIR)
|
|
|
|
|
set(LIBDIR lib)
|
|
|
|
|
ENDIF()
|
|
|
|
|
IF(NOT IS_ABSOLUTE ${LIBDIR})
|
|
|
|
|
set(LIBDIR ${CMAKE_INSTALL_PREFIX}/${LIBDIR})
|
|
|
|
|
ENDIF()
|
|
|
|
|
MESSAGE(STATUS "LIBDIR: ${LIBDIR}")
|
|
|
|
|
|
2016-06-09 10:48:43 +02:00
|
|
|
set(IFCOPENSHELL_LIBARY_DIR "") # for *nix rpaths
|
2016-05-30 15:29:45 +03:00
|
|
|
|
2016-05-30 00:59:06 +03:00
|
|
|
if (BUILD_SHARED_LIBS)
|
|
|
|
|
add_definitions(-DBUILD_SHARED_LIBS)
|
|
|
|
|
if (MSVC)
|
|
|
|
|
message(WARNING "Building DLLs against the static VC run-time. This is not recommended if the DLLs are to be redistributed.")
|
2016-05-31 14:45:22 +03:00
|
|
|
# C4521: 'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2'
|
|
|
|
|
# There will be couple hundreds of these so suppress them away, https://msdn.microsoft.com/en-us/library/esew7y1w.aspx
|
2016-05-30 13:54:24 +03:00
|
|
|
add_definitions(-wd4251)
|
2016-05-30 00:59:06 +03:00
|
|
|
endif()
|
2016-06-09 10:48:43 +02:00
|
|
|
set(IFCOPENSHELL_LIBARY_DIR "${LIBDIR}")
|
2016-05-30 00:59:06 +03:00
|
|
|
endif()
|
2016-05-15 15:47:21 +02:00
|
|
|
|
2016-01-09 06:38:33 +01:00
|
|
|
# Create cache entries if absent for environment variables
|
|
|
|
|
MACRO(UNIFY_ENVVARS_AND_CACHE VAR)
|
|
|
|
|
IF ((NOT DEFINED ${VAR}) AND (NOT "$ENV{${VAR}}" STREQUAL ""))
|
|
|
|
|
SET(${VAR} "$ENV{${VAR}}" CACHE STRING "${VAR}" FORCE)
|
|
|
|
|
ENDIF()
|
|
|
|
|
ENDMACRO()
|
|
|
|
|
|
|
|
|
|
UNIFY_ENVVARS_AND_CACHE(OCC_INCLUDE_DIR)
|
|
|
|
|
UNIFY_ENVVARS_AND_CACHE(OCC_LIBRARY_DIR)
|
|
|
|
|
UNIFY_ENVVARS_AND_CACHE(ICU_INCLUDE_DIR)
|
|
|
|
|
UNIFY_ENVVARS_AND_CACHE(ICU_LIBRARY_DIR)
|
|
|
|
|
UNIFY_ENVVARS_AND_CACHE(OPENCOLLADA_INCLUDE_DIR)
|
|
|
|
|
UNIFY_ENVVARS_AND_CACHE(OPENCOLLADA_LIBRARY_DIR)
|
|
|
|
|
UNIFY_ENVVARS_AND_CACHE(PCRE_LIBRARY_DIR)
|
2016-02-15 16:59:47 +01:00
|
|
|
UNIFY_ENVVARS_AND_CACHE(PYTHON_EXECUTABLE)
|
2016-02-19 22:53:09 +02:00
|
|
|
IF(WIN32)
|
|
|
|
|
UNIFY_ENVVARS_AND_CACHE(THREEDS_MAX_SDK_HOME)
|
|
|
|
|
ENDIF()
|
2016-01-09 06:38:33 +01:00
|
|
|
|
2016-05-15 15:47:21 +02:00
|
|
|
|
|
|
|
|
# Set INSTALL_RPATH for target
|
|
|
|
|
MACRO(SET_INSTALL_RPATHS _target _paths)
|
|
|
|
|
SET(${_target}_rpaths "")
|
|
|
|
|
FOREACH(_path ${_paths})
|
|
|
|
|
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${_path}" isSystemDir)
|
|
|
|
|
IF("${isSystemDir}" STREQUAL "-1")
|
|
|
|
|
LIST(APPEND ${_target}_rpaths ${_path})
|
|
|
|
|
ENDIF()
|
|
|
|
|
ENDFOREACH()
|
|
|
|
|
MESSAGE(STATUS "Set INSTALL_RPATH for ${_target}: ${${_target}_rpaths}")
|
|
|
|
|
SET_TARGET_PROPERTIES(${_target} PROPERTIES INSTALL_RPATH "${${_target}_rpaths}")
|
|
|
|
|
ENDMACRO()
|
|
|
|
|
|
2015-10-28 19:45:07 +02:00
|
|
|
# Find Boost
|
|
|
|
|
IF(MSVC)
|
|
|
|
|
SET(Boost_USE_STATIC_LIBS ON)
|
2015-11-10 23:18:02 +02:00
|
|
|
SET(Boost_USE_STATIC_RUNTIME ON)
|
|
|
|
|
SET(Boost_USE_MULTITHREADED ON)
|
2015-10-28 19:45:07 +02:00
|
|
|
ENDIF()
|
2016-03-23 10:27:34 +01:00
|
|
|
FIND_PACKAGE(Boost REQUIRED COMPONENTS system program_options regex thread date_time)
|
2012-11-04 11:04:55 +00:00
|
|
|
MESSAGE(STATUS "Boost include files found in ${Boost_INCLUDE_DIRS}")
|
|
|
|
|
MESSAGE(STATUS "Boost libraries found in ${Boost_LIBRARY_DIRS}")
|
|
|
|
|
|
2015-11-14 19:19:55 +02:00
|
|
|
# Usage:
|
|
|
|
|
# SET(SOME_LIRARIES foo bar)
|
|
|
|
|
# ADD_DEBUG_VARIANTS(SOME_LIRARIES "${SOME_LIRARIES}" "d")
|
|
|
|
|
# "foo bar" -> "optimized foo debug food optimized bar debug bard"
|
|
|
|
|
FUNCTION(ADD_DEBUG_VARIANTS NAME LIBRARIES POSTFIX)
|
|
|
|
|
SET(LIBRARIES_STR "${LIBRARIES}")
|
|
|
|
|
SET(LIBRARIES "")
|
|
|
|
|
FOREACH(lib ${LIBRARIES_STR})
|
|
|
|
|
SET(LIBRARIES "${LIBRARIES} optimized ${lib}")
|
|
|
|
|
SET(LIBRARIES "${LIBRARIES} debug ${lib}${POSTFIX}")
|
|
|
|
|
ENDFOREACH()
|
|
|
|
|
STRING(STRIP ${LIBRARIES} LIBRARIES) # leading and trailing whitespace cause confusion
|
|
|
|
|
SEPARATE_ARGUMENTS(LIBRARIES) # "optimized <lib> debug <lib>" needs to be a list instead of a string
|
|
|
|
|
SET(${NAME} ${LIBRARIES} PARENT_SCOPE)
|
|
|
|
|
ENDFUNCTION()
|
|
|
|
|
|
2015-10-28 19:45:07 +02:00
|
|
|
# Find Open CASCADE
|
2016-01-09 06:38:33 +01:00
|
|
|
IF("${OCC_INCLUDE_DIR}" STREQUAL "")
|
2016-02-19 20:28:46 +03:00
|
|
|
SET(OCC_INCLUDE_DIR "/usr/include/oce/" CACHE FILEPATH "Open CASCADE header files")
|
2011-05-08 11:04:32 +00:00
|
|
|
MESSAGE(STATUS "Looking for opencascade include files in: ${OCC_INCLUDE_DIR}")
|
|
|
|
|
MESSAGE(STATUS "Use OCC_INCLUDE_DIR to specify another directory")
|
|
|
|
|
ELSE()
|
2016-01-09 06:38:33 +01:00
|
|
|
SET(OCC_INCLUDE_DIR ${OCC_INCLUDE_DIR} CACHE FILEPATH "Open CASCADE header files")
|
2011-05-08 11:04:32 +00:00
|
|
|
MESSAGE(STATUS "Looking for opencascade include files in: ${OCC_INCLUDE_DIR}")
|
|
|
|
|
ENDIF()
|
|
|
|
|
|
2012-01-11 13:57:00 +00:00
|
|
|
FIND_FILE(gp_Pnt_hxx "gp_Pnt.hxx" ${OCC_INCLUDE_DIR} /usr/inc /usr/local/inc /usr/local/include/oce)
|
2011-05-08 11:04:32 +00:00
|
|
|
IF(gp_Pnt_hxx)
|
|
|
|
|
MESSAGE(STATUS "Header files found")
|
|
|
|
|
ELSE()
|
|
|
|
|
MESSAGE(FATAL_ERROR "Unable to find header files, aborting")
|
|
|
|
|
ENDIF()
|
|
|
|
|
|
2015-11-14 19:19:55 +02:00
|
|
|
SET(OPENCASCADE_LIBRARIES
|
|
|
|
|
TKernel TKMath TKBRep TKGeomBase TKGeomAlgo TKG3d TKG2d TKShHealing TKTopAlgo TKMesh TKPrim TKBool TKBO
|
|
|
|
|
TKFillet TKSTEP TKSTEPBase TKSTEPAttr TKXSBase TKSTEP209 TKIGES TKOffset
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
IF(MSVC)
|
|
|
|
|
ADD_DEBUG_VARIANTS(OPENCASCADE_LIBRARIES "${OPENCASCADE_LIBRARIES}" "d")
|
2015-11-10 23:18:02 +02:00
|
|
|
ENDIF()
|
2015-11-09 15:36:57 +02:00
|
|
|
|
2016-01-09 06:38:33 +01:00
|
|
|
IF("${OCC_LIBRARY_DIR}" STREQUAL "")
|
2011-05-08 11:04:32 +00:00
|
|
|
SET(OCC_LIBRARY_DIR "/usr/lib/" CACHE FILEPATH "Open CASCADE library files")
|
|
|
|
|
MESSAGE(STATUS "Looking for opencascade library files in: ${OCC_LIBRARY_DIR}")
|
|
|
|
|
MESSAGE(STATUS "Use OCC_LIBRARY_DIR to specify another directory")
|
|
|
|
|
ELSE()
|
2016-01-09 06:38:33 +01:00
|
|
|
SET(OCC_LIBRARY_DIR ${OCC_LIBRARY_DIR} CACHE FILEPATH "Open CASCADE library files")
|
2011-05-08 11:04:32 +00:00
|
|
|
MESSAGE(STATUS "Looking for opencascade library files in: ${OCC_LIBRARY_DIR}")
|
|
|
|
|
ENDIF()
|
|
|
|
|
|
2015-11-10 23:18:02 +02:00
|
|
|
FIND_LIBRARY(libTKernel NAMES TKernel TKerneld PATHS ${OCC_LIBRARY_DIR} /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64)
|
2011-05-08 11:04:32 +00:00
|
|
|
IF(libTKernel)
|
|
|
|
|
MESSAGE(STATUS "Library files found")
|
|
|
|
|
ELSE()
|
|
|
|
|
MESSAGE(FATAL_ERROR "Unable to find library files, aborting")
|
|
|
|
|
ENDIF()
|
|
|
|
|
|
2015-10-28 19:45:07 +02:00
|
|
|
IF(UNICODE_SUPPORT)
|
|
|
|
|
# Find ICU
|
2016-01-09 06:38:33 +01:00
|
|
|
IF("${ICU_INCLUDE_DIR}" STREQUAL "")
|
2015-10-28 19:45:07 +02:00
|
|
|
MESSAGE(STATUS "No ICU include directory specified")
|
|
|
|
|
ElSE()
|
2016-01-09 06:38:33 +01:00
|
|
|
SET(ICU_INCLUDE_DIR "${ICU_INCLUDE_DIR}" CACHE FILEPATH "ICU header files")
|
2015-10-28 19:45:07 +02:00
|
|
|
ENDIF()
|
|
|
|
|
|
2016-01-09 06:38:33 +01:00
|
|
|
IF("${ICU_LIBRARY_DIR}" STREQUAL "")
|
2015-10-28 19:45:07 +02:00
|
|
|
MESSAGE(STATUS "No ICU library directory specified")
|
|
|
|
|
ElSE()
|
2016-01-09 06:38:33 +01:00
|
|
|
SET(ICU_LIBRARY_DIR "${ICU_LIBRARY_DIR}" CACHE FILEPATH "ICU library files")
|
2015-10-28 19:45:07 +02:00
|
|
|
ENDIF()
|
|
|
|
|
|
2016-05-15 15:47:21 +02:00
|
|
|
FIND_LIBRARY(icu NAMES icuuc icuucd PATHS /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib ${ICU_LIBRARY_DIR})
|
2015-10-28 19:45:07 +02:00
|
|
|
|
|
|
|
|
IF(icu)
|
|
|
|
|
ADD_DEFINITIONS(-DHAVE_ICU)
|
|
|
|
|
MESSAGE(STATUS "ICU libraries found")
|
2016-01-09 06:38:33 +01:00
|
|
|
# NOTE icudata appears to be icudt on Windows/MSVC and icudata on others
|
|
|
|
|
# dl is included to resolve dlopen and friends symbols
|
2016-05-29 17:58:03 +01:00
|
|
|
IF(MSVC OR MINGW)
|
2015-11-14 19:19:55 +02:00
|
|
|
SET(ICU_LIBRARIES icuuc icudt)
|
|
|
|
|
ADD_DEBUG_VARIANTS(ICU_LIBRARIES "${ICU_LIBRARIES}" "d")
|
2015-11-10 23:18:02 +02:00
|
|
|
ADD_DEFINITIONS(-DU_STATIC_IMPLEMENTATION) # required for static ICU
|
|
|
|
|
ELSE()
|
2016-01-09 06:38:33 +01:00
|
|
|
SET(ICU_LIBRARIES icuuc icudata dl)
|
2015-11-10 23:18:02 +02:00
|
|
|
ENDIF()
|
2015-10-28 19:45:07 +02:00
|
|
|
ELSE()
|
2015-11-11 13:24:34 +02:00
|
|
|
MESSAGE(FATAL_ERROR "UNICODE_SUPPORT enabled, but unable to find ICU. Disable UNICODE_SUPPORT or fix ICU paths to proceed.")
|
2015-10-28 19:45:07 +02:00
|
|
|
ENDIF()
|
2014-01-02 15:52:20 +00:00
|
|
|
ENDIF()
|
|
|
|
|
|
2015-10-28 19:45:07 +02:00
|
|
|
IF(COLLADA_SUPPORT)
|
|
|
|
|
# Find OpenCOLLADA
|
2016-01-09 06:38:33 +01:00
|
|
|
IF("${OPENCOLLADA_INCLUDE_DIR}" STREQUAL "")
|
2015-10-28 19:45:07 +02:00
|
|
|
MESSAGE(STATUS "No OpenCOLLADA include directory specified")
|
2016-02-19 20:28:46 +03:00
|
|
|
SET(OPENCOLLADA_INCLUDE_DIR "/usr/include/opencollada" CACHE FILEPATH "OpenCOLLADA header files")
|
2015-10-28 19:45:07 +02:00
|
|
|
ElSE()
|
2016-01-09 06:38:33 +01:00
|
|
|
SET(OPENCOLLADA_INCLUDE_DIR "${OPENCOLLADA_INCLUDE_DIR}" CACHE FILEPATH "OpenCOLLADA header files")
|
2015-10-28 19:45:07 +02:00
|
|
|
ENDIF()
|
|
|
|
|
|
2016-01-09 06:38:33 +01:00
|
|
|
IF("${OPENCOLLADA_LIBRARY_DIR}" STREQUAL "")
|
2015-10-28 19:45:07 +02:00
|
|
|
MESSAGE(STATUS "No OpenCOLLADA library directory specified")
|
2016-05-15 15:47:21 +02:00
|
|
|
FIND_LIBRARY(OPENCOLLADA_FRAMEWORK_LIB NAMES OpenCOLLADAFramework PATHS /usr/lib64/opencollada /usr/lib/opencollada /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib)
|
|
|
|
|
GET_FILENAME_COMPONENT(OPENCOLLADA_LIBRARY_DIR ${OPENCOLLADA_FRAMEWORK_LIB} PATH)
|
2015-10-28 19:45:07 +02:00
|
|
|
ENDIF()
|
2016-05-15 15:47:21 +02:00
|
|
|
SET(OPENCOLLADA_LIBRARY_DIR "${OPENCOLLADA_LIBRARY_DIR}" CACHE FILEPATH "OpenCOLLADA library files")
|
2015-10-28 19:45:07 +02:00
|
|
|
|
|
|
|
|
SET(OPENCOLLADA_INCLUDE_DIRS "${OPENCOLLADA_INCLUDE_DIR}/COLLADABaseUtils" "${OPENCOLLADA_INCLUDE_DIR}/COLLADAStreamWriter")
|
|
|
|
|
|
|
|
|
|
FIND_FILE(COLLADASWStreamWriter_h "COLLADASWStreamWriter.h" ${OPENCOLLADA_INCLUDE_DIRS})
|
|
|
|
|
IF(COLLADASWStreamWriter_h)
|
|
|
|
|
MESSAGE(STATUS "OpenCOLLADA header files found")
|
|
|
|
|
ADD_DEFINITIONS(-DWITH_OPENCOLLADA)
|
2015-11-14 19:19:55 +02:00
|
|
|
SET(OPENCOLLADA_LIBRARIES
|
|
|
|
|
GeneratedSaxParser MathMLSolver OpenCOLLADABaseUtils OpenCOLLADAFramework OpenCOLLADASaxFrameworkLoader
|
|
|
|
|
OpenCOLLADAStreamWriter UTF buffer ftoa pcre
|
|
|
|
|
)
|
2016-01-09 06:38:33 +01:00
|
|
|
IF(NOT "${PCRE_LIBRARY_DIR}" STREQUAL "")
|
|
|
|
|
SET(OPENCOLLADA_LIBRARY_DIR ${OPENCOLLADA_LIBRARY_DIR} ${PCRE_LIBRARY_DIR})
|
|
|
|
|
ENDIF()
|
2015-11-10 23:18:02 +02:00
|
|
|
IF(MSVC)
|
2015-11-14 19:19:55 +02:00
|
|
|
ADD_DEBUG_VARIANTS(OPENCOLLADA_LIBRARIES "${OPENCOLLADA_LIBRARIES}" "d")
|
2015-11-10 23:18:02 +02:00
|
|
|
ENDIF()
|
2015-10-28 19:45:07 +02:00
|
|
|
ELSE()
|
2015-11-11 13:24:34 +02:00
|
|
|
MESSAGE(FATAL_ERROR "COLLADA_SUPPORT enabled, but unable to find OpenCOLLADA. Disable COLLADA_SUPPORT or fix OpenCOLLADA paths to proceed.")
|
2015-10-28 19:45:07 +02:00
|
|
|
ENDIF()
|
2014-01-02 15:52:20 +00:00
|
|
|
ENDIF()
|
|
|
|
|
|
2015-10-28 19:45:07 +02:00
|
|
|
# TODO Are these needed on other platforms still or can these be removed for good?
|
|
|
|
|
IF (NOT WIN32)
|
|
|
|
|
INCLUDE(CheckIncludeFileCXX)
|
|
|
|
|
|
|
|
|
|
MACRO(CHECK_ADD_OCE_OCC_DEF INCLUDE)
|
|
|
|
|
STRING(REPLACE . _ STR ${INCLUDE})
|
|
|
|
|
STRING(TOUPPER ${STR} STR)
|
|
|
|
|
CHECK_INCLUDE_FILE_CXX("${INCLUDE}" FOUND_${STR})
|
|
|
|
|
IF(FOUND_${STR})
|
|
|
|
|
ADD_DEFINITIONS(-DOCE_HAVE_${STR})
|
|
|
|
|
ADD_DEFINITIONS(-DHAVE_${STR})
|
|
|
|
|
ENDIF(FOUND_${STR})
|
2015-11-14 19:19:55 +02:00
|
|
|
ENDMACRO()
|
2015-10-28 19:45:07 +02:00
|
|
|
|
|
|
|
|
CHECK_ADD_OCE_OCC_DEF(limits)
|
|
|
|
|
CHECK_ADD_OCE_OCC_DEF(climits)
|
|
|
|
|
CHECK_ADD_OCE_OCC_DEF(limits.h)
|
|
|
|
|
CHECK_ADD_OCE_OCC_DEF(fstream)
|
|
|
|
|
CHECK_ADD_OCE_OCC_DEF(fstream.h)
|
|
|
|
|
CHECK_ADD_OCE_OCC_DEF(iomanip)
|
|
|
|
|
CHECK_ADD_OCE_OCC_DEF(iomanip.h)
|
|
|
|
|
CHECK_ADD_OCE_OCC_DEF(iostream)
|
|
|
|
|
CHECK_ADD_OCE_OCC_DEF(iostream.h)
|
2011-09-25 09:53:22 +00:00
|
|
|
ENDIF()
|
|
|
|
|
|
2011-08-20 09:08:56 +00:00
|
|
|
IF(NOT CMAKE_BUILD_TYPE)
|
2015-10-28 19:45:07 +02:00
|
|
|
SET(CMAKE_BUILD_TYPE "Release")
|
2015-11-14 19:19:55 +02:00
|
|
|
ENDIF()
|
2012-06-12 10:21:32 +00:00
|
|
|
|
2015-10-28 19:45:07 +02:00
|
|
|
# NOTE: RelWithDebInfo and Release use O2 (= /Ox /Gl /Gy/ = Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy) by default,
|
|
|
|
|
# with the exception with RelWithDebInfo has /Ob1 instead. /Ob2 has been observed to improve the performance
|
|
|
|
|
# of IfcConvert significantly.
|
2015-11-14 19:19:55 +02:00
|
|
|
# TODO Setting of /GL and /LTCG don't seem to apply for static libraries (IfcGeom, IfcParse)
|
2015-10-28 19:45:07 +02:00
|
|
|
if(ENABLE_BUILD_OPTIMIZATIONS)
|
|
|
|
|
if(MSVC)
|
|
|
|
|
# C++
|
|
|
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Ob2 /GL")
|
|
|
|
|
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
|
|
|
|
|
# Linker
|
|
|
|
|
# /OPT:REF enables also /OPT:ICF and disables INCREMENTAL
|
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG /OPT:REF")
|
|
|
|
|
# /OPT:NOICF is recommended when /DEBUG is used (http://msdn.microsoft.com/en-us/library/xe4t6fc1.aspx)
|
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:NOICF")
|
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG /OPT:REF")
|
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:NOICF")
|
|
|
|
|
else()
|
|
|
|
|
#TODO GCC (& Clang?) optimizations
|
|
|
|
|
message(STATUS "ENABLE_BUILD_OPTIMIZATIONS not implemented for GCC/non-MSVC compilers.)")
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
|
2012-06-12 10:36:34 +00:00
|
|
|
IF(MSVC)
|
2016-02-21 16:52:00 +02:00
|
|
|
# Enable solution folders (free VS versions prior to 2012 don't support solution folders)
|
2016-02-20 00:13:04 +02:00
|
|
|
if (MSVC_VERSION GREATER 1600)
|
|
|
|
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
|
|
|
|
endif()
|
|
|
|
|
|
2016-02-07 12:28:05 +02:00
|
|
|
IF(USE_VLD)
|
|
|
|
|
ADD_DEFINITIONS(-DUSE_VLD)
|
2016-02-07 00:30:08 +02:00
|
|
|
ENDIF()
|
2015-11-23 15:52:12 +02:00
|
|
|
# Enforce Unicode for CRT and Win32 API calls
|
|
|
|
|
ADD_DEFINITIONS(-D_UNICODE -DUNICODE)
|
2015-10-28 19:45:07 +02:00
|
|
|
# Disable warnings about unsafe C functions; we could use the safe C99 & C11 versions if we have no need for supporting old compilers.
|
2015-11-23 15:52:12 +02:00
|
|
|
ADD_DEFINITIONS(-D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS)
|
2015-10-28 19:45:07 +02:00
|
|
|
ADD_DEFINITIONS(-bigobj) # required for building the big ifcXXX.objs, https://msdn.microsoft.com/en-us/library/ms173499.aspx
|
2015-11-23 15:52:12 +02:00
|
|
|
# Bump up the warning level from the default 3 to 4.
|
|
|
|
|
ADD_DEFINITIONS(-W4)
|
|
|
|
|
IF(MSVC_VERSION GREATER 1800) # > 2013
|
|
|
|
|
# Disable overeager and false positives causing C4458 ("declaration of 'indentifier' hides class member"), at least for now.
|
2015-11-21 23:01:29 +02:00
|
|
|
ADD_DEFINITIONS(-wd4458)
|
|
|
|
|
ENDIF()
|
2015-10-28 19:45:07 +02:00
|
|
|
# Link against the static VC runtime
|
2016-05-30 00:59:06 +03:00
|
|
|
# TODO Make this configurable
|
2015-10-28 19:45:07 +02:00
|
|
|
FOREACH(flag CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL
|
|
|
|
|
CMAKE_CXX_FLAGS_RELWITHDEBINFO CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
|
|
|
|
|
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
|
|
|
|
|
IF(${flag} MATCHES "/MD")
|
|
|
|
|
STRING(REGEX REPLACE "/MD" "/MT" ${flag} "${${flag}}")
|
|
|
|
|
ENDIF()
|
|
|
|
|
IF(${flag} MATCHES "/MDd")
|
|
|
|
|
STRING(REGEX REPLACE "/MDd" "/MTd" ${flag} "${${flag}}")
|
|
|
|
|
ENDIF()
|
|
|
|
|
ENDFOREACH()
|
|
|
|
|
ElSE()
|
2016-06-05 14:03:03 +02:00
|
|
|
IF(WIN32)
|
|
|
|
|
# -fPIC is not relevant on Windows and create pointless warnings
|
2016-06-09 10:46:58 +02:00
|
|
|
ADD_DEFINITIONS(-Wno-non-virtual-dtor -Wall -Wextra)
|
2016-06-05 14:03:03 +02:00
|
|
|
ELSE()
|
2016-06-09 10:46:58 +02:00
|
|
|
ADD_DEFINITIONS(-fPIC -Wno-non-virtual-dtor -Wall -Wextra)
|
2016-06-05 14:03:03 +02:00
|
|
|
ENDIF()
|
2015-10-28 19:45:07 +02:00
|
|
|
ENDIF()
|
2011-05-08 11:04:32 +00:00
|
|
|
|
2015-10-28 19:45:07 +02:00
|
|
|
INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} ${OCC_INCLUDE_DIR} ${OPENCOLLADA_INCLUDE_DIRS}
|
|
|
|
|
${ICU_INCLUDE_DIR} ${Boost_INCLUDE_DIRS}
|
2011-08-24 12:21:07 +00:00
|
|
|
)
|
2015-10-28 19:45:07 +02:00
|
|
|
if(NOT WIN32)
|
2015-11-14 19:19:55 +02:00
|
|
|
INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} /usr/inc /usr/local/inc /usr/local/include/oce)
|
2015-10-28 19:45:07 +02:00
|
|
|
endif()
|
|
|
|
|
|
2016-02-15 16:59:47 +01:00
|
|
|
function(files_for_ifc_version IFC_VERSION RESULT_NAME)
|
|
|
|
|
set(IFC_PARSE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../src/ifcparse)
|
|
|
|
|
set(${RESULT_NAME}
|
|
|
|
|
${IFC_PARSE_DIR}/Ifc${IFC_VERSION}.h
|
|
|
|
|
${IFC_PARSE_DIR}/Ifc${IFC_VERSION}enum.h
|
|
|
|
|
${IFC_PARSE_DIR}/Ifc${IFC_VERSION}-latebound.h
|
|
|
|
|
${IFC_PARSE_DIR}/Ifc${IFC_VERSION}.cpp
|
|
|
|
|
${IFC_PARSE_DIR}/Ifc${IFC_VERSION}-latebound.cpp
|
|
|
|
|
PARENT_SCOPE
|
|
|
|
|
)
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|
if(COMPILE_SCHEMA)
|
2016-02-17 12:03:38 +01:00
|
|
|
find_package(PythonInterp)
|
2016-02-15 16:59:47 +01:00
|
|
|
|
2016-02-17 12:03:38 +01:00
|
|
|
IF(NOT PYTHONINTERP_FOUND)
|
|
|
|
|
MESSAGE(FATAL_ERROR "A Python interpreter is necessary when COMPILE_SCHEMA is enabled. Disable COMPILE_SCHEMA or fix Python paths to proceed.")
|
|
|
|
|
ENDIF()
|
|
|
|
|
|
|
|
|
|
set(IFC_RELEASE_NOT_USED "2x3" "4")
|
2016-02-15 16:59:47 +01:00
|
|
|
|
|
|
|
|
# Install pyparsing if necessary
|
2016-02-18 13:17:15 +01:00
|
|
|
execute_process(COMMAND ${PYTHON_EXECUTABLE} -m pip freeze OUTPUT_VARIABLE PYTHON_PACKAGE_LIST)
|
|
|
|
|
if ("${PYTHON_PACKAGE_LIST}" STREQUAL "")
|
|
|
|
|
execute_process(COMMAND pip freeze OUTPUT_VARIABLE PYTHON_PACKAGE_LIST)
|
|
|
|
|
if ("${PYTHON_PACKAGE_LIST}" STREQUAL "")
|
|
|
|
|
message(WARNING "Failed to find pip. Pip is required to automatically install pyparsing")
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
2016-02-15 16:59:47 +01:00
|
|
|
string(FIND "${PYTHON_PACKAGE_LIST}" pyparsing PYPARSING_FOUND)
|
|
|
|
|
if ("${PYPARSING_FOUND}" STREQUAL "-1")
|
|
|
|
|
message(STATUS "Installing pyparsing")
|
2016-02-18 13:17:15 +01:00
|
|
|
execute_process(COMMAND ${PYTHON_EXECUTABLE} -m pip "install" --user pyparsing RESULT_VARIABLE SUCCESS)
|
|
|
|
|
if (NOT "${SUCCESS}" STREQUAL "0")
|
|
|
|
|
execute_process(COMMAND pip "install" --user pyparsing RESULT_VARIABLE SUCCESS)
|
|
|
|
|
if (NOT "${SUCCESS}" STREQUAL "0")
|
|
|
|
|
message(WARNING "Failed to automatically install pyparsing. Please install manually")
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
2016-02-15 16:59:47 +01:00
|
|
|
else()
|
|
|
|
|
message(STATUS "Python interpreter with pyparsing found")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# Bootstrap the parser
|
|
|
|
|
message(STATUS "Compiling schema, this will take a while...")
|
2016-02-17 12:03:38 +01:00
|
|
|
execute_process(COMMAND ${PYTHON_EXECUTABLE} bootstrap.py express.bnf
|
2016-02-15 16:59:47 +01:00
|
|
|
WORKING_DIRECTORY ../src/ifcexpressparser
|
2016-02-18 13:17:15 +01:00
|
|
|
OUTPUT_FILE express_parser.py
|
|
|
|
|
RESULT_VARIABLE SUCCESS)
|
|
|
|
|
|
|
|
|
|
if (NOT "${SUCCESS}" STREQUAL "0")
|
|
|
|
|
MESSAGE(FATAL_ERROR "Failed to bootstrap parser. Make sure pyparsing is installed")
|
|
|
|
|
endif()
|
2016-02-15 16:59:47 +01:00
|
|
|
|
|
|
|
|
# Generate code
|
2016-02-17 12:03:38 +01:00
|
|
|
execute_process(COMMAND ${PYTHON_EXECUTABLE} ../ifcexpressparser/express_parser.py ../../${COMPILE_SCHEMA}
|
2016-02-15 16:59:47 +01:00
|
|
|
WORKING_DIRECTORY ../src/ifcparse
|
|
|
|
|
OUTPUT_VARIABLE COMPILED_SCHEMA_NAME)
|
|
|
|
|
|
|
|
|
|
# Prevent the schema that had just been compiled from being excluded
|
2016-02-18 13:17:15 +01:00
|
|
|
if("${COMPILED_SCHEMA_NAME}" STREQUAL "IFC2X3")
|
2016-02-15 16:59:47 +01:00
|
|
|
list(REMOVE_ITEM IFC_RELEASE_NOT_USED "2x3")
|
2016-02-18 13:17:15 +01:00
|
|
|
add_definitions(-DUSE_IFC2x3)
|
|
|
|
|
elseif("${COMPILED_SCHEMA_NAME}" STREQUAL "IFC4")
|
2016-02-15 16:59:47 +01:00
|
|
|
list(REMOVE_ITEM IFC_RELEASE_NOT_USED "4")
|
2016-02-18 13:17:15 +01:00
|
|
|
add_definitions(-DUSE_IFC4)
|
2016-02-15 16:59:47 +01:00
|
|
|
endif()
|
|
|
|
|
else()
|
|
|
|
|
if(USE_IFC4)
|
|
|
|
|
add_definitions(-DUSE_IFC4)
|
|
|
|
|
set(IFC_RELEASE_NOT_USED "2x3")
|
|
|
|
|
else()
|
|
|
|
|
add_definitions(-DUSE_IFC2x3) # TODO Make all caps? i.e. USE_IFC2X3
|
|
|
|
|
set(IFC_RELEASE_NOT_USED "4")
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
2011-08-24 12:21:07 +00:00
|
|
|
|
2016-05-30 00:59:06 +03:00
|
|
|
# Boost >= 1.58 requires BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE to build on some Linux distros.
|
2016-05-15 15:47:21 +02:00
|
|
|
if(NOT Boost_VERSION LESS 105800)
|
|
|
|
|
add_definitions(-DBOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE)
|
|
|
|
|
endif()
|
|
|
|
|
|
2016-05-29 18:12:57 +06:00
|
|
|
LINK_DIRECTORIES(${LINK_DIRECTORIES} ${IfcOpenShell_BINARY_DIR} ${OCC_LIBRARY_DIR} ${OPENCOLLADA_LIBRARY_DIR}
|
|
|
|
|
${ICU_LIBRARY_DIR} ${Boost_LIBRARY_DIRS}
|
|
|
|
|
)
|
|
|
|
|
if(NOT WIN32)
|
|
|
|
|
LINK_DIRECTORIES(${LINK_DIRECTORIES} /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64)
|
|
|
|
|
endif()
|
|
|
|
|
|
2016-07-11 21:36:12 +03:00
|
|
|
set(IFCOPENSHELL_LIBRARIES IfcParse IfcGeom)
|
2016-05-30 15:12:07 +03:00
|
|
|
|
2015-10-28 19:45:07 +02:00
|
|
|
# IfcParse
|
2016-02-17 12:03:38 +01:00
|
|
|
file(GLOB IFCPARSE_H_FILES ../src/ifcparse/*.h)
|
|
|
|
|
file(GLOB IFCPARSE_CPP_FILES ../src/ifcparse/*.cpp)
|
2016-02-15 16:59:47 +01:00
|
|
|
|
|
|
|
|
foreach(IFC_RELEASE ${IFC_RELEASE_NOT_USED})
|
|
|
|
|
files_for_ifc_version(${IFC_RELEASE} SOURCE_FILES_NOT_USED)
|
|
|
|
|
foreach(SOURCE_FILE ${SOURCE_FILES_NOT_USED})
|
2016-02-17 12:03:38 +01:00
|
|
|
list(REMOVE_ITEM IFCPARSE_CPP_FILES ${SOURCE_FILE})
|
|
|
|
|
list(REMOVE_ITEM IFCPARSE_H_FILES ${SOURCE_FILE})
|
2016-02-15 16:59:47 +01:00
|
|
|
endforeach()
|
|
|
|
|
endforeach()
|
|
|
|
|
|
2016-02-17 12:03:38 +01:00
|
|
|
set(IFCPARSE_FILES ${IFCPARSE_CPP_FILES} ${IFCPARSE_H_FILES})
|
|
|
|
|
|
2016-06-22 14:54:55 +02:00
|
|
|
add_library(IfcParse ${IFCPARSE_FILES})
|
2016-07-20 22:49:32 +03:00
|
|
|
set_target_properties(IfcParse PROPERTIES COMPILE_FLAGS -DIFC_PARSE_EXPORTS)
|
2016-02-15 16:59:47 +01:00
|
|
|
|
2015-11-11 13:24:34 +02:00
|
|
|
IF(UNICODE_SUPPORT)
|
2016-03-24 15:07:52 +08:00
|
|
|
TARGET_LINK_LIBRARIES(IfcParse ${ICU_LIBRARIES} ${Boost_LIBRARIES})
|
2012-01-11 13:57:00 +00:00
|
|
|
ENDIF()
|
|
|
|
|
|
2015-10-28 19:45:07 +02:00
|
|
|
# IfcGeom
|
2016-02-17 12:03:38 +01:00
|
|
|
file(GLOB IFCGEOM_H_FILES ../src/ifcgeom/*.h)
|
|
|
|
|
file(GLOB IFCGEOM_CPP_FILES ../src/ifcgeom/*.cpp)
|
|
|
|
|
set(IFCGEOM_FILES ${IFCGEOM_CPP_FILES} ${IFCGEOM_H_FILES})
|
2016-06-22 14:54:55 +02:00
|
|
|
|
2016-07-11 21:36:12 +03:00
|
|
|
add_library(IfcGeom ${IFCGEOM_FILES})
|
|
|
|
|
set_target_properties(IfcGeom PROPERTIES COMPILE_FLAGS -DIFC_GEOM_EXPORTS)
|
2016-06-22 14:54:55 +02:00
|
|
|
|
2016-07-11 21:36:12 +03:00
|
|
|
TARGET_LINK_LIBRARIES(IfcGeom IfcParse ${OPENCASCADE_LIBRARIES})
|
2012-06-12 10:36:34 +00:00
|
|
|
|
2016-03-10 17:00:06 +02:00
|
|
|
# IfcConvert
|
2016-02-17 12:03:38 +01:00
|
|
|
file(GLOB IFCCONVERT_CPP_FILES ../src/ifcconvert/*.cpp)
|
|
|
|
|
file(GLOB IFCCONVERT_H_FILES ../src/ifcconvert/*.h)
|
|
|
|
|
set(IFCCONVERT_FILES ${IFCCONVERT_CPP_FILES} ${IFCCONVERT_H_FILES})
|
|
|
|
|
ADD_EXECUTABLE(IfcConvert ${IFCCONVERT_FILES})
|
2016-05-30 00:59:06 +03:00
|
|
|
if (IFCCONVERT_DOUBLE_PRECISION)
|
|
|
|
|
set_target_properties(IfcConvert PROPERTIES COMPILE_FLAGS -DIFCCONVERT_DOUBLE_PRECISION)
|
|
|
|
|
endif()
|
2015-10-28 19:45:07 +02:00
|
|
|
|
2016-01-09 06:38:33 +01:00
|
|
|
# Make sure cross-referenced symbols between static OCC libraries get
|
|
|
|
|
# resolved. Also add thread and rt libraries.
|
|
|
|
|
get_filename_component(libTKernelExt ${libTKernel} EXT)
|
|
|
|
|
if("${libTKernelExt}" STREQUAL ".a")
|
|
|
|
|
find_package(Threads)
|
2016-03-03 20:36:16 +01:00
|
|
|
if (NOT APPLE)
|
|
|
|
|
set(LIB_RT "rt")
|
|
|
|
|
endif()
|
2016-05-19 11:34:04 +02:00
|
|
|
set(OPENCASCADE_LIBRARIES ${OPENCASCADE_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${LIB_RT} dl)
|
2016-01-09 06:38:33 +01:00
|
|
|
endif()
|
|
|
|
|
|
2016-06-09 10:48:43 +02:00
|
|
|
TARGET_LINK_LIBRARIES(IfcConvert ${IFCOPENSHELL_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${Boost_LIBRARIES} ${OPENCOLLADA_LIBRARIES} ${ICU_LIBRARIES})
|
2016-05-15 15:51:12 +02:00
|
|
|
if (NOT WIN32)
|
2016-06-09 10:48:43 +02:00
|
|
|
SET_INSTALL_RPATHS(IfcConvert "${IFCOPENSHELL_LIBARY_DIR};${OCC_LIBRARY_DIR};${Boost_LIBRARY_DIRS};${OPENCOLLADA_LIBRARY_DIR};${ICU_LIBRARY_DIR}")
|
2016-05-15 15:51:12 +02:00
|
|
|
endif()
|
2012-06-12 10:21:32 +00:00
|
|
|
|
2015-10-28 19:45:07 +02:00
|
|
|
# IfcGeomServer
|
|
|
|
|
file(GLOB CPP_FILES ../src/ifcgeomserver/*.cpp)
|
|
|
|
|
file(GLOB H_FILES ../src/ifcgeomserver/*.h)
|
|
|
|
|
set(SOURCE_FILES ${CPP_FILES} ${H_FILES})
|
|
|
|
|
ADD_EXECUTABLE(IfcGeomServer ${SOURCE_FILES})
|
2016-06-09 10:48:43 +02:00
|
|
|
TARGET_LINK_LIBRARIES(IfcGeomServer ${IFCOPENSHELL_LIBRARIES} ${OPENCASCADE_LIBRARIES} ${Boost_LIBRARIES} ${ICU_LIBRARIES})
|
2016-05-15 15:51:12 +02:00
|
|
|
if (NOT WIN32)
|
2016-06-09 10:48:43 +02:00
|
|
|
SET_INSTALL_RPATHS(IfcGeomServer "${IFCOPENSHELL_LIBARY_DIR};${OCC_LIBRARY_DIR};${Boost_LIBRARY_DIRS};${ICU_LIBRARY_DIR}")
|
2016-05-15 15:51:12 +02:00
|
|
|
endif()
|
2014-04-06 11:16:20 +00:00
|
|
|
|
2015-10-28 19:45:07 +02:00
|
|
|
IF(BUILD_IFCPYTHON)
|
|
|
|
|
ADD_SUBDIRECTORY(../src/ifcwrap ifcwrap)
|
|
|
|
|
ENDIF()
|
2011-08-24 12:21:07 +00:00
|
|
|
|
2015-10-28 19:45:07 +02:00
|
|
|
IF(BUILD_EXAMPLES)
|
|
|
|
|
ADD_SUBDIRECTORY(../src/examples examples)
|
|
|
|
|
ENDIF()
|
2012-01-11 13:57:00 +00:00
|
|
|
|
2016-02-19 22:53:09 +02:00
|
|
|
IF(BUILD_IFCMAX)
|
|
|
|
|
ADD_SUBDIRECTORY(../src/ifcmax ifcmax)
|
|
|
|
|
ENDIF()
|
|
|
|
|
|
2012-01-11 13:57:00 +00:00
|
|
|
# CMake installation targets
|
2016-06-09 10:48:43 +02:00
|
|
|
INSTALL(FILES ${IFCPARSE_H_FILES}
|
|
|
|
|
DESTINATION ${INCLUDEDIR}/ifcparse
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
INSTALL(FILES ${IFCGEOM_H_FILES}
|
|
|
|
|
DESTINATION ${INCLUDEDIR}/ifcgeom
|
|
|
|
|
)
|
|
|
|
|
|
2016-06-22 14:54:55 +02:00
|
|
|
INSTALL(TARGETS IfcParse IfcGeom IfcConvert IfcGeomServer
|
2016-06-09 10:48:43 +02:00
|
|
|
ARCHIVE DESTINATION ${LIBDIR}
|
|
|
|
|
LIBRARY DESTINATION ${LIBDIR}
|
|
|
|
|
RUNTIME DESTINATION ${BINDIR}
|
|
|
|
|
)
|