#
#  Makefile for nsc_tcp
#
#  ** This file was automatically generated by the command:
#  opp_makemake -f -N
#

# Name of target to be created (-o option)
TARGET = nsc_tcp

# User interface (uncomment one) (-u option)
# USERIF_LIBS=$(CMDENV_LIBS)
USERIF_LIBS=$(TKENV_LIBS)

# .ned or .h include paths with -I
INCLUDE_PATH=

# misc additional object and library files to link
EXTRA_OBJS=

# object files from other directories to link with (wildcard needed to prevent "no such file *.o" errors)
EXT_DIR_OBJS=

# time stamps of other directories (used as dependency)
EXT_DIR_TSTAMPS=

# Additional libraries (-L option -l option)
LIBS=

#------------------------------------------------------------------------------

# Generic definitions. To avoid redundancies across Makefiles, you can
# import them from a common file -- see opp_makemake -c flag.
NEDC=/work/900/nsc/omnet/omnetpp-3.2p1/bin/nedtool
MSGC=opp_msgc
CXX=g++
CC=gcc
AR=ar cr
SHLIB_LD=g++ -shared 
MAKEDEPEND=opp_makedep -Y --objdirtree

CFLAGS=-g   -DWITH_PARSIM -DWITH_NETBUILDER -I/work/900/nsc/sim
NEDCFLAGS=-Wno-unused
LDFLAGS= -Wl,--export-dynamic
EXE_SUFFIX=

WITH_PARSIM=yes
WITH_NETBUILDER=yes

OMNETPP_INCL_DIR=/work/900/nsc/omnet/omnetpp-3.2p1/include
OMNETPP_LIB_DIR=/work/900/nsc/omnet/omnetpp-3.2p1/lib

TK_LIBS=-L/usr/X11R6/lib -lX11 -ltk8.4 -ltcl8.4
MPI_LIBS=
XML_LIBS=-lxml2
SYS_LIBS=-ldl -lstdc++ 
SYS_LIBS_PURE=-ldl -lsocket -lnsl -lm $(shell $(CXX) -print-file-name=libstdc++.a)

# User interface libs
CMDENV_LIBS=-lenvir -lcmdenv
TKENV_LIBS=-lenvir -ltkenv $(TK_LIBS)

# Simulation kernel
KERNEL_LIBS=-lsim_std

ifeq ($(WITH_NETBUILDER),yes)
KERNEL_LIBS += -lnedxml $(XML_LIBS)
endif

ifeq ($(WITH_PARSIM),yes)
KERNEL_LIBS += $(MPI_LIBS)
endif

# Simulation kernel and user interface libraries
OMNETPP_LIBS=-L$(OMNETPP_LIB_DIR) $(USERIF_LIBS) $(KERNEL_LIBS) $(SYS_LIBS)

COPTS=$(CFLAGS) $(INCLUDE_PATH) -I$(OMNETPP_INCL_DIR)
NEDCOPTS=$(COPTS) $(NEDCFLAGS)
MSGCOPTS= $(INCLUDE_PATH)

#------------------------------------------------------------------------------

# subdirectories to recurse into
SUBDIRS= 

# object files in this directory
OBJS= ByteArrayMessage_m.o IPControlInfo_m.o IPProtocolId_m.o IPv6ControlInfo_m.o TCPCommand_m.o ByteArrayMessage.o IPAddress.o IPv6Address.o IPvXAddress.o NSC_TCP.o TCPSocket.o TcpTestClient.o

# header files generated (from msg files)
GENERATEDHEADERS= ByteArrayMessage_m.h IPControlInfo_m.h IPProtocolId_m.h IPv6ControlInfo_m.h TCPCommand_m.h

#------------------------------------------------------------------------------

$(TARGET): $(OBJS) $(EXTRA_OBJS) $(EXT_DIR_TSTAMPS) Makefile
	$(CXX) $(LDFLAGS) $(OBJS) $(EXTRA_OBJS) $(EXT_DIR_OBJS) $(LIBS) $(OMNETPP_LIBS) -o $(TARGET)
	echo>.tstamp

$(OBJS) : $(GENERATEDHEADERS)


purify: $(OBJS) $(EXTRA_OBJS) $(EXT_DIR_TSTAMPS) Makefile
	purify $(CXX) $(LDFLAGS) $(OBJS) $(EXTRA_OBJS) $(EXT_DIR_OBJS) $(LIBS) -L$(OMNETPP_LIB_DIR) $(KERNEL_LIBS) $(USERIF_LIBS) $(SYS_LIBS_PURE) -o $(TARGET).pure

.PHONY: subdirs $(SUBDIRS)

subdirs: $(SUBDIRS)

ByteArrayMessage_m.o: ByteArrayMessage_m.cc
	$(CXX) -c $(NEDCOPTS) ByteArrayMessage_m.cc

