some more work towards modern cmake

This commit is contained in:
2018-05-03 15:29:13 +02:00
parent b840bd022b
commit f7ccf79fa8
4 changed files with 182 additions and 24 deletions

89
cmake/FindFFTW3.cmake Normal file
View File

@ -0,0 +1,89 @@
# - Find fftw3 library
# Find the native FFTW3 includes and library
# This module defines
# FFTW3_INCLUDE_DIR, where to find fftw3.h, etc.
# ---
# FFTW3_LIBRARY, library to link against to use FFTW3
# FFTW3_OMP_LIBRARY, library to link against to use FFTW3_omp
# FFTW3_THREADS_LIBRARY, library to link against to use FFTW3_threads
# FFTW3_FOUND, if false, do not try to use FFTW3.
# ---
# FFTW3L_LIBRARY, library to link against to use FFTW3l
# FFTW3L_OMP_LIBRARY, library to link against to use FFTW3l_omp
# FFTW3L_THREADS_LIBRARY, library to link against to use FFTW3l_threads
# FFTW3L_FOUND, if false, do not try to use FFTW3l.
# ---
# FFTW3F_LIBRARY, library to link against to use FFTW3f
# FFTW3F_OMP_LIBRARY, library to link against to use FFTW3f_omp
# FFTW3F_THREADS_LIBRARY, library to link against to use FFTW3f_threads
# FFTW3F_FOUND, if false, do not try to use FFTW3f.
# ---
# FFTW3Q_LIBRARY, library to link against to use FFTW3q
# FFTW3Q_OMP_LIBRARY, library to link against to use FFTW3q_omp
# FFTW3Q_THREADS_LIBRARY, library to link against to use FFTW3q_threads
# FFTW3Q_FOUND, if false, do not try to use FFTW3q.
find_path(FFTW3_INCLUDE_DIR fftw3.h
HINTS "/usr/include" "/opt/local/include"
)
# find position of fftw3.h from the end
string(FIND "${FFTW3_INCLUDE_DIR}" "/fftw3.h" pos REVERSE)
# truncate the string
string(SUBSTRING "${FFTW3_INCLUDE_DIR}" 0 ${pos} substr)
set(FFTW3_INCLUDE_DIR ${substr})
unset(substr)
find_library(FFTW3_LIBRARY fftw3)
find_library(FFTW3_OMP_LIBRARY fftw3_omp)
find_library(FFTW3_THREAD_LIBRARY fftw3_threads)
find_library(FFTW3L_LIBRARY fftw3l)
find_library(FFTW3L_OMP_LIBRARY fftw3l_omp)
find_library(FFTW3L_THREAD_LIBRARY fftw3l_threads)
find_library(FFTW3F_LIBRARY fftw3f)
find_library(FFTW3F_OMP_LIBRARY fftw3f_omp)
find_library(FFTW3F_THREAD_LIBRARY fftw3f_threads)
find_library(FFTW3Q_LIBRARY fftw3q)
find_library(FFTW3Q_OMP_LIBRARY fftw3q_omp)
find_library(FFTW3Q_THREAD_LIBRARY fftw3q_threads)
# handle the QUIETLY and REQUIRED arguments and set FFTW3_FOUND to TRUE if
# all listed variables are TRUE
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
find_package_handle_standard_args(FFTW3
REQUIRED_VARS FFTW3_LIBRARY FFTW3_INCLUDE_DIR
VERSION_VAR "3")
find_package_handle_standard_args(FFTW3L
REQUIRED_VARS FFTW3L_LIBRARY FFTW3_INCLUDE_DIR
VERSION_VAR "3")
find_package_handle_standard_args(FFTW3F
REQUIRED_VARS FFTW3F_LIBRARY FFTW3_INCLUDE_DIR
VERSION_VAR "3")
find_package_handle_standard_args(FFTW3Q
REQUIRED_VARS FFTW3Q_LIBRARY FFTW3_INCLUDE_DIR
VERSION_VAR "3")
if (NOT FFTW3_FOUND)
unset(FFTW3_LIBRARY)
endif()
if (NOT FFTW3L_FOUND)
unset(FFTW3L_LIBRARY)
endif()
if (NOT FFTW3F_FOUND)
unset(FFTW3F_LIBRARY)
endif()
if (NOT FFTW3Q_FOUND)
unset(FFTW3Q_LIBRARY)
endif()
mark_as_advanced(
FFTW3_INCLUDE_DIR
FFTW3_LIBRARY FFTW3_OMP_LIBRARY FFTW3_THREAD_LIBRARY
FFTW3L_LIBRARY FFTW3L_OMP_LIBRARY FFTW3L_THREAD_LIBRARY
FFTW3F_LIBRARY FFTW3F_OMP_LIBRARY FFTW3F_THREAD_LIBRARY
FFTW3Q_LIBRARY FFTW3Q_OMP_LIBRARY FFTW3Q_THREAD_LIBRARY
)
if (FFTW3_FOUND)
message("-- Found FFTW3: ${FFTW3_INCLUDE_DIR}")
endif (FFTW3_FOUND)

