#
# 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.
#

CFLAGS=/I. /W3 /WX

CVARSDLL=-DSCTP_DEBUG -DSCTP_SIMPLE_ALLOCATOR -DSCTP_PROCESS_LEVEL_LOCKS
CVARSDLL=$(CVARSDLL) -D__Userspace__ -D__Userspace_os_Windows
CVARSDLL=$(CVARSDLL) -DINET -DINET6
CVARSDLL=$(CVARSDLL) -D_LIB

LINKFLAGS=/LIBPATH:. Ws2_32.lib

usrsctp_OBJECTS = \
	user_environment.obj \
	user_mbuf.obj \
	user_recv_thread.obj \
	user_socket.obj \
	sctp_asconf.obj \
	sctp_auth.obj \
	sctp_bsd_addr.obj \
	sctp_callout.obj \
	sctp_cc_functions.obj \
	sctp_crc32.obj \
	sctp_indata.obj \
	sctp_input.obj \
	sctp_output.obj \
	sctp_pcb.obj \
	sctp_peeloff.obj \
	sctp_sha1.obj \
	sctp_ss_functions.obj \
	sctp_sysctl.obj \
	sctp_timer.obj \
	sctp_userspace.obj  \
	sctp_usrreq.obj \
	sctputil.obj \
	sctp6_usrreq.obj

usrsctp_HEADERS = \
	user_atomic.h \
	user_environment.h \
	user_inpcb.h \
	user_ip6_var.h \
	user_malloc.h \
	user_mbuf.h \
	user_recv_thread.h \
	user_route.h \
	user_socketvar.h \
	user_uma.h \
	user_queue.h \
	user_ip_icmp.h \
	user_ip6_var.h \
	netinet\sctp.h \
	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.h \
	netinet\sctp_os_userspace.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 \
	netinet6\sctp6_var.h

usrsctp.lib : $(usrsctp_OBJECTS)
	lib /out:usrsctp.lib $(LINKFLAGS) $(usrsctp_OBJECTS)

user_environment.obj : user_environment.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c user_environment.c

user_mbuf.obj  : user_mbuf.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c user_mbuf.c

user_recv_thread.obj: user_recv_thread.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c user_recv_thread.c

user_socket.obj : user_socket.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c user_socket.c

sctp_asconf.obj : netinet\sctp_asconf.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_asconf.c

sctp_auth.obj : netinet\sctp_auth.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_auth.c

sctp_bsd_addr.obj : netinet\sctp_bsd_addr.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_bsd_addr.c

sctp_callout.obj : netinet\sctp_callout.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_callout.c

sctp_cc_functions.obj : netinet\sctp_cc_functions.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_cc_functions.c

sctp_crc32.obj : netinet\sctp_crc32.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_crc32.c

sctp_indata.obj : netinet\sctp_indata.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_indata.c

sctp_input.obj : netinet\sctp_input.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_input.c

sctp_output.obj : netinet\sctp_output.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_output.c

sctp_pcb.obj : netinet\sctp_pcb.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_pcb.c

sctp_peeloff.obj : netinet\sctp_peeloff.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_peeloff.c

sctp_sha1.obj : netinet\sctp_sha1.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_sha1.c

sctp_ss_functions.obj : netinet\sctp_ss_functions.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_ss_functions.c

sctp_sysctl.obj : netinet\sctp_sysctl.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_sysctl.c

sctp_timer.obj : netinet\sctp_timer.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_timer.c

sctp_userspace.obj : netinet\sctp_userspace.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_userspace.c

sctp_usrreq.obj : netinet\sctp_usrreq.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctp_usrreq.c

sctputil.obj : netinet\sctputil.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet\sctputil.c

sctp6_usrreq.obj : netinet6\sctp6_usrreq.c $(usrsctp_HEADERS)
	cl $(CVARSDLL) $(CFLAGS) -c netinet6\sctp6_usrreq.c

clean:
	del *.obj
	del usrsctp.lib
