| 1 | DEBUG = # -g |
|---|
| 2 | |
|---|
| 3 | |
|---|
| 4 | srcdir = ./src |
|---|
| 5 | build = ./build |
|---|
| 6 | ext = ./ext |
|---|
| 7 | contrib = ./contrib |
|---|
| 8 | utils = $(srcdir)/utils |
|---|
| 9 | parser = $(srcdir)/parser |
|---|
| 10 | core = $(srcdir)/newt_core |
|---|
| 11 | objdir = $(build)/obj |
|---|
| 12 | yytmp = $(objdir)/yytmp |
|---|
| 13 | tardir = $(shell basename `pwd`)_$(shell uname) |
|---|
| 14 | docdir = $(build)/html |
|---|
| 15 | headerdir = $(core)/incs |
|---|
| 16 | |
|---|
| 17 | DESTROOT = |
|---|
| 18 | CC = @CC@ |
|---|
| 19 | YACC = @YACC@ -d |
|---|
| 20 | LEX = @LEX@ |
|---|
| 21 | DEFS = @DEFS@ |
|---|
| 22 | LIBS = @LIBS@ |
|---|
| 23 | DLEXT = @DLEXT@ |
|---|
| 24 | EXEEXT = @EXEEXT@ |
|---|
| 25 | LDIMPORT = @NEWT_LDIMPORT@ |
|---|
| 26 | LDFLAGS = $(DEBUG) -O2 @LDFLAGS@ @NEWT_LDFLAGS@ |
|---|
| 27 | LDSHARED = @LIBNEWT_LDSHARED@ |
|---|
| 28 | |
|---|
| 29 | # declarations needed to creat a static library |
|---|
| 30 | LIBCOMMAND = @LIBCOMMAND@ |
|---|
| 31 | LIBEXT = @LIBEXT@ |
|---|
| 32 | |
|---|
| 33 | prefix = @prefix@ |
|---|
| 34 | exec_prefix = @exec_prefix@ |
|---|
| 35 | bindir = @bindir@ |
|---|
| 36 | sitedir = ${prefix}/lib/newt0 |
|---|
| 37 | includedir = @includedir@/newt0 |
|---|
| 38 | libdir = ${prefix}/lib |
|---|
| 39 | |
|---|
| 40 | VPATH = $(core) |
|---|
| 41 | STRIP = strip -x |
|---|
| 42 | CFLAGS = $(DEBUG) $(DEFS) -O2 -pipe |
|---|
| 43 | CPPFLAGS = -I. -I$(srcdir) -I$(core)/incs -I$(srcdir)/parser -I$(yytmp) @CPPFLAGS@ |
|---|
| 44 | |
|---|
| 45 | |
|---|
| 46 | NEWT = $(build)/newt$(EXEEXT) |
|---|
| 47 | |
|---|
| 48 | LIBNEWT = $(build)/libnewt$(LIBEXT) |
|---|
| 49 | |
|---|
| 50 | MAINOBJ = $(objdir)/main.o |
|---|
| 51 | |
|---|
| 52 | UTILSOBJS = $(objdir)/endian_utils.o |
|---|
| 53 | |
|---|
| 54 | COREOBJS = $(objdir)/NewtBC.o \ |
|---|
| 55 | $(objdir)/NewtEnv.o \ |
|---|
| 56 | $(objdir)/NewtFile.o \ |
|---|
| 57 | $(objdir)/NewtFns.o \ |
|---|
| 58 | $(objdir)/NewtGC.o \ |
|---|
| 59 | $(objdir)/NewtIconv.o \ |
|---|
| 60 | $(objdir)/NewtIO.o \ |
|---|
| 61 | $(objdir)/NewtMem.o \ |
|---|
| 62 | $(objdir)/NewtNSOF.o \ |
|---|
| 63 | $(objdir)/NewtPkg.o \ |
|---|
| 64 | $(objdir)/NewtObj.o \ |
|---|
| 65 | $(objdir)/NewtParser.o \ |
|---|
| 66 | $(objdir)/NewtPrint.o \ |
|---|
| 67 | $(objdir)/NewtStr.o \ |
|---|
| 68 | $(objdir)/NewtVM.o |
|---|
| 69 | |
|---|
| 70 | PARSEROBJS = $(yytmp)/y.tab.o \ |
|---|
| 71 | $(yytmp)/lex.yy.o \ |
|---|
| 72 | $(objdir)/lookup_words.o |
|---|
| 73 | |
|---|
| 74 | NEWTLIBS = $(ext)/protoFILE \ |
|---|
| 75 | $(ext)/protoREGEX |
|---|
| 76 | |
|---|
| 77 | CONTRIBLIBS = $(contrib)/inwt \ |
|---|
| 78 | $(contrib)/NewtObjC \ |
|---|
| 79 | $(contrib)/NativeCalls |
|---|
| 80 | |
|---|
| 81 | OBJS = $(MAINOBJ) $(UTILSOBJS) $(PARSEROBJS) $(COREOBJS) |
|---|
| 82 | |
|---|
| 83 | LIBOBJS = $(UTILSOBJS) $(PARSEROBJS) $(COREOBJS) |
|---|
| 84 | |
|---|
| 85 | HEADERS = $(headerdir)/NewtBC.h \ |
|---|
| 86 | $(headerdir)/NewtConf.h \ |
|---|
| 87 | $(headerdir)/NewtCore.h \ |
|---|
| 88 | $(headerdir)/NewtEnv.h \ |
|---|
| 89 | $(headerdir)/NewtErrs.h \ |
|---|
| 90 | $(headerdir)/NewtFile.h \ |
|---|
| 91 | $(headerdir)/NewtFns.h \ |
|---|
| 92 | $(headerdir)/NewtGC.h \ |
|---|
| 93 | $(headerdir)/NewtIconv.h \ |
|---|
| 94 | $(headerdir)/NewtIO.h \ |
|---|
| 95 | $(headerdir)/NewtLib.h \ |
|---|
| 96 | $(headerdir)/NewtMem.h \ |
|---|
| 97 | $(headerdir)/NewtNSOF.h \ |
|---|
| 98 | $(headerdir)/NewtObj.h \ |
|---|
| 99 | $(headerdir)/NewtParser.h \ |
|---|
| 100 | $(headerdir)/NewtPkg.h \ |
|---|
| 101 | $(headerdir)/NewtPrint.h \ |
|---|
| 102 | $(headerdir)/NewtStr.h \ |
|---|
| 103 | $(headerdir)/NewtType.h \ |
|---|
| 104 | $(headerdir)/NewtVM.h \ |
|---|
| 105 | $(headerdir)/platform.h \ |
|---|
| 106 | $(srcdir)/config.h |
|---|
| 107 | |
|---|
| 108 | ###### |
|---|
| 109 | |
|---|
| 110 | .c.o: |
|---|
| 111 | $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< |
|---|
| 112 | |
|---|
| 113 | |
|---|
| 114 | ### all |
|---|
| 115 | |
|---|
| 116 | all: newt libnewt @MAKE_EXT@ @MAKE_CONTRIB@ |
|---|
| 117 | |
|---|
| 118 | ### make directory |
|---|
| 119 | |
|---|
| 120 | $(build): |
|---|
| 121 | mkdir -p $@ |
|---|
| 122 | @LINK_NEWT_APP_@ |
|---|
| 123 | |
|---|
| 124 | $(objdir): |
|---|
| 125 | mkdir -p $@ |
|---|
| 126 | |
|---|
| 127 | $(yytmp): |
|---|
| 128 | mkdir -p $@ |
|---|
| 129 | |
|---|
| 130 | ### newt |
|---|
| 131 | |
|---|
| 132 | newt: $(build) $(objdir) $(yytmp) $(NEWT) $(LDIMPORT) |
|---|
| 133 | |
|---|
| 134 | $(NEWT): $(OBJS) |
|---|
| 135 | $(CC) $(LDFLAGS) $(LIBS) $(OBJS) $(LIBS) -o $@ |
|---|
| 136 | |
|---|
| 137 | |
|---|
| 138 | ### LIBNEWT static library |
|---|
| 139 | |
|---|
| 140 | libnewt: $(build) $(objdir) $(yytmp) $(LIBNEWT) $(LDIMPORT) |
|---|
| 141 | |
|---|
| 142 | $(LIBNEWT): $(LIBOBJS) |
|---|
| 143 | $(LIBCOMMAND) $@ $(LIBOBJS) |
|---|
| 144 | |
|---|
| 145 | |
|---|
| 146 | ### MAIN |
|---|
| 147 | |
|---|
| 148 | $(MAINOBJ): $(srcdir)/main.c $(srcdir)/version.h |
|---|
| 149 | $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(srcdir)/main.c |
|---|
| 150 | |
|---|
| 151 | |
|---|
| 152 | ### UTILITIES |
|---|
| 153 | |
|---|
| 154 | $(objdir)/endian_utils.o: $(utils)/endian_utils.c $(utils)/endian_utils.h |
|---|
| 155 | $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(utils)/endian_utils.c |
|---|
| 156 | |
|---|
| 157 | |
|---|
| 158 | ### PARSER |
|---|
| 159 | |
|---|
| 160 | $(yytmp)/y.tab.c $(yytmp)/y.tab.h: $(parser)/newt.y |
|---|
| 161 | $(YACC) -o $@ $(parser)/newt.y |
|---|
| 162 | |
|---|
| 163 | $(yytmp)/lex.yy.c: $(parser)/newt.l $(yytmp)/y.tab.h |
|---|
| 164 | $(LEX) -o$@ $(parser)/newt.l |
|---|
| 165 | |
|---|
| 166 | $(objdir)/lookup_words.o: $(parser)/lookup_words.c $(parser)/lookup_words.h |
|---|
| 167 | $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(parser)/lookup_words.c |
|---|
| 168 | |
|---|
| 169 | |
|---|
| 170 | ### CORE |
|---|
| 171 | |
|---|
| 172 | $(COREOBJS):: |
|---|
| 173 | $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(core)/$(*F).c |
|---|
| 174 | |
|---|
| 175 | |
|---|
| 176 | ### ext |
|---|
| 177 | |
|---|
| 178 | ext: $(NEWTLIBS) |
|---|
| 179 | |
|---|
| 180 | $(NEWTLIBS):: |
|---|
| 181 | $(MAKE) -C $@ |
|---|
| 182 | |
|---|
| 183 | contrib: $(CONTRIBLIBS) |
|---|
| 184 | |
|---|
| 185 | $(CONTRIBLIBS):: |
|---|
| 186 | $(MAKE) -C $@ |
|---|
| 187 | |
|---|
| 188 | ### strip (for win) |
|---|
| 189 | |
|---|
| 190 | strip: |
|---|
| 191 | $(STRIP) $(NEWT) $(build)/*.$(DLEXT) |
|---|
| 192 | |
|---|
| 193 | |
|---|
| 194 | ### ARCHIVE |
|---|
| 195 | |
|---|
| 196 | copy: |
|---|
| 197 | rm -rf $(build)/$(tardir) |
|---|
| 198 | mkdir -p $(build)/$(tardir) |
|---|
| 199 | cp $(NEWT) $(build)/$(tardir) |
|---|
| 200 | cp $(build)/*.$(DLEXT) $(build)/$(tardir) |
|---|
| 201 | cp -Rp COPYING README.* documents sample $(build)/$(tardir) |
|---|
| 202 | |
|---|
| 203 | |
|---|
| 204 | tgz: copy |
|---|
| 205 | tar czf $(build)/$(tardir).tgz -C $(build) $(tardir) |
|---|
| 206 | |
|---|
| 207 | |
|---|
| 208 | ### DOCUMENT GENERATE |
|---|
| 209 | |
|---|
| 210 | doc: |
|---|
| 211 | rm -rf $(docdir) |
|---|
| 212 | mkdir -p $(docdir) |
|---|
| 213 | cd misc; doxygen doxygen.conf |
|---|
| 214 | |
|---|
| 215 | ### INSTALL |
|---|
| 216 | |
|---|
| 217 | .PHONY : install install_ext install_contrib |
|---|
| 218 | |
|---|
| 219 | install_ext:: |
|---|
| 220 | @for subdir in $(NEWTLIBS); do \ |
|---|
| 221 | (cd $$subdir && $(MAKE) install) || exit 1; \ |
|---|
| 222 | done |
|---|
| 223 | |
|---|
| 224 | install_contrib:: |
|---|
| 225 | @for subdir in $(CONTRIBLIBS); do \ |
|---|
| 226 | (cd $$subdir && $(MAKE) install) || exit 1; \ |
|---|
| 227 | done |
|---|
| 228 | |
|---|
| 229 | install:: |
|---|
| 230 | install -m 755 $(NEWT) $(DESTDIR)$(bindir) |
|---|
| 231 | install -m 644 $(LIBNEWT) $(DESTDIR)$(libdir) |
|---|
| 232 | install -d -m 755 $(DESTDIR)$(sitedir) |
|---|
| 233 | install -d -m 755 $(DESTDIR)$(includedir) |
|---|
| 234 | install -m 644 $(HEADERS) $(DESTDIR)$(includedir) |
|---|
| 235 | test "x@MAKE_EXT@" = x || $(MAKE) install_ext |
|---|
| 236 | test "x@MAKE_CONTRIB@" = x || $(MAKE) install_contrib |
|---|
| 237 | |
|---|
| 238 | ### TEST |
|---|
| 239 | |
|---|
| 240 | test: |
|---|
| 241 | $(NEWT) -C sample test_all.newt |
|---|
| 242 | |
|---|
| 243 | |
|---|
| 244 | ### CLEAN |
|---|
| 245 | |
|---|
| 246 | clean_contrib:: |
|---|
| 247 | @for subdir in $(CONTRIBLIBS); do \ |
|---|
| 248 | (cd $$subdir && $(MAKE) clean) || exit 1; \ |
|---|
| 249 | done |
|---|
| 250 | |
|---|
| 251 | clean: |
|---|
| 252 | rm -rf build/* |
|---|
| 253 | test "x@MAKE_CONTRIB@" = x || $(MAKE) clean_contrib |
|---|
| 254 | |
|---|