#
# Copyright (C) 2011-2012 Michael Tuexen
#
# 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.
#

AUTOMAKE_OPTIONS       = subdir-objects
EXTRA_DIST             = Makefile.nmake
lib_LTLIBRARIES        = libusrsctp.la
libusrsctp_la_SOURCES  = user_atomic.h \
                         user_environment.c user_environment.h \
                         user_inpcb.h \
                         user_ip_icmp.h \
                         user_ip6_var.h \
                         user_malloc.h \
                         user_mbuf.c \
                         user_mbuf.h \
                         user_queue.h \
                         user_recv_thread.c user_recv_thread.h \
                         user_route.h \
                         user_sctp_timer_iterate.c \
                         user_socket.c \
                         user_socketvar.h \
                         user_uma.h \
                         netinet/sctp.h \
                         netinet/sctp_asconf.c netinet/sctp_asconf.h \
                         netinet/sctp_auth.c netinet/sctp_auth.h \
                         netinet/sctp_bsd_addr.c netinet/sctp_bsd_addr.h \
                         netinet/sctp_callout.c netinet/sctp_callout.h \
                         netinet/sctp_cc_functions.c \
                         netinet/sctp_constants.h \
                         netinet/sctp_crc32.c netinet/sctp_crc32.h \
                         netinet/sctp_header.h \
                         netinet/sctp_indata.c netinet/sctp_indata.h \
                         netinet/sctp_input.c netinet/sctp_input.h \
                         netinet/sctp_lock_userspace.h \
                         netinet/sctp_os.h \
                         netinet/sctp_os_userspace.h \
                         netinet/sctp_output.c netinet/sctp_output.h \
                         netinet/sctp_pcb.c netinet/sctp_pcb.h \
                         netinet/sctp_peeloff.c netinet/sctp_peeloff.h \
                         netinet/sctp_process_lock.h \
                         netinet/sctp_sha1.c netinet/sctp_sha1.h \
                         netinet/sctp_ss_functions.c \
                         netinet/sctp_structs.h \
                         netinet/sctp_sysctl.c netinet/sctp_sysctl.h \
                         netinet/sctp_userspace.c \
                         netinet/sctp_timer.c netinet/sctp_timer.h \
                         netinet/sctp_uio.h \
                         netinet/sctp_usrreq.c \
                         netinet/sctp_var.h \
                         netinet/sctputil.c netinet/sctputil.h \
                         netinet6/sctp6_var.h \
                         netinet6/sctp6_usrreq.c
libusrsctp_la_CFLAGS = $(LIBCFLAGS)
libusrsctp_la_LDFLAGS = -version-info 1:0:0
include_HEADERS = usrsctp.h

