CMake: Begin implementing library detection and configuration.
This commit is contained in:
parent
111b1f0548
commit
71889acb88
|
|
@ -0,0 +1,80 @@
|
|||
# Filename: FindEigen2.cmake
|
||||
# Authors: montel@kde.org, g.gael@free.fr
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
#
|
||||
# Module modified to mangle the names for Panda3D.
|
||||
#
|
||||
# This module supports requiring a minimum version, e.g. you can do
|
||||
# find_package(Eigen2 2.0.3)
|
||||
# to require version 2.0.3 to newer of Eigen2.
|
||||
#
|
||||
# Once done this will define
|
||||
#
|
||||
# HAVE_EIGEN - system has eigen lib with correct version
|
||||
# EIGEN_IPATH - the eigen include directory
|
||||
# EIGEN_VERSION - eigen version
|
||||
#
|
||||
|
||||
if(NOT Eigen2_FIND_VERSION)
|
||||
if(NOT Eigen2_FIND_VERSION_MAJOR)
|
||||
set(Eigen2_FIND_VERSION_MAJOR 2)
|
||||
endif(NOT Eigen2_FIND_VERSION_MAJOR)
|
||||
if(NOT Eigen2_FIND_VERSION_MINOR)
|
||||
set(Eigen2_FIND_VERSION_MINOR 0)
|
||||
endif(NOT Eigen2_FIND_VERSION_MINOR)
|
||||
if(NOT Eigen2_FIND_VERSION_PATCH)
|
||||
set(Eigen2_FIND_VERSION_PATCH 0)
|
||||
endif(NOT Eigen2_FIND_VERSION_PATCH)
|
||||
|
||||
set(Eigen2_FIND_VERSION "${Eigen2_FIND_VERSION_MAJOR}.${Eigen2_FIND_VERSION_MINOR}.${Eigen2_FIND_VERSION_PATCH}")
|
||||
endif(NOT Eigen2_FIND_VERSION)
|
||||
|
||||
macro(_eigen2_check_version)
|
||||
file(READ "${EIGEN_IPATH}/Eigen/src/Core/util/Macros.h" _eigen2_version_header)
|
||||
|
||||
string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen2_world_version_match "${_eigen2_version_header}")
|
||||
set(EIGEN2_WORLD_VERSION "${CMAKE_MATCH_1}")
|
||||
string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen2_major_version_match "${_eigen2_version_header}")
|
||||
set(EIGEN2_MAJOR_VERSION "${CMAKE_MATCH_1}")
|
||||
string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen2_minor_version_match "${_eigen2_version_header}")
|
||||
set(EIGEN2_MINOR_VERSION "${CMAKE_MATCH_1}")
|
||||
|
||||
set(EIGEN_VERSION ${EIGEN2_WORLD_VERSION}.${EIGEN2_MAJOR_VERSION}.${EIGEN2_MINOR_VERSION})
|
||||
if((${EIGEN2_WORLD_VERSION} NOTEQUAL 2) OR (${EIGEN2_MAJOR_VERSION} GREATER 10) OR (${EIGEN_VERSION} VERSION_LESS ${Eigen2_FIND_VERSION}))
|
||||
set(EIGEN_VERSION_OK FALSE)
|
||||
else()
|
||||
set(EIGEN_VERSION_OK TRUE)
|
||||
endif()
|
||||
|
||||
if(NOT EIGEN_VERSION_OK)
|
||||
|
||||
message(STATUS "Eigen2 version ${EIGEN_VERSION} found in ${EIGEN_IPATH}, "
|
||||
"but at least version ${Eigen2_FIND_VERSION} is required")
|
||||
endif(NOT EIGEN_VERSION_OK)
|
||||
endmacro(_eigen2_check_version)
|
||||
|
||||
if (EIGEN_IPATH)
|
||||
|
||||
# in cache already
|
||||
_eigen2_check_version()
|
||||
set(EIGEN2_FOUND ${EIGEN_VERSION_OK})
|
||||
|
||||
else (EIGEN_IPATH)
|
||||
|
||||
find_path(EIGEN_IPATH NAMES Eigen/Core
|
||||
PATHS
|
||||
${INCLUDE_INSTALL_DIR}
|
||||
${KDE4_INCLUDE_DIR}
|
||||
PATH_SUFFIXES eigen2
|
||||
)
|
||||
|
||||
if(EIGEN_IPATH)
|
||||
_eigen2_check_version()
|
||||
endif(EIGEN_IPATH)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Eigen2 DEFAULT_MSG EIGEN_IPATH EIGEN_VERSION_OK)
|
||||
|
||||
mark_as_advanced(EIGEN_IPATH)
|
||||
|
||||
endif(EIGEN_IPATH)
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
# Filename: FindEigen3.cmake
|
||||
# Authors: montel@kde.org, g.gael@free.fr, jacob.benoit.1@gmail.com
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
#
|
||||
# Module modified to mangle the names for Panda3D.
|
||||
#
|
||||
# This module supports requiring a minimum version, e.g. you can do
|
||||
# find_package(Eigen3 3.1.2)
|
||||
# to require version 3.1.2 or newer of Eigen3.
|
||||
#
|
||||
# Once done this will define
|
||||
#
|
||||
# HAVE_EIGEN - system has eigen lib with correct version
|
||||
# EIGEN_IPATH - the eigen include directory
|
||||
# EIGEN_VERSION - eigen version
|
||||
#
|
||||
|
||||
if(NOT Eigen3_FIND_VERSION)
|
||||
if(NOT Eigen3_FIND_VERSION_MAJOR)
|
||||
set(Eigen3_FIND_VERSION_MAJOR 2)
|
||||
endif(NOT Eigen3_FIND_VERSION_MAJOR)
|
||||
if(NOT Eigen3_FIND_VERSION_MINOR)
|
||||
set(Eigen3_FIND_VERSION_MINOR 91)
|
||||
endif(NOT Eigen3_FIND_VERSION_MINOR)
|
||||
if(NOT Eigen3_FIND_VERSION_PATCH)
|
||||
set(Eigen3_FIND_VERSION_PATCH 0)
|
||||
endif(NOT Eigen3_FIND_VERSION_PATCH)
|
||||
|
||||
set(Eigen3_FIND_VERSION "${Eigen3_FIND_VERSION_MAJOR}.${Eigen3_FIND_VERSION_MINOR}.${Eigen3_FIND_VERSION_PATCH}")
|
||||
endif(NOT Eigen3_FIND_VERSION)
|
||||
|
||||
macro(_eigen3_check_version)
|
||||
file(READ "${EIGEN_IPATH}/Eigen/src/Core/util/Macros.h" _eigen3_version_header)
|
||||
|
||||
string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}")
|
||||
set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}")
|
||||
string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match "${_eigen3_version_header}")
|
||||
set(EIGEN3_MAJOR_VERSION "${CMAKE_MATCH_1}")
|
||||
string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match "${_eigen3_version_header}")
|
||||
set(EIGEN3_MINOR_VERSION "${CMAKE_MATCH_1}")
|
||||
|
||||
set(EIGEN_VERSION ${EIGEN3_WORLD_VERSION}.${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION})
|
||||
if(${EIGEN_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
|
||||
set(EIGEN_VERSION_OK FALSE)
|
||||
else(${EIGEN_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
|
||||
set(EIGEN_VERSION_OK TRUE)
|
||||
endif(${EIGEN_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
|
||||
|
||||
if(NOT EIGEN_VERSION_OK)
|
||||
|
||||
message(STATUS "Eigen3 version ${EIGEN_VERSION} found in ${EIGEN_IPATH}, "
|
||||
"but at least version ${Eigen3_FIND_VERSION} is required")
|
||||
endif(NOT EIGEN_VERSION_OK)
|
||||
endmacro(_eigen3_check_version)
|
||||
|
||||
if (EIGEN_IPATH)
|
||||
|
||||
# in cache already
|
||||
_eigen3_check_version()
|
||||
set(HAVE_EIGEN ${EIGEN_VERSION_OK})
|
||||
|
||||
else (EIGEN_IPATH)
|
||||
|
||||
find_path(EIGEN_IPATH NAMES signature_of_eigen3_matrix_library
|
||||
PATHS
|
||||
${CMAKE_INSTALL_PREFIX}/include
|
||||
${KDE4_INCLUDE_DIR}
|
||||
PATH_SUFFIXES eigen3 eigen
|
||||
)
|
||||
|
||||
if(EIGEN_IPATH)
|
||||
_eigen3_check_version()
|
||||
endif(EIGEN_IPATH)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Eigen3 DEFAULT_MSG EIGEN_IPATH EIGEN_VERSION_OK)
|
||||
|
||||
mark_as_advanced(EIGEN_IPATH)
|
||||
|
||||
endif(EIGEN_IPATH)
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Filename: MangleJPEG.cmake
|
||||
# Author: kestred (28 Nov, 2013)
|
||||
#
|
||||
# MangleJPEG replaces the output variables of the builtin FindJPEG
|
||||
# with vars matching Panda3D's existing config-var names.
|
||||
#
|
||||
|
||||
if(JPEG_FOUND)
|
||||
set(HAVE_JPEG TRUE)
|
||||
set(JPEG_LIBS jpeg)
|
||||
|
||||
get_filename_component(JPEG_LIBRARY_DIR "${JPEG_LIBRARY}" PATH)
|
||||
|
||||
set(JPEG_IPATH "${JPEG_INCLUDE_DIR}" CACHE PATH "The path to libJPEG's include directory.") # Include path
|
||||
set(JPEG_LPATH "${JPEG_LIBRARY_DIR}" CACHE PATH "The path to libJPEG's library directory.") # Library path
|
||||
mark_as_advanced(JPEG_IPATH)
|
||||
mark_as_advanced(JPEG_LPATH)
|
||||
|
||||
unset(JPEG_FOUND)
|
||||
unset(JPEG_LIBRARY CACHE)
|
||||
unset(JPEG_LIBRARIES)
|
||||
unset(JPEG_INCLUDE_DIR CACHE)
|
||||
unset(JPEG_LIBRARY_DIR)
|
||||
endif()
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
# Filename: MangleOpenSSL.cmake
|
||||
# Author: kestred (28 Nov, 2013)
|
||||
#
|
||||
# MangleOpenSSL replaces the output variables of the builtin FindOpenSSL
|
||||
# with vars matching Panda3D's existing config-var names.
|
||||
#
|
||||
|
||||
if(OPENSSL_FOUND)
|
||||
set(HAVE_OPENSSL TRUE)
|
||||
set(OPENSSL_LIBS ssl crypto)
|
||||
|
||||
list(GET OPENSSL_LIBRARIES 0 OPENSSL_LIBRARY)
|
||||
|
||||
get_filename_component(OPENSSL_LIBRARY_DIR "${OPENSSL_LIBRARY}" PATH)
|
||||
|
||||
set(OPENSSL_IPATH "${OPENSSL_INCLUDE_DIR}" CACHE PATH "The path to OpenSSL's include directory.") # Include path
|
||||
set(OPENSSL_LPATH "${OPENSSL_LIBRARY_DIR}" CACHE PATH "The path to OpenSSL's library directory.") # Library path
|
||||
mark_as_advanced(OPENSSL_IPATH)
|
||||
mark_as_advanced(OPENSSL_LPATH)
|
||||
|
||||
unset(OPENSSL_FOUND)
|
||||
unset(OPENSSL_LIBRARY)
|
||||
unset(OPENSSL_LIBRARIES)
|
||||
unset(OPENSSL_INCLUDE_DIR CACHE)
|
||||
unset(OPENSSL_LIBRARY_DIR)
|
||||
endif()
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Filename: ManglePNG.cmake
|
||||
# Author: kestred (28 Nov, 2013)
|
||||
#
|
||||
# ManglePNG replaces the output variables of the builtin FindPNG
|
||||
# with vars matching Panda3D's existing config-var names.
|
||||
#
|
||||
|
||||
if(PNG_FOUND)
|
||||
set(HAVE_PNG TRUE)
|
||||
set(PNG_LIBS png)
|
||||
|
||||
get_filename_component(PNG_LIBRARY_DIR "${PNG_LIBRARY}" PATH)
|
||||
|
||||
set(PNG_IPATH "${PNG_INCLUDE_DIR}" CACHE PATH "The path to libPNG's include directory.") # Include path
|
||||
set(PNG_LPATH "${PNG_LIBRARY_DIR}" CACHE PATH "The path to libPNG's library directory.") # Library path
|
||||
mark_as_advanced(PNG_IPATH)
|
||||
mark_as_advanced(PNG_LPATH)
|
||||
|
||||
set(PNG_VERSION ${PNG_VERSION_STRING})
|
||||
|
||||
unset(PNG_FOUND)
|
||||
unset(PNG_LIBRARY CACHE)
|
||||
unset(PNG_LIBRARIES)
|
||||
unset(PNG_DEFINITIONS)
|
||||
unset(PNG_INCLUDE_DIR CACHE)
|
||||
unset(PNG_PNG_INCLUDE_DIR CACHE)
|
||||
unset(PNG_LIBRARY_DIR)
|
||||
unset(PNG_VERSION_STRING)
|
||||
endif()
|
||||
|
|
@ -1,8 +1,18 @@
|
|||
message(STATUS "")
|
||||
message("Configuring support for the following optional third-party packages:")
|
||||
|
||||
|
||||
# Check for and configure Eigen library
|
||||
find_package(Eigen3 QUIET)
|
||||
if(HAVE_EIGEN)
|
||||
message(STATUS "+ Eigen linear algebra library")
|
||||
if(WIN32)
|
||||
set(EIGEN_CFLAGS "/arch:SSE2")
|
||||
else()
|
||||
set(EIGEN_CFLAGS "-msse2")
|
||||
endif()
|
||||
|
||||
set(LINMATH_ALIGN ON CACHE BOOL "If on, vectorization is enabled in build.")
|
||||
if(LINMATH_ALIGN)
|
||||
message(STATUS "+ (vectorization enabled in build)")
|
||||
else()
|
||||
|
|
@ -12,25 +22,50 @@ else()
|
|||
message(STATUS "- Did not find Eigen linear algebra library")
|
||||
endif()
|
||||
|
||||
#find_package(OpenSSL ssl crypto)
|
||||
|
||||
# Check for and configure OpenSSL library
|
||||
# Mangle the builtin FindOpenSSL output to match Panda3D's config-style
|
||||
find_package(OpenSSL QUIET COMPONENTS ssl crypto)
|
||||
include(MangleOpenSSL)
|
||||
if(HAVE_OPENSSL)
|
||||
message(STATUS "+ OpenSSL")
|
||||
|
||||
if(NOT DEFINED OPTIMIZE OR OPTIMIZE LESS 4)
|
||||
set(REPORT_OPENSSL_ERRORS ON CACHE BOOL "If on, OpenSSL reports verbose error messages when they occur.")
|
||||
else()
|
||||
set(REPORT_OPENSSL_ERRORS OFF CACHE BOOL "If on, OpenSSL reports verbose error messages when they occur.")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "- Did not find OpenSSL")
|
||||
endif()
|
||||
|
||||
|
||||
# Check for and configure JPEG library
|
||||
# Mangle the builtin FindJPEG output to match Panda3D's config-style
|
||||
find_package(JPEG QUIET COMPONENTS jpeg)
|
||||
include(MangleJPEG)
|
||||
if(HAVE_JPEG)
|
||||
message(STATUS "+ libjpeg")
|
||||
set(PHAVE_JPEGINT_H TRUE CACHE BOOL "Set to False if missing jpegint.h.")
|
||||
else()
|
||||
message(STATUS "- Did not find libjpeg")
|
||||
unset(PHAVE_JPEGINT_H CACHE)
|
||||
endif()
|
||||
|
||||
|
||||
# Check for and configure PNG library
|
||||
find_package(PNG QUIET COMPONENTS png)
|
||||
# Mangle the builtin FindPNG output to match Panda3D's config-style
|
||||
include(ManglePNG)
|
||||
if(HAVE_PNG)
|
||||
message(STATUS "+ libpng")
|
||||
else()
|
||||
message(STATUS "- Did not find libpng")
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
|
||||
if(HAVE_TIFF)
|
||||
message(STATUS "+ libtiff")
|
||||
else()
|
||||
|
|
|
|||
Loading…
Reference in New Issue