summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt67
1 files changed, 67 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..727108f
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,67 @@
+cmake_minimum_required(VERSION 3.19)
+
+project(
+ libsock
+ VERSION 1.0.0
+ DESCRIPTION "Minimal C++ socket library")
+
+add_compile_definitions(LIBSOCK_VERSION="${PROJECT_VERSION}")
+
+include(CTest)
+include(GNUInstallDirs)
+
+set(PREFIX ${CMAKE_INSTALL_PREFIX})
+set(INCLUDE ${CMAKE_INSTALL_FULL_INCLUDEDIR})
+set(LIBDIR ${CMAKE_INSTALL_FULL_LIBDIR})
+
+configure_file(libsock.pc.in libsock.pc @ONLY)
+
+set(CMAKE_CXX_STANDARD 23)
+add_compile_options(
+ -Wall
+ -Wextra
+ -Wpedantic
+ -Wno-unused-parameter
+ -Wno-unused-value
+ -Wno-missing-field-initializers
+ -Wno-narrowing
+ -Wno-pointer-arith)
+set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
+
+if(CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES DEBUG)
+ message(STATUS "Configuring libsock in Debug")
+ add_compile_definitions(LIBSOCK_DEBUG)
+else()
+ add_compile_options(-O3)
+ message(STATUS "Configuring libsock in Release")
+endif()
+
+file(GLOB_RECURSE SRCFILES CONFIGURE_DEPENDS "src/*.cpp" "include/*.hpp")
+file(GLOB_RECURSE PUBLIC_HEADERS CONFIGURE_DEPENDS "include/*.hpp")
+
+find_package(PkgConfig REQUIRED)
+
+add_library(libsock SHARED ${SRCFILES})
+target_include_directories(
+ libsock
+ PUBLIC "./include"
+ PRIVATE "./src")
+set_target_properties(libsock PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION 1)
+
+# tests add_custom_target(tests)
+#
+# add_executable(libsock_socket "tests/socket.cpp")
+# target_link_libraries(libsock_socket PRIVATE libsock) add_test( NAME "Socket"
+# WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests COMMAND libsock_socket "socket")
+# add_dependencies(tests libsock_socket)
+#
+# add_executable(libsock_connection "tests/connection.cpp")
+# target_link_libraries(libsock_connection PRIVATE libsock) add_test( NAME
+# "Connection" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests COMMAND
+# libsock_connection "connection") add_dependencies(tests libsock_connection)
+#
+# Installation
+install(TARGETS libsock)
+install(DIRECTORY "include/libsock" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+install(FILES ${CMAKE_BINARY_DIR}/libsock.pc
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)