# # Makefile # Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 1997 Free Software Foundation # # This file is part of the libiberty library. # Libiberty is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # Libiberty 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 # Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with libiberty; see the file COPYING.LIB. If not, # write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # # This file was written, and is maintained by K. Richard Pixley # . # # Makefile for libiberty directory # srcdir = . prefix = /usr/local exec_prefix = $(prefix) bindir = $(exec_prefix)/bin libdir = $(exec_prefix)/lib datadir = $(prefix)/share mandir = $(prefix)/man man1dir = $(mandir)/man1 man2dir = $(mandir)/man2 man3dir = $(mandir)/man3 man4dir = $(mandir)/man4 man5dir = $(mandir)/man5 man6dir = $(mandir)/man6 man7dir = $(mandir)/man7 man8dir = $(mandir)/man8 man9dir = $(mandir)/man9 infodir = $(prefix)/info includedir = $(prefix)/include SHELL = /bin/sh # Multilib support variables. MULTISRCTOP = MULTIBUILDTOP = MULTIDIRS = MULTISUBDIR = MULTIDO = true MULTICLEAN = true INSTALL = install -c INSTALL_PROGRAM = $(INSTALL) INSTALL_DATA = $(INSTALL) AR = ar AR_FLAGS = rc ERRORS_CC = $(CC) CC = cc CFLAGS = -g LIBCFLAGS = $(CFLAGS) MAKEINFO = makeinfo RANLIB = ranlib PICFLAG = MAKEOVERRIDES = TARGETLIB = libiberty.a CONFIG_H = lconfig.h NEEDED_LIST = lneeded-list # HOST_OFILES contains the list of objects that should be in the # library (in addition to the REQUIRED_OFILES and EXTRA_OFILES). # A configuration may override this with a fixed list a object files # names (hard to maintain), or some other way to generate a list. HOST_OFILES=`cat needed-list` # Extra targets that the top-level target depends on. # Specifically, what needs to be made before HOST_OFILES can be used. # Can be empty if HOST_OFILES is just a list of file names. DO_ALSO = needed-list # A configuration can specify extra .o files that should be included, # even if they are in libc. (Perhaps the libc version is buggy.) EXTRA_OFILES = # Flags to pass to a recursive make. FLAGS_TO_PASS = \ "AR=$(AR)" \ "AR_FLAGS=$(AR_FLAGS)" \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ "LIBCFLAGS=$(LIBCFLAGS)" \ "EXTRA_OFILES=$(EXTRA_OFILES)" \ "HDEFINES=$(HDEFINES)" \ "INSTALL=$(INSTALL)" \ "INSTALL_DATA=$(INSTALL_DATA)" \ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ "LDFLAGS=$(LDFLAGS)" \ "LOADLIBES=$(LOADLIBES)" \ "PICFLAG=$(PICFLAG)" \ "RANLIB=$(RANLIB)" \ "SHELL=$(SHELL)" all: stamp-picdir $(TARGETLIB) required-list @if [ "$(RULE1)" != "not-used" ]; then \ $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=all; \ else true; \ fi .PHONY: check installcheck check installcheck: #### Host, target, and site specific Makefile fragments come in here. ### INCDIR=$(srcdir)/$(MULTISRCTOP)../include COMPILE.c = $(CC) -c $(LIBCFLAGS) -I. -I$(INCDIR) $(HDEFINES) .c.o: test -z "$(PICFLAG)" || \ $(COMPILE.c) $(PICFLAG) $< -o pic/$@ $(COMPILE.c) $< # The default target just invokes make recursively. # However, the automatic configuration (in config/mh_default). # first causes it to figure out the objects missing in libc. info install-info clean-info dvi: # Include files that are in this directory. HFILES = # NOTE: If you add new files to the library, add them to this list # (alphabetical), and add them to REQUIRED_OFILES or 'functions.def'. CFILES = asprintf.c alloca.c argv.c atexit.c basename.c bcmp.c bcopy.c bzero.c \ choose-temp.c clock.c concat.c cplus-dem.c fdmatch.c fnmatch.c \ getcwd.c getopt.c getopt1.c getpagesize.c getruntime.c \ floatformat.c hex.c index.c insque.c \ memchr.c memcmp.c memcpy.c memmove.c memset.c objalloc.c \ obstack.c random.c rename.c rindex.c sigsetmask.c spaces.c \ strcasecmp.c strncasecmp.c \ strchr.c strdup.c strerror.c strrchr.c strsignal.c \ strstr.c strtod.c strtol.c strtoul.c tmpnam.c \ vasprintf.c vfork.c vfprintf.c vprintf.c vsprintf.c waitpid.c \ xatexit.c xexit.c xmalloc.c xstrdup.c xstrerror.c # These are always included in the library. REQUIRED_OFILES = argv.o basename.o choose-temp.o concat.o cplus-dem.o \ fdmatch.o fnmatch.o getopt.o getopt1.o getruntime.o hex.o \ floatformat.o objalloc.o obstack.o pexecute.o spaces.o strerror.o \ strsignal.o xatexit.o xexit.o xmalloc.o xstrdup.o xstrerror.o # Do we want/need any config overrides? # STAGESTUFF = $(TARGETLIB) *.o INSTALL_DEST = libdir install: install_to_$(INSTALL_DEST) install_to_libdir: all $(INSTALL_DATA) $(TARGETLIB) $(libdir)$(MULTISUBDIR)/$(TARGETLIB).n ( cd $(libdir)$(MULTISUBDIR) ; $(RANLIB) $(TARGETLIB).n ) mv -f $(libdir)$(MULTISUBDIR)/$(TARGETLIB).n $(libdir)$(MULTISUBDIR)/$(TARGETLIB) @$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=install install_to_tooldir: all $(INSTALL_DATA) $(TARGETLIB) $(tooldir)/lib$(MULTISUBDIR)/$(TARGETLIB).n ( cd $(tooldir)/lib$(MULTISUBDIR) ; $(RANLIB) $(TARGETLIB).n ) mv -f $(tooldir)/lib$(MULTISUBDIR)/$(TARGETLIB).n $(tooldir)/lib$(MULTISUBDIR)/$(TARGETLIB) @$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=install # The default configuration adds to libiberty all those functions that are # missing in libc. More precisely, it includes whatever $(CC) fails to find. # Then a sed+awk combination translates the ld error messages into # a list of .o files. stamp-needed: stamp-picdir $(NEEDED_LIST) cp $(NEEDED_LIST) needed-tmp $(SHELL) $(srcdir)/$(MULTISRCTOP)../move-if-change needed-tmp needed-list touch stamp-needed needed-list: stamp-needed ; @true lneeded-list: $(EXTRA_OFILES) needed.awk errors rm -f lneeded-list f=""; \ for i in `awk -f needed.awk >lneeded-list # Generate an awk script that looks for functions in functions.def needed.awk: $(srcdir)/functions.def Makefile echo "# !Automatically generated from $(srcdir)/functions.def"\ "- DO NOT EDIT!" >needed.awk grep '^DEF(' < $(srcdir)/functions.def \ | sed -e '/DEF/s|DEF.\([^,]*\).*|/\1/ { printf "\1.o " }|' \ >>needed.awk stamp-config: $(CONFIG_H) cp $(CONFIG_H) config.tmp $(SHELL) $(srcdir)/$(MULTISRCTOP)../move-if-change config.tmp config.h touch stamp-config config.h: stamp-config ; @true lconfig.h: needed2.awk errors echo "/* !Automatically generated from $(srcdir)/functions.def"\ "- DO NOT EDIT! */" >lconfig.h awk -f needed2.awk >lconfig.h # Generate an awk script that looks for variables in functions.def needed2.awk: $(srcdir)/functions.def Makefile echo "# !Automatically generated from $(srcdir)/functions.def"\ "- DO NOT EDIT!" >needed2.awk grep '^DEFVAR(' < $(srcdir)/functions.def \ | sed -e '/DEFVAR/s|DEFVAR.\([^,]*\).*|/\1/ { printf "#ifndef NEED_\1\\n#define NEED_\1\\n#endif\\n" }|' \ >>needed2.awk grep '^DEFFUNC(' < $(srcdir)/functions.def \ | sed -e '/DEFFUNC/s|DEFFUNC.\([^,]*\).*|/\1/ { printf "#ifndef NEED_\1\\n#define NEED_\1\\n#endif\\n" }|' \ >>needed2.awk dummy.o: $(srcdir)/dummy.c $(srcdir)/functions.def $(CC) -c $(CFLAGS) -I. -I$(INCDIR) $(HDEFINES) $(srcdir)/dummy.c 2>/dev/null errors: dummy.o $(EXTRA_OFILES) -($(ERRORS_CC) -o dummy $(CFLAGS) $(LDFLAGS) $(ERRORS_LDFLAGS) dummy.o $(EXTRA_OFILES) $(LOADLIBES)) >errors 2>&1 || true # required-list is used when building a shared bfd/opcodes/libiberty library. required-list: Makefile echo $(REQUIRED_OFILES) > required-list $(HOST_OFILES) $(REQUIRED_OFILES) : config.h RULE1 = $(TARGETLIB) $(RULE1): $(REQUIRED_OFILES) $(DO_ALSO) .always. @$(MAKE) RULE1=not-used RULE2=$(TARGETLIB) $(FLAGS_TO_PASS) \ "HOST_OFILES=$(HOST_OFILES)" # Rule invoked by recursive make in $(RULE1). RULE2 = not-used $(RULE2): $(REQUIRED_OFILES) $(HOST_OFILES) rm -rf $(TARGETLIB) $(AR) $(AR_FLAGS) $(TARGETLIB) \ $(REQUIRED_OFILES) $(HOST_OFILES) $(RANLIB) $(TARGETLIB) stamp-picdir: if [ -n "$(PICFLAG)" ] && [ ! -d pic ]; then \ mkdir pic; \ else true; fi touch stamp-picdir .always.: # Do nothing. .PHONY: all etags tags ls clean stage1 stage2 .always. etags tags: TAGS TAGS: $(CFILES) $(HFILES) etags `for i in $(HFILES) $(CFILES); do echo $(srcdir)/$$i ; done` # The standalone demangler (c++filt) has been moved to binutils. demangle: @echo "The standalone demangler, now named c++filt, is now" @echo "a part of binutils." @false ls: @echo Makefile $(HFILES) $(CFILES) # Need to deal with profiled libraries, too. mostlyclean: rm -rf *.o pic core errs \#* *.E a.out rm -f needed.awk needed2.awk errors dummy needed-list config.h stamp-* rm -f $(CONFIG_H) $(NEEDED_LIST) stamp-picdir @$(MULTICLEAN) multi-clean DO=mostlyclean clean: mostlyclean rm -f *.a required-list tmpmulti.out @$(MULTICLEAN) multi-clean DO=clean distclean: clean @$(MULTICLEAN) multi-clean DO=distclean rm -f *~ Makefile config.status alloca-conf.h xhost-mkfrag TAGS multilib.out maintainer-clean realclean: distclean force: Makefile: $(srcdir)/Makefile.in $(host_makefile_frag) $(target_makefile_frag) $(SHELL) ./config.status argv.o: $(INCDIR)/libiberty.h basename.o: $(INCDIR)/libiberty.h concat.o: $(INCDIR)/libiberty.h cplus-dem.o: $(INCDIR)/demangle.h fdmatch.o: $(INCDIR)/libiberty.h fnmatch.o: $(INCDIR)/fnmatch.h getopt.o: $(INCDIR)/getopt.h getopt1.o: $(INCDIR)/getopt.h getruntime.o: $(INCDIR)/libiberty.h hex.o: $(INCDIR)/libiberty.h floatformat.o: $(INCDIR)/floatformat.h objalloc.o: $(INCDIR)/objalloc.h obstack.o: $(INCDIR)/obstack.h pexecute.o: $(INCDIR)/libiberty.h spaces.o: $(INCDIR)/libiberty.h strerror.o: $(INCDIR)/libiberty.h strsignal.o: $(INCDIR)/libiberty.h xatexit.o: $(INCDIR)/libiberty.h xexit.o: $(INCDIR)/libiberty.h xmalloc.o: $(INCDIR)/libiberty.h xstrdup.o: $(INCDIR)/libiberty.h xstrerror.o: $(INCDIR)/libiberty.h