##################################################### # Standard Makefile for the MudOS driver # ##################################################### #SHELL=/bin/sh SHELL= ########################### # setup and configuration # ########################### # Note: this Makefile may need modified depending upon which type of machine # you are using to compile the driver. Be sure to read all of the comments # in this file since they may pertain to your particular machine. # # If you get some weird compile-time error message from "make" about not being # able to find some .h file, then try one of the following two things: # # 1) type "make depend" # 2) deleting all of the lines below the comment that mentions "make depend" # (near the bottom of this file). # change this if you wish the driver binary to be named something else DRIVER_BIN = driver # uncomment PROOF if using CenterLine's TestCenter to debug the driver. #PROOF=proof # RESOLV: define this to be -lresolv if your machine has it. # HP and NeXT don't have it. #RESOLV=-lresolv # uncomment STRFUNCS if your machine is missing memcpy(), memset(), strtol(), # and strcspn(). (needed by Sequent Dynix/3) #STRFUNCS=strfuncs.o # uncomment UALARM if your machine is missing the ualarm() system call. # needed by HP, A/UX (Apple Mac), EP/IX (MIPS), Sequent Dynix/3, Ultrix #UALARM=ualarm.o # Command used to install executables in the INSTALL_DIR # Use the -f version for HP/UX #INSTALL = install -f #INSTALL = install -c # Use cp if all else fails #INSTALL = cp # Use copy if AmigaDOS INSTALL = copy # Command use to remove files, -f (force), -rf (recursively & force) #RM = rm #RMF = rm -f #RRMF = rm -rf # Use delete if AmigaDOS RM = delete RMF = delete RRMF = delete ALL # Command to move or rename files #MV = mv #MVF = mv -f # Use rename if AmigaDOS MV = rename # Command to create directory #MKDIR = mkdir # Use makedir if AmigaDOS MKDIR = makedir # Command to view text file contents #CAT = cat CAT = type # Set INSTALL_DIR to the directory where you want to install the executables. #INSTALL_DIR = ../bin # Use /bin if AmigaDOS INSTALL_DIR = /bin # Enable warnings from the compiler (gcc), if wanted. #WARN=-Wall # Use this with gcc if you have lots of RAM, speeds up compile #PIPE=-pipe # define profiling if you want it # note: the gmon.out file will likely be written in the mudlib dir. # PROFILE_ON controls whether or not monitoring is active at driver # startup. Comment PROFILE_ON to make profiling not active at startup. # Use moncontrol(1) efun to enable profiling and moncontrol(0) to turn # it off. #PROFILE_ON=-DPROFILE_ON # Uncomment this if you want to enable profiling of the driver (gcc) #PROFIL=-pg -DPROFILING $(PROFILE_ON) # Enable run time debugging #DEBUG=-g # With extra driver debug code #DEBUG=-g -DDEBUG # Prevent -DDEBUG from aborting the driver (when in -DDEBUG mode) #DEBUG_NON_FATAL=-DDEBUG_NON_FATAL # Compile in debug() macro code #DEBUG_MACRO=-DDEBUG_MACRO # Debugging for Amiga SAS/C DEBUG=Define=DEBUG Debug=Symbol # If you don't have strchr() and strrchr(), then uncomment the following line #STR=-Dstrchr=index -Dstrrchr=rindex # define this if you want (compiler) optimization enabled. # # *WARNING* using high levels of optimization (e.g. -O3) can cause some # compilers to produce incorrect code. If the driver is behaving # inexplicably, try using a lower level of optimization (or none). # # Uncomment one or none of the following optimization lines. # # -O is usually a safe level of optimization for most compilers #OPTIMIZE=-O # high optimization for gcc: #OPTIMIZE=-O2 -fomit-frame-pointer -fstrength-reduce # uncomment below for RS/6000(AIX) xlc compiler only. # remove the -Q if xlc complains. #OPTIMIZE=-O -Q # might need this one with newer versions of AIX (ie 3.2.4) #OPTIMIZE=-O -Q -qMAXMEM=16000 # high optimization for HP-UX 7.x/8.x's cc (don't use with 9.x) #OPTIMIZE=+O3 +Obb3000 # MIPS R3000 running EP/IX Version 1.4.3. Compiler is RISCompiler C 2.11 (cc). #OPTIMIZE=-Olimit 1802 # DEC Ultrix's cc's highest optimization: #OPTIMIZE=-O2 -Olimit 5000 # Amiga SAS/C's optimization #OPTIMIZE=Opt OptGo OptLoop OptInl OptInLocal OptTime OptPeep CPU=any OPTIMIZE=CPU=any # use this for Amiga SAS/C CPP=$(CC) PreprocessorOnly # use this for NeXTSTEP 3.1+ (at least) #CPP=$(CC) -E -traditional-cpp # the usual #CPP=$(CC) -E # RS/6000 AIX: use this OSFLAGS line (required). #OSFLAGS=-D_BSD -D_ALL_SOURCE # System V Release 4 (386/486 or if using Sun's cc under Solaris 2.x) #OSFLAGS=-DSVR4 # MIPS R3000 running EP/IX Version 1.4.3. Compiler is RISCompiler C 2.11 (cc). #OSFLAGS=-I/usr/include/bsd # Amiga SAS/C # Define=AS225 - if you have CBM's AS225 R2 networking package # Define=AMITCP - if you have the AmiTCP networking package # Define=NO_IP_DEMON - if you're not using addr_server OSFLAGS=Data=far Code=far NoIcons \ IncludeDirectory=amiga IncludeDirectory=NETINCLUDE: \ NoErrorHighlight \ Strict Ignore=105 Ignore=120 Ignore=183 \ Define=AMITCP GlobalSymbolTable=amiga/std.gst # try uncommenting this if you are using gcc and at runtime you see socket # errors saying that the "set socket nonblocking" operation is not supported. # That error is caused by old-style macros (that gcc doesn't normally grok) # used by ioctl on some systems. #NEED_OLD_CPP=-traditional-cpp CFLAGS= $(OSFLAGS) $(OPTIMIZE) $(WARN) $(PROFIL) $(DEBUG) $(DEBUG_MACRO) \ $(DEBUG_NON_FATAL) $(STR) $(PIPE) $(NEED_OLD_CPP) # Flags to be used by the LPC->C compiler # remove optimization or make other modifications here CFLAGS2= $(STATIC) $(OSFLAGS) $(OPTIMIZE) $(WARN) $(DEBUG) \ $(DEBUG_MACRO) $(DEBUG_NON_FATAL) $(STR) $(PIPE) $(NEED_OLD_CPP) # set CC=cc on a NeXT and to gcc on other machines (if possible) # You may want to use xlc on an RS/6000 (produces faster code). # # NOTE: If you are using gcc (especially on a sun4), and the driver gives # a runtime error regarding "operation not supported on socket", then # try using cc instead (some UNIX's use unsupported hacks in some of # the system #include (.h) files which prevents some (socket) ioctl operations # from working correctly when using a less crufty compiler than that provided # by default on the system in question). # #CC=cc #CC=gcc # CenterLine cc #CC=clcc #CC=xlc # Amiga SAS/C compiler CC=sc # define this to be what you use for make #MAKE = make #MAKE = gmake MAKE = smake # Object file linker #LINKER=$(CC) LINKER=slink # Amiga SAS/C #LFLAGS=AddSym NoIcons LFLAGS=NoIcons # define this to be bison if you have it, and yacc otherwise. #YACC=bison #YFLAGS=-d -y YACC=yacc YFLAGS = -d # A/UX: may be required for Apple's UNIX (and possibly others). Try # uncommenting this if the make results in link errors seemingly related # to yacc (e.g. undefined symbol "yyerror"). #EXTRALIBS=-ly # HP-UX: use this EXTRALIBS line for HP-UX #EXTRALIBS=-lBSD # RS/6000 AIX: use this EXTRALIBS line #EXTRALIBS=-lbsd # NetBSD 386: due to export restrictions...you may be missing or # have a crippled crypt package #EXTRALIBS=-lcrypt # NeXT: link with MallocDebug if you have a NeXT with NeXTOS 2.1 or later and # you wish to search for memory leaks (see /NextDeveloper/Apps/MallocDebug). # Note: linking with MallocDebug will cause the virtual size of the # driver process to reach appoximately 40MB however the amount of real memory # used will remain close to normal. #EXTRALIBS=-lMallocDebug -lsys_s # Sequent DYNIX/ptx: use this EXTRALIBS line #EXTRALIBS=-lsocket -linet -lnsl -lseq -lmalloc # System V Release 4 (386/486) #EXTRALIBS=-lsocket -lnsl # Solaris (SunOS 5.1) #EXTRALIBS=-lnsl -lsocket -lresolv # MIPS R3000 running EP/IX Version 1.4.3. Compiler is RISCompiler C 2.11 (cc). #EXTRALIBS=-lbsd # Amiga SAS/C EXTRALIBS=NETLIB:netnb.lib LIB:scmnb.lib LIB:scnb.lib LIB:amiga.lib # Don't change this line. Define EXTRALIBS before this line if you # wish to add any libraries. #LIBS=-lm $(EXTRALIBS) # Use this if Amiga SAS/C -- equivalent to m.lib specified above LIBS=LIB $(EXTRALIBS) # Amiga SAS/C EXTRA_PORT=amiga/signal.o amiga/signal_rr.o amiga/socket.o amiga/crypt.o AMIGA_BIN=amiga/cstrip amiga/replace amiga /std.gst # Define these for LPC->C support #EXTRA_EFUNS=cfuns.o cfuns_main.o cfuns_port.o cfuns_math.o cfuns_sock.o #EXTRA_OBJS=lpc_compiler.tab.o compile_file.o interface.o ################################################# # the meat of things # # don't change anything below this section # ################################################# EFUNS=efuns_main.o efuns_port.o $(EXTRA_EFUNS) OBJ=grammar.tab.o lex.o main.o rc.o interpret.o simulate.o file.o object.o \ backend.o array.o mapping.o comm.o ed.o regexp.o swap.o buffer.o crc32.o \ malloc.o mallocwrapper.o class.o \ call_out.o otable.o dumpstat.o stralloc.o hash.o mudlib_stats.o \ port.o reclaim.o parse.o simul_efun.o sprintf.o uid.o program.o \ compiler.o avltree.o icode.o trees.o generate.o scratchpad.o \ socket_efuns.o socket_ctrl.o qsort.o eoperators.o socket_err.o md.o \ strstr.o disassembler.o binaries.o $(UALARM) $(STRFUNCS) \ $(EFUNS) replace_program.o functab_tree.o $(EXTRA_OBJS) \ $(EXTRA_PORT) PACKAGES= packages/\#?.o all: $(AMIGA_BIN) $(DRIVER_BIN) addr_server lpc_to_c.h remake: neat all # SAS/C $(DRIVER_BIN): $(OBJ) $(PACKAGES) -$(RM) $(DRIVER_BIN).old -$(MV) $(DRIVER_BIN) $(DRIVER_BIN).old list nohead quick packages/\#?.o lformat "packages/%s" >objlist $(LINKER) <WITH < LIB:catch.o FROM $(OBJ) WITH objlist TO $(DRIVER_BIN) $(LIBS) $(LFLAGS) < -$(RM) objlist lpc_to_c.h: cfuns.h virtual_architecture.h -$(CAT) cfuns.h virtual_architecture.h > lpc_to_c.h depend: opcodes.h efun_protos.h grammar.tab.h cc.h efunctions.h efun_defs.c makedepend \#?.c addr_server: addr_server.o socket_ctrl.o port.o addr_server.h $(LINKER) LIB:c.o socket_ctrl.o addr_server.o port.o $(RESOLV) \ TO addr_server $(LIBS) $(LFLAGS) .c.o: $(CC) $(CFLAGS) $< make_packages: packages/SMakefile execute amiga/make_packages $(PACKAGES): make_packages cc.h: SMakefile -$(RMF) cc.h $(CAT) < >cc.h < /* this file automatically generated by the Makefile */ \#define COMPILER "$(CC)" \#define OPTIMIZE "$(OPTIMIZE)" \#define CFLAGS "$(CFLAGS)" \#define OBJDIR "$(OBJDIR)" < lex.o: lex.c grammar.tab.c cc.h interpret.o: interpret.c patchlevel.h packages/SMakefile: efun_defs.c packages/Makefile: efun_defs.c packages/GNUmakefile: efun_defs.c efun_protos.h: efun_defs.c efunctions.h: efun_defs.c opc.h: efun_defs.c opcodes.h: efun_defs.c efun_defs.c: malloc.c func_spec.c make_func func_spec.cpp options.h make_func > efun_defs.c func_spec.cpp: amiga/cstrip func_spec.c op_spec.c options.h port.h $(CPP) $(CFLAGS) func_spec.c amiga/cstrip func_spec.p > func_spec.cpp make_func.tab.c: make_func.y cc.h $(YACC) $(YFLAGS) make_func.y -$(RMF) make_func.tab.\#? -$(MV) y.tab.c make_func.tab.c make_func.tab.o: make_func.tab.c make_func: make_func.tab.o hash.o $(CC) Link make_func.tab.o hash.o TO make_func $(LFLAGS) make_malloc.o: make_malloc.c options.h mallocwrapper.o: mallocwrapper.c make_malloc: make_malloc.o $(CC) Link make_malloc.o TO make_malloc $(LFLAGS) mallocwrapper.c malloc.c: make_malloc options.h make_malloc $(MALLOC_C) touch malloc.c $(CC) $(CFLAGS) malloc.c touch mallocwrapper.c $(CC) $(CFLAGS) mallocwrapper.c grammar.y: efun_defs.c comp_warning grammar.pre grammar.tab.c: amiga/replace grammar.pre $(YACC) $(YFLAGS) grammar.y -$(RMF) grammar.tab.\#? $(MV) y.tab.h grammar.tab.h amiga/replace "y.tab.c" "grammar.tab.c" y.tab.c > grammar.tab.c grammar.tab.o: grammar.tab.c opcodes.h amiga/socket.o: amiga/socket.c amiga/signal.o: amiga/signal.c amiga/signal_rr.o: amiga/signal_rr.c amiga/crypt.o: amiga/crypt.c amiga/cstrip: amiga/cstrip.c $(CC) Link amiga/cstrip.c NoIcons amiga/replace: amiga/replace.c $(CC) Link amiga/replace.c NoIcons amiga/std.gst: std.h $(CAT) < >amiga/std.c < /* this file automatically generated by the Makefile */ #include "std" < $(CC) $(CFLAGS) Define=NO_SOCKETS Define=NO_OPCODES \ MakeGlobalSymbolTable=amiga/std.gst \ amiga/std.c install: $(DRIVER_BIN) addr_server -$(MKDIR) $(INSTALL_DIR) $(INSTALL) $(DRIVER_BIN) $(INSTALL_DIR) $(INSTALL) addr_server $(INSTALL_DIR) neat: -$(RM) packages/\#?.o -$(RM) packages/GNUmakefile packages/Makefile packages/SMakefile -$(RRMF) obj \#?.o \#?.tab.c \#?.tab.h \#?.lnk \#?.info -$(RRMF) amiga/\#?.o amiga/\#?.lnk amiga/\#?.info -$(RMF) cc.h -$(RMF) efun_defs.c -$(RMF) option_defs.c -$(RMF) opcodes.h -$(RMF) efunctions.h -$(RMF) opc.h -$(RMF) efun_protos.h -$(RMF) make_func -$(RMF) make_malloc -$(RMF) malloc.c -$(RMF) mallocwrapper.c -$(RMF) amiga/std.\#? -$(RMF) amiga/replace -$(RMF) amiga/cstrip -$(RMF) objlist -$(RMF) temp_smk.tmp -$(RMF) \#?.p func_spec.cpp -$(RMF) grammar.y clean: neat -$(RMF) \#?.orig \#?.rej -$(RMF) \#?/\#?.orig \#?/\#?.rej -$(RMF) \#?/\#?~ \#?~ -$(RMF) Snapshot.tb -$(RMF) TAGS -$(RMF) $(DRIVER_BIN) -$(RMF) $(DRIVER_BIN).old -$(RMF) addr_server # DO NOT DELETE THIS LINE -- make depend depends on it.