ByteArrayMessage_m.cc ByteArrayMessage_m.h: ByteArrayMessage.msg
	$(MSGC) $(MSGCOPTS) ByteArrayMessage.msg

IPControlInfo_m.o: IPControlInfo_m.cc
	$(CXX) -c $(NEDCOPTS) IPControlInfo_m.cc

IPControlInfo_m.cc IPControlInfo_m.h: IPControlInfo.msg
	$(MSGC) $(MSGCOPTS) IPControlInfo.msg

IPProtocolId_m.o: IPProtocolId_m.cc
	$(CXX) -c $(NEDCOPTS) IPProtocolId_m.cc

IPProtocolId_m.cc IPProtocolId_m.h: IPProtocolId.msg
	$(MSGC) $(MSGCOPTS) IPProtocolId.msg

IPv6ControlInfo_m.o: IPv6ControlInfo_m.cc
	$(CXX) -c $(NEDCOPTS) IPv6ControlInfo_m.cc

IPv6ControlInfo_m.cc IPv6ControlInfo_m.h: IPv6ControlInfo.msg
	$(MSGC) $(MSGCOPTS) IPv6ControlInfo.msg

TCPCommand_m.o: TCPCommand_m.cc
	$(CXX) -c $(NEDCOPTS) TCPCommand_m.cc

TCPCommand_m.cc TCPCommand_m.h: TCPCommand.msg
	$(MSGC) $(MSGCOPTS) TCPCommand.msg

ByteArrayMessage.o: ByteArrayMessage.cc
	$(CXX) -c $(COPTS) ByteArrayMessage.cc

IPAddress.o: IPAddress.cc
	$(CXX) -c $(COPTS) IPAddress.cc

IPv6Address.o: IPv6Address.cc
	$(CXX) -c $(COPTS) IPv6Address.cc

IPvXAddress.o: IPvXAddress.cc
	$(CXX) -c $(COPTS) IPvXAddress.cc

NSC_TCP.o: NSC_TCP.cc
	$(CXX) -c $(COPTS) NSC_TCP.cc

TCPSocket.o: TCPSocket.cc
	$(CXX) -c $(COPTS) TCPSocket.cc

TcpTestClient.o: TcpTestClient.cc
	$(CXX) -c $(COPTS) TcpTestClient.cc


#doc: neddoc doxy

#neddoc:
#	opp_neddoc -a

#doxy: doxy.cfg
#	doxygen doxy.cfg

generateheaders: $(GENERATEDHEADERS)
	for i in $(SUBDIRS); do (cd $$i && $(MAKE) generateheaders) || exit 1; done

clean:
	rm -f $(TARGET)$(EXE_SUFFIX)
	rm -f *.o *_n.cc *_n.h *_m.cc *_m.h .tstamp
	rm -f *.vec *.sca
	for i in $(SUBDIRS); do (cd $$i && $(MAKE) clean); done

depend:
	$(MAKEDEPEND) $(INCLUDE_PATH) -- *.cc
	# $(MAKEDEPEND) $(INCLUDE_PATH) -fMakefile.in -- *.cc
	for i in $(SUBDIRS); do (cd $$i && $(MAKE) depend) || exit 1; done

makefiles:
	# recreate Makefile
	opp_makemake -f  -N 
	for i in $(SUBDIRS); do (cd $$i && $(MAKE) makefiles) || exit 1; done

makefile-ins:
	# recreate Makefile.in
	opp_makemake -f -m  -N 
	for i in $(SUBDIRS); do (cd $$i && $(MAKE) makefile-ins) || exit 1; done

# "re-makemake" and "re-makemake-m" are deprecated, historic names of the above two targets
re-makemake: makefiles
re-makemake-m: makefile-ins


# DO NOT DELETE THIS LINE -- make depend depends on it.
ByteArrayMessage.o: ByteArrayMessage.cc \
  ByteArrayMessage.h
IPAddress.o: IPAddress.cc \
  IPAddress.h \
  INETDefs.h
IPv6Address.o: IPv6Address.cc \
  IPv6Address.h \
  InterfaceIdentifier.h \
  INETDefs.h
IPvXAddress.o: IPvXAddress.cc \
  IPvXAddress.h \
  INETDefs.h \
  IPAddress.h \
  IPv6Address.h
NSC_TCP.o: NSC_TCP.cc \
  NSC_TCP.h \
  IPControlInfo.h \
  IPv6ControlInfo.h \
  ByteArrayMessage.h \
  INETDefs.h \
  IPvXAddress.h \
  IPAddress.h \
  IPv6Address.h
TCPSocket.o: TCPSocket.cc \
  TCPSocket.h \
  IPvXAddress.h \
  INETDefs.h \
  IPAddress.h \
  IPv6Address.h
TcpTestClient.o: TcpTestClient.cc \
  INETDefs.h \
  TCPSocket.h \
  IPvXAddress.h \
  IPAddress.h \
  IPv6Address.h
