Skip to content

Commit

Permalink
remove MRC dependency
Browse files Browse the repository at this point in the history
  • Loading branch information
mhekkel committed Sep 19, 2023
1 parent 16a8e22 commit 3555e2c
Show file tree
Hide file tree
Showing 7 changed files with 201 additions and 197 deletions.
69 changes: 41 additions & 28 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ include(CheckFunctionExists)
include(CheckIncludeFiles)
include(CheckLibraryExists)
include(CMakePackageConfigHelpers)
include(Dart)
include(FindFilesystem)
include(FindPkgConfig)
include(GenerateExportHeader)
include(AddGitSubmodule)
include(CTest)

set(CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD 17)
Expand Down Expand Up @@ -82,31 +82,12 @@ endif()
include(VersionString)
write_version_header("${PROJECT_SOURCE_DIR}/src/")

# Optionally use mrc to create resources
find_package(Mrc QUIET)

if(MRC_FOUND)
option(USE_RSRC "Use mrc to create resources" ON)
else()
message(STATUS "Not using resources since mrc was not found")
endif()

if(USE_RSRC)
message("Using resources compiled with ${MRC_EXECUTABLE}")
add_compile_definitions(USE_RSRC WEBAPP_USES_RESOURCES)

mrc_write_header(${CMAKE_BINARY_DIR}/mrsrc.hpp)
endif()

find_package(Filesystem REQUIRED)
find_package(zeep 6.0.4 REQUIRED)
find_package(cifpp 5.1.2 REQUIRED)
find_package(libmcfp REQUIRED)

find_package(libpqxx 7.8 REQUIRED)

pkg_check_modules(SSL libssl IMPORTED_TARGET)
pkg_check_modules(CRYPTO libcrypto IMPORTED_TARGET)
find_package(OpenSSL REQUIRED)

find_program(YARN yarn REQUIRED)

