N2RTQC4PEXZEGZPWHYJHIXS6LOI3EFYDYATNG4HMCR6JGDI3NZ6QC KAVSKDAYPOF2HSPIC57APDDJSJQ2CMZIMQXAB2CVQPUXP4PNULMQC O5ZJE5FMSLMEBSYH7IXLRDU5TVL37474C3TVP4OC5DRRSMHMLC6QC XXCRSVXOJVHO4A6W5R4A32WXXSNJDJLAT2CAQ6DE3JAMUFJF3HPAC 3KEFKH5FYGFUIWMIW6NY3K4FYSLE7LEXR4ZSF6WN52PCC3TVDZBAC ZZW47X5HHDOBGE6P5XBYMAG25EV2BBZJVMCYXEQTCY6PDHZLOJ6AC 4OTS5CAKDEOUTP54HI4ZMYS2O4GURZQVGN34AQZEH5KW7ZBAT2QQC 72KPLIMXVKEJUE6IMMC2AGDY4G762XW2TQ43SC3NSR2EAJBMKLVAC DYNXZQZVGIOW26Y6VPP4TIBOJEMK6T6Y7HU5ZJYH4GIWFFRIJSIQC UZYI7CB2XOVFJMZ7WHWU3KGA2LTCIYVFACUAQS46QEVIDSBFD76AC 7YS2X7JJVAFT7QFDASQR4ZVUAAFYF4OLK5XLY3JJ2URSXI34ZOTAC FYYWB54CXR3FTAQ4HLDTFS6XWBVLWRGKHVMMNKUXDEJ7UWLHXPBQC SGQQ6LNZCGWM4WP5VOOCGDUZ2FVQEC4FANXJ5SEZPDQHSLF7YL2QC XGCRPWKLJYWGVCMHDIR2K3PVT2R22JALVV5K2IXTHU3JBAEYANGAC KEPVL66D6DQXZLNEKZ2Z3BR2UXIN3LJC4NBSY26AK5PTWLYURNJQC cmake_minimum_required(VERSION 3.23)set(CMAKE_CXX_STANDARD 20)set(CMAKE_C_STANDARD 17)set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)set(CMAKE_SHARED_MODULE_PREFIX)include(GNUInstallDirs)find_package(PkgConfig REQUIRED)find_package(Boost REQUIRED)find_package(date REQUIRED)add_subdirectory(src)set(Nix_VERSION ${Nix_nix-main_VERSION})string(REPLACE "." ";" VERSION_LIST ${Nix_VERSION})list(GET VERSION_LIST 0 Nix_MAJOR_VERSION)list(GET VERSION_LIST 1 Nix_MINOR_VERSION)list(GET VERSION_LIST 2 Nix_PATCH_VERSION)target_compile_definitions(PkgConfig::NixINTERFACE"NIX_MAJOR_VERSION=(${Nix_MAJOR_VERSION})""NIX_MINOR_VERSION=(${Nix_MINOR_VERSION})""NIX_PATCH_VERSION=(${Nix_PATCH_VERSION})"add_subdirectory(autotests)"NIX_VERSION=(((0x${Nix_MAJOR_VERSION})<<16) | ((0x${Nix_MINOR_VERSION})<<8) | (0x${Nix_PATCH_VERSION}))"SYSTEM="")target_link_libraries(PkgConfig::NixINTERFACEBoost::headersdate::datenlohmann_json)add_compile_options(-Wall -Werror)pkg_check_modules(Nix REQUIRED IMPORTED_TARGET nix-main nix-store)find_library(nixfetchers_LIBRARY nixfetchers REQUIRED)target_link_libraries(PkgConfig::Nix INTERFACE ${nixfetchers_LIBRARY})find_package(nlohmann_json REQUIRED)include(CTest)file(STRINGS VERSION _version)project(nix-plugin-pijul VERSION ${_version})
add_library(pijul MODULE)install(TARGETS pijul DESTINATION ${CMAKE_INSTALL_LIBDIR}/nix/plugins)target_sources(pijul PRIVATE ${SRC})target_sources(PijulTesting PRIVATE ${SRC})target_include_directories(PijulTesting PUBLIC ${CMAKE_CURRENT_LIST_DIR})target_compile_options(PijulTesting PUBLIC -O1 -ggdb)target_link_libraries(PijulTesting PRIVATE date::date)target_link_libraries(pijulPUBLICPkgConfig::Nix)fetcher.cpprepo.cpprepo.h)set(SRCcompat.cppcompat.hadd_library(PijulTesting STATIC)
lib_src = files('compat.cpp','fetcher.cpp','repo.cpp',)lib_inc = include_directories('.')# Nix uses these macros that are only defined in its own buildlib_extra_cppflags = ['-DSYSTEM=""']if nix_main_dep.version().version_compare('<=2.22')lib_extra_cppflags += ['-DHAVE_STRUCT_DIRENT_D_TYPE']endiflib = shared_module('pijul',lib_src,dependencies: [nix_main_dep,nix_store_dep,],cpp_args: [f'-DNIX_MAJOR_VERSION=(@nix_major_version@)',f'-DNIX_MINOR_VERSION=(@nix_minor_version@)',f'-DNIX_PATCH_VERSION=(@nix_patch_version@)',f'-DNIX_VERSION=(((0x@nix_major_version@)<<16) | ((0x@nix_minor_version@)<<8) | (0x@nix_patch_version@))',] + lib_extra_cppflags,include_directories: lib_inc,install: true,install_dir: get_option('libdir') / 'nix/plugins',name_prefix: '',)test_lib = static_library('testsupport',lib_src,include_directories: lib_inc,)
project('nix-plugin-pijul','cpp',license: 'LGPL-3.0',license_files: ['LICENSE'],version: configure_file(input: 'VERSION', output: 'VERSION', copy: true),default_options: {'cpp_std': 'c++20','werror': true,})nix_main_dep = dependency('nix-main', required: true)nix_store_dep = dependency('nix-store', required: true)nix_version_components = nix_main_dep.version().split('.')nix_major_version = nix_version_components[0]nix_minor_version = nix_version_components[1]nix_patch_version = nix_version_components[2]if nix_patch_version.contains('_')nix_patch_version = '99'endifsubdir('src')subdir('autotests')
add_compile_options(-O1 -ggdb)add_executable(DateTest datetest.cpp)target_link_libraries(DateTest PUBLIC PijulTesting)add_test(NAME DateTest COMMAND DateTest)add_executable(RepoTest repotest.cpp)target_link_libraries(RepoTest PUBLIC PijulTesting)add_test(NAME RepoTest COMMAND RepoTest)
datetest_exe = executable('datetest',['datetest.cpp'],link_with: [test_lib],include_directories: [lib_inc],)test('date', datetest_exe)repotest_exe = executable('repotest',['repotest.cpp'],link_with: [test_lib],include_directories: [lib_inc],)test('repo', repotest_exe)