| # |
| # 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 |
| # <rich@cygnus.com>. |
| |
| # |
| # 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 pexecute.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 <errors` $(EXTRA_OFILES) ; do \ |
| case " $$f " in \ |
| *" $$i "*) ;; \ |
| *) f="$$f $$i" ;; \ |
| esac ; \ |
| done ; \ |
| case $$f in \ |
| *alloca.o*) f="$$f xmalloc.o xexit.o" ;; \ |
| esac ; \ |
| echo $$f >>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 <errors >>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 |