You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
1.8 KiB
CMake

# webcc
# Don't use any deprecated definitions (e.g., io_service).
add_compile_definitions(BOOST_ASIO_NO_DEPRECATED)
if(MSVC)
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
endif()
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/config.h.in"
"${CMAKE_CURRENT_BINARY_DIR}/config.h"
)
# Adhere to GNU filesystem layout conventions.
include(GNUInstallDirs)
file(GLOB SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/*.cc)
file(GLOB HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/*.h)
if(NOT WEBCC_ENABLE_GZIP)
list(REMOVE_ITEM SOURCES "gzip.cc")
list(REMOVE_ITEM HEADERS "gzip.h")
endif()
set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Add a postfix to the debug library")
mark_as_advanced(CMAKE_DEBUG_POSTFIX)
set(TARGET webcc)
add_library(${TARGET} STATIC ${SOURCES} ${HEADERS})
# Link to pthread for Linux.
# See: https://stackoverflow.com/a/29871891
if(UNIX)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(${TARGET} Threads::Threads)
endif()
# Boost
target_link_libraries(${TARGET} ${Boost_LIBRARIES})
# ZLIB
if(WEBCC_ENABLE_GZIP)
# The imported target ZLIB::ZLIB could be used instead.
target_link_libraries(${TARGET} ${ZLIB_LIBRARIES})
endif()
# OpenSSL
if(WEBCC_ENABLE_SSL)
target_link_libraries(${TARGET} ${OPENSSL_LIBRARIES})
if(WIN32)
target_link_libraries(${TARGET} crypt32)
endif()
endif()
# Install lib and header files.
# On Linux, if CMAKE_INSTALL_PREFIX is ~, the lib (libwebcc.a) will be installed
# to ~/lib and header files will be installed to ~/include.
install(TARGETS ${TARGET} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/webcc)
install(FILES ${PROJECT_BINARY_DIR}/webcc/config.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/webcc)