# Makefile - tnn32 # # Die .dsw Datei von VC wurde mit dsw2mak aus dem MinGW Paket uebersetzt # und etwas angepasst. Folgende Configurationen koennen verwendet werden: # - Linux mit MinGW runtime # - Cygwin mit MinGW runtime # - MinGW mit MSYS # # # Zu tun: # - w32api header in beliebiges Verzeichnis kopieren # - und patchen z.B.: # # windef.h: * folgende Zeilen auskommentieren: # typedef unsigned char BYTE; # typedef unsigned short WORD; # # winnt.h: * folgende Zeilen auskommentieren: # typedef BYTE BOOLEAN,*PBOOLEAN; # # ws2tcpip.h: * folgende Zeilen auskommentieren: # typedef int socklen_t; # # - dazu kommen noch diverse Abhaengigkeiten, aber da muss man # vorerst improvisieren # # - bei variable SYSHDR den Pfad zu den gepatchten w32api headern # # # # EXPERIMENTELL: Die w32api Header muessen nicht mehr gepatcht # werden, wenn vor dem Compilieren folgendes ausgeführt wird: # # make -f tnn32.mak hardpatch # # Da die Quelldateien hier komplett gepatcht werden, werden zur # Sicherheit alle svn Verzeichnisse geloescht. # # Wegen unterschiedlicher Syntax des sed Befehls, kann es bei # einigen Systemen zu Fehlermeldungen kommen. # ifdef SYSHDR CFLAGS=-isystem $(SYSHDR) RCFLAGS=--include-dir $(SYSHDR) endif # # # # Alles compilieren (mit geaenderten gcc namen): # make -f tnn32.mak CC=mingw32-gcc CXX=mingw32-g++ RC="windres -O COFF" # # Nur TNN32.EXE compilieren (mit geaendertem gcc prefix): # make -f tnn32.mak tnn PREFIX="i386-mingw32-" # # Pfad zu w32api headern angeben: # make -f tnn32.mak SYSHDR=/path/to/headers # # Fuer Debugging compilieren: # make -f tnn32.mak DEBUGGING=on # # # # ACHTUNG: evtl. CC, CXX und RC anpassen # # # Hier ggf. noch die Namen zu den Executables korrigieren # ifeq ($(PREFIX),) ifeq ($(CC),cc) ifeq ($(CXX),g++) ifeq ($(RC),) ifeq (CYGWIN,$(findstring CYGWIN,$(shell uname -s))) CC=gcc -mno-cygwin CXX=g++ -mno-cygwin RC=windres -O COFF endif ifeq (Linux,$(findstring Linux,$(shell uname -s))) PREFIX=i586-mingw32msvc- endif ifeq (MINGW32,$(findstring MINGW32,$(shell uname -s))) CC=mingw32-gcc CXX=mingw32-g++ RC=windres -O COFF endif ifeq (,$(shell uname -s)) CC=mingw32-gcc CXX=mingw32-g++ RC=windres -O COFF endif endif endif endif endif ifeq ($(CC),cc) CC=$(PREFIX)gcc endif ifeq ($(CXX),g++) CXX=$(PREFIX)g++ endif ifeq ($(RC),) RC=$(PREFIX)windres -O COFF endif # Linken mit C++ CXXFLAGS=$(CFLAGS) LD=$(CXX) $(CXXFLAGS) LDFLAGS= LDFLAGS+=-Wl,--subsystem,console # Include Dateien CFLAGS+=-Iinclude -Ios/linux -Ios/win32 -Isrc # vom DSW -> MAKEFILE Uebersetzer CFLAGS+=-fexceptions -W #wozu? CFLAGS+=-DWIN32 -D_CONSOLE -D_MBCS # "patches" (sonst vanessa - schlechte definition in der linux.h) CFLAGS+=-Ui386 # debugging ein/aus ifneq ($(DEBUGGING),on) CFLAGS+=-O0 #wozu? CFLAGS+=-DNDEBUG else CFLAGS+=-O0 -g #wozu? CFLAGS+=-D_DEBUG endif # Libraries LIBS+=-lws2_32 -lwsock32 LIBS+=-lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 LIBS+=-lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 BIN=os/win32/tnn32 TARGET=$(BIN)/tnn32.exe .PHONY: all contrib tnn clean cleantnn cleancontrib all: tnn contrib clean: cleantnn cleancontrib tnn: $(TARGET) contrib: $(BIN)/help.exe $(BIN)/msg.exe $(BIN)/msy.exe $(BIN)/pfhadd.exe $(BIN)/top.exe %.o: %.c $(CC) $(CFLAGS) -o $@ -c $< %.res: %.rc $(RC) $(CPPFLAGS) $(RCFLAGS) --include-dir os/win32/tnn32 -o $@ -i $< RESSOURCENDATEIEN= \ os/win32/tnn32/icon1.ico \ os/win32/tnn32/tnn32.rc WIN32= \ os/win32/sys/dirent32.c \ os/win32/sys/dirent32.h \ os/win32/sys/fnmatch.c \ os/win32/sys/fnmatch.h \ os/win32/sys/strings.c \ os/win32/sys/strings.h \ os/win32/6pack.c \ os/win32/6pack.h \ os/win32/ax25ip.c \ os/win32/ax25ip.h \ os/win32/init.c \ os/win32/l1attach.c \ os/win32/l1win32.c \ os/win32/ostcpip.c \ os/win32/osipconv.c \ os/win32/win32.c \ os/win32/win32.h \ os/linux/linclude.h INCLUDE= \ include/all.h \ include/allmodif.h \ include/conversd.h \ include/cvs_cmds.h \ include/function.h \ include/global.h \ include/host.h \ include/icmp.h \ include/ip.h \ include/ipv.h \ include/l1attach.h \ include/l2.h \ include/l2s.h \ include/l3global.h \ include/l3local.h \ include/l3thenet.h \ include/l4.h \ include/l7.h \ include/profiler.h \ include/stat.h \ include/system.h \ include/tnn.h \ include/typedef.h SRC= \ src/buffer.c \ src/callstr.c \ src/cvs_cmds.c \ src/cvs_cvrt.c \ src/cvs_cvsd.c \ src/cvs_serv.c \ src/file.c \ src/global.c \ src/graph.c \ src/l1tcpip.c \ src/l1httpd.c \ src/l1ipconv.c \ src/l1telnet.c \ src/l2dama.c \ src/l2misc.c \ src/l2rx.c \ src/l2stma.c \ src/l2timer.c \ src/l2tx.c \ src/l3inp.c \ src/l3ip.c \ src/l3misc.c \ src/l3nbr.c \ src/l3netrom.c \ src/l3thenet.c \ src/l3rtt.c \ src/l3tab.c \ src/l3var.c \ src/l3vc.c \ src/l3sock.c \ src/l3tcp.c \ src/l4.c \ src/l7.c \ src/l7ccp.c \ src/l7cmds.c \ src/l7conn.c \ src/l7host.c \ src/l7hstcmd.c \ src/l7ip.c \ src/l7moni.c \ src/l7showl3.c \ src/l7time.c \ src/l7utils.c \ src/main.c \ src/mh.c \ src/pacsat.c \ src/pacserv.c \ src/profil.c \ src/profiler.c \ src/speech.c \ src/version.c SRCS=$(RESSOURCENDATEIEN) $(OS) $(LINUX) $(WIN32) $(INCLUDE) $(SRC) OBJS=$(patsubst %.rc,%.res,$(patsubst %.c,%.o,$(filter %.c %.cc %.cpp %.cxx %.rc,$(SRCS)))) HELPSRCS= \ contrib/onlhelp/oh.c MSGSRCS= \ os/win32/sys/dirent32.c \ os/win32/sys/dirent32.h \ os/win32/sys/fnmatch.c \ os/win32/sys/fnmatch.h \ contrib/msgmsy/msg_lin.c MSYSRCS= \ os/win32/sys/dirent32.c \ os/win32/sys/dirent32.h \ os/win32/sys/fnmatch.c \ os/win32/sys/fnmatch.h \ contrib/msgmsy/msy_lin.c PACSRCS= \ contrib/pfhadd/pfhadd.c TOPSRCS= \ contrib/top/top_gnu.c HELPOBJS=$(patsubst %.rc,%.res,$(patsubst %.cxx,%.o,$(patsubst %.cpp,%.o,$(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(filter %.c %.cc %.cpp %.cxx %.rc,$(HELPSRCS))))))) MSGOBJS=$(patsubst %.rc,%.res,$(patsubst %.cxx,%.o,$(patsubst %.cpp,%.o,$(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(filter %.c %.cc %.cpp %.cxx %.rc,$(MSGSRCS))))))) MSYOBJS=$(patsubst %.rc,%.res,$(patsubst %.cxx,%.o,$(patsubst %.cpp,%.o,$(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(filter %.c %.cc %.cpp %.cxx %.rc,$(MSYSRCS))))))) PACOBJS=$(patsubst %.rc,%.res,$(patsubst %.cxx,%.o,$(patsubst %.cpp,%.o,$(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(filter %.c %.cc %.cpp %.cxx %.rc,$(PACSRCS))))))) TOPOBJS=$(patsubst %.rc,%.res,$(patsubst %.cxx,%.o,$(patsubst %.cpp,%.o,$(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(filter %.c %.cc %.cpp %.cxx %.rc,$(TOPSRCS))))))) $(BIN): ifneq ($(wildcard $(BIN)), $(BIN)) echo Creating directory $(BIN) - mkdir $(BIN) endif $(TARGET): $(OBJS) $(BIN) $(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) $(BIN)/help.exe: $(HELPOBJS) $(BIN) $(LD) $(LDFLAGS) -o $@ $(HELPOBJS) $(LIBS) $(BIN)/msg.exe: $(MSGOBJS) $(BIN) $(LD) $(LDFLAGS) -o $@ $(MSGOBJS) $(LIBS) $(BIN)/msy.exe: $(MSYOBJS) $(BIN) $(LD) $(LDFLAGS) -o $@ $(MSYOBJS) $(LIBS) $(BIN)/pfhadd.exe: $(PACOBJS) $(BIN) $(LD) $(LDFLAGS) -o $@ $(PACOBJS) $(LIBS) $(BIN)/top.exe: $(TOPOBJS) $(BIN) $(LD) $(LDFLAGS) -o $@ $(TOPOBJS) $(LIBS) cleantnn: -rm -f $(OBJS) $(TARGET) cleancontrib: -rm -f $(HELPOBJS) $(BIN)/help.exe -rm -f $(MSGOBJS) $(BIN)/msg.exe -rm -f $(MSYOBJS) $(BIN)/msy.exe -rm -f $(PACOBJS) $(BIN)/pfhadd.exe -rm -f $(TOPOBJS) $(BIN)/top.exe hardpatch: -echo "!! WARNING !! EXPERIMENTAL !! DO NOT USE THIS OPTION !! (too late now)" -find . \( -name '.svn' \) -exec rm -Rf {} \; -find . \( -name '*.c' -o -name '*.h' \) -exec sed -ri 's/(^|[() *,;:])BOOLEAN([() *,;:]|$$)/\1BOOLEANN\2/g' {} \; -find . \( -name '*.c' -o -name '*.h' \) -exec sed -ri 's/(^|[() *,;:])BYTE([() *,;:]|$$)/\1BYTEE\2/g' {} \; -find . \( -name '*.c' -o -name '*.h' \) -exec sed -ri 's/(^|[() *,;:])WORD([() *,;:]|$$)/\1WORDD\2/g' {} \; -find . \( -name '*.c' -o -name '*.h' \) -exec sed -ri 's/(^|[() *,;:])WORD([() *,;:]|$$)/\1WORDD\2/g' {} \;