104 lines
2.8 KiB
CMake
104 lines
2.8 KiB
CMake
|
cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
|
||
|
|
||
|
# add project files
|
||
|
set(HEADER_FILES
|
||
|
data/package.h
|
||
|
data/database.h
|
||
|
data/config.h
|
||
|
data/lockable.h
|
||
|
data/siglevel.h
|
||
|
parser/aur.h
|
||
|
parser/package.h
|
||
|
parser/database.h
|
||
|
parser/config.h
|
||
|
parser/utils.h
|
||
|
parser/binary.h)
|
||
|
set(SRC_FILES
|
||
|
data/package.cpp
|
||
|
data/database.cpp
|
||
|
data/config.cpp
|
||
|
data/lockable.cpp
|
||
|
algo/search.cpp
|
||
|
algo/buildorder.cpp
|
||
|
algo/licenses.cpp
|
||
|
parser/aur.cpp
|
||
|
parser/package.cpp
|
||
|
parser/database.cpp
|
||
|
parser/config.cpp
|
||
|
parser/utils.cpp
|
||
|
parser/binary.cpp
|
||
|
parser/siglevel.cpp)
|
||
|
set(TEST_HEADER_FILES tests/parser_helper.h)
|
||
|
set(TEST_SRC_FILES tests/cppunit.cpp tests/parser.cpp tests/parser_binary.cpp tests/parser_helper.cpp tests/data.cpp
|
||
|
tests/utils.cpp)
|
||
|
|
||
|
# meta data
|
||
|
set(META_PROJECT_NAME libpkg)
|
||
|
set(META_PROJECT_TYPE library)
|
||
|
set(META_PROJECT_VARNAME LIBPKG)
|
||
|
set(META_APP_NAME "Inofficial Arch Linux package library")
|
||
|
set(META_APP_DESCRIPTION "C++ library to parse Arch Linux packages and databases")
|
||
|
set(META_VERSION_MAJOR 0)
|
||
|
set(META_VERSION_MINOR 0)
|
||
|
set(META_VERSION_PATCH 1)
|
||
|
|
||
|
# find c++utilities
|
||
|
set(CONFIGURATION_PACKAGE_SUFFIX
|
||
|
""
|
||
|
CACHE STRING "sets the suffix for find_package() calls to packages configured via c++utilities")
|
||
|
find_package(c++utilities${CONFIGURATION_PACKAGE_SUFFIX} 5.2.0 REQUIRED)
|
||
|
use_cpp_utilities(VISIBILITY PUBLIC)
|
||
|
|
||
|
# use std::filesystem
|
||
|
include(3rdParty)
|
||
|
use_standard_filesystem(VISIBILITY PUBLIC)
|
||
|
|
||
|
# find reflective-rapidjson
|
||
|
find_package(reflective_rapidjson${CONFIGURATION_PACKAGE_SUFFIX} REQUIRED)
|
||
|
use_reflective_rapidjson(VISIBILITY PUBLIC)
|
||
|
|
||
|
# find 3rd party libraries zlib
|
||
|
use_zlib()
|
||
|
# libarchive
|
||
|
find_package(LibArchive)
|
||
|
if (NOT LibArchive_FOUND)
|
||
|
message(FATAL_ERROR "Unable to find libarchive.")
|
||
|
endif ()
|
||
|
add_library(libarchive UNKNOWN IMPORTED)
|
||
|
set_property(TARGET libarchive PROPERTY IMPORTED_LOCATION "${LibArchive_LIBRARIES}")
|
||
|
set_property(TARGET libarchive PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${LibArchive_INCLUDE_DIRS}")
|
||
|
use_target(TARGET_NAME libarchive)
|
||
|
|
||
|
# apply basic configuration
|
||
|
include(BasicConfig)
|
||
|
|
||
|
# trigger code generator for tests because the tests already contain structs to be (de)serialized
|
||
|
include(ReflectionGenerator)
|
||
|
add_reflection_generator_invocation(
|
||
|
INPUT_FILES
|
||
|
data/database.h
|
||
|
data/package.h
|
||
|
data/config.h
|
||
|
data/siglevel.h
|
||
|
parser/aur.h
|
||
|
CLANG_OPTIONS_FROM_TARGETS
|
||
|
"${META_TARGET_NAME}"
|
||
|
CLANG_OPTIONS_FROM_DEPENDENCIES
|
||
|
"${PUBLIC_LIBRARIES};${PRIVATE_LIBRARIES}"
|
||
|
GENERATORS
|
||
|
json
|
||
|
binary
|
||
|
OUTPUT_LISTS
|
||
|
SRC_FILES
|
||
|
JSON_VISIBILITY
|
||
|
${META_PROJECT_VARNAME}_EXPORT
|
||
|
BINARY_VISBILITY
|
||
|
${META_PROJECT_VARNAME}_EXPORT)
|
||
|
|
||
|
# include modules to apply configuration
|
||
|
include(WindowsResources)
|
||
|
include(LibraryTarget)
|
||
|
include(TestTarget)
|
||
|
include(Doxygen)
|
||
|
include(ConfigHeader)
|