# lib/qsastime/CMakeLists.txt for PLplot # Copyright (C) 2009-2019 Alan W. Irwin # # This file is part of PLplot. # # PLplot is free software; you can redistribute it and/or modify # it under the terms of the GNU Library General Public License as published # by the Free Software Foundation; version 2 of the License. # # PLplot is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General Public License # along with PLplot; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # Required to configure qsastimeP.h here and also for deciding whether # to build test applications later. option( TEST_QSASTIME "Build any of the provided libqsastime test applications." OFF ) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/qsastimeP.h.in ${CMAKE_CURRENT_BINARY_DIR}/qsastimeP.h ) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/qsastimedll.h.in ${CMAKE_CURRENT_BINARY_DIR}/qsastimedll.h ) include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ) # Routine for generating a header containing data to be used by the # TAI-UTC transformation code. if(NOT CMAKE_CROSSCOMPILING) add_executable(tai-utc-gen ${CMAKE_CURRENT_SOURCE_DIR}/tai-utc-gen.c) if(MATH_LIB) target_link_libraries(tai-utc-gen ${MATH_LIB}) endif(MATH_LIB) add_executable(deltaT-gen ${CMAKE_CURRENT_SOURCE_DIR}/deltaT-gen.c ${CMAKE_CURRENT_SOURCE_DIR}/dspline.c) export(TARGETS tai-utc-gen FILE ${CMAKE_CURRENT_BINARY_DIR}/tai-utc-gen.cmake ) export(TARGETS deltaT-gen FILE ${CMAKE_CURRENT_BINARY_DIR}/deltaT-gen.cmake ) else(NOT CMAKE_CROSSCOMPILING) # Generated by initial non-cross build above. include(${CMAKE_NATIVE_BINARY_DIR}/lib/qsastime/tai-utc-gen.cmake) include(${CMAKE_NATIVE_BINARY_DIR}/lib/qsastime/deltaT-gen.cmake) endif(NOT CMAKE_CROSSCOMPILING) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/tai-utc.h COMMAND tai-utc-gen ${CMAKE_CURRENT_SOURCE_DIR}/tai-utc.dat ${CMAKE_CURRENT_BINARY_DIR}/tai-utc.h DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tai-utc.dat tai-utc-gen ) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/deltaT.h COMMAND deltaT-gen ${CMAKE_CURRENT_SOURCE_DIR}/deltaT.dat ${CMAKE_CURRENT_BINARY_DIR}/deltaT.h DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/deltaT.dat deltaT-gen ) # These target-level dependencies needed below. add_custom_target( tai-utc.h_built DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tai-utc.h ) add_custom_target( deltaT.h_built DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/deltaT.h ) set(qsastime_LIB_SRCS qsastime.c dsplint.c ) configure_library_build(qsastime "" "${qsastime_LIB_SRCS}" "${MATH_LIB}" "") add_dependencies(${WRITEABLE_TARGET}qsastime tai-utc.h_built deltaT.h_built) set(qsastime_LIB_HDRS ${CMAKE_CURRENT_SOURCE_DIR}/qsastime.h ${CMAKE_CURRENT_BINARY_DIR}/qsastimedll.h ) install(FILES ${qsastime_LIB_HDRS} DESTINATION ${INCLUDE_DIR}) # Build test routines if so desired. if(TEST_QSASTIME) option( BUILD_QSASTIME_TESTLIB "Build qsastime_testlib application which is used to test the qsastime library against the C library time routines" OFF ) # Don't bother with building qsastime_testlib on Windows because its # C library is incapable of providing useful time routines to act # as comparisons with qsastime library results. if(WIN32_OR_CYGWIN) set(BUILD_QSASTIME_TESTLIB OFF CACHE BOOL "Build qsastime_testlib application which is used to test the qsastime library against the C library time routines" FORCE) endif(WIN32_OR_CYGWIN) # qsastime_extra.[ch] provides helper functions for qsastime_test that should # not be part of the library. # Add in qsastime.c rather than use the library because don't want # to make the private library API visible. add_executable(qsastime_test qsastime_test.c qsastime_extra.c qsastime.c) add_dependencies(qsastime_test tai-utc.h_built) if(MATH_LIB) target_link_libraries(qsastime_test ${MATH_LIB}) endif(MATH_LIB) # Routine for testing bhunt_search function in qsastime.c. add_executable(bhunt_search_test bhunt_search_test.c qsastime.c) add_dependencies(bhunt_search_test tai-utc.h_built) if(MATH_LIB) target_link_libraries(bhunt_search_test ${MATH_LIB}) endif(MATH_LIB) # Routine for generating interpolated values for delta T (difference between # ephemeris time and GMT) on standard grid. # Add in dsplint.c rather than use the library because don't want # to make the private library API visible. add_executable(deltaT_test deltaT_test.c dsplint.c) add_dependencies(deltaT_test deltaT.h_built) # Routine for testing just the library functions against their library # inverses (to test self-consistency when such inverses exist) and also # equivalent C library routines. # N.B. the routine immediately errors out at run time if sizeof(time_t) < 8 or # sizeof(int) !=4. The time_t constraint is because we want access to a large # C library date range to do the tests. The int constraint is so we # emulate library results on 32-bit systems. # The test executable normally only passes these two criteria for # 64-bit platforms. # Add in qsastime.c rather than use the library because don't want # to make the private library API visible. if(BUILD_QSASTIME_TESTLIB) add_executable(qsastime_testlib qsastime_testlib.c qsastime.c) add_dependencies(qsastime_testlib tai-utc.h_built) if(MATH_LIB) target_link_libraries(qsastime_testlib ${MATH_LIB}) endif(MATH_LIB) endif(BUILD_QSASTIME_TESTLIB) endif(TEST_QSASTIME)