# Makefile for NetHack's utility programs.
-# NetHack 3.6 Makefile.utl $NHDT-Date: 1447844579 2015/11/18 11:02:59 $ $NHDT-Branch: master $:$NHDT-Revision: 1.25 $
+# NetHack 3.6 Makefile.utl $NHDT-Date: 1448711183 2015/11/28 11:46:23 $ $NHDT-Branch: master $:$NHDT-Revision: 1.26 $
# Root of source tree:
NHSROOT=..
@echo $(CC) -c $(CFLAGS) lev_lex.c
@$(CC) -c $(CFLAGS) -DWEIRD_LEX=`egrep -c _cplusplus lev_lex.c` lev_lex.c
+# '$(YACC) -d' generates both $(YTABC) and $(YTABH) in one run
../include/lev_comp.h: lev_yacc.c
lev_yacc.c: lev_comp.y
$(YACC) $(YACCDIST) -d lev_comp.y
- mv $(YTABC) lev_yacc.c
- mv $(YTABH) ../include/lev_comp.h
+ sed -e 's#"$(YTABC)"#"$@"#' $(YTABC) > $@ && rm $(YTABC)
+ sed -e 's#"$(YTABH)"#"lev_comp.h"#' $(YTABH) > ../include/lev_comp.h \
+ && rm $(YTABH)
lev_lex.c: lev_comp.l
$(LEX) $(FLEXDIST) lev_comp.l
- mv $(LEXYYC) lev_lex.c
+ sed -e 's#"$(LEXYYC)"#"$@"#' $(LEXYYC) > $@ && rm $(LEXYYC)
# with all of extern.h's functions to complain about, we drown in
# 'defined but not used' without -u
@echo $(CC) -c $(CFLAGS) dgn_lex.c
@$(CC) -c $(CFLAGS) -DWEIRD_LEX=`egrep -c _cplusplus dgn_lex.c` dgn_lex.c
-
+# '$(YACC) -d' generates both $(YTABC) and $(YTABH) in one run
../include/dgn_comp.h: dgn_yacc.c
dgn_yacc.c: dgn_comp.y
$(YACC) $(YACCDIST) -d dgn_comp.y
- mv $(YTABC) dgn_yacc.c
- mv $(YTABH) ../include/dgn_comp.h
+ sed -e 's#"$(YTABC)"#"$@"#' $(YTABC) > $@ && rm $(YTABC)
+ sed -e 's#"$(YTABH)"#"dgn_comp.h"#' $(YTABH) > ../include/dgn_comp.h \
+ && rm $(YTABH)
dgn_lex.c: dgn_comp.l
$(LEX) $(FLEXDIST) dgn_comp.l
- mv $(LEXYYC) dgn_lex.c
+ sed -e 's#"$(LEXYYC)"#"$@"#' $(LEXYYC) > $@ && rm $(LEXYYC)
# with all of extern.h's functions to complain about, we drown in
# 'defined but not used' without -u
$(CONFIG_H): ../include/config.h
@( cd ../src ; $(MAKE) $(CONFIG_H) )
+# 'make dist' => put generated lex and yacc sources into place for distribution
+SYSSHARE=../sys/share/
+$(SYSSHARE)lev_lex.c: lev_lex.c
+ cp lev_lex.c $@
+$(SYSSHARE)lev_yacc.c: lev_yacc.c
+ cp lev_yacc.c $@
+$(SYSSHARE)lev_comp.h: ../include/lev_comp.h
+ cp ../include/lev_comp.h $@
+$(SYSSHARE)dgn_lex.c: dgn_lex.c
+ cp dgn_lex.c $@
+$(SYSSHARE)dgn_yacc.c: dgn_yacc.c
+ cp dgn_yacc.c $@
+$(SYSSHARE)dgn_comp.h: ../include/dgn_comp.h
+ cp ../include/dgn_comp.h $@
+
+dist: $(SYSSHARE)lev_lex.c $(SYSSHARE)lev_yacc.c $(SYSSHARE)lev_comp.h \
+ $(SYSSHARE)dgn_lex.c $(SYSSHARE)dgn_yacc.c $(SYSSHARE)dgn_comp.h
+ @echo 'pre-generated lex and yacc sources are in place in sys/share'
+
tags: $(UTILSRCS)
@ctags -tw $(UTILSRCS)