OBS-URL: https://build.opensuse.org/package/show/science/CCfits?expand=0&rev=2
300 lines
9.2 KiB
Diff
300 lines
9.2 KiB
Diff
From 65eaf9ac82b20436b156fbc33a3f331cc7ce87cd Mon Sep 17 00:00:00 2001
|
|
From: Atri Bhattacharya <badshah400@gmail.org>
|
|
Date: Sat, 10 May 2025 11:35:25 +0530
|
|
Subject: [PATCH] Fix pkg-config installation when using cmake.
|
|
|
|
---
|
|
CCfits.pc.cmake | 12 +++
|
|
CCfits.pc.in | 6 +-
|
|
CMakeLists.txt | 202 +++++++++++++++++++++++++++++----------
|
|
cmake/CCfitsConfig.cmake | 1 +
|
|
4 files changed, 166 insertions(+), 55 deletions(-)
|
|
create mode 100644 CCfits.pc.cmake
|
|
create mode 100644 cmake/CCfitsConfig.cmake
|
|
|
|
diff --git a/CCfits.pc.cmake b/CCfits.pc.cmake
|
|
new file mode 100644
|
|
index 0000000..7fd6d44
|
|
--- /dev/null
|
|
+++ b/CCfits.pc.cmake
|
|
@@ -0,0 +1,12 @@
|
|
+prefix=@CMAKE_INSTALL_PREFIX@
|
|
+exec_prefix=${prefix}
|
|
+libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
|
+includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/CCfits
|
|
+
|
|
+Name: CCfits
|
|
+Description: Object-Oriented Interface to the CFITSIO Library
|
|
+URL: https://heasarc.gsfc.nasa.gov/fitsio/ccfits
|
|
+Requires.private: cfitsio >= 3.08
|
|
+Version: @CCFITS_MAJOR@.@CCFITS_MINOR@
|
|
+Libs: -L${libdir} -lCCfits
|
|
+Cflags: -I${includedir}
|
|
diff --git a/CCfits.pc.in b/CCfits.pc.in
|
|
index 1874c4e..4d86006 100644
|
|
--- a/CCfits.pc.in
|
|
+++ b/CCfits.pc.in
|
|
@@ -4,9 +4,9 @@ libdir=@libdir@
|
|
includedir=@includedir@
|
|
|
|
Name: CCfits
|
|
-Description: Object Oriented C++ Interface to CFITSIO Library
|
|
+Description: Object-Oriented Interface to the CFITSIO Library
|
|
+URL: https://heasarc.gsfc.nasa.gov/fitsio/ccfits
|
|
Requires.private: cfitsio >= 3.08
|
|
-Version: 2.7
|
|
+Version: @PACKAGE_VERSION@
|
|
Libs: -L${libdir} -lCCfits
|
|
Cflags: -I${includedir}
|
|
-
|
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index 5a16906..8d09385 100644
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -1,52 +1,47 @@
|
|
-PROJECT(CCfits)
|
|
+#==============================================================================
|
|
+# CCFITS CMakeLists.txt
|
|
+#==============================================================================
|
|
+
|
|
+# Ensure that build directory is not the source directory:
|
|
+IF(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
|
|
+ message(FATAL_ERROR
|
|
+ "Please create a separate directory for building CCFITS."
|
|
+ )
|
|
+ENDIF()
|
|
+
|
|
CMAKE_MINIMUM_REQUIRED(VERSION 3.8)
|
|
|
|
-# Allow the developer to select whether to build Dynamic or Static libraries
|
|
-OPTION (BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
|
|
+# Suppress warning about WIN32 no longer being defined on Cygwin:
|
|
+SET(CMAKE_LEGACY_CYGWIN_WIN32 0)
|
|
|
|
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}")
|
|
-set (LIB_DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}")
|
|
-set (BIN_DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
|
|
-set (INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include/CCfits")
|
|
+PROJECT(CCFITS
|
|
+ DESCRIPTION "An object-oriented interface to the CFITSIO library"
|
|
+ LANGUAGES CXX
|
|
+ )
|
|
|
|
-# Define project version
|
|
-SET(${PROJECT_NAME}_MAJOR_VERSION 2)
|
|
-SET(${PROJECT_NAME}_MINOR_VERSION 6)
|
|
-SET(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION})
|
|
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
+set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)
|
|
|
|
+# Define project version
|
|
+#SET(${PROJECT_NAME}_SONAME _)
|
|
+SET(${PROJECT_NAME}_MAJOR 2)
|
|
+SET(${PROJECT_NAME}_MINOR 7)
|
|
+#SET(${PROJECT_NAME}_MICRO _)
|
|
+SET(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_MAJOR}.${${PROJECT_NAME}_MINOR})
|
|
+#SET(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_MAJOR}.${${PROJECT_NAME}_MINOR}.${${PROJECT_NAME}_MICRO})
|
|
SET(LIB_NAME CCfits)
|
|
-SET (LIB_TYPE STATIC)
|
|
-IF (BUILD_SHARED_LIBS)
|
|
- SET (LIB_TYPE SHARED)
|
|
-ENDIF (BUILD_SHARED_LIBS)
|
|
|
|
-#==============================================================================
|
|
-# Source code:
|
|
-#==============================================================================
|
|
+# Allow @rpath token in target install name on Macs.
|
|
+# See "cmake --help-policy CMP0042" for more information.
|
|
+IF(POLICY CMP0042)
|
|
+ CMAKE_POLICY(SET CMP0042 NEW)
|
|
+ENDIF()
|
|
|
|
-FILE(GLOB H_FILES "*.h")
|
|
-SET(H_FILES ${H_FILES} CCfits)
|
|
-
|
|
-SET(SRC_FILES
|
|
- AsciiTable.cxx
|
|
- BinTable.cxx
|
|
- ColumnCreator.cxx
|
|
- Column.cxx
|
|
- ColumnData.cxx
|
|
- ColumnVectorData.cxx
|
|
- ExtHDU.cxx
|
|
- FITS.cxx
|
|
- FitsError.cxx
|
|
- FITSUtil.cxx
|
|
- GroupTable.cxx
|
|
- HDUCreator.cxx
|
|
- HDU.cxx
|
|
- KeyData.cxx
|
|
- KeywordCreator.cxx
|
|
- Keyword.cxx
|
|
- PHDU.cxx
|
|
- Table.cxx
|
|
-)
|
|
+INCLUDE(CheckLibraryExists)
|
|
+INCLUDE(CheckFunctionExists)
|
|
+INCLUDE(CheckSymbolExists)
|
|
+INCLUDE(CheckCSourceCompiles)
|
|
+INCLUDE(GNUInstallDirs)
|
|
|
|
#==============================================================================
|
|
# Dependencies:
|
|
@@ -76,7 +71,55 @@ ELSE()
|
|
ENDIF (${PkgConfig_FOUND})
|
|
|
|
#==============================================================================
|
|
-# Target:
|
|
+# Build options:
|
|
+#==============================================================================
|
|
+
|
|
+# Allow the developer to select if Dynamic or Static libraries are built
|
|
+OPTION(BUILD_SHARED_LIBS "Build Shared Libraries" ON)
|
|
+#OPTION(BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
|
|
+
|
|
+OPTION(TESTS "Build cookbook test program" ON)
|
|
+
|
|
+IF(BUILD_SHARED_LIBS)
|
|
+ SET (LIB_TYPE SHARED)
|
|
+ELSE()
|
|
+ SET (LIB_TYPE STATIC)
|
|
+ENDIF(BUILD_SHARED_LIBS)
|
|
+
|
|
+#==============================================================================
|
|
+# CCFITS source code:
|
|
+#==============================================================================
|
|
+
|
|
+include(GenerateExportHeader)
|
|
+
|
|
+FILE(GLOB H_FILES "*.h")
|
|
+SET(H_FILES ${H_FILES} CCfits)
|
|
+
|
|
+SET(SRC_FILES
|
|
+ AsciiTable.cxx
|
|
+ BinTable.cxx
|
|
+ ColumnCreator.cxx
|
|
+ Column.cxx
|
|
+ ColumnData.cxx
|
|
+ ColumnVectorData.cxx
|
|
+ ExtHDU.cxx
|
|
+ FITS.cxx
|
|
+ FitsError.cxx
|
|
+ FITSUtil.cxx
|
|
+ GroupTable.cxx
|
|
+ HDUCreator.cxx
|
|
+ HDU.cxx
|
|
+ KeyData.cxx
|
|
+ KeywordCreator.cxx
|
|
+ Keyword.cxx
|
|
+ PHDU.cxx
|
|
+ Table.cxx
|
|
+)
|
|
+
|
|
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}")
|
|
+
|
|
+#==============================================================================
|
|
+# Add libraries:
|
|
#==============================================================================
|
|
|
|
ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${H_FILES} ${SRC_FILES})
|
|
@@ -112,15 +155,69 @@ ELSE()
|
|
ENDIF (${PkgConfig_FOUND})
|
|
|
|
#==============================================================================
|
|
-# Install:
|
|
+# Targets
|
|
#==============================================================================
|
|
-include(GNUInstallDirs)
|
|
-install(TARGETS ${LIB_NAME}
|
|
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
+
|
|
+generate_export_header(CCfits)
|
|
+set_property(TARGET CCfits PROPERTY VERSION ${CCFITS_VERSION})
|
|
+#set_property(TARGET CCfits PROPERTY SOVERSION 10)
|
|
+set_property(TARGET CCfits PROPERTY INTERFACE_CCfits_MAJOR_VERSION ${${PROJECT_NAME}_MAJOR})
|
|
+set_property(TARGET CCfits APPEND PROPERTY
|
|
+ COMPATIBLE_INTERFACE_STRING CCfits_MAJOR_VERSION
|
|
+)
|
|
+
|
|
+install(TARGETS CCfits EXPORT CCfitsTargets
|
|
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/CCfits"
|
|
)
|
|
-install(FILES ${H_FILES} DESTINATION ${INCLUDE_INSTALL_DIR})
|
|
+
|
|
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ccfits_export.h"
|
|
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT Devel)
|
|
+
|
|
+# Install standard header files in a "CCfits" subdirectory:
|
|
+install(FILES ${H_FILES}
|
|
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/CCfits" COMPONENT Devel)
|
|
+
|
|
+include(CMakePackageConfigHelpers)
|
|
+write_basic_package_version_file(
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/CCfits/CCfitsConfigVersion.cmake"
|
|
+ VERSION ${CCFITS_VERSION}
|
|
+ COMPATIBILITY AnyNewerVersion
|
|
+)
|
|
+
|
|
+export(EXPORT CCfitsTargets
|
|
+ FILE "${CMAKE_CURRENT_BINARY_DIR}/CCfits/CCfitsTargets.cmake"
|
|
+ NAMESPACE CCFITS::
|
|
+)
|
|
+configure_file(cmake/CCfitsConfig.cmake
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/CCfits/CCfitsConfig.cmake"
|
|
+ COPYONLY
|
|
+)
|
|
+
|
|
+set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/CCfits)
|
|
+install(EXPORT CCfitsTargets
|
|
+ FILE
|
|
+ CCfitsTargets.cmake
|
|
+ NAMESPACE
|
|
+ CCFITS::
|
|
+ DESTINATION
|
|
+ ${ConfigPackageLocation}
|
|
+)
|
|
+install(
|
|
+ FILES
|
|
+ cmake/CCfitsConfig.cmake
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/CCfits/CCfitsConfigVersion.cmake"
|
|
+ DESTINATION
|
|
+ ${ConfigPackageLocation}
|
|
+ COMPONENT
|
|
+ Devel
|
|
+)
|
|
+
|
|
+# CCfits.pc:
|
|
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CCfits.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/CCfits.pc @ONLY)
|
|
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/CCfits.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
|
|
|
#==============================================================================
|
|
# Tests:
|
|
@@ -134,8 +231,9 @@ IF (TESTS)
|
|
TARGET_LINK_LIBRARIES(cookbook ${LIB_NAME} ${CFITSIO_LIBRARIES})
|
|
ADD_TEST(cookbook cookbook)
|
|
|
|
- SET(TEST_FILES file1.pha)
|
|
- FILE(COPY ${TEST_FILES} DESTINATION ${CCfits_BINARY_DIR})
|
|
- #FILE(COPY ${CMAKE_SOURCE_DIR}/testprog.tpt DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
|
+ # Copy file1.pha to build directory to allow quick test
|
|
+ FILE(COPY ${CMAKE_SOURCE_DIR}/file1.pha DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
|
+
|
|
+ install(TARGETS cookbook RUNTIME DESTINATION bin)
|
|
|
|
ENDIF(TESTS)
|
|
diff --git a/cmake/CCfitsConfig.cmake b/cmake/CCfitsConfig.cmake
|
|
new file mode 100644
|
|
index 0000000..83cb804
|
|
--- /dev/null
|
|
+++ b/cmake/CCfitsConfig.cmake
|
|
@@ -0,0 +1 @@
|
|
+include("${CMAKE_CURRENT_LIST_DIR}/CCfitsTargets.cmake")
|
|
--
|
|
2.49.0
|
|
|