##################################################### # Standard Makefile for the MudOS driver # ##################################################### SHELL=/bin/sh ########################### # 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 MALLOC* if you wish to use BSD malloc or Smalloc. # Both of these require the sbrk() system call. Be sure to read the # comments in the bsdmalloc.c file before deciding on BSDMALLOC. # note: These mallocs may not work correctly on the NeXT or other systems # that don't fully support sbrk(). It is okay not to use either of these # two mallocs in which case you will get system malloc (read the comments # in options.h for choices on malloc statistics and debugging). # # uncomment this line for BSDmalloc # (fast but high overhead) MALLOC=bsdmalloc.o # # uncomment this line for SMALLOC # (slower than bsdmalloc, faster than most system mallocs, least overhead) #MALLOC=smalloc.o # 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 # Set INSTALL_DIR to the directory where you want to install the executables. 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 # 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 # 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 # 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) # 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 # 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 # 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 # Don't change this line. Define EXTRALIBS before this line if you # wish to add any libraries. LIBS=-lm $(EXTRALIBS) ################################################# # the meat of things # # don't change anything below this section # ################################################# EFUNS=efuns_main.o efuns_port.o efuns_math.o efuns_matrix.o efuns_sock.o OBJ=compiler.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 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 \ socket_efuns.o socket_ctrl.o qsort.o eoperators.o socket_err.o md.o \ strstr.o disassembler.o binaries.o $(UALARM) $(STRFUNCS) \ $(MALLOC) $(EFUNS) replace_program.o all: $(DRIVER_BIN) addr_server # For Sequent DYNIX/ptx compile $(OBJ) is parallel: # $(DRIVER_BIN):& $(OBJ) $(DRIVER_BIN): $(OBJ) -mv $(DRIVER_BIN) $(DRIVER_BIN).old $(PROOF) $(CC) $(CFLAGS) $(OBJ) -o $(DRIVER_BIN) $(LIBS) all: $(DRIVER_BIN) addr_server depend: makedepend *.c addr_server: addr_server.o socket_ctrl.o port.o addr_server.h $(CC) $(CFLAGS) socket_ctrl.o addr_server.o port.o $(RESOLV) \ -o addr_server $(EXTRALIBS) .c.o: $(CC) $(CFLAGS) -c $*.c compiler.tab.h: compiler.tab.c cc.h: Makefile rm -f cc.h echo "/* this file automatically generated by the Makefile */" > cc.h echo '#define COMPILER "$(CC)"' >> cc.h echo '#define OPTIMIZE "$(OPTIMIZE)"' >> cc.h lex.o: cc.h lex.c compiler.tab.h interpret.o: interpret.c patchlevel.h base.h: efun_defs.c efun_protos.h: efun_defs.c efunctions.h: efun_defs.c opc.h: efun_defs.c func_spec.cpp: func_spec.c op_spec.c config.h options.h port.h $(CPP) $(CFLAGS) func_spec.c > func_spec.cpp make_func.tab.c: make_func.y $(YACC) $(YFLAGS) make_func.y mv y.tab.c make_func.tab.c make_func: make_func.tab.o $(CC) $(CFLAGS) make_func.tab.o -o make_func make_malloc: make_malloc.o $(CC) $(CFLAGS) make_malloc.o -o make_malloc make_malloc.o: make_malloc.c config.h compiler.tab.o: opcodes.h compiler.tab.c: compiler.y $(YACC) $(YFLAGS) compiler.y rm -f compiler.tab.* ln y.tab.c compiler.tab.c ln y.tab.h compiler.tab.h efun_defs.c opcodes.h: malloc.c func_spec.c make_func config.h func_spec.cpp ./make_func > efun_defs.c malloc.c: config.h make_malloc ./make_malloc $(MALLOC_C) touch malloc.c $(CC) $(CFLAGS) -c malloc.c tags: force ctags *.c *.y TAGS: force etags *.c *.y force: install: $(DRIVER_BIN) addr_server -mkdir $(INSTALL_DIR) $(INSTALL) $(DRIVER_BIN) $(INSTALL_DIR) $(INSTALL) addr_server $(INSTALL_DIR) clean: -rm -rf obj *.o mon.out gmon.out *.tab.c *.tab.h *.orig *.rej -rm -f efun_defs.c *.ln tags *~ TAGS -rm -f cc.h -rm -f opcodes.h efunctions.h opc.h base.h efun_protos.h -rm -f make_func make_malloc $(DRIVER_BIN) $(DRIVER_BIN).old addr_server -rm -f func_spec.cpp # DO NOT DELETE THIS LINE -- make depend depends on it.