# # File: Makefile # Creation: March 18, 1999 (Thursday, 15:10h) # Author: Copyright (C) 1999 Thomas Jensen # tsjensen@stud.informatik.uni-erlangen.de # Version: $Id: Makefile,v 1.12 1999/07/20 18:49:58 tsjensen Exp tsjensen $ # Format: GNU make # Web Site: http://home.pages.de/~jensen/boxes/ # Platforms: sparc/Solaris 2.6 and others # Purpose: Makefile for boxes, the box drawing program # # Remarks: o This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # o This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # o You should have received a copy of the GNU General Public # License along with this program; if not, write to the Free # Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # # Revision History: # # $Log: Makefile,v $ # Revision 1.12 1999/07/20 18:49:58 tsjensen # Added GNU GPL disclaimer # Now evaluating date command from SNAPFILE only once # Changed order of files in snapshot archive (who cares) # # Revision 1.11 1999/07/12 18:28:53 tsjensen # Removed --yacc option from bison call # Added logpage target to generate the chronologically sorted global change # log in HTML format. This requires a Perl script (create_changelog.pl). # Added config.h to dependencies and stuff # Removed special targets for yacc and lex files. Thanks to Andreas Heiduk, # it is now possible to compile all files with -W -Wall and no extra # defines. # Moved regexp library to a subdirectory regexp # Some modifications on the source file macros which now differentiate # between files which are listed in the HTML change log and files which # aren't. # # Revision 1.10 1999/07/02 11:50:35 tsjensen # Added parser.h header file for lexer-parser communication # Moved from yacc to GNU "bison --yacc" # No longer linking with flex library # Activated -Wall -W for parser.y # Removed -DYY_NO_UNPUT from lexer compilation (now done via file option) # # Revision 1.9 1999/06/28 12:21:34 tsjensen # Added macro SNAPFILE for boxes-SNAP-`date +%Y%m%d` # Added target rcstest # Now builds optimized code by default # Added debug target for non-optimized code w/ debugging info # # Revision 1.8 1999/06/23 19:35:17 tsjensen # Added remove.o and generate.o # Introduced implicit rule .c.o, simplifying commands for most sources # # Revision 1.7 1999/06/23 12:27:50 tsjensen # Added tools.o and shape.o # Change in snapshot target directory (download) # Added GENSRC, HSSRC, ORIGSRC, ALLSRC, and ALLOBJ macros for more order # # Revision 1.6 1999/06/04 12:15:37 tsjensen # Added snap target for automatic snapshot publication # # Revision 1.5 1999/04/04 16:12:40 tsjensen # Added rules for new regular expression handling files # Added file header # Straightened out clean commands # # Revision 1.4 1999/04/03 12:01:01 tsjensen # Added build target for optimized compilation # Now linking with flex library instead of lex library # # Revision 1.3 1999/03/22 10:57:14 tsjensen # Added -D__EXTENSIONS__ # Compile everything but the parser with -Wall -W # # Revision 1.2 1999/03/19 17:58:14 tsjensen # Added boxes.o to clean target # Switched language to ANSI C / POSIX_SOURCE # Added -Wall -W to boxes core compilation # # Revision 1.1 1999/03/18 15:10:41 tsjensen # Initial revision #____________________________________________________________________________ #============================================================================ LEX = flex YACC = bison CC = gcc CFLAGS = -ansi -I. -Iregexp $(CFLAGS_ADDTL) LDFLAGS = -Lregexp GEN_HDR = parser.h GEN_SRC = parser.c lex.yy.c GEN_FILES = $(GEN_SRC) $(GEN_HDR) ORIG_HDRCL = boxes.h ORIG_HDR = $(ORIG_HDRCL) lexer.h tools.h shape.h generate.h remove.h config.h ORIG_GEN = lexer.l parser.y ORIG_NORM = boxes.c tools.c shape.c generate.c remove.c ORIG_SRC = $(ORIG_GEN) $(ORIG_NORM) ORIG_FILES = $(ORIG_SRC) $(ORIG_HDR) OTH_FILES = Makefile ALL_CL = $(ORIG_SRC) $(ORIG_HDRCL) $(OTH_FILES) ALL_FILES = $(ORIG_FILES) $(GEN_FILES) $(OTH_FILES) ALL_OBJ = $(GEN_SRC:.c=.o) $(ORIG_NORM:.c=.o) build: $(MAKE) CFLAGS_ADDTL=-O boxes strip boxes debug: $(MAKE) CFLAGS_ADDTL=-g boxes boxes: $(ALL_OBJ) $(MAKE) -C regexp CC=$(CC) libregexp.a $(CC) $(LDFLAGS) $(ALL_OBJ) -o boxes -lregexp parser.c parser.h: parser.y boxes.h regexp/regexp.h $(YACC) -o parser.c -d parser.y lex.yy.c: lexer.l boxes.h $(LEX) -i -t lexer.l > lexer.tmp.c echo '#include "config.h"' > lex.yy.c cat lexer.tmp.c >> lex.yy.c rm lexer.tmp.c boxes.o: boxes.c boxes.h regexp/regexp.h shape.h tools.h generate.h remove.h config.h tools.o: tools.c tools.h boxes.h shape.h config.h shape.o: shape.c shape.h boxes.h config.h tools.h generate.o: generate.c generate.h boxes.h shape.h tools.h config.h remove.o: remove.c remove.h boxes.h shape.h tools.h config.h lex.yy.o: lex.yy.c parser.h tools.h shape.h lexer.h config.h parser.o: parser.c parser.h tools.h shape.h lexer.h config.h .c.o: $(CC) $(CFLAGS) -Wall -W -c $< snap: $(ALL_FILES) if [ -z "$(SNAPFILE)" ] ; then exit 1 ; fi mkdir $(SNAPFILE)/src cp $(ALL_FILES) $(SNAPFILE)/src touch $(patsubst %,$(SNAPFILE)/src/%,$(GEN_FILES)) $(MAKE) -C regexp SNAPFILE=../$(SNAPFILE) snap rcstest: -for i in $(ORIG_FILES) $(OTH_FILES) ; do rcsdiff $$i ; done $(MAKE) -C regexp rcstest logpage: $(ALL_CL) @echo $(ALL_CL) $(shell $(MAKE) -C regexp -s logpage) clean: rm -f $(ALL_OBJ) rm -f $(GEN_FILES) rm -f core boxes $(MAKE) -C regexp clean love: @echo "Not in front of the kids, honey!" #EOF