rcw/CMakeLists.txt
2021-04-11 19:24:01 -07:00

63 lines
2.4 KiB
CMake

project(librcw)
cmake_minimum_required(VERSION 3.0.2)
include(GNUInstallDirs)
set(librcw_VERSION_STRING "000001000L")
set(librcw_VERSION_MAJOR 0)
set(librcw_VERSION_MINOR 1)
set(librcw_VERSION_REVISION 0)
set(INCLUDE_PATH ${CMAKE_SOURCE_DIR}/include)
include_directories(BEFORE SYSTEM "${INCLUDE_PATH}")
option(ENABLE_SHARED "Build shared library" ON)
option(ENABLE_PROFILING "Enable asan" OFF)
option(BUILD_TESTS "Enable testing" OFF)
mark_as_advanced(ENABLE_PROFILING)
set(SOURCE_LIST "src/async.cpp" "src/curl_easy_handle.cpp" "src/curl_header_list.cpp" "src/httpint.cpp" "src/read_write_cback.cpp" "src/response.cpp" "src/sync.cpp" "src/types.cpp")
if(ENABLE_SHARED)
add_library(rcw SHARED ${SOURCE_LIST})
set_target_properties(rcw PROPERTIES SOVERSION "${librcw_VERSION_MAJOR}.${librcw_VERSION_MINOR}")
set(LIBRCW_LIBFLAGS "-lrcw")
target_link_libraries(rcw "-lcurl -lrexy -lpthread")
else()
add_library(rcw STATIC ${SOURCE_LIST})
set(LIBRCW_LIBFLAGS "-lrcw -lcurl -lrexy -lpthread")
target_link_libraries(rcw "-lcurl -lrexy -lpthread")
endif()
set_target_properties(rcw PROPERTIES VERSION "${librcw_VERSION_MAJOR}.${librcw_VERSION_MINOR}.${librcw_VERSION_REVISION}")
if(ENABLE_PROFILING)
target_compile_options(rcw PRIVATE -fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls)
target_link_options(rcw PRIVATE -fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls)
endif()
if(BUILD_TESTS)
enable_testing()
add_subdirectory(tests)
endif()
set(LIBRCW_PUBLIC_HEADERS "include/async.hpp" "include/curl_easy_handle.hpp" "include/curl_header_list.hpp" "include/httpint.hpp" "include/rcw.hpp" "include/read_write_cback.hpp" "include/response.hpp" "include/string.hpp" "include/sync.hpp" "include/types.hpp")
target_compile_options(rcw PRIVATE -Wall -Wextra -pedantic -std=c++17)
install(TARGETS rcw
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/pc/librcw.pc"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
)
install(FILES ${LIBRCW_PUBLIC_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/rcw/")
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/pc/librcw.pc.cmake.in"
"${CMAKE_CURRENT_SOURCE_DIR}/pc/librcw.pc"
@ONLY
)
configure_file(
"${INCLUDE_PATH}/rcw.hpp.in"
"${INCLUDE_PATH}/rcw.hpp"
)
add_custom_target(uninstall cat install_manifest.txt | xargs rm)