DEBUG = # -g srcdir = ./src build = ./build ext = ./ext contrib = ./contrib utils = $(srcdir)/utils parser = $(srcdir)/parser core = $(srcdir)/newt_core objdir = $(build)/obj yytmp = $(objdir)/yytmp tardir = $(shell basename `pwd`)_$(shell uname) docdir = $(build)/html headerdir = $(core)/incs DESTROOT = CC = @CC@ YACC = @YACC@ -d LEX = @LEX@ DEFS = @DEFS@ LIBS = @LIBS@ DLEXT = @DLEXT@ EXEEXT = @EXEEXT@ LDIMPORT = @NEWT_LDIMPORT@ LDFLAGS = $(DEBUG) -O2 @LDFLAGS@ @NEWT_LDFLAGS@ LDSHARED = @LIBNEWT_LDSHARED@ # declarations needed to creat a static library LIBCOMMAND = @LIBCOMMAND@ LIBEXT = @LIBEXT@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sitedir = ${prefix}/lib/newt0 includedir = @includedir@/newt0 libdir = ${prefix}/lib VPATH = $(core) STRIP = strip -x CFLAGS = $(DEBUG) $(DEFS) -O2 -pipe CPPFLAGS = -I. -I$(srcdir) -I$(core)/incs -I$(srcdir)/parser -I$(yytmp) @CPPFLAGS@ NEWT = $(build)/newt$(EXEEXT) LIBNEWT = $(build)/libnewt$(LIBEXT) MAINOBJ = $(objdir)/main.o UTILSOBJS = $(objdir)/endian_utils.o COREOBJS = $(objdir)/NewtBC.o \ $(objdir)/NewtEnv.o \ $(objdir)/NewtFile.o \ $(objdir)/NewtFns.o \ $(objdir)/NewtGC.o \ $(objdir)/NewtIconv.o \ $(objdir)/NewtIO.o \ $(objdir)/NewtMem.o \ $(objdir)/NewtNSOF.o \ $(objdir)/NewtPkg.o \ $(objdir)/NewtObj.o \ $(objdir)/NewtParser.o \ $(objdir)/NewtPrint.o \ $(objdir)/NewtStr.o \ $(objdir)/NewtVM.o PARSEROBJS = $(yytmp)/y.tab.o \ $(yytmp)/lex.yy.o \ $(objdir)/lookup_words.o NEWTLIBS = $(ext)/protoFILE \ $(ext)/protoREGEX CONTRIBLIBS = $(contrib)/inwt \ $(contrib)/NewtObjC \ $(contrib)/NativeCalls OBJS = $(MAINOBJ) $(UTILSOBJS) $(PARSEROBJS) $(COREOBJS) LIBOBJS = $(UTILSOBJS) $(PARSEROBJS) $(COREOBJS) HEADERS = $(headerdir)/NewtBC.h \ $(headerdir)/NewtConf.h \ $(headerdir)/NewtCore.h \ $(headerdir)/NewtEnv.h \ $(headerdir)/NewtErrs.h \ $(headerdir)/NewtFile.h \ $(headerdir)/NewtFns.h \ $(headerdir)/NewtGC.h \ $(headerdir)/NewtIconv.h \ $(headerdir)/NewtIO.h \ $(headerdir)/NewtLib.h \ $(headerdir)/NewtMem.h \ $(headerdir)/NewtNSOF.h \ $(headerdir)/NewtObj.h \ $(headerdir)/NewtParser.h \ $(headerdir)/NewtPkg.h \ $(headerdir)/NewtPrint.h \ $(headerdir)/NewtStr.h \ $(headerdir)/NewtType.h \ $(headerdir)/NewtVM.h \ $(headerdir)/platform.h \ $(srcdir)/config.h ###### .c.o: $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< ### all all: newt libnewt @MAKE_EXT@ @MAKE_CONTRIB@ ### make directory $(build): mkdir -p $@ @LINK_NEWT_APP_@ $(objdir): mkdir -p $@ $(yytmp): mkdir -p $@ ### newt newt: $(build) $(objdir) $(yytmp) $(NEWT) $(LDIMPORT) $(NEWT): $(OBJS) $(CC) $(LDFLAGS) $(LIBS) $(OBJS) $(LIBS) -o $@ ### LIBNEWT static library libnewt: $(build) $(objdir) $(yytmp) $(LIBNEWT) $(LDIMPORT) $(LIBNEWT): $(LIBOBJS) $(LIBCOMMAND) $@ $(LIBOBJS) ### MAIN $(MAINOBJ): $(srcdir)/main.c $(srcdir)/version.h $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(srcdir)/main.c ### UTILITIES $(objdir)/endian_utils.o: $(utils)/endian_utils.c $(utils)/endian_utils.h $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(utils)/endian_utils.c ### PARSER $(yytmp)/y.tab.c $(yytmp)/y.tab.h: $(parser)/newt.y $(YACC) -o $@ $(parser)/newt.y $(yytmp)/lex.yy.c: $(parser)/newt.l $(yytmp)/y.tab.h $(LEX) -o$@ $(parser)/newt.l $(objdir)/lookup_words.o: $(parser)/lookup_words.c $(parser)/lookup_words.h $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(parser)/lookup_words.c ### CORE $(COREOBJS):: $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(core)/$(*F).c ### ext ext: $(NEWTLIBS) $(NEWTLIBS):: $(MAKE) -C $@ contrib: $(CONTRIBLIBS) $(CONTRIBLIBS):: $(MAKE) -C $@ ### strip (for win) strip: $(STRIP) $(NEWT) $(build)/*.$(DLEXT) ### ARCHIVE copy: rm -rf $(build)/$(tardir) mkdir -p $(build)/$(tardir) cp $(NEWT) $(build)/$(tardir) cp $(build)/*.$(DLEXT) $(build)/$(tardir) cp -Rp COPYING README.* documents sample $(build)/$(tardir) tgz: copy tar czf $(build)/$(tardir).tgz -C $(build) $(tardir) ### DOCUMENT GENERATE doc: rm -rf $(docdir) mkdir -p $(docdir) cd misc; doxygen doxygen.conf ### INSTALL .PHONY : install install_ext install_contrib install_ext:: @for subdir in $(NEWTLIBS); do \ (cd $$subdir && $(MAKE) install) || exit 1; \ done install_contrib:: @for subdir in $(CONTRIBLIBS); do \ (cd $$subdir && $(MAKE) install) || exit 1; \ done install:: install -m 755 $(NEWT) $(DESTDIR)$(bindir) install -m 644 $(LIBNEWT) $(DESTDIR)$(libdir) install -d -m 755 $(DESTDIR)$(sitedir) install -d -m 755 $(DESTDIR)$(includedir) install -m 644 $(HEADERS) $(DESTDIR)$(includedir) test "x@MAKE_EXT@" = x || $(MAKE) install_ext test "x@MAKE_CONTRIB@" = x || $(MAKE) install_contrib ### TEST test: $(NEWT) -C sample test_all.newt ### CLEAN clean_contrib:: @for subdir in $(CONTRIBLIBS); do \ (cd $$subdir && $(MAKE) clean) || exit 1; \ done clean: rm -rf build/* test "x@MAKE_CONTRIB@" = x || $(MAKE) clean_contrib