1 # makefile for netcat, based off same ol' "generic makefile". 2 # Usually do "make systype" -- if your systype isn't defined, try "generic" 3 # or something else that most closely matches, see where it goes wrong, fix 4 # it, and MAIL THE DIFFS back to Hobbit. 5 6 ### PREDEFINES 7 8 # DEFAULTS, possibly overridden by <systype> recursive call: 9 # pick gcc if you'd rather , and/or do -g instead of -O if debugging 10 # debugging 11 # DFLAGS = -DTEST -DDEBUG 12 CFLAGS = -O 13 XFLAGS = # xtra cflags, set by systype targets 14 XLIBS = # xtra libs if necessary? 15 # -Bstatic for sunos, -static for gcc, etc. You want this, trust me. 16 STATIC = 17 CC = cc $(CFLAGS) 18 LD = $(CC) -s # linker; defaults to stripped executables 19 o = o # object extension 20 21 ALL = nc 22 23 ### BOGON-CATCHERS 24 25 bogus: 26 @echo "Usage: make <systype> [options]" 27 28 ### HARD TARGETS 29 30 nc: netcat.c 31 $(LD) $(DFLAGS) $(XFLAGS) $(STATIC) -o nc netcat.c $(XLIBS) 32 33 nc-dos: 34 @echo "DOS?! Maybe someday, but not now" 35 36 ### SYSTYPES -- in the same order as in generic.h, please 37 38 # designed for msc and nmake, but easy to change for your compiler. 39 # Recursive make may fail if you're short on memory -- u-fix! 40 # Note special hard-target and "quotes" instead of 'quotes' ... 41 dos: 42 $(MAKE) -e $(ALL)-dos $(MFLAGS) CC="cl /nologo" XLIBS= \ 43 XFLAGS="/AS -D__MSDOS__ -DMSDOS" o=obj 44 45 ultrix: 46 make -e $(ALL) $(MFLAGS) XFLAGS='-DULTRIX' 47 48 # you may need XLIBS='-lresolv -l44bsd' if you have BIND 4.9.x 49 sunos: 50 make -e $(ALL) $(MFLAGS) XFLAGS='-DSUNOS' STATIC=-Bstatic \ 51 XLIBS='-lresolv' 52 53 # Pick this one ahead of "solaris" if you actually have the nonshared 54 # libraries [lib*.a] on your machine. By default, the Sun twits don't ship 55 # or install them, forcing you to use shared libs for any network apps. 56 # Kludged for gcc, which many regard as the only thing available. 57 solaris-static: 58 make -e $(ALL) $(MFLAGS) XFLAGS='-DSYSV=4 -D__svr4__ -DSOLARIS' \ 59 CC=gcc STATIC=-static XLIBS='-lnsl -lsocket -lresolv' 60 61 # the more usual shared-lib version... 62 solaris: 63 make -e $(ALL) $(MFLAGS) XFLAGS='-DSYSV=4 -D__svr4__ -DSOLARIS' \ 64 CC=gcc STATIC= XLIBS='-lnsl -lsocket -lresolv' 65 66 aix: 67 make -e $(ALL) $(MFLAGS) XFLAGS='-DAIX' 68 69 linux: 70 make -e $(ALL) $(MFLAGS) XFLAGS='-DLINUX' STATIC=-static 71 72 # irix 5.2, dunno 'bout earlier versions. If STATIC='-non_shared' doesn't 73 # work for you, null it out and yell at SGI for their STUPID default 74 # of apparently not installing /usr/lib/nonshared/*. Sheesh. 75 irix: 76 make -e $(ALL) $(MFLAGS) XFLAGS='-DIRIX -DSYSV=4 -D__svr4__' \ 77 STATIC=-non_shared 78 79 osf: 80 make -e $(ALL) $(MFLAGS) XFLAGS='-DOSF' STATIC=-non_shared 81 82 # virtually the same as netbsd/bsd44lite/whatever 83 freebsd: 84 make -e $(ALL) $(MFLAGS) XFLAGS='-DFREEBSD' STATIC=-static 85 86 bsdi: 87 make -e $(ALL) $(MFLAGS) XFLAGS='-DBSDI' STATIC=-Bstatic 88 89 netbsd: 90 make -e $(ALL) $(MFLAGS) XFLAGS='-DNETBSD' STATIC=-static 91 92 # finally got to an hpux box, which turns out to be *really* warped. 93 # STATIC here means "linker subprocess gets args '-a archive'" which causes 94 # /lib/libc.a to be searched ahead of '-a shared', or /lib/libc.sl. 95 hpux: 96 make -e $(ALL) $(MFLAGS) XFLAGS='-DHPUX' STATIC="-Wl,-a,archive" 97 98 # unixware from bmc (a] telebase.com; apparently no static because of the 99 # same idiotic lack of link libraries 100 unixware: 101 make -e $(ALL) $(MFLAGS) XFLAGS='-DUNIXWARE -DSYSV=4 -D__svr4__' \ 102 STATIC= XLIBS='-L/usr/lib -lnsl -lsocket -lresolv' 103 104 # from Declan Rieb at sandia, for a/ux 3.1.1 [also suggests using gcc]: 105 aux: 106 make -e $(ALL) $(MFLAGS) XFLAGS='-DAUX' STATIC=-static CC=gcc 107 108 # Nexstep from mudge: NeXT cc is really old gcc 109 next: 110 make -e $(ALL) $(MFLAGS) XFLAGS='-DNEXT' STATIC=-Bstatic 111 112 # start with this for a new architecture, and see what breaks. 113 generic: 114 make -e $(ALL) $(MFLAGS) XFLAGS='-DGENERIC' STATIC= 115 116 # Still at large: dgux dynix ??? 117 118 ### RANDOM 119 120 clean: 121 rm -f $(ALL) *.o *.obj 122 123