Files
c-libs/CMakeLists.txt

75 lines
2.3 KiB
CMake

cmake_minimum_required(VERSION 3.15)
project(
c-libs
DESCRIPTION "C Libraries for recreational Programming."
LANGUAGES C ASM)
add_library(c-libs ${CMAKE_CURRENT_SOURCE_DIR}/src/dyn-arr.c
${CMAKE_CURRENT_SOURCE_DIR}/src/string-view.c)
target_include_directories(
c-libs PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>)
add_executable(strings ${CMAKE_CURRENT_SOURCE_DIR}/app/strings.c)
target_link_libraries(strings PRIVATE c-libs)
add_executable(rc ${CMAKE_CURRENT_SOURCE_DIR}/app/rc.c)
target_link_libraries(rc PRIVATE c-libs)
add_executable(nolibc ${CMAKE_CURRENT_SOURCE_DIR}/app/nolibc.c
${CMAKE_CURRENT_SOURCE_DIR}/app/entry.s)
target_compile_options(
nolibc PRIVATE -fno-asynchronous-unwind-tables -fno-unwind-tables
-fno-stack-protector -ffunction-sections -fdata-sections)
target_link_options(
nolibc
PRIVATE
-nostdlib
-static
-T
${CMAKE_CURRENT_SOURCE_DIR}/app/nolibc.ld
-Wl,--strip-all
-Wl,--no-dynamic-linker
-Wl,--gc-sections)
include(CTest)
if(BUILD_TESTING)
find_package(PkgConfig REQUIRED)
pkg_check_modules(CRITERION REQUIRED IMPORTED_TARGET GLOBAL criterion)
add_executable(tests ${CMAKE_CURRENT_SOURCE_DIR}/test/darr.c
${CMAKE_CURRENT_SOURCE_DIR}/test/string-view.c)
target_link_libraries(tests c-libs PkgConfig::CRITERION)
add_test(NAME all_tests COMMAND tests)
endif()
# Install Part #################################################################
include(CMakePackageConfigHelpers)
include(GNUInstallDirs)
install(
TARGETS c-libs
EXPORT c-libs
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/c-libs
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(
EXPORT c-libs
FILE c-libsTargets.cmake
NAMESPACE c-libs::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/c-libs)
configure_package_config_file(
${CMAKE_CURRENT_SOURCE_DIR}/c-libsConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/c-libsConfig.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/c-libs)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/c-libsConfig.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/c-libs)