cmake: Define a library version for the noop lib
[socket_wrapper.git] / src / CMakeLists.txt
index 4b22d77f9d05395b7908bbe355c843f759657364..a1dbfafa27d7e481619b12a8e3336202939502c3 100644 (file)
@@ -1,31 +1,70 @@
 project(libsocket_wrapper C)
 
-include_directories(${CMAKE_BINARY_DIR})
-
 add_library(socket_wrapper SHARED socket_wrapper.c)
+target_include_directories(socket_wrapper
+                           PRIVATE
+                               ${CMAKE_BINARY_DIR})
+target_compile_options(socket_wrapper
+                       PRIVATE
+                          ${DEFAULT_C_COMPILE_FLAGS}
+                          -D_GNU_SOURCE)
+target_link_libraries(socket_wrapper
+                      PRIVATE ${SWRAP_REQUIRED_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
 
-target_link_libraries(socket_wrapper ${SWRAP_REQUIRED_LIBRARIES})
+set_target_properties(socket_wrapper
+                      PROPERTIES
+                          VERSION ${LIBRARY_VERSION}
+                          SOVERSION ${LIBRARY_SOVERSION})
+if (DEFINED DEFAULT_LINK_FLAGS)
+    set_target_properties(socket_wrapper
+                          PROPERTIES
+                              LINK_FLAGS ${DEFAULT_LINK_FLAGS})
+endif()
 
-install(
-  TARGETS
-    socket_wrapper
-  RUNTIME DESTINATION ${BIN_INSTALL_DIR}
-  LIBRARY DESTINATION ${LIB_INSTALL_DIR}
-  ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
+install(TARGETS socket_wrapper
+        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
 )
 
-set_target_properties(
-  socket_wrapper
-    PROPERTIES
-      VERSION
-        ${LIBRARY_VERSION}
-      SOVERSION
-        ${LIBRARY_SOVERSION}
-)
+set(SOCKET_WRAPPER_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}socket_wrapper${CMAKE_SHARED_LIBRARY_SUFFIX}" PARENT_SCOPE)
 
-# This needs to be at the end
-if (POLICY CMP0026)
-    cmake_policy(SET CMP0026 OLD)
+add_library(socket_wrapper_noop SHARED socket_wrapper_noop.c)
+target_include_directories(socket_wrapper_noop
+                           PRIVATE
+                               ${socket_wrapper_BINARY_DIR}
+                           PUBLIC
+                               $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+                               $<INSTALL_INTERFACE:include>)
+target_compile_options(socket_wrapper_noop
+                       PRIVATE
+                          ${DEFAULT_C_COMPILE_FLAGS}
+                          -D_GNU_SOURCE)
+target_link_libraries(socket_wrapper_noop
+                      PRIVATE ${SWRAP_REQUIRED_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
+set_target_properties(socket_wrapper_noop
+                      PROPERTIES
+                          VERSION ${NOOP_LIBRARY_VERSION}
+                          SOVERSION ${NOOP_LIBRARY_SOVERSION})
+if (DEFINED DEFAULT_LINK_FLAGS)
+    set_target_properties(socket_wrapper_noop
+                          PROPERTIES
+                              LINK_FLAGS ${DEFAULT_LINK_FLAGS})
 endif()
-get_target_property(SWRAP_LOCATION socket_wrapper LOCATION)
-set(SOCKET_WRAPPER_LOCATION ${SWRAP_LOCATION} PARENT_SCOPE)
+
+install(TARGETS socket_wrapper_noop
+        EXPORT socket_wrapper_noop-config
+        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+)
+
+install(EXPORT socket_wrapper_noop-config
+        DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/socket_wrapper)
+
+install(
+    FILES
+        ${CMAKE_CURRENT_SOURCE_DIR}/socket_wrapper.h
+    DESTINATION
+        ${CMAKE_INSTALL_INCLUDEDIR}
+)