Commit 6e497de7 by Maarten L. Hekkelman

Final touches

parent 4ca72c7e
...@@ -29,22 +29,15 @@ project(mkdssp VERSION 4.4.4 LANGUAGES CXX) ...@@ -29,22 +29,15 @@ project(mkdssp VERSION 4.4.4 LANGUAGES CXX)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(GNUInstallDirs) # include(GNUInstallDirs)
include(CheckFunctionExists) # include(CheckFunctionExists)
include(CheckIncludeFiles) # include(CheckIncludeFiles)
include(CheckLibraryExists) # include(CheckLibraryExists)
include(CMakePackageConfigHelpers) # include(CMakePackageConfigHelpers)
include(FetchContent) include(FetchContent)
include(FindFilesystem) # include(GenerateExportHeader)
include(GenerateExportHeader)
include(CTest) include(CTest)
set(CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Filesystem REQUIRED)
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers")
elseif(MSVC) elseif(MSVC)
...@@ -95,7 +88,7 @@ endif() ...@@ -95,7 +88,7 @@ endif()
# Create a revision file, containing the current git version info # Create a revision file, containing the current git version info
include(VersionString) include(VersionString)
write_version_header("${PROJECT_SOURCE_DIR}/src") write_version_header("${CMAKE_CURRENT_SOURCE_DIR}/src")
# Optionally use mrc to create resources # Optionally use mrc to create resources
find_package(Mrc QUIET) find_package(Mrc QUIET)
...@@ -119,7 +112,7 @@ if(NOT PDB_REDO_META) ...@@ -119,7 +112,7 @@ if(NOT PDB_REDO_META)
libmcfp libmcfp
${EXLC} ${EXLC}
GIT_REPOSITORY https://github.com/mhekkel/libmcfp GIT_REPOSITORY https://github.com/mhekkel/libmcfp
GIT_TAG v1.2.4) GIT_TAG v1.3.1)
FetchContent_MakeAvailable(libmcfp) FetchContent_MakeAvailable(libmcfp)
...@@ -140,7 +133,7 @@ endif() ...@@ -140,7 +133,7 @@ endif()
add_subdirectory(libdssp) add_subdirectory(libdssp)
add_executable(mkdssp ${PROJECT_SOURCE_DIR}/src/mkdssp.cpp) add_executable(mkdssp ${CMAKE_CURRENT_SOURCE_DIR}/src/mkdssp.cpp)
target_link_libraries(mkdssp PRIVATE libmcfp::libmcfp dssp::dssp) target_link_libraries(mkdssp PRIVATE libmcfp::libmcfp dssp::dssp)
...@@ -148,12 +141,12 @@ if(USE_RSRC) ...@@ -148,12 +141,12 @@ if(USE_RSRC)
mrc_target_resources(mkdssp mrc_target_resources(mkdssp
${CIFPP_SHARE_DIR}/mmcif_pdbx.dic ${CIFPP_SHARE_DIR}/mmcif_pdbx.dic
${CIFPP_SHARE_DIR}/mmcif_ddl.dic ${CIFPP_SHARE_DIR}/mmcif_ddl.dic
${PROJECT_SOURCE_DIR}/libdssp/mmcif_pdbx/dssp-extension.dic) ${CMAKE_CURRENT_SOURCE_DIR}/libdssp/mmcif_pdbx/dssp-extension.dic)
endif() endif()
# Install rules # Install rules
install(TARGETS ${PROJECT_NAME} install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION ${BIN_INSTALL_DIR} RUNTIME DESTINATION bin
) )
if(BUILD_DOCUMENTATION) if(BUILD_DOCUMENTATION)
...@@ -162,7 +155,7 @@ endif() ...@@ -162,7 +155,7 @@ endif()
if(UNIX) if(UNIX)
install(FILES doc/mkdssp.1 install(FILES doc/mkdssp.1
DESTINATION ${CMAKE_INSTALL_DATADIR}/man/man1) DESTINATION share/man/man1)
endif() endif()
if(EXISTS "${CCP4}/html") if(EXISTS "${CCP4}/html")
......
# Simplistic reimplementation of https://github.com/vector-of-bool/CMakeCM/blob/master/modules/FindFilesystem.cmake
if(TARGET std::filesystem)
return()
endif()
cmake_minimum_required(VERSION 3.10)
include(CMakePushCheckState)
include(CheckIncludeFileCXX)
include(CheckCXXSourceCompiles)
cmake_push_check_state()
set(CMAKE_CXX_STANDARD 17)
check_include_file_cxx("filesystem" _CXX_FILESYSTEM_HAVE_HEADER)
mark_as_advanced(_CXX_FILESYSTEM_HAVE_HEADER)
set(code [[
#include <cstdlib>
#include <filesystem>
int main() {
auto cwd = std::filesystem::current_path();
return EXIT_SUCCESS;
}
]])
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS_EQUAL 8.4.0)
# >> https://stackoverflow.com/questions/63902528/program-crashes-when-filesystempath-is-destroyed
set(CXX_FILESYSTEM_NO_LINK_NEEDED 0)
else()
# Check a simple filesystem program without any linker flags
check_cxx_source_compiles("${code}" CXX_FILESYSTEM_NO_LINK_NEEDED)
endif()
if(CXX_FILESYSTEM_NO_LINK_NEEDED)
set(_found 1)
else()
set(prev_libraries ${CMAKE_REQUIRED_LIBRARIES})
# Add the libstdc++ flag
set(CMAKE_REQUIRED_LIBRARIES ${prev_libraries} -lstdc++fs)
check_cxx_source_compiles("${code}" CXX_FILESYSTEM_STDCPPFS_NEEDED)
set(_found ${CXX_FILESYSTEM_STDCPPFS_NEEDED})
if(NOT CXX_FILESYSTEM_STDCPPFS_NEEDED)
# Try the libc++ flag
set(CMAKE_REQUIRED_LIBRARIES ${prev_libraries} -lc++fs)
check_cxx_source_compiles("${code}" CXX_FILESYSTEM_CPPFS_NEEDED)
set(_found ${CXX_FILESYSTEM_CPPFS_NEEDED})
endif()
endif()
if(_found)
add_library(std::filesystem INTERFACE IMPORTED)
set_property(TARGET std::filesystem APPEND PROPERTY INTERFACE_COMPILE_FEATURES cxx_std_17)
if(CXX_FILESYSTEM_NO_LINK_NEEDED)
# Nothing to add...
elseif(CXX_FILESYSTEM_STDCPPFS_NEEDED)
set_target_properties(std::filesystem PROPERTIES IMPORTED_LIBNAME stdc++fs)
elseif(CXX_FILESYSTEM_CPPFS_NEEDED)
set_target_properties(std::filesystem PROPERTIES IMPORTED_LIBNAME c++fs)
endif()
endif()
cmake_pop_check_state()
set(Filesystem_FOUND ${_found} CACHE BOOL "TRUE if we can run a program using std::filesystem" FORCE)
if(Filesystem_FIND_REQUIRED AND NOT Filesystem_FOUND)
message(FATAL_ERROR "Cannot run simple program using std::filesystem")
endif()
...@@ -55,39 +55,10 @@ configure_package_config_file( ...@@ -55,39 +55,10 @@ configure_package_config_file(
install(FILES install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/dssp/dsspConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/dssp/dsspConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/dssp/dsspConfigVersion.cmake"
DESTINATION lib/cmake/dssp DESTINATION lib/cmake/dssp
COMPONENT Devel COMPONENT Devel
) )
# set(dssp_MAJOR_VERSION ${CMAKE_PROJECT_VERSION_MAJOR}) set(CIFPP_DATA_DIR share/libcifpp)
# set_target_properties(dssp PROPERTIES
# VERSION ${PROJECT_VERSION}
# SOVERSION ${dssp_MAJOR_VERSION}
# INTERFACE_dssp_MAJOR_VERSION ${dssp_MAJOR_VERSION})
# set_property(TARGET dssp APPEND PROPERTY
# COMPATIBLE_INTERFACE_STRING dssp_MAJOR_VERSION
# )
# write_basic_package_version_file(
# "${CMAKE_CURRENT_BINARY_DIR}/dssp/dsspConfigVersion.cmake"
# VERSION ${PROJECT_VERSION}
# COMPATIBILITY AnyNewerVersion
# )
# # pkgconfig support
# set(prefix ${CMAKE_INSTALL_PREFIX})
# set(exec_prefix ${CMAKE_INSTALL_PREFIX})
# set(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
# set(includedir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR})
# configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/libdssp.pc.in
# ${CMAKE_CURRENT_BINARY_DIR}/libdssp.pc.in @ONLY)
# file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/libdssp.pc
# INPUT ${CMAKE_CURRENT_BINARY_DIR}/libdssp.pc.in)
# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libdssp.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
set(CIFPP_DATA_DIR "${CMAKE_INSTALL_FULL_DATADIR}/libcifpp")
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/mmcif_pdbx/dssp-extension.dic" install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/mmcif_pdbx/dssp-extension.dic"
DESTINATION ${CIFPP_DATA_DIR}) DESTINATION ${CIFPP_DATA_DIR})
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