Expand Down Expand Up @@ -147,6 +128,7 @@ add_executable(alphafill
${PROJECT_SOURCE_DIR}/src/matrix.cpp
${PROJECT_SOURCE_DIR}/src/main.cpp
${PROJECT_SOURCE_DIR}/src/utilities.cpp

# ${PROJECT_SOURCE_DIR}/src/af-filledd.cpp
${PROJECT_SOURCE_DIR}/src/db-connection.cpp
${PROJECT_SOURCE_DIR}/src/data-service.cpp
Expand All @@ -171,15 +153,21 @@ target_compile_definitions(alphafill PUBLIC

add_dependencies(alphafill webpack)

target_link_libraries(alphafill
libmcfp::libmcfp
cifpp::cifpp
zeep::zeep
libpqxx::pqxx
PkgConfig::SSL PkgConfig::CRYPTO
std::filesystem)
target_link_libraries(alphafill libmcfp::libmcfp cifpp::cifpp zeep::zeep libpqxx::pqxx OpenSSL::SSL OpenSSL::Crypto std::filesystem)

# Optionally use mrc to create resources
find_package(Mrc QUIET)

if(MRC_FOUND)
option(USE_RSRC "Use mrc to create resources" ON)
else()
message(STATUS "Not using resources since mrc was not found")
endif()

if(USE_RSRC)
message("Using resources compiled with ${MRC_EXECUTABLE}")
add_compile_definitions(USE_RSRC WEBAPP_USES_RESOURCES)

mrc_target_resources(alphafill

${PROJECT_SOURCE_DIR}/docroot/
Expand All @@ -189,4 +177,29 @@ if(USE_RSRC)
${CIFPP_SHARE_DIR}/mmcif_pdbx.dic
${PROJECT_SOURCE_DIR}/rsrc/mmcif_af.dic
${PROJECT_SOURCE_DIR}/rsrc/mmcif_ma.dic)
else()
set(ALPHAFILL_DATA_DIR $<IF:$<CONFIG:Debug>,${PROJECT_SOURCE_DIR}/rsrc,${CMAKE_INSTALL_FULL_DATADIR}/alphafill> )
add_compile_definitions(ALPHAFILL_DATA_DIR="${ALPHAFILL_DATA_DIR}")
endif()

# installation
install(TARGETS alphafill RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})

# If we do not use resources, install the resource data in a share directory
if(NOT USE_RSRC)
install(FILES
${PROJECT_SOURCE_DIR}/db-schema.sql
${PROJECT_SOURCE_DIR}/scripts/refine.mcr

${CIFPP_SHARE_DIR}/mmcif_pdbx.dic
${PROJECT_SOURCE_DIR}/rsrc/mmcif_af.dic
${PROJECT_SOURCE_DIR}/rsrc/mmcif_ma.dic

DESTINATION ${ALPHAFILL_DATA_DIR}
)

install(DIRECTORY
${PROJECT_SOURCE_DIR}/docroot
DESTINATION ${ALPHAFILL_DATA_DIR}
)
endif()
138 changes: 7 additions & 131 deletions cmake/VersionString.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ cmake_minimum_required(VERSION 3.15)
variables contained in the revision file.
#]=======================================================================]

# Record the location of this module now, not at the time the CMakeLists.txt
# is being processed
get_filename_component(_current_cmake_module_dir ${CMAKE_CURRENT_LIST_FILE} PATH)

# First locate a .git file or directory.
function(_get_git_dir _start_dir _variable)

Expand Down Expand Up @@ -255,141 +259,13 @@ function(write_version_header dir)
if(VERSION_STRING_OPTION_LIB_NAME)
set(VAR_PREFIX "${VERSION_STRING_OPTION_LIB_NAME}")
set(IDENT_PREFIX "${VERSION_STRING_OPTION_LIB_NAME}_")
set(BOOL_IS_MAIN "false")
else()
set(VAR_PREFIX "")
set(IDENT_PREFIX "")
set(BOOL_IS_MAIN "true")
endif()

# And finally, write out the header file
file(WRITE "${VERSION_STRING_DATA}/${file_name}.in" [[// This file was generated by VersionString.cmake

#pragma once

#include <ostream>

constexpr const char k@VAR_PREFIX@ProjectName[] = "@PROJECT_NAME@";
constexpr const char k@VAR_PREFIX@VersionNumber[] = "@PROJECT_VERSION@";
constexpr int k@VAR_PREFIX@BuildNumber = @BUILD_NUMBER@;
constexpr const char k@VAR_PREFIX@RevisionGitTag[] = "@REVISION_GIT_TAGREF@";
constexpr const char k@VAR_PREFIX@RevisionDate[] = "@REVISION_DATE_TIME@";

#ifndef VERSION_INFO_DEFINED
#define VERSION_INFO_DEFINED 1

namespace version_info_v1
{

class version_info_base
{
public:

static void write(std::ostream &os, bool verbose)
{
auto &s_head = head();
if (s_head != nullptr)
write(s_head, os, verbose);
}

protected:

version_info_base(const char *name, const char *version, int build_number, const char *git_tag, const char *revision_date)
: m_name(name)
, m_version(version)
, m_build_number(build_number)
, m_git_tag(git_tag)
, m_revision_date(revision_date)
{
auto &s_head = head();
m_next = s_head;
s_head = this;
}

static void write(const version_info_base *inst, std::ostream &os, bool verbose)
{
if (inst->m_next)
{
write(inst->m_next, os, verbose);

if (not verbose)
return;

os << '-' << std::endl;
}

os << inst->m_name << " version " << inst->m_version << std::endl;

if (verbose)
{
if (inst->m_build_number != 0)
{
os << "build: " << inst->m_build_number << ' ' << inst->m_revision_date << std::endl;
if (inst->m_git_tag[0] != 0)
os << "git tag: " << inst->m_git_tag << std::endl;
}
}
}

using version_info_ptr = version_info_base *;

static version_info_ptr &head()
{
static version_info_ptr s_head = nullptr;
return s_head;
}

const char *m_name;
const char *m_version;
int m_build_number;
const char *m_git_tag;
const char *m_revision_date;
version_info_base *m_next = nullptr;
};

template<typename T>
class version_info : public version_info_base
{
public:
using implementation_type = T;

version_info(const char *name, const char *version, int build_number, const char *git_tag, const char *revision_date)
: version_info_base(name, version, build_number, git_tag, revision_date)
{
}

struct register_object
{
register_object()
{
static implementation_type s_instance;
}
};

template<register_object&> struct reference_object;

static register_object s_registered_object;
static reference_object<s_registered_object> s_referenced_object;
};

template<typename T> typename version_info<T>::register_object version_info<T>::s_registered_object;

}

inline void write_version_string(std::ostream &os, bool verbose)
{
version_info_v1::version_info_base::write(os, verbose);
}

#endif

class version_info_@IDENT_PREFIX@impl : public version_info_v1::version_info<version_info_@IDENT_PREFIX@impl>
{
public:
version_info_@IDENT_PREFIX@impl()
: version_info(k@VAR_PREFIX@ProjectName, k@VAR_PREFIX@VersionNumber, k@VAR_PREFIX@BuildNumber, k@VAR_PREFIX@RevisionGitTag, k@VAR_PREFIX@RevisionDate)
{
}
};
]])
configure_file("${VERSION_STRING_DATA}/${file_name}.in" "${dir}/${file_name}" @ONLY)
configure_file("${_current_cmake_module_dir}/revision.hpp.in" "${dir}/${file_name}" @ONLY)
endfunction()

Loading

0 comments on commit 3555e2c

Please sign in to comment.