|
# This file is part of muFORTH: http://pages.nimblemachines.com/muforth # # Copyright (c) 2002-2008 David Frech. All rights reserved, and all wrongs # reversed. (See the file COPYRIGHT for details.) ### ### Makefile for muforth, a "micro" Forth ### # Set by configure SEDEXT= %sedext% CFLAGS= -O2 -Wall -fomit-frame-pointer #CFLAGS= -g -Wall -fomit-frame-pointer -DDEBUG -DBEING_DEFINED LDFLAGS= # Core objects COREOBJS= kernel.o interpret.o dict.o file.o \ error.o time.o tty.o select.o engine-itc.o # If any of these files changes, make a new version.h VERSOBJS= ${COREOBJS} ALLOBJS= ${VERSOBJS} muforth.o DEPFILES= Makefile muforth.h env.h .PHONY: all clean httplink diffsed all : public.h muforth ${ALLOBJS} : ${DEPFILES} muforth.o : version.h public.h : ${ALLOBJS:.o=.ph} @echo Making ${.TARGET} (echo "/* This file is automagically generated. Do not edit! */"; \ cat ${.ALLSRC}) > ${.TARGET} forth_chain.h : public.h scripts/gen_dict_chain.sed @echo Making ${.TARGET} @(echo "/* This file is automagically generated. Do not edit! */"; \ sed ${SEDEXT} \ -e '/^void mu_compiler/d' \ -f scripts/gen_dict_chain.sed public.h \ ) > ${.TARGET} compiler_chain.h : public.h scripts/gen_dict_chain.sed @echo Making ${.TARGET} @(echo "/* This file is automagically generated. Do not edit! */"; \ sed ${SEDEXT} \ -e '/^void mu_compiler/!d' \ -e 's/mu_compiler_/mu_/' \ -f scripts/gen_dict_chain.sed \ -e 's/mu_/mu_compiler_/' public.h \ ) > ${.TARGET} dict.o : forth_chain.h compiler_chain.h .SUFFIXES : .ph .c.ph : Makefile @echo Making ${.TARGET} @(echo "/* ${.IMPSRC} */"; \ sed ${SEDEXT} -n \ -e '/^#if/,/^#endif/d' \ -e '/^static /d' \ -e 's/^([a-z]+ \**[a-z_0-9]+)\((void)?\).*$$/\1(void);/p' \ -e 's/^(pw [a-z_0-9]+).*;$$/extern \1;/p' \ ${.IMPSRC}; \ echo) > ${.TARGET} env.h : envtest ./envtest > ${.TARGET} version.h : Makefile ${VERSOBJS:.o=.c} @echo Making ${.TARGET} @echo "time_t build_time = `date \"+%s\"`;" > version.h muforth : ${ALLOBJS} ${DEPFILES} ${CC} ${LDFLAGS} -o $@ ${ALLOBJS} ${LIBS} .c.asm : Makefile muforth.h ${CC} ${CFLAGS} -S -o ${.TARGET} -c ${.IMPSRC} clean : rm -f muforth version.h *.o *.asm env.h envtest rm -f *.ph public.h forth_chain.h compiler_chain.h distclean : clean rm -f Makefile GNUmakefile *.sed # program avr via avrdude avr.img : target/AVR/loader.mu4 target/AVR/bitbang.mu4 ./muforth -v -f target/AVR/loader.mu4 -f target/AVR/bitbang.mu4 bye avr : avr.img avrdude -v -c stk500 -p t45 -P /dev/ttyS0 -U flash:w:${.IMPSRC}:r # install Vim bits install-vim : tar cf - .vim | (cd ~; tar xf -) ### BSD start ### ############################################################################# ## Targets for packaging things up, esp for people without sed, sh, etc. ############################################################################# # put or modify links to homepage in source files SEDFILES= README Makefile.in muforth.h *.c *.mu4 MU4DIRS= Test cf games lib target target/common target-arm httplink : for f in ${SEDFILES}; do \ sed ${SEDEXT} -f scripts/httplink.sed $$f > $$f.sed; done for d in ${MU4DIRS}; do \ for f in $$d/*.mu4; do \ sed ${SEDEXT} -f scripts/httplink.sed $$f > $$f.sed; done; done diffsed : -(for f in ${SEDFILES}; do diff -u $$f $$f.sed ; done) | less -(for d in ${MU4DIRS}; do \ for f in $$d/*.mu4; do \ diff -u $$f $$f.sed; done; done) | less mvsed : for f in ${SEDFILES}; do mv -f $$f.sed $$f ; done for d in ${MU4DIRS}; do \ for f in $$d/*.mu4; do \ mv -f $$f.sed $$f; done; done GNUmakefile : Makefile.in mv Makefile BSDmakefile ./configure.sh gnu mv Makefile GNUmakefile mv BSDmakefile Makefile # make the files that are hard to make, eg , for people on Windows ;-) HFILES= version.h public.h forth_chain.h compiler_chain.h hfiles : ${HFILES} MUFORTH!= basename ${.CURDIR} distmax : distclean GNUmakefile ${HFILES} (cd ..; tar cvf - \ --exclude .svn \ --exclude "*.tar.gz" \ --exclude "*~" ${MUFORTH} | \ gzip -9 > muforth-max.tar.gz) # same as above, but without the generated .h files dist : distclean GNUmakefile (cd ..; tar cvf - \ --exclude .svn \ --exclude "*.tar.gz" \ --exclude "*~" ${MUFORTH} | \ gzip -9 > muforth.tar.gz) dists ! dist distmax ### BSD end ### |