34
cmake/FindMXML.cmake Normal file
View File

@ -0,0 +1,34 @@
# - find MXML
# find the MXML lib and includes
# This module defines
# LIBMXML_INCLUDE_DIR, where to find mxml.h
# LIBMXML_LIBRARY, library to link against
# LIBMXML_FOUND, if false, do not try to use the MXML lib
find_path(LIBMXML_INCLUDE_DIR mxml.h
HINT "/usr/include"
)
# find position of mxml.h from the end
string(FIND "${LIBMXML_INCLUDE_DIR}" "/mxml.h" pos REVERSE)
# truncate the string
string(SUBSTRING "${LIBMXML_INCLUDE_DIR}" 0 ${pos} substr)
set(LIBMXML_INCLUDE_DIR ${substr})
unset(substr)
find_library(LIBMXML_LIBRARY mxml)
# get version string
# currently do not know from where to get it automatically
# handle the QUIETLY and REQUIRED arguments and set LIBMXML_FOUND to TRUE if
# all listed variables are TRUE
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(MXML
REQUIRED_VARS LIBMXML_LIBRARY LIBMXML_INCLUDE_DIR)
if (NOT LIBMXML_FOUND)
unset(LIBMXML_LIBRARY)
endif()
mark_as_advanced(LIBMXML_INCLUDE_DIR LIBMXML_LIBRARY)

45
cmake/FindNeXus.cmake Normal file
View File

@ -0,0 +1,45 @@
# - Find NeXus library
# Find the native NEXUS includes and library
# This module defines
# NEXUS_INCLUDE_DIR, where to find NeXus.h, etc.
# NEXUS_LIBRARY, library to link against to use NEXUS
# NEXUS_FOUND, if false, do not try to use NEXUS.
find_path(NEXUS_INCLUDE_DIR napi.h
HINTS "/usr/local/include" "/opt/nexus/include" "/usr/local/include/nexus"
)
# find position of napi.h from the end
string(FIND "${NEXUS_INCLUDE_DIR}" "/napi.h" pos REVERSE)
# truncate the string
string(SUBSTRING "${NEXUS_INCLUDE_DIR}" 0 ${pos} substr)
set(NEXUS_INCLUDE_DIR ${substr})
unset(substr)
find_library(NEXUS_LIBRARY NeXus
HINTS "/usr/lib" "/usr/lib64" "/usr/local/lib" "/usr/local/lib64" "/opt/nexus/lib")
# get version string
if (NEXUS_INCLUDE_DIR AND EXISTS ${NEXUS_INCLUDE_DIR}/napi.h)
file(STRINGS "${NEXUS_INCLUDE_DIR}/napi.h" NEXUS_version_str
REGEX "^#define[\t ]+NEXUS_VERSION[\t ].*")
string(REGEX REPLACE "^#define[\t ]+NEXUS_VERSION[\t ]+\"([^\"]*).*"
"\\1" NEXUS_VERSION_STRING "${NEXUS_version_str}")
unset(NEXUS_version_str)
endif()
# handle the QUIETLY and REQUIRED arguments and set NEXUS_FOUND to TRUE if
# all listed variables are TRUE
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(NEXUS
REQUIRED_VARS NEXUS_LIBRARY NEXUS_INCLUDE_DIR
VERSION_VAR NEXUS_VERSION_STRING)
if (NOT NEXUS_FOUND)
unset(NEXUS_LIBRARY)
endif()
mark_as_advanced(NEXUS_INCLUDE_DIR NEXUS_LIBRARY)