######################################################################## # # # ***** ***** # # ***** ***** # # ***** ***** # # ***** ***** # # *************** *************** # # ***************** ***************** # # *************** *************** # # ***** ***** TheNetNode # # ***** ***** Portable # # ***** ***** Network # # ***** ***** Software # # # # File makefile (maintained by: DF6LN) # # # # This file is part of "TheNetNode" - Software Package # # # # Copyright (C) 1998 - 2006 NORD> MS-DOS GCC Cross-Compiler von J.J. van der Heijden - verfuegbar # unter sunsite.unc.edu:/pub/Linux/devel/msdos # ifeq ($(SYSTEM), LINUX) # # Der native gcc dieser Architektur, er wird fuer die Uebersetzung des # Cleaners benoetigt, da dieser beim Crosscompilieren nicht fuer das Zielsystem, # sondern fuer den Host compiliert werden muss ! # HOSTCC := gcc # # Der zum Uebersetzen genutzte Compiler kann beim make-Aufruf uebersteuert werden # (make CC=gcc-foobar). Ist CC nicht definiert, dann nehmen wir den gcc des Host. # # ifeq ($(CC), "") CC := gcc endif CC_GO32 := gcc-go32 else CC_GO32 := gcc endif # # Compiler-Flags # # VORSICHT! TNN ist nicht getestet mit eingeschalteten Optimierungen, ausser # an den notwendigen Stellen (VANESSA). Option -O2 (oder aehnlich) also # keinesfalls anfuegen. # CFLAGS := -funsigned-char $(WARNINGS) # Wegkommentieren, wenn fuer Pentium uebersetzt werden soll # CFLAGS += -mcpu=pentium # Die folgende Zeile wegkommentieren, wenn fuer 386 uebersetzt werden soll # CFLAGS += -m386 # Fuer ganz mutige : Compiler-Optimierungen einschalten (siehe oben !!!) # CFLAGS += -O2 # Die folgende Zeile kommentieren, wenn keine Debugsymbole gewuenscht sind. # Noch mehr Debug gibt es mit -g3, weniger mit -g1, -g entspricht -g2. (Linux) CFLAGS += -g ifeq ($(SYSTEM), LINUX) CFLAGS += -pipe -Dstricmp=strcasecmp -Dstrnicmp=strncasecmp #CFLAGS += -pedantic #CFLAGS += -O endif CFLAGS += -I$(HDR) -I$(SRC) # # Nun haben wir die gemeinsamen Compiler-Flags fuer GO32 und fuer Linux. # Eventuell trotz obiger Warnung eingeschaltete Optimierungen werden entfernt. # Dazu kommen jetzt noch die Systemspezifischen Include-Verzeichnisse und fuer # die Linux-TNN die von TNN zu verwendenden Verzeichnisse. # CFLAGS := $(subst -O ,,$(subst -O2 ,,$(subst -O3 ,,$(CFLAGS)))) CFLAGS_GO32 := $(CFLAGS) -I$(GO32) CFLAGS_LIN := $(CFLAGS) -I$(LIN) CFLAGS_LIN += -DINIPATH=\"$(patsubst %//,%/,$(INSTCFG)/)\" CFLAGS_LIN += -DTEXTPATH=\"$(TNNDIR)\" CFLAGS_LIN += -DTEXTCMDPATH=\"$(TNNTEXTCMD)\" CFLAGS_LIN += -DUSEREXEPATH=\"$(TNNUSEREXE)\" CFLAGS_LIN += -DSYSEXEPATH=\"$(TNNSYSEXE)\" CFLAGS_LIN += -DPACSATPATH=\"$(TNNPACSAT)\" CFLAGS_LIN += -DMSGPATH=\"$(TNNMSG)\" # MIPS-Systeme bekommen noch ein besonderes Kennzeichen ifeq ($(MIPS), YES) CFLAGS_LIN += -DMIPS=$(MIPS) endif # # Source-, Header- und Object-Files # L3SRC := l3inp.c l3misc.c l3nbr.c l3netrom.c l3thenet.c L3SRC += l3rtt.c l3tab.c l3var.c l3vc.c L3TCP += l3sock.c l3tcp.c l1tcpip.c l1telnet.c l1httpd.c l1ipconv.c l1irc.c COMMONSRC := buffer.c callstr.c cvs_cmds.c cvs_cvsd.c cvs_serv.c COMMONSRC += cvs_cvrt.c file.c global.c graph.c COMMONSRC += l2dama.c l2misc.c l2rx.c l2stma.c l2timer.c l2tx.c COMMONSRC += l3ip.c $(L3SRC) $(L3TCP) l4.c l7.c l7ccp.c l7cmds.c COMMONSRC += l7conn.c l7host.c l7hstcmd.c l7ip.c l7moni.c COMMONSRC += l7showl3.c l7time.c l7utils.c main.c mh.c COMMONSRC += pacsat.c pacserv.c profil.c profiler.c speech.c VERSRC := $(SRC)/version.c LINUXSRCS := $(patsubst %,$(SRC)/%,$(COMMONSRC)) LINUXSRCS += $(LIN)/init.c $(LIN)/linux.c $(LIN)/l1linux.c LINUXSRCS += $(LIN)/axipx.c $(LIN)/ax25ip.c $(LIN)/kernelip.c LINUXSRCS += $(LIN)/kernelax.c $(LIN)/6pack.c LINUXSRCS += $(LIN)/l1attach.c $(LIN)/ostcpip.c $(LIN)/osipconv.c LINUXOBJS := $(LINUXSRCS:.c=.o) VANSRC := $(LIN)/vanlinux.c VANOBJ := $(LIN)/vanlinux.o VEROBJL := $(SRC)/version.o L3SRCS := $(patsubst %,$(SRC)/%,$(L3SRC)) L3OBJL := $(L3SRCS:.c=.o) GO32_SRCS := $(GO32)/api.c $(GO32)/go32.c $(GO32)/16550.c GO32_SRCS += $(GO32)/l1.c $(patsubst %,$(SRC)/%,$(COMMONSRC)) GO32_OBJS := $(GO32_SRCS:.c=.obj) GO32L1 := $(GO32)/extdev.c $(GO32)/kiss.c $(GO32)/loop.c GO32L1 += $(GO32)/par.c $(GO32)/scc.c $(GO32)/tokenrng.c GO32L1 += $(GO32)/vanessa.c $(GO32)/kiss.h $(GO32)/vanessa.h VEROBJG := $(SRC)/version.obj L3OBJG := $(L3SRCS:.c=.obj) HDRNAMS := all.h allmodif.h conversd.h cvs_cmds.h HDRNAMS += function.h global.h host.h icmp.h ip.h ipv.h l2.h l2s.h HDRNAMS += l3sock.h l3tcp.h l1httpd.h l1tcpip.h l1telnet.h HDRNAMS += l3global.h l3thenet.h l4.h l7.h profil.h profiler.h stat.h HDRNAMS += system.h speech.h tnn.h typedef.h LINUXHDRS := $(patsubst %,$(HDR)/%,$(HDRNAMS)) LINUXHDRS += $(LIN)/linux.h $(LIN)/vanlinux.h $(LIN)/linclude.h LINUXHDRS += $(LIN)/kernelip.h $(LIN)/kernelax.h $(LIN)/ax25ip.h GO32HDRS := $(patsubst %,$(HDR)/%,$(HDRNAMS)) $(GO32)/api.h GO32HDRS += $(GO32)/api32.h $(GO32)/hardware.h $(GO32)/pc.h L3HDR := $(HDR)/l3local.h MAKEFILE := makefile OTHER1 := alas.txt $(SRC)/config.c $(INI)/ax25ip.cfg OTHER1 += $(INI)/{tnn179.tnb,tnnini.all} $(L3HDR) OTHER1 += $(SRC)/cleaner.c $(SRC)/update.c history/*.his OTHER2 := $(DOC)/{conversd.{xhf,g},tnn179.pdf} OTHER2 += $(CONTRIB)/makefile .SUFFIXES: .SILENT: .EXPORT_ALL_VARIABLES: .PHONY: all tnn upd tnngo32 updgo32 clean cleaner .PHONY: mindist dist bigdist install baseinstall %.o: %.c $(MAKEFILE) $(CLEANER) echo -n 'Compiling $@ ' $(CLEANER) $< $(CC) -c $(CFLAGS_LIN) -o $@ $< echo done. %.obj: %.c $(MAKEFILE) $(CLEANER) echo -n 'Compiling $@ ' $(CLEANER) $< $(CC_GO32) -c $(CFLAGS_GO32) -o $@ $< all: tnn upd $(LINUXOBJS): $(LINUXHDRS) $(MAKEFILE) $(VEROBJL): $(VERSRC) $(LINUXOBJS) $(VANOBJ) $(VEROBJG): $(VERSRC) $(GO32_OBJS) $(GO32_OBJS): $(GO32HDRS) $(MAKEFILE) $(SRC)/global.o: $(SRC)/config.c $(SRC)/global.obj: $(SRC)/config.c $(GO32)/l1.obj: $(GO32L1) $(L3OBJL) $(L3OBJG): $(L3HDR) cleaner: $(CLEANER) tnngo32: $(BIN)/tnngo32 ifeq ($(SYSTEM), LINUX) # # erstmal kommt Linux # # externe Libs LIB := -lutil .PHONY: go32 _dist _mindist _install tnn: $(BIN)/tnn go32: tnngo32 updgo32 upd: $(BIN)/upd updgo32: $(BIN)/updgo32 # bin-Verzeichnis erstellen $(BIN): ifneq ($(wildcard $(BIN)), $(BIN)) echo Creating directory $(BIN) - mkdir $(BIN) endif # Linux VANESSA Treiber $(VANOBJ): $(MAKEFILE) $(CLEANER) $(VANOBJ): $(VANSRC) $(LIN)/vanlinux.h $(LINUXHDRS) echo -n 'Compiling $@ ' $(CLEANER) $(VANSRC) $(LIN)/vanlinux.h $(CC) -c -O2 $(CFLAGS_LIN) -o $@ $(VANSRC) echo done. # TNN-Executable linken $(BIN)/tnn: $(LINUXOBJS) $(VANOBJ) $(VEROBJL) $(CLEANER) echo -n 'Linking $@ ' $(CLEANER) $(LINUXHDRS) $(CC) $(LINUXOBJS) $(VANOBJ) $(VEROBJL) $(LDFLAGS_LIN) $(LIB) -o $@ echo done. # Sourcecode-Cleaner $(CLEANER): $(SRC)/cleaner.c $(LINUXHDRS) $(MAKEFILE) ifneq ($(wildcard $(BIN)), $(BIN)) echo Creating directory $(BIN) - mkdir $(BIN) endif echo -n 'Building $@ ' $(HOSTCC) $(CFLAGS_LIN) $(SRC)/cleaner.c $(LDFLAGS_LIN) -o $@ echo done. # TNN GO32 $(BIN)/tnngo32: $(GO32_OBJS) $(VEROBJG) $(CLEANER) $(CLEANER) $(GO32HDRS) $(CC_GO32) $(GO32_OBJS) $(VEROBJG) -o $@ chmod 644 $@ echo $@ done. # Updater $(BIN)/upd: $(BIN) $(SRC)/update.c $(LINUXHDRS) $(MAKEFILE) $(CC) $(CFLAGS_LIN) $(SRC)/update.c $(LDFLAGS_LIN) -o $@ echo $@ done. # Updater fuer GO32 $(BIN)/updgo32: $(BIN) $(SRC)/update.c $(GO32HDRS) $(MAKEFILE) $(CC_GO32) $(CFLAGS_GO32) $(SRC)/update.c -o $@ chmod 644 $@ echo $@ done. # Aufraeumen clean: rm -f $(LINUXOBJS) $(VANOBJ) $(GO32_OBJS) $(VEROBJL) $(VEROBJG) rm -f $(NAME).tar.bz2 .macros rm -f {.,$(SRC),$(LIN),$(INI),$(GO32),$(HDR),$(DOC)}/*~ rm -f {$(GO32),history}/*~ rm -f $(BIN)/{cleaner,{upd,tnn}{,go32{,.exe}}} rm -rf bin ifeq ("$(findstring 179,$(shell pwd))","179") rm -rf usr endif TNNINI := $(INI)/tnn.ini TNNPAS := $(INI)/tnn179.pas # # Mit "make mindist" wird der Source verpackt, soweit zum uebersetzen noetig, # mit "make dist" wird zusaetzlich die Doku verpackt und mit "make bigdist" # sind auch die Teile im Verzeichnis contrib/ dabei. Hier ist allerdings kein # Unterschied zu sehen zwischen "dist" und "bigdist", sondern nur in # contrib/*/makefile. # dist bigdist: _mindist ifeq ("$(findstring 179,$(shell pwd))","179") cp --parents $(OTHER2) $(DISTDIR) echo $(NAME).tar.bz2 tar -cf $(NAME).tar $(DISTDIR) bzip2 $(NAME).tar rm -rf usr else echo Invalid Directory Name. endif mindist: _mindist ifeq ("$(findstring 179,$(shell pwd))","179") echo $(NAME).tar.bz2 tar -cf $(NAME).tar $(DISTDIR) bzip2 $(NAME).tar rm -rf usr else echo Invalid Directory Name. endif _mindist: _dist $(TNNINI) $(TNNPAS) cp --parents $(LINUXSRCS) $(LINUXHDRS) $(VANSRC) $(DISTDIR) cp --parents $(GO32_SRCS) $(GO32HDRS) $(GO32L1) $(DISTDIR) cp --parents $(VERSRC) $(MAKEFILE) $(DISTDIR) cp --parents $(OTHER1) $(DISTDIR) _dist: ifeq ("$(findstring 179,$(shell pwd))","179") rm -rf usr $(NAME).tar.bz2 mkdir --parents $(DISTDIR) else echo Invalid Directory Name. endif # # install nur fuer Linux-Version - GO32-Version muss von Hand kopiert werden # install: all _install install -m 0700 $(BIN)/tnn $(INSTBIN)/tnn _install: install -m 0700 -d $(TNNDIR) install -m 0700 -d $(TNNSYSEXE) install -m 0700 -d $(TNNTEXTCMD) install -m 0700 -d $(TNNUSEREXE) install -m 0700 -d $(TNNPACSAT) install -m 0700 -d $(TNNMSG) baseinstall: install $(TNNINI) $(TNNPAS) install -m 0700 -d $(INSTCFG) install -m 0600 $(TNNINI) $(INSTCFG)/tnn.ini install -m 0600 $(INI)/tnnini.all $(TNNDIR)/tnnini.all install -m 0600 $(INI)/ax25ip.cfg $(TNNDIR)/ax25ip.cfg install -m 0600 $(TNNPAS) $(TNNDIR)/tnn179.pas install -m 0600 $(INI)/tnn179.tnb $(TNNDIR)/tnn179.tnb install -m 0600 $(DOC)/conversd.xhf $(TNNDIR)/conversd.xhf $(TNNINI): $(MAKEFILE) echo $@ echo "# This is an example for a tnn.ini-file" >$(TNNINI) echo "# For a more comprehensive example see tnnini.all" >$(TNNINI) echo "# -----------------------------------------------" >$(TNNINI) echo "# File permissions for files created by TNN" >$(TNNINI) echo "# octal value as used by umask(2)" >>$(TNNINI) echo "# default value = 000 (world readable/writable)" >>$(TNNINI) echo "# use 077 to limit access to the owner of TNN" >>$(TNNINI) echo "#perms 077" >>$(TNNINI) echo "# Working directory for TNN" >$(TNNINI) echo "#tnn_dir $(TNNDIR)" >>$(TNNINI) echo "# Unix-Socket for TNT hostmode interface (optional)" >>$(TNNINI) echo "#tnn_socket $(TNNDIR)tnn-socket" >>$(TNNINI) echo "# Program to start before using any hardware ports" >>$(TNNINI) echo "# (optional) - don't use any parameters!" >>$(TNNINI) echo "#tnn_start kill_other_processes" >>$(TNNINI) echo "# Number of buffers (optional; default = 10000)" >>$(TNNINI) echo "buffers 10000" >>$(TNNINI) echo "# file containing process id (mandatory)" >>$(TNNINI) echo "tnn_procfile tnn.pid" >>$(TNNINI) echo "# rounds per second (if missing, default 100)" >>$(TNNINI) echo "#rounds 200" >>$(TNNINI) echo "#-------------------------------------------------" >>$(TNNINI) echo "# device 1" >>$(TNNINI) echo "device /dev/ttyS0" >>$(TNNINI) echo "# lockfile for device 1" >>$(TNNINI) echo "tnn_lockfile /var/lock/LCK..ttyS0" >>$(TNNINI) echo "# speed on device 1" >>$(TNNINI) echo "speed 38400" >>$(TNNINI) echo "# type of KISS on device 1:" >>$(TNNINI) echo "# 0 = KISS, 1 = SMACK, 2 = RMNC-KISS," >>$(TNNINI) echo "# 3 = Tokenring (1st device only)," >>$(TNNINI) echo "# 4 = Vanessa, 5 = SCC, 6 = TF (experimental!)," >>$(TNNINI) echo "# 7 = IPX (1 IPX port only)," >>$(TNNINI) echo "# 8 = AX25IP (1 AX25IP port only)" >>$(TNNINI) echo "# 10 = Kernel-AX.25, 11 = DG1KJD Kernel-AX.25" >>$(TNNINI) echo "# 12 = 6PACK" >>$(TNNINI) echo "kisstype 3" >>$(TNNINI) echo "# L2-Port associated with device 1" >>$(TNNINI) echo "# use several port lines, if kisstype = 3" >>$(TNNINI) echo "port 0" >>$(TNNINI) echo "port 1" >>$(TNNINI) echo "port 2" >>$(TNNINI) echo "port 3" >>$(TNNINI) echo "port 4" >>$(TNNINI) echo "port 5" >>$(TNNINI) echo "port 6" >>$(TNNINI) echo "port 7" >>$(TNNINI) echo "port 8" >>$(TNNINI) echo "port 9" >>$(TNNINI) echo "port 10" >>$(TNNINI) echo "port 11" >>$(TNNINI) echo "port 12" >>$(TNNINI) echo "port 13" >>$(TNNINI) echo "port 14" >>$(TNNINI) echo "port 15" >>$(TNNINI) echo "#-------------------------------------------------" >>$(TNNINI) echo "# device 2" >>$(TNNINI) echo "#device /dev/ttyS1" >>$(TNNINI) echo "# lockfile for device 2" >>$(TNNINI) echo "#tnn_lockfile /var/lock/LCK..ttyS1" >>$(TNNINI) echo "# speed on device 2" >>$(TNNINI) echo "#speed 38400" >>$(TNNINI) echo "# type of KISS on device 2:" >>$(TNNINI) echo "# 0 = KISS, 1 = SMACK, 2 = RMNC-KISS," >>$(TNNINI) echo "# 4 = Vanessa, 5 = SCC, 6 = TF (experimental!)," >>$(TNNINI) echo "# 7 = IPX (1 IPX port only)," >>$(TNNINI) echo "# 8 = AX25IP (1 AX25IP port only)" >>$(TNNINI) echo "# 10 = Kernel-AX.25, 11 = DG1KJD Kernel-AX.25" >>$(TNNINI) echo "# 12 = 6PACK" >>$(TNNINI) echo "#kisstype 1" >>$(TNNINI) echo "# L2-Port associated with device 2" >>$(TNNINI) echo "#port 1" >>$(TNNINI) $(TNNPAS): $(MAKEFILE) echo $@ echo "; TheNetNode Configuration File" >$(TNNPAS) echo ";" >>$(TNNPAS) echo "; DO NOT CHANGE THE ORDER OF THE CONFIGURATION LINES !" >>$(TNNPAS) echo "; DO NOT CLEAR ANY LINES !" >>$(TNNPAS) echo ";" >>$(TNNPAS) echo "; NET/ROM-Sysop-Password, 80 Characters (01234567890123...)" >>$(TNNPAS) echo -n "1234567890123456789012345678901234567890" >>$(TNNPAS) echo "1234567890123456789012345678901234567890" >>$(TNNPAS) echo ";" >>$(TNNPAS) echo "; Console Password" >>$(TNNPAS) echo "Geheim" >>$(TNNPAS) echo ";" >>$(TNNPAS) echo "; Node Ident (Test)" >>$(TNNPAS) echo "Test " >>$(TNNPAS) echo ";" >>$(TNNPAS) echo "; Node MyCall (XX0XX)" >>$(TNNPAS) echo "XX0XX" >>$(TNNPAS) echo ";" >>$(TNNPAS) echo "; Workpath, Path to the Help-Files ($(TNNDIR))" >>$(TNNPAS) echo "; TNN should be started from this path." >>$(TNNPAS) echo "$(TNNDIR)" >>$(TNNPAS) echo ";" >>$(TNNPAS) echo "; Path to the executable Text-Files ($(TNNTEXTCMD))" >>$(TNNPAS) echo "$(TNNTEXTCMD)" >>$(TNNPAS) echo ";" >>$(TNNPAS) echo "; Path to the extern Programs for User ($(TNNUSEREXE))" >>$(TNNPAS) echo "$(TNNUSEREXE)" >>$(TNNPAS) echo ";" >>$(TNNPAS) echo "; Path to the extern Programs only for Sysop ($(TNNSYSEXE))" >>$(TNNPAS) echo "$(TNNSYSEXE)" >>$(TNNPAS) echo ";" >>$(TNNPAS) echo "; Path to the PACSAT-Files ($(TNNPACSAT))" >>$(TNNPAS) echo "$(TNNPACSAT)" >>$(TNNPAS) mac: $(CC) $(CFLAGS_LIN) -E -dM $(HDR)/tnn.h > .macros else # # nun kommt Dose # tnn: tnngo32 upd: $(BIN)/updgo32 $(BIN): ifneq ($(wildcard $(BIN)), $(BIN)) echo $(BIN) - mkdir $(subst /,\\,$(BIN)) endif clean: erase $(subst /,\\,$(BIN))\* erase $(subst /,\\,$(BIN))\*.exe erase $(subst /,\\,$(SRC))\*.o* erase $(subst /,\\,$(SRC))\*.bak erase $(subst /,\\,$(GO32))\*.o* erase $(subst /,\\,$(GO32))\*.bak erase $(subst /,\\,$(DOC))\*.bak erase $(subst /,\\,$(INCLUDE))\*.bak erase $(subst /,\\,$(HISTORY))\*.bak $(BIN)/tnngo32: $(GO32_OBJS) $(VEROBJG) $(CLEANER) $(CLEANER) $(GO32HDRS) $(CC_GO32) $(GO32_OBJS) $(VEROBJG) -o $@ echo $@ done. $(CLEANER): $(SRC)/cleaner.c $(GO32HDRS) $(MAKEFILE) ifneq ($(wildcard $(BIN)), $(BIN)) echo $(BIN) - mkdir $(BIN) endif $(CC) $(CFLAGS_GO32) $(SRC)/cleaner.c -o $@ echo $@ done. $(BIN)/updgo32: $(BIN) $(SRC)/update.c $(GO32HDRS) $(MAKEFILE) $(CC) $(CFLAGS_GO32) $(SRC)/update.c -o $@ echo $@ done. mindist dist bigdist install baseinstall: echo Please update your Operating System. echo The target $@ is only valid for Linux. endif # # Die Makefiles in contrib/* sollen auch noch verarbeitet # werden (wenn vorhanden) # MF := $(wildcard contrib/*/makefile) ifneq ($(strip $(MF)),) include $(MF) endif