CMakeUserFindOpenTURNS: Difference between revisions
From KitwarePublic
Jump to navigationJump to search
No edit summary |
No edit summary |
||
Line 3: | Line 3: | ||
[[File:FindOpenTURNS.cmake]] | [[File:FindOpenTURNS.cmake]] | ||
----- | ----- | ||
# -- Try to find OpenTURNS | |||
# | # | ||
# OpenTURNS is an Open source initiative to Treat Uncertainties, | # OpenTURNS is an Open source initiative to Treat Uncertainties, | ||
Line 14: | Line 14: | ||
# | # | ||
# find_package (OpenTURNS 0.13.1) | # find_package (OpenTURNS 0.13.1) | ||
# if ( | # if (OPENTURNS_FOUND) | ||
# include_directories (${ | # include_directories (${OPENTURNS_INCLUDE_DIRS}) | ||
# add_executable (foo foo.cpp) | # add_executable (foo foo.cpp) | ||
# target_link_libraries (foo ${ | # target_link_libraries (foo ${OPENTURNS_LIBRARIES}) | ||
# endif () | # endif () | ||
# | # | ||
Line 23: | Line 23: | ||
# | # | ||
# find_package (OpenTURNS 0.13 COMPONENTS Trapezoidal) | # find_package (OpenTURNS 0.13 COMPONENTS Trapezoidal) | ||
# if ( | # if (OPENTURNS_TRAPEZOIDAL_FOUND) | ||
# include_directories (${ | # include_directories (${OPENTURNS_TRAPEZOIDAL_INCLUDE_DIRS}) | ||
# add_module_extra_definitions (Trapezoidal) | # add_module_extra_definitions (Trapezoidal) | ||
# add_executable (foo foo.cpp) | # add_executable (foo foo.cpp) | ||
# target_link_libraries (foo ${ | # target_link_libraries (foo ${OPENTURNS_TRAPEZOIDAL_LIBRARIES}) | ||
# endif () | # endif () | ||
# | # | ||
# -- Show some debug information : | # -- Show some debug information : | ||
# | # | ||
# set ( | # set (OPENTURNS_DEBUG TRUE) | ||
# find_package (OpenTURNS) | # find_package (OpenTURNS) | ||
# | # | ||
Line 39: | Line 39: | ||
# -- This module defines : | # -- 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) | # Macro add_module_extra_definitions(MODULE_NAME VERSION) | ||
# MUST be called to use the module | # MUST be called to use the module | ||
Line 79: | Line 79: | ||
# check dependencies | # check dependencies quietly | ||
if (OpenTURNS_FIND_QUIETLY) | if (OpenTURNS_FIND_QUIETLY) | ||
set (_FIND_ARG QUIET) | if (NOT OPENTURNS_DEBUG) | ||
set (_FIND_ARG QUIET) | |||
endif () | |||
endif () | endif () | ||
Line 98: | Line 100: | ||
# include dir | # include dir | ||
if (NOT | if (NOT OPENTURNS_INCLUDE_DIR) | ||
find_path ( | find_path (OPENTURNS_INCLUDE_DIR | ||
NAMES | NAMES | ||
OT.hxx | OT.hxx | ||
Line 107: | Line 109: | ||
/opt/local/include | /opt/local/include | ||
/sw/include | /sw/include | ||
C:/OpenTURNS/include | |||
PATH_SUFFIXES | PATH_SUFFIXES | ||
openturns | openturns | ||
Line 116: | Line 119: | ||
# set swig include dir | # set swig include dir | ||
if (NOT | if (NOT OPENTURNS_SWIG_INCLUDE_DIR) | ||
set( | set(OPENTURNS_SWIG_INCLUDE_DIR "${OPENTURNS_INCLUDE_DIR}/swig") | ||
endif () | endif () | ||
# dependencies includes | # dependencies includes | ||
if (NOT | if (NOT OPENTURNS_INCLUDE_DIRS) | ||
set ( | set (OPENTURNS_INCLUDE_DIRS ${OPENTURNS_INCLUDE_DIR}) | ||
list (APPEND | list (APPEND OPENTURNS_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR}) | ||
list (APPEND | list (APPEND OPENTURNS_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS}) # cmake >= 2.8.0 | ||
list (APPEND | list (APPEND OPENTURNS_INCLUDE_DIRS ${PYTHON_INCLUDE_PATH}) # cmake <= 2.6.4 | ||
endif () | endif () | ||
# version | # version | ||
if (NOT | if (NOT OPENTURNS_VERSION) | ||
if ( | if (OPENTURNS_INCLUDE_DIR) | ||
file (STRINGS "${ | file (STRINGS "${OPENTURNS_INCLUDE_DIR}/OTconfig.h" _VERSION_STRING | ||
REGEX ".*PACKAGE_VERSION.*") | REGEX ".*PACKAGE_VERSION.*") | ||
string (REGEX REPLACE ".*_VERSION[ ]+\"([0-9]+\\.[0-9]+\\.[0-9]+).*" "\\1" | string (REGEX REPLACE ".*_VERSION[ ]+\"([0-9]+\\.[0-9]+\\.[0-9]+).*" "\\1" OPENTURNS_VERSION "${_VERSION_STRING}") | ||
endif () | endif () | ||
endif () | endif () | ||
Line 141: | Line 144: | ||
# check version | # check version | ||
set ( | set (_OPENTURNS_VERSION_MATCH TRUE) | ||
set (_REQUIRED_VERSION "${OpenTURNS_FIND_VERSION_MAJOR}.${OpenTURNS_FIND_VERSION_MINOR}.${OpenTURNS_FIND_VERSION_PATCH}") | set (_REQUIRED_VERSION "${OpenTURNS_FIND_VERSION_MAJOR}.${OpenTURNS_FIND_VERSION_MINOR}.${OpenTURNS_FIND_VERSION_PATCH}") | ||
if (OpenTURNS_FIND_VERSION) | if (OpenTURNS_FIND_VERSION) | ||
if (OpenTURNS_FIND_VERSION_EXACT) | if (OpenTURNS_FIND_VERSION_EXACT) | ||
if ("${_REQUIRED_VERSION}" VERSION_EQUAL "${ | if ("${_REQUIRED_VERSION}" VERSION_EQUAL "${OPENTURNS_VERSION}") | ||
else () | else () | ||
set ( | set (_OPENTURNS_VERSION_MATCH FALSE) | ||
endif () | endif () | ||
else () | else () | ||
if ("${_REQUIRED_VERSION}" VERSION_GREATER "${ | if ("${_REQUIRED_VERSION}" VERSION_GREATER "${OPENTURNS_VERSION}") | ||
set ( | set (_OPENTURNS_VERSION_MATCH FALSE) | ||
endif () | endif () | ||
endif () | endif () | ||
Line 158: | Line 161: | ||
# check for library directory | # check for library directory | ||
if (NOT | if (NOT OPENTURNS_LIBRARY) | ||
find_library ( | find_library (OPENTURNS_LIBRARY | ||
NAMES | NAMES | ||
ot | ot | ||
Line 169: | Line 172: | ||
/opt/local/lib | /opt/local/lib | ||
/sw/lib | /sw/lib | ||
C:/OpenTURNS/lib | |||
PATH_SUFFIXES | PATH_SUFFIXES | ||
openturns | openturns | ||
Line 178: | Line 182: | ||
# find dependent libraries | # find dependent libraries | ||
if (NOT | if (NOT OPENTURNS_LIBRARIES) | ||
set ( | set (OPENTURNS_LIBRARIES ${OPENTURNS_LIBRARY}) | ||
list (APPEND | list (APPEND OPENTURNS_LIBRARIES ${LIBXML2_LIBRARIES}) | ||
list (APPEND | list (APPEND OPENTURNS_LIBRARIES ${PYTHON_LIBRARIES}) | ||
endif () | endif () | ||
# root dir | # root dir | ||
if (NOT | if (NOT OPENTURNS_ROOT_DIR) | ||
string (REGEX REPLACE "(.*)/[a-z]+/[a-z]+/?" "\\1" | string (REGEX REPLACE "(.*)/[a-z]+/[a-z]+/?" "\\1" OPENTURNS_ROOT_DIR "${OPENTURNS_INCLUDE_DIR}") | ||
endif () | endif () | ||
# examples dir | # examples dir | ||
if (NOT | if (NOT OPENTURNS_EXAMPLES_DIR) | ||
set ( | set (OPENTURNS_EXAMPLES_DIR "${OPENTURNS_ROOT_DIR}/share/openturns/examples") | ||
endif () | endif () | ||
Line 199: | Line 203: | ||
# handle REQUIRED and QUIET options | # handle REQUIRED and QUIET options | ||
include (FindPackageHandleStandardArgs) | include (FindPackageHandleStandardArgs) | ||
find_package_handle_standard_args (OpenTURNS DEFAULT_MSG | find_package_handle_standard_args (OpenTURNS DEFAULT_MSG OPENTURNS_LIBRARY | ||
OPENTURNS_LIBRARIES | |||
LIBXML2_FOUND PYTHONLIBS_FOUND | 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 ( | 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 | |||
) | ) | ||
Line 234: | Line 236: | ||
# threads | # threads | ||
if (NOT Threads_FOUND) | if (NOT Threads_FOUND) | ||
find_package (Threads | find_package (Threads ${_FIND_ARG}) | ||
endif () | endif () | ||
# wrapper definitions | # wrapper definitions | ||
if (NOT | if (NOT OPENTURNS_WRAPPER_DEFINITIONS) | ||
set( | set(OPENTURNS_WRAPPER_DEFINITIONS) | ||
if (CMAKE_USE_PTHREADS_INIT) | if (CMAKE_USE_PTHREADS_INIT) | ||
list (APPEND | list (APPEND OPENTURNS_WRAPPER_DEFINITIONS -DHAVE_PTHREAD_H) | ||
endif () | endif () | ||
endif () | endif () | ||
Line 247: | Line 249: | ||
# find wrapper dir | # find wrapper dir | ||
if (NOT | if (NOT OPENTURNS_WRAPPER_DIR) | ||
find_path ( | find_path (OPENTURNS_WRAPPER_DIR | ||
NAMES | NAMES | ||
wrapper.xml wrapper.dtd | wrapper.xml wrapper.dtd | ||
PATHS | PATHS | ||
"${ | "${OPENTURNS_ROOT_DIR}" | ||
/usr/lib | /usr/lib | ||
/usr/local/lib | /usr/local/lib | ||
Line 265: | Line 267: | ||
if (NOT | if (NOT OPENTURNS_WRAPPER_LIBRARIES) | ||
set( | set(OPENTURNS_WRAPPER_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) | ||
endif () | endif () | ||
# check if wrapper library is usable | # check if wrapper library is usable | ||
if (NOT | if (NOT OPENTURNS_WRAPPER_FOUND) | ||
if (Threads_FOUND | if (Threads_FOUND | ||
AND CMAKE_USE_PTHREADS_INIT | AND CMAKE_USE_PTHREADS_INIT | ||
AND | AND OPENTURNS_WRAPPER_DEFINITIONS | ||
AND | AND OPENTURNS_WRAPPER_DIR | ||
AND | AND OPENTURNS_WRAPPER_LIBRARIES | ||
AND | AND OPENTURNS_FOUND) | ||
set ( | set (OPENTURNS_WRAPPER_FOUND TRUE) | ||
else () | else () | ||
set ( | set (OPENTURNS_WRAPPER_FOUND FALSE) | ||
endif () | endif () | ||
endif () | endif () | ||
Line 285: | Line 287: | ||
mark_as_advanced ( | mark_as_advanced ( | ||
OPENTURNS_WRAPPER_FOUND | |||
OPENTURNS_WRAPPER_DIR | |||
OPENTURNS_WRAPPER_LIBRARIES | |||
OPENTURNS_WRAPPER_DEFINITIONS | |||
) | ) | ||
Line 301: | Line 303: | ||
# find module directory | # find module directory | ||
if (NOT | if (NOT OPENTURNS_MODULE_DIR) | ||
set ( | set (OPENTURNS_MODULE_DIR "${OPENTURNS_ROOT_DIR}/lib/openturns/module") | ||
endif () | endif () | ||
# set module definitions | # set module definitions | ||
if (NOT | if (NOT OPENTURNS_MODULE_DEFINITIONS) | ||
set ( | set (OPENTURNS_MODULE_DEFINITIONS) | ||
# check for STDC_HEADERS | # check for STDC_HEADERS | ||
Line 331: | Line 333: | ||
endif () | 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) | 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 | list (APPEND OPENTURNS_MODULE_DEFINITIONS -DSTDC_HEADERS_H=1) | ||
else () | else () | ||
list (APPEND | list (APPEND OPENTURNS_MODULE_DEFINITIONS -DSTDC_HEADERS_H=0) | ||
endif () | endif () | ||
Line 348: | Line 350: | ||
# define macro | # define macro | ||
if(${macro_name}) | if(${macro_name}) | ||
list (APPEND | list (APPEND OPENTURNS_MODULE_DEFINITIONS -D${macro_name}=1) | ||
else() | else() | ||
list (APPEND | list (APPEND OPENTURNS_MODULE_DEFINITIONS -D${macro_name}=0) | ||
endif () | endif () | ||
endmacro () | endmacro () | ||
Line 371: | Line 373: | ||
mark_as_advanced ( | mark_as_advanced ( | ||
OPENTURNS_MODULE_DIR | |||
OPENTURNS_MODULE_DEFINITIONS | |||
) | ) | ||
Line 380: | Line 382: | ||
add_definitions (-DPACKAGE_NAME="OpenTURNS module ${module_name}") | add_definitions (-DPACKAGE_NAME="OpenTURNS module ${module_name}") | ||
add_definitions (-DPACKAGE_TARNAME="${module_name}") | add_definitions (-DPACKAGE_TARNAME="${module_name}") | ||
add_definitions (-DPACKAGE_VERSION="${ | add_definitions (-DPACKAGE_VERSION="${OPENTURNS_VERSION}") | ||
add_definitions (-DPACKAGE_STRING="OpenTURNS module ${module_name} ${ | add_definitions (-DPACKAGE_STRING="OpenTURNS module ${module_name} ${OPENTURNS_VERSION}") | ||
add_definitions (-DPACKAGE_BUGREPORT="") | add_definitions (-DPACKAGE_BUGREPORT="") | ||
endmacro () | endmacro () | ||
Line 397: | Line 399: | ||
foreach (module_name ${OpenTURNS_FIND_COMPONENTS}) | foreach (module_name ${OpenTURNS_FIND_COMPONENTS}) | ||
string(TOLOWER ${module_name} module_lowercase_name) | string(TOLOWER ${module_name} module_lowercase_name) | ||
set ( | string(TOUPPER ${module_name} module_uppercase_name) | ||
set (OPENTURNS_${module_uppercase_name}_FOUND FALSE) | |||
# module library | # module library | ||
if (NOT | if (NOT OPENTURNS_${module_uppercase_name}_LIBRARY) | ||
find_library ( | find_library (OPENTURNS_${module_uppercase_name}_LIBRARY | ||
NAMES | NAMES | ||
${module_name} | ${module_name} | ||
PATHS | PATHS | ||
${ | ${OPENTURNS_MODULE_DIR}/lib | ||
PATH_SUFFIXES | PATH_SUFFIXES | ||
${module_lowercase_name} | ${module_lowercase_name} | ||
Line 412: | Line 416: | ||
# module libraries | # module libraries | ||
if (NOT | if (NOT OPENTURNS_${module_uppercase_name}_LIBRARIES) | ||
set ( | set (OPENTURNS_${module_uppercase_name}_LIBRARIES ${OPENTURNS_${module_uppercase_name}_LIBRARY}) | ||
list (APPEND | list (APPEND OPENTURNS_${module_uppercase_name}_LIBRARIES ${OPENTURNS_LIBRARIES}) | ||
endif () | endif () | ||
# module inlude | # module inlude | ||
if (NOT | if (NOT OPENTURNS_${module_uppercase_name}_INCLUDE_DIR) | ||
set ( | set (OPENTURNS_${module_uppercase_name}_INCLUDE_DIR "${OPENTURNS_MODULE_DIR}/include/${module_lowercase_name}") | ||
endif () | endif () | ||
# module include dirs | # module include dirs | ||
if (NOT | if (NOT OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS) | ||
set ( | set (OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS ${OPENTURNS_${module_uppercase_name}_INCLUDE_DIR}) | ||
list (APPEND | list (APPEND OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS ${OPENTURNS_INCLUDE_DIRS}) | ||
endif () | endif () | ||
# module swig inlude | # module swig inlude | ||
if (NOT | if (NOT OPENTURNS_${module_uppercase_name}_SWIG_INCLUDE_DIR) | ||
set ( | 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 | if (NOT OPENTURNS_${module_uppercase_name}_FOUND) | ||
if ( | if (OPENTURNS_${module_uppercase_name}_LIBRARY | ||
AND | AND OPENTURNS_${module_uppercase_name}_LIBRARIES | ||
AND | AND OPENTURNS_${module_uppercase_name}_INCLUDE_DIR | ||
AND | AND OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS | ||
AND | AND OPENTURNS_${module_uppercase_name}_SWIG_INCLUDE_DIR | ||
AND | AND OPENTURNS_FOUND) | ||
set ( | set (OPENTURNS_${module_uppercase_name}_FOUND TRUE) | ||
else () | else () | ||
set ( | set (OPENTURNS_${module_uppercase_name}_FOUND FALSE) | ||
endif () | endif () | ||
endif () | endif () | ||
# handle REQUIRED and QUIET options | # handle REQUIRED and QUIET options | ||
if ( | if (OPENTURNS_${module_uppercase_name}_FOUND) | ||
if (NOT OpenTURNS_FIND_QUIETLY) | if (NOT OpenTURNS_FIND_QUIETLY) | ||
message (STATUS "Found OpenTURNS module ${module_name}: ${ | message (STATUS "Found OpenTURNS module ${module_name}: ${OPENTURNS_${module_uppercase_name}_LIBRARY}") | ||
endif () | endif () | ||
else () | else () | ||
Line 462: | Line 466: | ||
mark_as_advanced ( | 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 | |||
) | ) | ||
Line 480: | Line 484: | ||
# debug ------------------------------------------------------------------------------------------ | # debug ------------------------------------------------------------------------------------------ | ||
if ( | if (OPENTURNS_DEBUG) | ||
message (STATUS " | message (STATUS "OPENTURNS_FOUND: ${OPENTURNS_FOUND}") | ||
message (STATUS " | message (STATUS "OPENTURNS_LIBRARY: ${OPENTURNS_LIBRARY}") | ||
message (STATUS " | message (STATUS "OPENTURNS_LIBRARIES: ${OPENTURNS_LIBRARIES}") | ||
message (STATUS " | message (STATUS "OPENTURNS_INCLUDE_DIR: ${OPENTURNS_INCLUDE_DIR}") | ||
message (STATUS " | message (STATUS "OPENTURNS_INCLUDE_DIRS: ${OPENTURNS_INCLUDE_DIRS}") | ||
message (STATUS " | message (STATUS "OPENTURNS_VERSION: ${OPENTURNS_VERSION}") | ||
message (STATUS " | message (STATUS "OPENTURNS_SWIG_INCLUDE_DIR: ${OPENTURNS_SWIG_INCLUDE_DIR}") | ||
message (STATUS " | message (STATUS "OPENTURNS_ROOT_DIR: ${OPENTURNS_ROOT_DIR}") | ||
message (STATUS " | message (STATUS "OPENTURNS_EXAMPLES_DIR: ${OPENTURNS_EXAMPLES_DIR}") | ||
message (STATUS " | message (STATUS "OPENTURNS_WRAPPER_FOUND: ${OPENTURNS_WRAPPER_FOUND}") | ||
message (STATUS " | message (STATUS "OPENTURNS_WRAPPER_DIR: ${OPENTURNS_WRAPPER_DIR}") | ||
message (STATUS " | message (STATUS "OPENTURNS_WRAPPER_DEFINITIONS: ${OPENTURNS_WRAPPER_DEFINITIONS}") | ||
message (STATUS " | message (STATUS "OPENTURNS_WRAPPER_LIBRARIES: ${OPENTURNS_WRAPPER_LIBRARIES}") | ||
message (STATUS " | message (STATUS "OPENTURNS_MODULE_DIR: ${OPENTURNS_MODULE_DIR}") | ||
message (STATUS " | message (STATUS "OPENTURNS_MODULE_DEFINITIONS: ${OPENTURNS_MODULE_DEFINITIONS}") | ||
foreach (module_name ${OpenTURNS_FIND_COMPONENTS}) | foreach (module_name ${OpenTURNS_FIND_COMPONENTS}) | ||
message (STATUS " | message (STATUS "OPENTURNS_${module_uppercase_name}_FOUND: ${OPENTURNS_${module_uppercase_name}_FOUND}") | ||
message (STATUS " | message (STATUS "OPENTURNS_${module_uppercase_name}_LIBRARY: ${OPENTURNS_${module_uppercase_name}_LIBRARY}") | ||
message (STATUS " | message (STATUS "OPENTURNS_${module_uppercase_name}_LIBRARIES: ${OPENTURNS_${module_uppercase_name}_LIBRARIES}") | ||
message (STATUS " | message (STATUS "OPENTURNS_${module_uppercase_name}_INCLUDE_DIR: ${OPENTURNS_${module_uppercase_name}_INCLUDE_DIR}") | ||
message (STATUS " | message (STATUS "OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS: ${OPENTURNS_${module_uppercase_name}_INCLUDE_DIRS}") | ||
message (STATUS " | message (STATUS "OPENTURNS_${module_uppercase_name}_SWIG_INCLUDE_DIR: ${OPENTURNS_${module_uppercase_name}_SWIG_INCLUDE_DIR}") | ||
endforeach () | endforeach () | ||
endif () | endif () | ||
----- | ----- |
Revision as of 15:49, 15 March 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_module_extra_definitions (Trapezoidal) # 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 to use the 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) 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 /usr/include /usr/local/include /opt/local/include /sw/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) set (OPENTURNS_INCLUDE_DIRS ${OPENTURNS_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_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 /usr/lib /usr/local/lib /opt /opt/lib /opt/local/lib /sw/lib C:/OpenTURNS/lib PATH_SUFFIXES openturns DOC "OpenTURNS library location" ) endif () # find dependent libraries if (NOT OPENTURNS_LIBRARIES) set (OPENTURNS_LIBRARIES ${OPENTURNS_LIBRARY}) list (APPEND OPENTURNS_LIBRARIES ${LIBXML2_LIBRARIES}) list (APPEND OPENTURNS_LIBRARIES ${PYTHON_LIBRARIES}) endif () # root dir if (NOT OPENTURNS_ROOT_DIR) string (REGEX REPLACE "(.*)/[a-z]+/[a-z]+/?" "\\1" OPENTURNS_ROOT_DIR "${OPENTURNS_INCLUDE_DIR}") 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 wrapper.dtd PATHS "${OPENTURNS_ROOT_DIR}" /usr/lib /usr/local/lib /opt/lib /opt 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 inlude 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 inlude 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 ()