CMakeUserFindOpenTURNS: Difference between revisions
From KitwarePublic
Jump to navigationJump to search
No edit summary |
No edit summary |
||
Line 25: | Line 25: | ||
# if (OPENTURNS_TRAPEZOIDAL_FOUND) | # if (OPENTURNS_TRAPEZOIDAL_FOUND) | ||
# include_directories (${OPENTURNS_TRAPEZOIDAL_INCLUDE_DIRS}) | # include_directories (${OPENTURNS_TRAPEZOIDAL_INCLUDE_DIRS}) | ||
# add_executable (foo foo.cpp) | # add_executable (foo foo.cpp) | ||
# target_link_libraries (foo ${OPENTURNS_TRAPEZOIDAL_LIBRARIES}) | # target_link_libraries (foo ${OPENTURNS_TRAPEZOIDAL_LIBRARIES}) | ||
Line 63: | Line 62: | ||
# OPENTURNS_NAME_LIBRARIES - Module NAME libraries location | # OPENTURNS_NAME_LIBRARIES - Module NAME libraries location | ||
# Macro add_module_extra_definitions(MODULE_NAME VERSION) | # Macro add_module_extra_definitions(MODULE_NAME VERSION) | ||
# MUST be called | # MUST be called when building a module | ||
# | # | ||
# --------------------------------------------------------------------- | # --------------------------------------------------------------------- | ||
Line 74: | Line 73: | ||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file. | # For details see the accompanying COPYING-CMAKE-SCRIPTS file. | ||
# | # | ||
include (CheckFunctionExists) | include (CheckFunctionExists) | ||
include (CheckIncludeFileCXX) | include (CheckIncludeFileCXX) | ||
# check dependencies quietly | # check dependencies quietly | ||
if (OpenTURNS_FIND_QUIETLY) | if (OpenTURNS_FIND_QUIETLY) | ||
# except when debugging | |||
if (NOT OPENTURNS_DEBUG) | if (NOT OPENTURNS_DEBUG) | ||
set (_FIND_ARG QUIET) | set (_FIND_ARG QUIET) | ||
endif () | endif () | ||
endif () | endif () | ||
# libxml | # libxml | ||
if (NOT LIBXML2_FOUND) | if (NOT LIBXML2_FOUND) | ||
find_package (LibXml2 2.6.27 ${_FIND_ARG}) | find_package (LibXml2 2.6.27 ${_FIND_ARG}) | ||
endif () | endif () | ||
# python | # python | ||
if (NOT PYTHONLIBS_FOUND) | if (NOT PYTHONLIBS_FOUND) | ||
find_package (PythonLibs 2.5 ${_FIND_ARG}) | find_package (PythonLibs 2.5 ${_FIND_ARG}) | ||
endif() | endif() | ||
# include dir | # include dir | ||
if (NOT OPENTURNS_INCLUDE_DIR) | if (NOT OPENTURNS_INCLUDE_DIR) | ||
Line 105: | Line 105: | ||
OT.hxx | OT.hxx | ||
PATHS | PATHS | ||
${OPENTURNS_ROOT_DIR}/include | |||
C:/OpenTURNS/include | C:/OpenTURNS/include | ||
PATH_SUFFIXES | PATH_SUFFIXES | ||
Line 116: | Line 113: | ||
) | ) | ||
endif () | endif () | ||
# set swig include dir | # set swig include dir | ||
if (NOT OPENTURNS_SWIG_INCLUDE_DIR) | if (NOT OPENTURNS_SWIG_INCLUDE_DIR) | ||
set(OPENTURNS_SWIG_INCLUDE_DIR "${OPENTURNS_INCLUDE_DIR}/swig") | set(OPENTURNS_SWIG_INCLUDE_DIR "${OPENTURNS_INCLUDE_DIR}/swig") | ||
endif () | endif () | ||
# dependencies includes | # dependencies includes | ||
if (NOT OPENTURNS_INCLUDE_DIRS) | if (NOT OPENTURNS_INCLUDE_DIRS) | ||
set (OPENTURNS_INCLUDE_DIRS ${OPENTURNS_INCLUDE_DIR}) | if (OPENTURNS_INCLUDE_DIR) | ||
set (OPENTURNS_INCLUDE_DIRS ${OPENTURNS_INCLUDE_DIR}) | |||
endif () | |||
list (APPEND OPENTURNS_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR}) | list (APPEND OPENTURNS_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR}) | ||
list (APPEND OPENTURNS_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS}) # cmake >= 2.8.0 | list (APPEND OPENTURNS_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS}) # cmake >= 2.8.0 | ||
list (APPEND OPENTURNS_INCLUDE_DIRS ${PYTHON_INCLUDE_PATH}) # cmake <= 2.6.4 | list (APPEND OPENTURNS_INCLUDE_DIRS ${PYTHON_INCLUDE_PATH}) # cmake <= 2.6.4 | ||
endif () | endif () | ||
# version | # version | ||
if (NOT OPENTURNS_VERSION) | if (NOT OPENTURNS_VERSION) | ||
Line 141: | Line 140: | ||
endif () | endif () | ||
endif () | endif () | ||
# check version | # check version | ||
set (_OPENTURNS_VERSION_MATCH TRUE) | set (_OPENTURNS_VERSION_MATCH TRUE) | ||
Line 158: | Line 157: | ||
endif () | endif () | ||
endif () | endif () | ||
# check for library directory | # check for library directory | ||
if (NOT OPENTURNS_LIBRARY) | if (NOT OPENTURNS_LIBRARY) | ||
find_library (OPENTURNS_LIBRARY | find_library (OPENTURNS_LIBRARY | ||
NAMES | NAMES | ||
OT | |||
PATHS | PATHS | ||
${OPENTURNS_ROOT_DIR}/lib | |||
C:/OpenTURNS/lib | C:/OpenTURNS/lib | ||
PATH_SUFFIXES | PATH_SUFFIXES | ||
Line 179: | Line 173: | ||
) | ) | ||
endif () | endif () | ||
# find dependent libraries | # find dependent libraries | ||
if (NOT OPENTURNS_LIBRARIES) | if (NOT OPENTURNS_LIBRARIES) | ||
set (OPENTURNS_LIBRARIES ${OPENTURNS_LIBRARY}) | if (OPENTURNS_LIBRARY) | ||
set (OPENTURNS_LIBRARIES ${OPENTURNS_LIBRARY}) | |||
endif () | |||
list (APPEND OPENTURNS_LIBRARIES ${LIBXML2_LIBRARIES}) | list (APPEND OPENTURNS_LIBRARIES ${LIBXML2_LIBRARIES}) | ||
list (APPEND OPENTURNS_LIBRARIES ${PYTHON_LIBRARIES}) | list (APPEND OPENTURNS_LIBRARIES ${PYTHON_LIBRARIES}) | ||
endif () | endif () | ||
# root dir | # root dir | ||
if (NOT OPENTURNS_ROOT_DIR) | if (NOT OPENTURNS_ROOT_DIR) | ||
string (REGEX REPLACE "(.*)/[ | # try to guess root dir from include dir | ||
if (OPENTURNS_INCLUDE_DIR) | |||
string (REGEX REPLACE "(.*)/include/openturns/?" "\\1" OPENTURNS_ROOT_DIR "${OPENTURNS_INCLUDE_DIR}") | |||
# try to guess root dir from library dir | |||
elseif (OPENTURNS_LIBRARY) | |||
get_filename_component (_LIBRARY_DIR ${OPENTURNS_LIBRARY} PATH) | |||
string (REGEX REPLACE "(.*)/lib[0-9]*/openturns/?" "\\1" OPENTURNS_ROOT_DIR "${_LIBRARY_DIR}") | |||
endif () | |||
endif () | endif () | ||
# examples dir | # examples dir | ||
if (NOT OPENTURNS_EXAMPLES_DIR) | if (NOT OPENTURNS_EXAMPLES_DIR) | ||
set (OPENTURNS_EXAMPLES_DIR "${OPENTURNS_ROOT_DIR}/share/openturns/examples") | set (OPENTURNS_EXAMPLES_DIR "${OPENTURNS_ROOT_DIR}/share/openturns/examples") | ||
endif () | endif () | ||
# handle REQUIRED and QUIET options | # handle REQUIRED and QUIET options | ||
include (FindPackageHandleStandardArgs) | include (FindPackageHandleStandardArgs) | ||
Line 212: | Line 216: | ||
OPENTURNS_EXAMPLES_DIR | OPENTURNS_EXAMPLES_DIR | ||
) | ) | ||
mark_as_advanced ( | mark_as_advanced ( | ||
OPENTURNS_LIBRARY | OPENTURNS_LIBRARY | ||
Line 223: | Line 227: | ||
OPENTURNS_EXAMPLES_DIR | OPENTURNS_EXAMPLES_DIR | ||
) | ) | ||
# wrapper ----------------------------------------------------------------------- | # wrapper ----------------------------------------------------------------------- | ||
# threads | # threads | ||
if (NOT Threads_FOUND) | if (NOT Threads_FOUND) | ||
find_package (Threads ${_FIND_ARG}) | find_package (Threads ${_FIND_ARG}) | ||
endif () | endif () | ||
# wrapper definitions | # wrapper definitions | ||
if (NOT OPENTURNS_WRAPPER_DEFINITIONS) | if (NOT OPENTURNS_WRAPPER_DEFINITIONS) | ||
Line 246: | Line 250: | ||
endif () | endif () | ||
endif () | endif () | ||
# find wrapper dir | # find wrapper dir | ||
if (NOT OPENTURNS_WRAPPER_DIR) | if (NOT OPENTURNS_WRAPPER_DIR) | ||
find_path (OPENTURNS_WRAPPER_DIR | find_path (OPENTURNS_WRAPPER_DIR | ||
NAMES | NAMES | ||
wrapper.xml | wrapper.xml | ||
PATHS | PATHS | ||
${OPENTURNS_ROOT_DIR} | |||
PATH_SUFFIXES | PATH_SUFFIXES | ||
share/openturns/wrappers | share/openturns/wrappers | ||
Line 265: | Line 265: | ||
) | ) | ||
endif () | endif () | ||
if (NOT OPENTURNS_WRAPPER_LIBRARIES) | if (NOT OPENTURNS_WRAPPER_LIBRARIES) | ||
set(OPENTURNS_WRAPPER_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) | set(OPENTURNS_WRAPPER_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) | ||
endif () | endif () | ||
# check if wrapper library is usable | # check if wrapper library is usable | ||
if (NOT OPENTURNS_WRAPPER_FOUND) | if (NOT OPENTURNS_WRAPPER_FOUND) | ||
Line 284: | Line 284: | ||
endif () | endif () | ||
endif () | endif () | ||
mark_as_advanced ( | mark_as_advanced ( | ||
OPENTURNS_WRAPPER_FOUND | OPENTURNS_WRAPPER_FOUND | ||
Line 292: | Line 292: | ||
OPENTURNS_WRAPPER_DEFINITIONS | OPENTURNS_WRAPPER_DEFINITIONS | ||
) | ) | ||
# module -------------------------------------------------------------- | # module -------------------------------------------------------------- | ||
# find module directory | # find module directory | ||
if (NOT OPENTURNS_MODULE_DIR) | if (NOT OPENTURNS_MODULE_DIR) | ||
set (OPENTURNS_MODULE_DIR "${OPENTURNS_ROOT_DIR}/lib/openturns/module") | set (OPENTURNS_MODULE_DIR "${OPENTURNS_ROOT_DIR}/lib/openturns/module") | ||
endif () | endif () | ||
# set module definitions | # set module definitions | ||
if (NOT OPENTURNS_MODULE_DEFINITIONS) | if (NOT OPENTURNS_MODULE_DEFINITIONS) | ||
set (OPENTURNS_MODULE_DEFINITIONS) | set (OPENTURNS_MODULE_DEFINITIONS) | ||
# check for STDC_HEADERS | # check for STDC_HEADERS | ||
if (NOT HAVE_STDLIB_H) | if (NOT HAVE_STDLIB_H) | ||
Line 337: | Line 337: | ||
list (APPEND OPENTURNS_MODULE_DEFINITIONS -DSTDC_HEADERS_H=0) | list (APPEND OPENTURNS_MODULE_DEFINITIONS -DSTDC_HEADERS_H=0) | ||
endif () | endif () | ||
# this macro checks a header and defines the corresponding macro | # this macro checks a header and defines the corresponding macro | ||
macro (check_include_file_cxx_define_macro header_file) | macro (check_include_file_cxx_define_macro header_file) | ||
Line 355: | Line 355: | ||
endif () | endif () | ||
endmacro () | endmacro () | ||
# check for some headers | # check for some headers | ||
check_include_file_cxx_define_macro (sys/types.h) | check_include_file_cxx_define_macro (sys/types.h) | ||
Line 370: | Line 370: | ||
check_include_file_cxx_define_macro (regex.h) | check_include_file_cxx_define_macro (regex.h) | ||
endif () | endif () | ||
mark_as_advanced ( | mark_as_advanced ( | ||
OPENTURNS_MODULE_DIR | OPENTURNS_MODULE_DIR | ||
OPENTURNS_MODULE_DEFINITIONS | OPENTURNS_MODULE_DEFINITIONS | ||
) | ) | ||
# add module defs | # add module defs | ||
macro (add_module_extra_definitions module_name) | macro (add_module_extra_definitions module_name) | ||
Line 386: | Line 386: | ||
add_definitions (-DPACKAGE_BUGREPORT="") | add_definitions (-DPACKAGE_BUGREPORT="") | ||
endmacro () | endmacro () | ||
# modules ---------------------------------------------------------------------- | # modules ---------------------------------------------------------------------- | ||
# find modules | # find modules | ||
if (OpenTURNS_FIND_COMPONENTS) | if (OpenTURNS_FIND_COMPONENTS) | ||
Line 400: | Line 400: | ||
string(TOLOWER ${module_name} module_lowercase_name) | string(TOLOWER ${module_name} module_lowercase_name) | ||
string(TOUPPER ${module_name} module_uppercase_name) | string(TOUPPER ${module_name} module_uppercase_name) | ||
set (OPENTURNS_${module_uppercase_name}_FOUND FALSE) | set (OPENTURNS_${module_uppercase_name}_FOUND FALSE) | ||
# module library | # module library | ||
if (NOT OPENTURNS_${module_uppercase_name}_LIBRARY) | if (NOT OPENTURNS_${module_uppercase_name}_LIBRARY) | ||
Line 414: | Line 414: | ||
) | ) | ||
endif () | endif () | ||
# module libraries | # module libraries | ||
if (NOT OPENTURNS_${module_uppercase_name}_LIBRARIES) | if (NOT OPENTURNS_${module_uppercase_name}_LIBRARIES) | ||
Line 420: | Line 420: | ||
list (APPEND OPENTURNS_${module_uppercase_name}_LIBRARIES ${OPENTURNS_LIBRARIES}) | list (APPEND OPENTURNS_${module_uppercase_name}_LIBRARIES ${OPENTURNS_LIBRARIES}) | ||
endif () | endif () | ||
# module | # module include dir | ||
if (NOT OPENTURNS_${module_uppercase_name}_INCLUDE_DIR) | if (NOT OPENTURNS_${module_uppercase_name}_INCLUDE_DIR) | ||
set (OPENTURNS_${module_uppercase_name}_INCLUDE_DIR "${OPENTURNS_MODULE_DIR}/include/${module_lowercase_name}") | set (OPENTURNS_${module_uppercase_name}_INCLUDE_DIR "${OPENTURNS_MODULE_DIR}/include/${module_lowercase_name}") | ||
endif () | endif () | ||
# module include dirs | # module include dirs | ||
if (NOT OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS) | if (NOT OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS) | ||
Line 431: | Line 431: | ||
list (APPEND OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS ${OPENTURNS_INCLUDE_DIRS}) | list (APPEND OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS ${OPENTURNS_INCLUDE_DIRS}) | ||
endif () | endif () | ||
# module swig | # module swig include dir | ||
if (NOT OPENTURNS_${module_uppercase_name}_SWIG_INCLUDE_DIR) | if (NOT OPENTURNS_${module_uppercase_name}_SWIG_INCLUDE_DIR) | ||
set (OPENTURNS_${module_uppercase_name}_SWIG_INCLUDE_DIR "${OPENTURNS_MODULE_DIR}/share/${module_lowercase_name}/swig") | set (OPENTURNS_${module_uppercase_name}_SWIG_INCLUDE_DIR "${OPENTURNS_MODULE_DIR}/share/${module_lowercase_name}/swig") | ||
endif () | endif () | ||
# test if the module is found | # test if the module is found | ||
if (NOT OPENTURNS_${module_uppercase_name}_FOUND) | if (NOT OPENTURNS_${module_uppercase_name}_FOUND) | ||
Line 450: | Line 450: | ||
endif () | endif () | ||
endif () | endif () | ||
# handle REQUIRED and QUIET options | # handle REQUIRED and QUIET options | ||
if (OPENTURNS_${module_uppercase_name}_FOUND) | if (OPENTURNS_${module_uppercase_name}_FOUND) | ||
Line 464: | Line 464: | ||
endif () | endif () | ||
endif () | endif () | ||
mark_as_advanced ( | mark_as_advanced ( | ||
OPENTURNS_${module_uppercase_name}_FOUND | OPENTURNS_${module_uppercase_name}_FOUND | ||
Line 473: | Line 473: | ||
OPENTURNS_${module_uppercase_name}_SWIG_INCLUDE_DIR | OPENTURNS_${module_uppercase_name}_SWIG_INCLUDE_DIR | ||
) | ) | ||
endforeach () | endforeach () | ||
endif () | endif () | ||
# debug ------------------------------------------------------------------------------------------ | # debug ------------------------------------------------------------------------------------------ | ||
if (OPENTURNS_DEBUG) | if (OPENTURNS_DEBUG) | ||
message (STATUS "OPENTURNS_FOUND: ${OPENTURNS_FOUND}") | message (STATUS "OPENTURNS_FOUND: ${OPENTURNS_FOUND}") | ||
Line 494: | Line 494: | ||
message (STATUS "OPENTURNS_ROOT_DIR: ${OPENTURNS_ROOT_DIR}") | message (STATUS "OPENTURNS_ROOT_DIR: ${OPENTURNS_ROOT_DIR}") | ||
message (STATUS "OPENTURNS_EXAMPLES_DIR: ${OPENTURNS_EXAMPLES_DIR}") | message (STATUS "OPENTURNS_EXAMPLES_DIR: ${OPENTURNS_EXAMPLES_DIR}") | ||
message (STATUS "OPENTURNS_WRAPPER_FOUND: ${OPENTURNS_WRAPPER_FOUND}") | message (STATUS "OPENTURNS_WRAPPER_FOUND: ${OPENTURNS_WRAPPER_FOUND}") | ||
message (STATUS "OPENTURNS_WRAPPER_DIR: ${OPENTURNS_WRAPPER_DIR}") | message (STATUS "OPENTURNS_WRAPPER_DIR: ${OPENTURNS_WRAPPER_DIR}") | ||
message (STATUS "OPENTURNS_WRAPPER_DEFINITIONS: ${OPENTURNS_WRAPPER_DEFINITIONS}") | message (STATUS "OPENTURNS_WRAPPER_DEFINITIONS: ${OPENTURNS_WRAPPER_DEFINITIONS}") | ||
message (STATUS "OPENTURNS_WRAPPER_LIBRARIES: ${OPENTURNS_WRAPPER_LIBRARIES}") | message (STATUS "OPENTURNS_WRAPPER_LIBRARIES: ${OPENTURNS_WRAPPER_LIBRARIES}") | ||
message (STATUS "OPENTURNS_MODULE_DIR: ${OPENTURNS_MODULE_DIR}") | message (STATUS "OPENTURNS_MODULE_DIR: ${OPENTURNS_MODULE_DIR}") | ||
message (STATUS "OPENTURNS_MODULE_DEFINITIONS: ${OPENTURNS_MODULE_DEFINITIONS}") | message (STATUS "OPENTURNS_MODULE_DEFINITIONS: ${OPENTURNS_MODULE_DEFINITIONS}") | ||
foreach (module_name ${OpenTURNS_FIND_COMPONENTS}) | foreach (module_name ${OpenTURNS_FIND_COMPONENTS}) | ||
message (STATUS "OPENTURNS_${module_uppercase_name}_FOUND: ${OPENTURNS_${module_uppercase_name}_FOUND}") | message (STATUS "OPENTURNS_${module_uppercase_name}_FOUND: ${OPENTURNS_${module_uppercase_name}_FOUND}") | ||
Line 512: | Line 512: | ||
endforeach () | endforeach () | ||
endif () | endif () | ||
----- | ----- |
Revision as of 06:53, 6 April 2010
# -- Try to find OpenTURNS # # OpenTURNS is an Open source initiative to Treat Uncertainties, # Risks’N Statistics in a structured industrial approach, # available at http://www.openturns.org/ # # --------------------------------------------------------------------- # # -- Library usage example : # # find_package (OpenTURNS 0.13.1) # if (OPENTURNS_FOUND) # include_directories (${OPENTURNS_INCLUDE_DIRS}) # add_executable (foo foo.cpp) # target_link_libraries (foo ${OPENTURNS_LIBRARIES}) # endif () # # -- Module usage example : # # find_package (OpenTURNS 0.13 COMPONENTS Trapezoidal) # if (OPENTURNS_TRAPEZOIDAL_FOUND) # include_directories (${OPENTURNS_TRAPEZOIDAL_INCLUDE_DIRS}) # add_executable (foo foo.cpp) # target_link_libraries (foo ${OPENTURNS_TRAPEZOIDAL_LIBRARIES}) # endif () # # -- Show some debug information : # # set (OPENTURNS_DEBUG TRUE) # find_package (OpenTURNS) # # --------------------------------------------------------------------- # # -- This module defines : # # OPENTURNS_FOUND - OpenTURNS is usable as a library # OPENTURNS_INCLUDE_DIR - Where to find OT.hxx # OPENTURNS_INCLUDE_DIRS - dependencies include directories # OPENTURNS_SWIG_INCLUDE_DIR - Include directory to swig (.i) interface # OPENTURNS_VERSION - Version string # OPENTURNS_LIBRARY - Where to find the library # OPENTURNS_LIBRARIES - Link these to use the library # OPENTURNS_ROOT_DIR - Installation directory # OPENTURNS_EXAMPLES_DIR - path to examples programs # # OPENTURNS_WRAPPER_FOUND - OpenTURNS wrapper library is usable # OPENTURNS_WRAPPER_DIR - Wrapper directory # OPENTURNS_WRAPPER_LIBRARIES - Link these to use the wrapper # OPENTURNS_WRAPPER_DEFINITIONS - Compiler switches required for wrapper # # OPENTURNS_MODULE_DIR - OpenTURNS module directory # OPENTURNS_MODULE_DEFINITIONS - Compiler switches required for module # OPENTURNS_NAME_FOUND - True if module NAME was found # OPENTURNS_NAME_INCLUDE_DIR - Module NAME headers # OPENTURNS_NAME_INCLUDE_DIRS - Module NAME includes # OPENTURNS_NAME_SWIG_INCLUDE_DIR - Module NAME swig (.i) headers # OPENTURNS_NAME_LIBRARY - Module NAME library location # OPENTURNS_NAME_LIBRARIES - Module NAME libraries location # Macro add_module_extra_definitions(MODULE_NAME VERSION) # MUST be called when building a module # # --------------------------------------------------------------------- # # Copyright (c) 2009 Mathieu Lapointe <lapointe@phimeca.com> # Copyright (c) 2010 Julien Schueller <schueller@phimeca.com> # # Redistribution and use is allowed according to the terms of the New # BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. #
include (CheckFunctionExists) include (CheckIncludeFileCXX)
# check dependencies quietly if (OpenTURNS_FIND_QUIETLY) # except when debugging if (NOT OPENTURNS_DEBUG) set (_FIND_ARG QUIET) endif () endif ()
# libxml if (NOT LIBXML2_FOUND) find_package (LibXml2 2.6.27 ${_FIND_ARG}) endif ()
# python if (NOT PYTHONLIBS_FOUND) find_package (PythonLibs 2.5 ${_FIND_ARG}) endif()
# include dir if (NOT OPENTURNS_INCLUDE_DIR) find_path (OPENTURNS_INCLUDE_DIR NAMES OT.hxx PATHS ${OPENTURNS_ROOT_DIR}/include C:/OpenTURNS/include PATH_SUFFIXES openturns DOC "OpenTURNS include directory" ) endif ()
# set swig include dir if (NOT OPENTURNS_SWIG_INCLUDE_DIR) set(OPENTURNS_SWIG_INCLUDE_DIR "${OPENTURNS_INCLUDE_DIR}/swig") endif ()
# dependencies includes if (NOT OPENTURNS_INCLUDE_DIRS) if (OPENTURNS_INCLUDE_DIR) set (OPENTURNS_INCLUDE_DIRS ${OPENTURNS_INCLUDE_DIR}) endif () list (APPEND OPENTURNS_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR}) list (APPEND OPENTURNS_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS}) # cmake >= 2.8.0 list (APPEND OPENTURNS_INCLUDE_DIRS ${PYTHON_INCLUDE_PATH}) # cmake <= 2.6.4 endif ()
# version if (NOT OPENTURNS_VERSION) if (OPENTURNS_INCLUDE_DIR) file (STRINGS "${OPENTURNS_INCLUDE_DIR}/OTconfig.h" _VERSION_STRING REGEX ".*PACKAGE_VERSION.*") string (REGEX REPLACE ".*_VERSION[ ]+\"([0-9]+\\.[0-9]+\\.[0-9]+).*" "\\1" OPENTURNS_VERSION "${_VERSION_STRING}") endif () endif ()
# check version set (_OPENTURNS_VERSION_MATCH TRUE) set (_REQUIRED_VERSION "${OpenTURNS_FIND_VERSION_MAJOR}.${OpenTURNS_FIND_VERSION_MINOR}.${OpenTURNS_FIND_VERSION_PATCH}") if (OpenTURNS_FIND_VERSION) if (OpenTURNS_FIND_VERSION_EXACT) if ("${_REQUIRED_VERSION}" VERSION_EQUAL "${OPENTURNS_VERSION}") else () set (_OPENTURNS_VERSION_MATCH FALSE) endif () else () if ("${_REQUIRED_VERSION}" VERSION_GREATER "${OPENTURNS_VERSION}") set (_OPENTURNS_VERSION_MATCH FALSE) endif () endif () endif ()
# check for library directory if (NOT OPENTURNS_LIBRARY) find_library (OPENTURNS_LIBRARY NAMES OT PATHS ${OPENTURNS_ROOT_DIR}/lib C:/OpenTURNS/lib PATH_SUFFIXES openturns DOC "OpenTURNS library location" ) endif ()
# find dependent libraries if (NOT OPENTURNS_LIBRARIES) if (OPENTURNS_LIBRARY) set (OPENTURNS_LIBRARIES ${OPENTURNS_LIBRARY}) endif () list (APPEND OPENTURNS_LIBRARIES ${LIBXML2_LIBRARIES}) list (APPEND OPENTURNS_LIBRARIES ${PYTHON_LIBRARIES}) endif ()
# root dir if (NOT OPENTURNS_ROOT_DIR) # try to guess root dir from include dir if (OPENTURNS_INCLUDE_DIR) string (REGEX REPLACE "(.*)/include/openturns/?" "\\1" OPENTURNS_ROOT_DIR "${OPENTURNS_INCLUDE_DIR}")
# try to guess root dir from library dir elseif (OPENTURNS_LIBRARY) get_filename_component (_LIBRARY_DIR ${OPENTURNS_LIBRARY} PATH) string (REGEX REPLACE "(.*)/lib[0-9]*/openturns/?" "\\1" OPENTURNS_ROOT_DIR "${_LIBRARY_DIR}") endif () endif ()
# examples dir if (NOT OPENTURNS_EXAMPLES_DIR) set (OPENTURNS_EXAMPLES_DIR "${OPENTURNS_ROOT_DIR}/share/openturns/examples") endif ()
# handle REQUIRED and QUIET options include (FindPackageHandleStandardArgs) find_package_handle_standard_args (OpenTURNS DEFAULT_MSG OPENTURNS_LIBRARY OPENTURNS_LIBRARIES LIBXML2_FOUND PYTHONLIBS_FOUND OPENTURNS_INCLUDE_DIR OPENTURNS_INCLUDE_DIRS OPENTURNS_SWIG_INCLUDE_DIR OPENTURNS_VERSION _OPENTURNS_VERSION_MATCH OPENTURNS_ROOT_DIR OPENTURNS_EXAMPLES_DIR )
mark_as_advanced ( OPENTURNS_LIBRARY OPENTURNS_INCLUDE_DIR OPENTURNS_SWIG_INCLUDE_DIR OPENTURNS_INCLUDE_DIRS OPENTURNS_VERSION OPENTURNS_LIBRARIES OPENTURNS_ROOT_DIR OPENTURNS_EXAMPLES_DIR )
# wrapper -----------------------------------------------------------------------
# threads if (NOT Threads_FOUND) find_package (Threads ${_FIND_ARG}) endif ()
# wrapper definitions if (NOT OPENTURNS_WRAPPER_DEFINITIONS) set(OPENTURNS_WRAPPER_DEFINITIONS) if (CMAKE_USE_PTHREADS_INIT) list (APPEND OPENTURNS_WRAPPER_DEFINITIONS -DHAVE_PTHREAD_H) endif () endif ()
# find wrapper dir if (NOT OPENTURNS_WRAPPER_DIR) find_path (OPENTURNS_WRAPPER_DIR NAMES wrapper.xml PATHS ${OPENTURNS_ROOT_DIR} PATH_SUFFIXES share/openturns/wrappers DOC "OpenTURNS wrapper location" ) endif ()
if (NOT OPENTURNS_WRAPPER_LIBRARIES) set(OPENTURNS_WRAPPER_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) endif ()
# check if wrapper library is usable if (NOT OPENTURNS_WRAPPER_FOUND) if (Threads_FOUND AND CMAKE_USE_PTHREADS_INIT AND OPENTURNS_WRAPPER_DEFINITIONS AND OPENTURNS_WRAPPER_DIR AND OPENTURNS_WRAPPER_LIBRARIES AND OPENTURNS_FOUND) set (OPENTURNS_WRAPPER_FOUND TRUE) else () set (OPENTURNS_WRAPPER_FOUND FALSE) endif () endif ()
mark_as_advanced ( OPENTURNS_WRAPPER_FOUND OPENTURNS_WRAPPER_DIR OPENTURNS_WRAPPER_LIBRARIES OPENTURNS_WRAPPER_DEFINITIONS )
# module --------------------------------------------------------------
# find module directory if (NOT OPENTURNS_MODULE_DIR) set (OPENTURNS_MODULE_DIR "${OPENTURNS_ROOT_DIR}/lib/openturns/module") endif ()
# set module definitions if (NOT OPENTURNS_MODULE_DEFINITIONS) set (OPENTURNS_MODULE_DEFINITIONS)
# check for STDC_HEADERS if (NOT HAVE_STDLIB_H) check_include_file_cxx (stdlib.h HAVE_STDLIB_H) endif () if (NOT HAVE_STDARG_H) check_include_file_cxx (stdarg.h HAVE_STDARG_H) endif () if (NOT HAVE_STRING_H) check_include_file_cxx (string.h HAVE_STRING_H) endif () if (NOT HAVE_FLOAT_H) check_include_file_cxx (float.h HAVE_FLOAT_H) endif () check_function_exists (memchr HAVE_MEMCHR) if (NOT HAVE_FREE) check_function_exists (free HAVE_FREE) endif () if (NOT HAVE_CTYPE_H) check_include_file_cxx (ctype.h HAVE_CTYPE_H) endif () if(HAVE_STDLIB_H AND HAVE_STDARG_H AND HAVE_STRING_H AND HAVE_FLOAT_H AND HAVE_MEMCHR AND HAVE_FREE AND HAVE_CTYPE_H) list (APPEND OPENTURNS_MODULE_DEFINITIONS -DSTDC_HEADERS_H=1) else () list (APPEND OPENTURNS_MODULE_DEFINITIONS -DSTDC_HEADERS_H=0) endif ()
# this macro checks a header and defines the corresponding macro macro (check_include_file_cxx_define_macro header_file) # get macro name from header_file string (TOUPPER "${header_file}" macro_name) string (REGEX REPLACE "[/.]" "_" macro_name ${macro_name}) set(macro_name HAVE_${macro_name}) # check for header if (NOT ${macro_name}) check_include_file_cxx (${header_file} ${macro_name}) endif () # define macro if(${macro_name}) list (APPEND OPENTURNS_MODULE_DEFINITIONS -D${macro_name}=1) else() list (APPEND OPENTURNS_MODULE_DEFINITIONS -D${macro_name}=0) endif () endmacro ()
# check for some headers check_include_file_cxx_define_macro (sys/types.h) check_include_file_cxx_define_macro (sys/stat.h) check_include_file_cxx_define_macro (stdlib.h) check_include_file_cxx_define_macro (string.h) check_include_file_cxx_define_macro (memory.h) check_include_file_cxx_define_macro (strings.h) check_include_file_cxx_define_macro (inttypes.h) check_include_file_cxx_define_macro (stdint.h) check_include_file_cxx_define_macro (unistd.h) check_include_file_cxx_define_macro (dlfcn.h) check_include_file_cxx_define_macro (stdbool.h) check_include_file_cxx_define_macro (regex.h) endif ()
mark_as_advanced ( OPENTURNS_MODULE_DIR OPENTURNS_MODULE_DEFINITIONS )
# add module defs macro (add_module_extra_definitions module_name) add_definitions (-DPACKAGE_NAME="OpenTURNS module ${module_name}") add_definitions (-DPACKAGE_TARNAME="${module_name}") add_definitions (-DPACKAGE_VERSION="${OPENTURNS_VERSION}") add_definitions (-DPACKAGE_STRING="OpenTURNS module ${module_name} ${OPENTURNS_VERSION}") add_definitions (-DPACKAGE_BUGREPORT="") endmacro ()
# modules ----------------------------------------------------------------------
# find modules if (OpenTURNS_FIND_COMPONENTS) foreach (module_name ${OpenTURNS_FIND_COMPONENTS}) string(TOLOWER ${module_name} module_lowercase_name) string(TOUPPER ${module_name} module_uppercase_name)
set (OPENTURNS_${module_uppercase_name}_FOUND FALSE)
# module library if (NOT OPENTURNS_${module_uppercase_name}_LIBRARY) find_library (OPENTURNS_${module_uppercase_name}_LIBRARY NAMES ${module_name} PATHS ${OPENTURNS_MODULE_DIR}/lib PATH_SUFFIXES ${module_lowercase_name} ) endif ()
# module libraries if (NOT OPENTURNS_${module_uppercase_name}_LIBRARIES) set (OPENTURNS_${module_uppercase_name}_LIBRARIES ${OPENTURNS_${module_uppercase_name}_LIBRARY}) list (APPEND OPENTURNS_${module_uppercase_name}_LIBRARIES ${OPENTURNS_LIBRARIES}) endif ()
# module include dir if (NOT OPENTURNS_${module_uppercase_name}_INCLUDE_DIR) set (OPENTURNS_${module_uppercase_name}_INCLUDE_DIR "${OPENTURNS_MODULE_DIR}/include/${module_lowercase_name}") endif ()
# module include dirs if (NOT OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS) set (OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS ${OPENTURNS_${module_uppercase_name}_INCLUDE_DIR}) list (APPEND OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS ${OPENTURNS_INCLUDE_DIRS}) endif ()
# module swig include dir if (NOT OPENTURNS_${module_uppercase_name}_SWIG_INCLUDE_DIR) set (OPENTURNS_${module_uppercase_name}_SWIG_INCLUDE_DIR "${OPENTURNS_MODULE_DIR}/share/${module_lowercase_name}/swig") endif ()
# test if the module is found if (NOT OPENTURNS_${module_uppercase_name}_FOUND) if (OPENTURNS_${module_uppercase_name}_LIBRARY AND OPENTURNS_${module_uppercase_name}_LIBRARIES AND OPENTURNS_${module_uppercase_name}_INCLUDE_DIR AND OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS AND OPENTURNS_${module_uppercase_name}_SWIG_INCLUDE_DIR AND OPENTURNS_FOUND) set (OPENTURNS_${module_uppercase_name}_FOUND TRUE) else () set (OPENTURNS_${module_uppercase_name}_FOUND FALSE) endif () endif ()
# handle REQUIRED and QUIET options if (OPENTURNS_${module_uppercase_name}_FOUND) if (NOT OpenTURNS_FIND_QUIETLY) message (STATUS "Found OpenTURNS module ${module_name}: ${OPENTURNS_${module_uppercase_name}_LIBRARY}") endif () else () if (OpenTURNS_FIND_REQUIRED) message(SEND_ERROR "Unable to find the requested OpenTURNS module : ${module_name}") endif () if (NOT OpenTURNS_FIND_QUIETLY) message (STATUS "Could not find OpenTURNS module ${module_name}") endif () endif ()
mark_as_advanced ( OPENTURNS_${module_uppercase_name}_FOUND OPENTURNS_${module_uppercase_name}_LIBRARY OPENTURNS_${module_uppercase_name}_LIBRARIES OPENTURNS_${module_uppercase_name}_INCLUDE_DIR OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS OPENTURNS_${module_uppercase_name}_SWIG_INCLUDE_DIR )
endforeach () endif ()
# debug ------------------------------------------------------------------------------------------
if (OPENTURNS_DEBUG) message (STATUS "OPENTURNS_FOUND: ${OPENTURNS_FOUND}") message (STATUS "OPENTURNS_LIBRARY: ${OPENTURNS_LIBRARY}") message (STATUS "OPENTURNS_LIBRARIES: ${OPENTURNS_LIBRARIES}") message (STATUS "OPENTURNS_INCLUDE_DIR: ${OPENTURNS_INCLUDE_DIR}") message (STATUS "OPENTURNS_INCLUDE_DIRS: ${OPENTURNS_INCLUDE_DIRS}") message (STATUS "OPENTURNS_VERSION: ${OPENTURNS_VERSION}") message (STATUS "OPENTURNS_SWIG_INCLUDE_DIR: ${OPENTURNS_SWIG_INCLUDE_DIR}") message (STATUS "OPENTURNS_ROOT_DIR: ${OPENTURNS_ROOT_DIR}") message (STATUS "OPENTURNS_EXAMPLES_DIR: ${OPENTURNS_EXAMPLES_DIR}")
message (STATUS "OPENTURNS_WRAPPER_FOUND: ${OPENTURNS_WRAPPER_FOUND}") message (STATUS "OPENTURNS_WRAPPER_DIR: ${OPENTURNS_WRAPPER_DIR}") message (STATUS "OPENTURNS_WRAPPER_DEFINITIONS: ${OPENTURNS_WRAPPER_DEFINITIONS}") message (STATUS "OPENTURNS_WRAPPER_LIBRARIES: ${OPENTURNS_WRAPPER_LIBRARIES}")
message (STATUS "OPENTURNS_MODULE_DIR: ${OPENTURNS_MODULE_DIR}") message (STATUS "OPENTURNS_MODULE_DEFINITIONS: ${OPENTURNS_MODULE_DEFINITIONS}")
foreach (module_name ${OpenTURNS_FIND_COMPONENTS}) message (STATUS "OPENTURNS_${module_uppercase_name}_FOUND: ${OPENTURNS_${module_uppercase_name}_FOUND}") message (STATUS "OPENTURNS_${module_uppercase_name}_LIBRARY: ${OPENTURNS_${module_uppercase_name}_LIBRARY}") message (STATUS "OPENTURNS_${module_uppercase_name}_LIBRARIES: ${OPENTURNS_${module_uppercase_name}_LIBRARIES}") message (STATUS "OPENTURNS_${module_uppercase_name}_INCLUDE_DIR: ${OPENTURNS_${module_uppercase_name}_INCLUDE_DIR}") message (STATUS "OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS: ${OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS}") message (STATUS "OPENTURNS_${module_uppercase_name}_SWIG_INCLUDE_DIR: ${OPENTURNS_${module_uppercase_name}_SWIG_INCLUDE_DIR}") endforeach () endif ()