Commit 6d1be23a by Maarten L. Hekkelman

oops

parent 0472b9a4
...@@ -66,10 +66,7 @@ if(NOT(BUILD_FOR_CCP4 AND WIN32)) ...@@ -66,10 +66,7 @@ if(NOT(BUILD_FOR_CCP4 AND WIN32))
option(BUILD_SHARED_LIBS "Build a shared library instead of a static one" OFF) option(BUILD_SHARED_LIBS "Build a shared library instead of a static one" OFF)
endif() endif()
if(BUILD_FOR_CCP4) if(PROJECT_IS_TOP_LEVEL AND NOT BUILD_FOR_CCP4)
unset(CIFPP_DOWNLOAD_CCD)
unset(CIFPP_INSTALL_UPDATE_SCRIPT)
else()
# Lots of code depend on the availability of the components.cif file # Lots of code depend on the availability of the components.cif file
option(CIFPP_DOWNLOAD_CCD option(CIFPP_DOWNLOAD_CCD
"Download the CCD file components.cif during installation" ON) "Download the CCD file components.cif during installation" ON)
...@@ -79,6 +76,9 @@ else() ...@@ -79,6 +76,9 @@ else()
option(CIFPP_INSTALL_UPDATE_SCRIPT option(CIFPP_INSTALL_UPDATE_SCRIPT
"Install the script to update CCD and dictionary files" ON) "Install the script to update CCD and dictionary files" ON)
endif() endif()
else()
unset(CIFPP_DOWNLOAD_CCD)
unset(CIFPP_INSTALL_UPDATE_SCRIPT)
endif() endif()
# When CCP4 is sourced in the environment, we can recreate the symmetry # When CCP4 is sourced in the environment, we can recreate the symmetry
...@@ -121,6 +121,7 @@ if(WIN32) ...@@ -121,6 +121,7 @@ if(WIN32)
add_definitions(-D _WIN32_WINNT=0x0501) add_definitions(-D _WIN32_WINNT=0x0501)
endif() endif()
# Man, this is 2024 we're living in...
add_definitions(-DNOMINMAX) add_definitions(-DNOMINMAX)
# We do not want to write an export file for all our symbols... # We do not want to write an export file for all our symbols...
...@@ -132,6 +133,7 @@ if(MSVC) ...@@ -132,6 +133,7 @@ if(MSVC)
add_compile_options(/permissive- /bigobj) add_compile_options(/permissive- /bigobj)
add_link_options(/NODEFAULTLIB:library) add_link_options(/NODEFAULTLIB:library)
# This is dubious...
if(BUILD_SHARED_LIBS) if(BUILD_SHARED_LIBS)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL") set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
else() else()
...@@ -216,7 +218,10 @@ if(MSVC) ...@@ -216,7 +218,10 @@ if(MSVC)
endforeach() endforeach()
endif() endif()
find_package(ZLIB REQUIRED) find_package(ZLIB QUIET)
if(NOT ZLIB_FOUND)
message(FATAL_ERROR "The zlib development files were not found you this system, please install them and try again (hint: on debian/ubuntu use apt-get install zlib1g-dev)")
endif()
# Using Eigen3 is a bit of a thing. We don't want to build it completely since # Using Eigen3 is a bit of a thing. We don't want to build it completely since
# we only need a couple of header files. Nothing special. But often, eigen3 is # we only need a couple of header files. Nothing special. But often, eigen3 is
...@@ -451,80 +456,81 @@ else() ...@@ -451,80 +456,81 @@ else()
unset(CIFPP_CACHE_DIR) unset(CIFPP_CACHE_DIR)
endif() endif()
# Install rules # Avoid full installation in case we are not the top level target
install(TARGETS cifpp if(PROJECT_IS_TOP_LEVEL OR BUILD_FOR_CCP4)
EXPORT cifpp # Install rules
FILE_SET cifpp_headers DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(TARGETS cifpp
EXPORT cifpp
FILE_SET cifpp_headers DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
if(MSVC AND BUILD_SHARED_LIBS) if(MSVC AND BUILD_SHARED_LIBS)
install( install(
FILES $<TARGET_PDB_FILE:cifpp> FILES $<TARGET_PDB_FILE:cifpp>
DESTINATION ${CMAKE_INSTALL_LIBDIR} DESTINATION ${CMAKE_INSTALL_LIBDIR}
OPTIONAL) OPTIONAL)
endif() endif()
# Clean up old config files (with old names)
file(GLOB OLD_CONFIG_FILES
${CMAKE_INSTALL_FULL_LIBDIR}/cmake/cifpp/cifppConfig*.cmake
${CMAKE_INSTALL_FULL_LIBDIR}/cmake/cifpp/cifppTargets*.cmake)
if(OLD_CONFIG_FILES) # Clean up old config files (with old names)
message( file(GLOB OLD_CONFIG_FILES
STATUS "Installation will remove old config files: ${OLD_CONFIG_FILES}") ${CMAKE_INSTALL_FULL_LIBDIR}/cmake/cifpp/cifppConfig*.cmake
install(CODE "file(REMOVE ${OLD_CONFIG_FILES})") ${CMAKE_INSTALL_FULL_LIBDIR}/cmake/cifpp/cifppTargets*.cmake)
endif()
install(EXPORT cifpp if(OLD_CONFIG_FILES)
NAMESPACE cifpp:: message(
FILE "cifpp-targets.cmake" STATUS "Installation will remove old config files: ${OLD_CONFIG_FILES}")
DESTINATION lib/cmake/cifpp) install(CODE "file(REMOVE ${OLD_CONFIG_FILES})")
endif()
if(CIFPP_DATA_DIR AND CIFPP_DOWNLOAD_CCD) install(EXPORT cifpp
install( NAMESPACE cifpp::
FILES ${CMAKE_CURRENT_SOURCE_DIR}/rsrc/mmcif_ddl.dic FILE "cifpp-targets.cmake"
${CMAKE_CURRENT_SOURCE_DIR}/rsrc/mmcif_pdbx.dic DESTINATION lib/cmake/cifpp)
${CMAKE_CURRENT_SOURCE_DIR}/rsrc/mmcif_ma.dic ${COMPONENTS_CIF}
DESTINATION ${CIFPP_DATA_DIR})
endif()
if(CIFPP_CACHE_DIR AND CIFPP_DOWNLOAD_CCD) if(CIFPP_DATA_DIR AND CIFPP_DOWNLOAD_CCD)
install( install(
FILES ${CMAKE_CURRENT_SOURCE_DIR}/rsrc/mmcif_ddl.dic FILES ${CMAKE_CURRENT_SOURCE_DIR}/rsrc/mmcif_ddl.dic
${CMAKE_CURRENT_SOURCE_DIR}/rsrc/mmcif_pdbx.dic ${CMAKE_CURRENT_SOURCE_DIR}/rsrc/mmcif_pdbx.dic
${CMAKE_CURRENT_SOURCE_DIR}/rsrc/mmcif_ma.dic ${COMPONENTS_CIF} ${CMAKE_CURRENT_SOURCE_DIR}/rsrc/mmcif_ma.dic ${COMPONENTS_CIF}
DESTINATION ${CIFPP_CACHE_DIR}) DESTINATION ${CIFPP_DATA_DIR})
endif() endif()
set(CONFIG_TEMPLATE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cifpp-config.cmake.in) if(CIFPP_CACHE_DIR AND CIFPP_DOWNLOAD_CCD)
install(
FILES ${CMAKE_CURRENT_SOURCE_DIR}/rsrc/mmcif_ddl.dic
${CMAKE_CURRENT_SOURCE_DIR}/rsrc/mmcif_pdbx.dic
${CMAKE_CURRENT_SOURCE_DIR}/rsrc/mmcif_ma.dic ${COMPONENTS_CIF}
DESTINATION ${CIFPP_CACHE_DIR})
endif()
configure_package_config_file( set(CONFIG_TEMPLATE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cifpp-config.cmake.in)
${CONFIG_TEMPLATE_FILE} ${CMAKE_CURRENT_BINARY_DIR}/cifpp/cifpp-config.cmake
INSTALL_DESTINATION lib/cmake/cifpp
PATH_VARS CIFPP_DATA_DIR)
install( configure_package_config_file(
FILES "${CMAKE_CURRENT_BINARY_DIR}/cifpp/cifpp-config.cmake" ${CONFIG_TEMPLATE_FILE} ${CMAKE_CURRENT_BINARY_DIR}/cifpp/cifpp-config.cmake
"${CMAKE_CURRENT_BINARY_DIR}/cifpp/cifpp-config-version.cmake" INSTALL_DESTINATION lib/cmake/cifpp
DESTINATION lib/cmake/cifpp) PATH_VARS CIFPP_DATA_DIR)
set_target_properties( install(
cifpp FILES "${CMAKE_CURRENT_BINARY_DIR}/cifpp/cifpp-config.cmake"
PROPERTIES VERSION ${PROJECT_VERSION} "${CMAKE_CURRENT_BINARY_DIR}/cifpp/cifpp-config-version.cmake"
SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" DESTINATION lib/cmake/cifpp)
INTERFACE_cifpp_MAJOR_VERSION ${PROJECT_VERSION_MAJOR})
set_target_properties(
set_property( cifpp
TARGET cifpp PROPERTIES VERSION ${PROJECT_VERSION}
APPEND SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}"
PROPERTY COMPATIBLE_INTERFACE_STRING cifpp_MAJOR_VERSION) INTERFACE_cifpp_MAJOR_VERSION ${PROJECT_VERSION_MAJOR})
write_basic_package_version_file( set_property(
"${CMAKE_CURRENT_BINARY_DIR}/cifpp/cifpp-config-version.cmake" TARGET cifpp
VERSION ${PROJECT_VERSION} APPEND
COMPATIBILITY AnyNewerVersion) PROPERTY COMPATIBLE_INTERFACE_STRING cifpp_MAJOR_VERSION)
# In case we're included as sub_directory: write_basic_package_version_file(
if(NOT PROJECT_IS_TOP_LEVEL) "${CMAKE_CURRENT_BINARY_DIR}/cifpp/cifpp-config-version.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion)
else()
# Set this variable so that consumers can find the files in rsrc
set(CIFPP_SHARE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/rsrc PARENT_SCOPE) set(CIFPP_SHARE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/rsrc PARENT_SCOPE)
endif() endif()
...@@ -585,13 +591,3 @@ endif() ...@@ -585,13 +591,3 @@ endif()
if(BUILD_DOCUMENTATION) if(BUILD_DOCUMENTATION)
add_subdirectory(docs) add_subdirectory(docs)
endif() endif()
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
set(CPACK_SOURCE_TGZ ON)
set(CPACK_SOURCE_TBZ2 OFF)
set(CPACK_SOURCE_TXZ OFF)
set(CPACK_SOURCE_TZ OFF)
set(CPACK_SOURCE_IGNORE_FILES "/rsrc/components.cif;/build;/.vscode;/.git")
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}")
set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME})
include(CPack)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment