96 lines
3.4 KiB
CMake
96 lines
3.4 KiB
CMake
# Build the test programs...
|
|
|
|
# Use fftw for AreaEst? Because CMake support for installed fftw
|
|
# package is broken, using FFTW required building local copies of the
|
|
# library (a separate cmake configure and build for each precision). So
|
|
# default to not using fftw and fall back on kissfftw. For these
|
|
# reasons + the overall complexity of adding a dependency to
|
|
# GeographicLib, the DST class uses kissfft (despite it being somewhat
|
|
# slower that fftw).
|
|
set (USE_FFTW OFF)
|
|
if (USE_FFTW)
|
|
if (GEOGRAPHICLIB_PRECISION EQUAL 1)
|
|
set (FFTW_PACKAGE FFTW3f)
|
|
elseif (GEOGRAPHICLIB_PRECISION EQUAL 2)
|
|
set (FFTW_PACKAGE FFTW3)
|
|
elseif (GEOGRAPHICLIB_PRECISION EQUAL 3)
|
|
set (FFTW_PACKAGE FFTW3l)
|
|
elseif (GEOGRAPHICLIB_PRECISION EQUAL 4)
|
|
set (FFTW_PACKAGE FFTW3q)
|
|
else () # GEOGRAPHICLIB_PRECISION EQUAL 5
|
|
set (FFTW_PACKAGE OFF)
|
|
endif ()
|
|
if (FFTW_PACKAGE)
|
|
find_package (${FFTW_PACKAGE})
|
|
if (${FFTW_PACKAGE}_FOUND)
|
|
set (FFTW_FOUND ON)
|
|
set (FFTW_LIBRARIES ${${FFTW_PACKAGE}_LIBRARIES})
|
|
set (FFTW_LIBRARY_DIRS ${${FFTW_PACKAGE}_LIBRARY_DIRS})
|
|
set (FFTW_INCLUDE_DIRS ${${FFTW_PACKAGE}_INCLUDE_DIRS})
|
|
endif ()
|
|
endif ()
|
|
endif ()
|
|
|
|
set (DEVELPROGRAMS
|
|
ProjTest TMTest GeodTest ConicTest NaNTester HarmTest EllipticTest intersect
|
|
ClosestApproach M12zero GeodShort NormalTest)
|
|
|
|
if (Boost_FOUND AND NOT GEOGRAPHICLIB_PRECISION EQUAL 4)
|
|
# Skip LevelEllipsoid for quad precision because of compiler errors
|
|
# with boost 1.69 and g++ 9.2.1 (Fedora 30). Problem reported as
|
|
# https://github.com/boostorg/odeint/issues/40
|
|
set (DEVELPROGRAMS ${DEVELPROGRAMS} LevelEllipsoid)
|
|
include_directories ("${Boost_INCLUDE_DIRS}")
|
|
if (APPLE)
|
|
# Suppress warnings from Boost library
|
|
# warnings with Mac OS X and boost 1.63
|
|
# no warnings with Linux and boost 1.60
|
|
set (CMAKE_CXX_FLAGS
|
|
"${CMAKE_CXX_FLAGS} -Wno-unused-parameter -Wno-unused-variable -Wno-unused-local-typedef")
|
|
endif ()
|
|
endif ()
|
|
|
|
# Loop over all the tools, specifying the source and library.
|
|
add_custom_target (develprograms)
|
|
foreach (DEVELPROGRAM ${DEVELPROGRAMS})
|
|
|
|
add_executable (${DEVELPROGRAM} EXCLUDE_FROM_ALL ${DEVELPROGRAM}.cpp)
|
|
add_dependencies (develprograms ${DEVELPROGRAM})
|
|
target_link_libraries (${DEVELPROGRAM} ${PROJECT_LIBRARIES}
|
|
${HIGHPREC_LIBRARIES})
|
|
|
|
endforeach ()
|
|
|
|
add_executable (GeodExact EXCLUDE_FROM_ALL GeodExact.cpp
|
|
Geodesic30.cpp GeodesicLine30.cpp
|
|
Geodesic30.hpp GeodesicLine30.hpp)
|
|
add_dependencies (develprograms GeodExact)
|
|
target_link_libraries (GeodExact ${PROJECT_LIBRARIES} ${HIGHPREC_LIBRARIES})
|
|
set (DEVELPROGRAMS ${DEVELPROGRAMS} GeodExact)
|
|
|
|
add_executable (AreaEst EXCLUDE_FROM_ALL AreaEst.cpp)
|
|
add_dependencies (develprograms AreaEst)
|
|
target_link_libraries (AreaEst ${PROJECT_LIBRARIES} ${FFTW_LIBRARIES}
|
|
${HIGHPREC_LIBRARIES})
|
|
if (FFTW_FOUND)
|
|
target_compile_definitions (AreaEst PUBLIC HAVE_FFTW=1)
|
|
target_include_directories (AreaEst PUBLIC ${FFTW_INCLUDE_DIRS})
|
|
endif ()
|
|
|
|
set (DEVELPROGRAMS ${DEVELPROGRAMS} AreaEst)
|
|
|
|
add_executable (reformat EXCLUDE_FROM_ALL reformat.cpp)
|
|
add_dependencies (develprograms reformat)
|
|
set (DEVELPROGRAMS ${DEVELPROGRAMS} reformat)
|
|
|
|
if (MSVC OR CMAKE_CONFIGURATION_TYPES)
|
|
# Add _d suffix for your debug versions of the tools
|
|
set_target_properties (${DEVELPROGRAMS} PROPERTIES
|
|
DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX})
|
|
endif ()
|
|
|
|
# Put all the programs into a folder in the IDE
|
|
set_property (TARGET develprograms ${DEVELPROGRAMS} PROPERTY FOLDER develop)
|
|
|
|
# Don't install develop programs
|