# Genesis, the ColdC driver
CFLAGS=@CFLAGS@ -Iinclude -Imodules
MCFLAGS=`echo $(CFLAGS) | sed -e 's:-pedantic::'`
LIBS=@LIBS@
LDFLAGS=@LDFLAGS@ -Lmodules
CC=@CC@
RANLIB=@RANLIB@
LINT=@LINT@
YACC=@YACC@
YFLAGS=-d
SYS=@SYS@
CPU=@CPU@
VENDOR=@VENDOR@
prefix=@prefix@
MODE=@MODE@
USER=@USER@
BINDIR=$(prefix)/bin
SRCDIR=$(prefix)/src
MODULES=$(SRCDIR)/modules
OPSDIR=$(SRCDIR)/ops
DATADIR=$(SRCDIR)/data
VERSION=@VERSION@
VMAJOR=@VMAJOR@
VMINOR=@VMINOR@
VPATCH=@VPATCH@
INSTALL=@INSTALL@
DATA_O = data/data.o data/buffer.o data/dict.o data/ident.o\
data/list.o data/object.o data/string.o \
data/handled_frob.o data/quickhash.o
GRAMMAR_O = grammar.o
DB_O = cache.o binarydb.o dbpack.o decode.o lookup.o
IO_O = io.o log.o net.o file.o
MISC_O = strutil.o memory.o sig.o util.o regexp.o defs.o dns.o
OPS_O = ops/operators.o ops/buffer.o ops/error.o ops/list.o\
ops/object.o ops/dict.o ops/string.o ops/data.o ops/sys.o\
ops/misc.o ops/task.o ops/file.o ops/network.o ops/math.o
CRYPT_O = shs.o crypt.o
PCODE_O = codegen.o execute.o opcodes.o token.o native.o
MOD_O = @MOD_O@
OMOD_O = `echo $(MOD_O) | sed -e 's/modules\///g'`
MALLOC_O = @MALLOC_O@
COMMON_O = $(MALLOC_O) $(DATA_O) $(DB_O) $(IO_O) $(MISC_O) \
$(PCODE_O) $(OPS_O) $(MOD_O) $(CRYPT_O)
DRIVER_O = $(GRAMMAR_O) genesis.o $(COMMON_O)
COMPILER_O = $(GRAMMAR_O) coldcc.o textdb.o $(COMMON_O)
CONTROL_O = control.o
DNSSERV_O = dnsserv.o dns.o
EVERYTHING_O = genesis.o control.o coldcc.o $(COMMON_O) $(DNSSERV_O)
EVERYTHING_C = `echo $(EVERYTHING_O) | sed -e 's/\.o/.c/g'`
DRIVER = genesis
COMPILER = coldcc
CONTROL = control
DNSSERV = dnsserv
EXES = $(COMPILER) $(DRIVER) $(DNSSERV)
all: $(GRAMMAR_O) include/parse.h Data Modules Ops $(EXES)
Data:
@echo "data objects..."
@cd $(DATADIR); make
Modules:
@echo "module objects..."
@cd $(MODULES); make $(OMOD_O)
Ops:
@echo "operator and function objects..."
@cd $(OPSDIR); make
$(DRIVER): $(DRIVER_O)
$(CC) $(CFLAGS) $(LDFLAGS) $(DRIVER_O) $(LIBS) -o $@
$(COMPILER): $(COMPILER_O)
$(CC) $(CFLAGS) $(LDFLAGS) $(COMPILER_O) $(LIBS) -o $@
$(DNSSERV): $(DNSSERV_O)
$(CC) $(CFLAGS) $(LDFLAGS) $(DNSSERV_O) $(LIBS) -o $@
clean:
rm -f include/parse.h grammar.c *~ *.BAK *.bak y.output *.core
rm -f $(EXES)
cd $(SRCDIR); rm -f $(EXES)
@cd $(MODULES); make $@
@cd $(OPSDIR); make $@
@cd $(DATADIR); make $@
## malloc doesnt want the -pedantic
malloc.o:
$(CC) $(MCFLAGS) -c malloc.c
scrub:
rm -f *.o include/parse.h grammar.c *~ *.BAK *.bak y.output *.core
rm -f textdump*
rm -f $(EXES)
cd $(SRCDIR); rm -f $(EXES)
rm -rf binary binary.bak
@cd $(MODULES); make $@
@cd $(OPSDIR); make $@
@cd $(DATADIR); make $@
makefiles: makefile
makefile:
@cd ..; etc/config.status
install: all
@$(SRCDIR)/INSTALL.sh $(USER) $(MODE) $(INSTALL) $(prefix)
depend: $(GRAMMAR_O) include/parse.h
@echo modules..
@cd $(MODULES); make $@
@echo ops..
@cd $(OPSDIR); make $@
@echo data..
@cd $(DATADIR); make $@
@makedepend -- $(CFLAGS) -- $(EVERYTHING_C) > /dev/null 2>&1
@rm -f Makefile.bak
lint:
$(LINT) -u $(EVERYTHING_C)
# I duplicate scrub because of the recusion involved in calling modules
patchable:
rm -f *.o include/parse.h grammar.c *~ *.BAK *.bak y.output *.core
rm -rf binary
rm -f textdump*
rm -f $(EXES)
cd $(SRCDIR); rm -f $(EXES)
@cd $(MODULES); make $@
@cd $(OPSDIR); make $@
@cd $(DATADIR); make $@
rm -f $(prefix)/etc/config.cache
rm -f $(prefix)/etc/config.log
rm -f $(prefix)/etc/config.status
rm -f $(MODULES)/modbuild.last
rm -f $(SRCDIR)/Makefile
rm -f $(SRCDIR)/modules/Makefile
rm -f $(SRCDIR)/include/config.h
include/parse.h:
mv -f y.tab.h include/parse.h
reconfig: scrub config
config:
@cd ../; configure
win32: Win32
Win32:
@echo "cleaning heirarchy..."
@make scrub 2>&1 > /dev/null
@echo "creating config file..."
@sed -e "s/#VMAJOR#/#define VERSION_MAJOR $(VMAJOR)/;\
s/#VMINOR#/#define VERSION_MINOR $(VMINOR)/;\
s/#VPATCH#/#define VERSION_PATCH $(VPATCH)/" include/config.h.win32 > include/config.h
@echo "generating parser source..."
@$(YACC) $(YFLAGS) grammar.y
@mv -f y.tab.c grammar.c
@mv -f y.tab.h include/parse.h
@grep '#include' grammar.c > incs
@grep -v '#include' grammar.c > out
@cat incs out > grammar.c
@rm incs out