home *** CD-ROM | disk | FTP | other *** search
Makefile | 1991-02-18 | 8.2 KB | 277 lines |
- # Makefile for GNU C++ class library (libg++)
- # Copyright (C) 1989 Free Software Foundation, Inc.
- # written by Doug Lea (dl@rocky.oswego.edu)
-
- #This file is part of GNU libg++.
-
- #GNU libg++ 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 1, or (at your option)
- #any later version.
-
- #GNU libg++ 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.
-
- #You should have received a copy of the GNU General Public License
- #along with GNU libg++; see the file COPYING. If not, write to
- #the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
- ###########################################################################
- #
- # Directories, paths, compilation flags and program names.
- #
- # Please make sure these are correct.
- #
-
- # ------ source locations
-
- # Manually set PWD to *this* directory if you are not using gnu make
- PWD := $(shell pwd)
- #PWD=/home/dl/libg++
-
- # source include directory
- SRCIDIR= $(PWD)/g++-include
-
- # the genclass program
- GENCLASS=$(PWD)/genclass
- # and its directory of prototype files
- PROTODIR=$(PWD)/g++-include/gen
-
- # ------ installation destinations
- # ------ You will require write-permission on the destination directories
- # ------ in order to `make install'
-
- # set `prefix' to something else if you want to install things
- # in nonstandard places
-
- prefix =/usr/gnu
-
- # libg++.a destination
- LIBDIR = $(prefix)/lib
-
- # executables directory: location to install the genclass class generator
- BINDIR = $(prefix)/bin
-
- # directory to install man pages
- MANDIR= $(prefix)/man
-
- # location to install include file directory
- IDIR = $(prefix)/lib/g++-include
-
-
- # ------- System-dependent defines
- # ------- use the second form of each for SystemV (USG)
-
- # g++ flags
- OSFLAG=
- #OSFLAG = -DUSG
-
- # other compilation control flags -- use any combination
-
- # use this only if you have a strange stdio implementation
- #XTRAFLAGS = -DDEFAULT_filebuf
-
- # use this if you do not want gnulib3 in libg++.a
- #XTRAFLAGS = -DNO_GNULIB3
-
- # use this if you need COFF encapulation defined in gnulib3
- #XTRAFLAGS = -DCOFF_ENCAPSULATE
-
- # use this if you want to disable line buffering for stream output
- #XTRAFLAGS = -DNO_LINE_BUFFER_STREAMBUF
-
- # Use this to disable placing libg++ version of malloc in libg++.a
- #XTRAFLAGS = -DNO_LIBGXX_MALLOC
-
- # Please use this & send me some results of malloc_stats() sometime
- # (it is off by default, since stat gathering hurts performance)
- #XTRAFLAGS = -DMALLOC_STATS
-
- #suggested for NeXT by cdr@acc.stolaf.edu
- #XTRAFLAGS = -DNO_GNULIB3 -DNO_LIBGXX_MALLOC
-
- # ld or ld++ flags
- OSLDFLAG =
- #OSLDFLAG= -lPW
-
- # how to install
- INSTALL=install -c
- #INSTALL=cp
-
- # ranlib if necessary
- RANLIB=ranlib
- #RANLIB=echo
-
- # which make?
- MAKE=make
-
- #which ar?
- AR=ar
-
- # not used, but convenient for those who preprocess things while compiling
- SHELL=/bin/sh
-
-
- # ------ compiler names
-
- # GNU C++ compiler name
- GXX = g++
- #GXX=gcc
-
- # GNU CC compiler name (needed for some .c files in libg++.a)
- CC = gcc
-
- # GNU loader
- LDXX = $(LIBDIR)/gcc-ld
- #LDXX = $(LIBDIR)/gcc-ld++
-
- # crt0+.o location (for dynamic loading tests)
- GXXCRT1=$(LIBDIR)/crt1+.o
-
- # ------ Other compilation flags
- # ------ modify as you like -- the ones here are sheer overkill
- # ------ However, You MUST compile libg++.a with EITHER -O OR
- # ------ -DUSE_LIBGXX_INLINES or both
-
- GXX_OPTIMIZATION_FLAGS= -O -fstrength-reduce -felide-constructors -fschedule-insns -fdelayed-branch -fsave-memoized
-
- #GXX_OPTIMIZATION_FLAGS=-DUSE_LIBGXX_INLINES
-
- GCC_OPTIMIZATION_FLAGS= -O -fstrength-reduce -fdelayed-branch
-
- DEBUG_FLAGS= -g
-
- #use this only if you like to look at lots of useless messages
- #VERBOSITY_FLAGS= -Wall -v
- VERBOSITY_FLAGS= -Wall
-
- GXX_INCLUDE_DIRS= -I$(SRCIDIR)
-
- GCC_INCLUDE_DIRS= -I$(prefix)/lib/gcc-include -I/usr/include -I$(SRCIDIR)
-
- #use this only if you use GNU as (gas) or other assemblers that
- #can read from pipes.
- PIPE_AS= -pipe
- #PIPE_AS=
-
- # Flags for all C++ compiles
- GXXFLAGS = $(OSFLAG) $(GXX_INCLUDE_DIRS) $(DEBUG_FLAGS) $(GXX_OPTIMIZATION_FLAGS) $(VERBOSITY_FLAGS) $(XTRAFLAGS) $(PIPE_AS)
-
- # Flags for all C compiles
- CFLAGS= $(OSFLAG) $(GCC_INCLUDE_DIRS) $(DEBUG_FLAGS) $(GCC_OPTIMIZATION_FLAGS) $(VERBOSITY_FLAGS) $(XTRAFLAGS) $(PIPE_AS)
-
- # g++ load time flags
- GXXLDFLAGS = -L$(PWD)/src -lg++ -lm $(OSLDFLAG)
-
- # Comment out the next line to disable incremental linking test
- # (this test NOT included in 1.39.0, so don't re-enable)
- #TEST0=test0
- TEST0=
-
- ###########################################################################
- #
- # compilation actions
- #
-
-
-
-
- src: FORCE
- (cd src; $(MAKE) GXX="$(GXX)" GXXFLAGS="$(GXXFLAGS)" GXXLDFLAGS="$(GXXLDFLAGS)" LIBDIR="$(LIBDIR)" SRCIDIR="$(SRCIDIR)" CC="$(CC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" LDXX="$(LDXX)" GXXCRT1="$(GXXCRT1)" MAKE="$(MAKE)" prefix="$(prefix)" VPATH="$(SRCIDIR)" AR="$(AR)" PROTODIR="$(PROTODIR)" GENCLASS="$(GENCLASS)")
-
- tests: FORCE
- (cd tests; $(MAKE) checktests GXX="$(GXX)" GXXFLAGS="$(GXXFLAGS)" GXXLDFLAGS="$(GXXLDFLAGS)" LIBDIR="$(LIBDIR)" SRCIDIR="$(SRCIDIR)" CC="$(CC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" LDXX="$(LDXX)" GXXCRT1="$(GXXCRT1)" MAKE="$(MAKE)" prefix="$(prefix)" AR="$(AR)" TEST0="$(TEST0)" PROTODIR="$(PROTODIR)" GENCLASS="$(GENCLASS)")
-
- etc: FORCE
- (cd etc; $(MAKE) GXX="$(GXX)" GXXFLAGS="$(GXXFLAGS)" GXXLDFLAGS="$(GXXLDFLAGS)" LIBDIR="$(LIBDIR)" SRCIDIR="$(SRCIDIR)" CC="$(CC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" LDXX="$(LDXX)" GXXCRT1="$(GXXCRT1)" MAKE="$(MAKE)" prefix="$(prefix)" AR="$(AR)" PROTODIR="$(PROTODIR)" GENCLASS="$(GENCLASS)")
-
- run_etc: FORCE
- (cd etc; $(MAKE) run_tests GXX="$(GXX)" GXXFLAGS="$(GXXFLAGS)" GXXLDFLAGS="$(GXXLDFLAGS)" LIBDIR="$(LIBDIR)" SRCIDIR="$(SRCIDIR)" CC="$(CC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" LDXX="$(LDXX)" GXXCRT1="$(GXXCRT1)" MAKE="$(MAKE)" prefix="$(prefix)" AR="$(AR)" PROTODIR="$(PROTODIR)" GENCLASS="$(GENCLASS)")
-
- gperf: FORCE
- (cd gperf; $(MAKE) GXX="$(GXX)" GXXFLAGS="$(GXXFLAGS)" GXXLDFLAGS="$(GXXLDFLAGS)" LIBDIR="$(LIBDIR)" SRCIDIR="$(SRCIDIR)" CC="$(CC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" LDXX="$(LDXX)" GXXCRT1="$(GXXCRT1)" prefix="$(prefix)" AR="$(AR)" PROTODIR="$(PROTODIR)" GENCLASS="$(GENCLASS)")
-
- genclass: genclass.sh
- echo "/^PROTODIR=/c\\" > sedscript
- echo "PROTODIR=$$\{PROTODIR-$(IDIR)/gen\}" >> sedscript
- sed -f sedscript < genclass.sh > genclass
- chmod 0755 genclass
- rm -f sedscript
-
- #to force sub-makes
- FORCE:
-
-
- ###########################################################################
- #
- # Installation
- #
-
- MAKE_ENVIRON=\
- BINDIR=$(BINDIR) \
- LIBDIR=$(LIBDIR) \
- MANDIR=$(MANDIR) \
- INSTALL="$(INSTALL)"
-
- all: src tests genclass etc gperf
-
- install: install-lib install-include-files install-progs
-
- install-lib:
- (cd src; $(MAKE) $(MAKE_ENVIRON) install)
-
- install-progs:
- (cd etc; $(MAKE) $(MAKE_ENVIRON) install)
- (cd gperf; $(MAKE) $(MAKE_ENVIRON) install)
- $(INSTALL) genclass $(BINDIR)
-
- install-include-files:
- -mkdir $(IDIR)
- -mkdir $(IDIR)/sys
- -mkdir $(IDIR)/gen
- cd $(SRCIDIR); \
- FILES=`find . ! -type d -print`; \
- cd gen; \
- GFILES=`find . ! -type d -print`;\
- cd $(IDIR); \
- rm -fr $$FILES; \
- rm -f $$GFILES; \
- cd $(SRCIDIR); \
- FILES=`find . ! -type d -print`; \
- for file in $$FILES; do \
- rm -f $(IDIR)/$$file; \
- cp $$file $(IDIR)/$$file; \
- chmod 0444 $(IDIR)/$$file; \
- echo $$file installed; \
- done
-
-
- ###########################################################################
- #
- # Destructors
- #
-
- clean:
- rm -f *.o *~ \#* *.bak *.pl a.out
- cd tests; $(MAKE) clean
- cd etc; $(MAKE) clean
- cd gperf; $(MAKE) clean
-
- realclean:
- cd src; $(MAKE) realclean
- cd tests; $(MAKE) realclean
- cd etc; $(MAKE) realclean
- cd gperf; $(MAKE) realclean
- -rm -f genclass
- -rm -f libg++.info* libg++.?? libg++.??s libg++.log libg++.toc libg++.*aux
- -rm -f *.orig src/*.orig tests/*.orig etc/*.orig g++-include/*.orig g++-include/sys/*.orig g++-include/gen/*.orig
- -rm -f *.rej src/*.rej tests/*.rej etc/*.rej g++-include/*.rej g++-include/sys/*.rej g++-include/gen/*.rej
- -rm -f *~ src/*~ tests/*~ etc/*~ g++-include/*~ g++-include/sys/*~ g++-include/gen/*~
- -rm -f a.out src/a.out tests/a.out etc/a.out
- -rm -f *.s src/*.s tests/*.s etc/*.s
-
-
- .PHONY: src tests genclass etc gperf FORCE install install-include-files
-