aboutsummaryrefslogtreecommitdiff
path: root/usrsctplib/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'usrsctplib/CMakeLists.txt')
-rw-r--r--usrsctplib/CMakeLists.txt210
1 files changed, 210 insertions, 0 deletions
diff --git a/usrsctplib/CMakeLists.txt b/usrsctplib/CMakeLists.txt
new file mode 100644
index 00000000..3cc425ea
--- /dev/null
+++ b/usrsctplib/CMakeLists.txt
@@ -0,0 +1,210 @@
+#
+# Copyright (C) 2015-2015 Oleg Alexeenkov
+# Copyright (C) 2015-2019 Felix Weinrank
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. Neither the name of the project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+
+
+#################################################
+# INCLUDE MODULES AND SETTINGS
+#################################################
+
+set(VERSION "1.0.0")
+
+set(prefix ${CMAKE_INSTALL_PREFIX})
+set(exec_prefix ${prefix})
+set(libdir ${exec_prefix}/lib)
+set(includedir ${prefix}/include/usrsctp)
+set(CMAKE_REQUIRED_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR})
+set(CMAKE_MACOSX_RPATH 1)
+
+include(CheckCCompilerFlag)
+
+add_definitions(-D__Userspace__)
+add_definitions(-D__Userspace_os_${CMAKE_SYSTEM_NAME})
+add_definitions(-DSCTP_SIMPLE_ALLOCATOR)
+add_definitions(-DSCTP_PROCESS_LEVEL_LOCKS)
+
+
+#################################################
+# OS DEPENDENT
+#################################################
+
+check_c_compiler_flag(-Wno-address-of-packed-member has_wno_address_of_packed_member)
+if (has_wno_address_of_packed_member)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-address-of-packed-member")
+endif ()
+
+check_c_compiler_flag(-Wno-deprecated-declarations has_wno_deprecated_declarations)
+if (has_wno_deprecated_declarations)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations")
+endif ()
+
+if (CMAKE_SYSTEM_NAME MATCHES "Linux")
+ add_definitions(-D_GNU_SOURCE)
+endif ()
+
+if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+ add_definitions(-U__FreeBSD__)
+endif ()
+
+if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
+ add_definitions(-U__APPLE__)
+ add_definitions(-D__APPLE_USE_RFC_2292)
+endif ()
+
+if (CMAKE_SYSTEM_NAME MATCHES "DragonFly")
+ add_definitions(-U__DragonFly__)
+endif ()
+
+if (CMAKE_SYSTEM_NAME MATCHES "NetBSD")
+ add_definitions(-U__NetBSD__)
+endif ()
+
+if (CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
+ add_definitions(-U__OpenBSD__)
+endif ()
+
+#################################################
+# MISC
+#################################################
+
+
+
+#################################################
+# LIBRARY FILES
+#################################################
+
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+list(APPEND usrsctp_root_headers
+ user_atomic.h
+ user_environment.h
+ user_inpcb.h
+ user_ip_icmp.h
+ user_ip6_var.h
+ user_malloc.h
+ user_mbuf.h
+ user_queue.h
+ user_recv_thread.h
+ user_route.h
+ user_socketvar.h
+ user_uma.h
+ usrsctp.h
+)
+
+list(APPEND usrsctp_netinet_headers
+ netinet/sctp_asconf.h
+ netinet/sctp_auth.h
+ netinet/sctp_bsd_addr.h
+ netinet/sctp_callout.h
+ netinet/sctp_constants.h
+ netinet/sctp_crc32.h
+ netinet/sctp_header.h
+ netinet/sctp_indata.h
+ netinet/sctp_input.h
+ netinet/sctp_lock_userspace.h
+ netinet/sctp_os_userspace.h
+ netinet/sctp_os.h
+ netinet/sctp_output.h
+ netinet/sctp_pcb.h
+ netinet/sctp_peeloff.h
+ netinet/sctp_process_lock.h
+ netinet/sctp_sha1.h
+ netinet/sctp_structs.h
+ netinet/sctp_sysctl.h
+ netinet/sctp_timer.h
+ netinet/sctp_uio.h
+ netinet/sctp_var.h
+ netinet/sctputil.h
+ netinet/sctp.h
+)
+
+list(APPEND usrsctp_netinet6_headers
+ netinet6/sctp6_var.h
+)
+
+list(APPEND usrsctp_headers
+ ${usrsctp_root_headers}
+ ${usrsctp_netinet_headers}
+ ${usrsctp_netinet6_headers}
+)
+
+list(APPEND usrsctp_sources
+ netinet/sctp_asconf.c
+ netinet/sctp_auth.c
+ netinet/sctp_bsd_addr.c
+ netinet/sctp_callout.c
+ netinet/sctp_cc_functions.c
+ netinet/sctp_crc32.c
+ netinet/sctp_indata.c
+ netinet/sctp_input.c
+ netinet/sctp_output.c
+ netinet/sctp_pcb.c
+ netinet/sctp_peeloff.c
+ netinet/sctp_sha1.c
+ netinet/sctp_ss_functions.c
+ netinet/sctp_sysctl.c
+ netinet/sctp_timer.c
+ netinet/sctp_userspace.c
+ netinet/sctp_usrreq.c
+ netinet/sctputil.c
+ netinet6/sctp6_usrreq.c
+ user_environment.c
+ user_mbuf.c
+ user_recv_thread.c
+ user_socket.c
+)
+
+add_library(usrsctp SHARED ${usrsctp_sources} ${usrsctp_headers})
+add_library(usrsctp-static STATIC ${usrsctp_sources} ${usrsctp_headers})
+
+target_include_directories(usrsctp PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+target_include_directories(usrsctp-static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+
+if (WIN32)
+ message(STATUS "link library: ws2_32")
+ target_link_libraries(usrsctp ws2_32 iphlpapi.lib)
+ target_link_libraries(usrsctp-static ws2_32 iphlpapi.lib)
+endif ()
+
+set_target_properties(usrsctp-static PROPERTIES OUTPUT_NAME "usrsctp")
+set_target_properties(usrsctp PROPERTIES IMPORT_SUFFIX "_import.lib")
+set_target_properties(usrsctp PROPERTIES SOVERSION 1 VERSION 1.0.0)
+
+if (NOT DEFINED CMAKE_INSTALL_LIBDIR)
+ SET(CMAKE_INSTALL_LIBDIR lib)
+endif ()
+
+
+#################################################
+# INSTALL LIBRARY AND HEADER
+#################################################
+
+install(TARGETS usrsctp usrsctp-static DESTINATION ${CMAKE_INSTALL_LIBDIR})
+install(FILES usrsctp.h DESTINATION include)