1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
|
# Makefile for GNU binary-file utilities
# Select a set of CFLAGS and PROGS, below, depending on the system type.
# Copyright (C) 1989, 1990 Free Software Foundation, Inc.
#
# This file is part of the GNU binutils.
#
# The GNU binutils are free software; you can redistribute them and/or modify
# them 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.
#
# The GNU binutils are distributed in the hope that they 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 the GNU binutils; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# gprof.c contains `void *' and very long string constants which many
# C compilers can't handle, so you might need gcc to compile it.
GNUCC = gcc -O
# But you might need to use your old C compiler to compile the other
# programs (ld at least), if you can't run gcc without them
# (particularly on COFF systems).
#CC = cc
bindir=/usr/local/gnubin
# For BSD:
# For SunOS 4.x, take out -DVPRINTF_MISSING.
CFLAGS = -g -DVPRINTF_MISSING
# Don't add robotussin; it won't compile on BSD or GNU systems.
# objdump is not here because it (at least used to) not compile
# on most systems (trouble with N_DATADDR). Some of those problems
# have been fixed, though.
PROGS = $(archpfx)gprof $(archpfx)ld $(archpfx)size \
$(archpfx)nm $(archpfx)strip $(archpfx)ar $(archpfx)ranlib
# For USG systems using COFF_ENCAPSULATE:
# Also, you will want to make the target libc.a (but it takes a long time).
# Note that you should leave a copy of `ar' in this directory
# after you install it, since `ranlib' will try to run it from here.
#CFLAGS=-g -DUSG -DCOFF_ENCAPSULATE -DPORTAR -DNON_NATIVE -DSYS_SIGLIST_MISSING
#PROGS = ld size nm strip ar robotussin objdump ranlib gprof
#SIGNAME = $(archpfx)signame.o
# On ALTOS systems, add -DALTOS to CFLAGS.
#It's better to move a copy of alloca into your libc than to risk getting some
#incompatible functions from -lPW (like index()), but if you
#want to be lazy, uncomment this line.
#ALLOCALIBS = -lPW
# For HP-UX:
# Don't add `robotussin'; use `hpxt' instead.
# Note that you should leave a copy of `ar' in this directory
# after you install it, since `ranlib' will try to run it from here.
#CFLAGS = -g -Ihp-include -DUSG -DNON_NATIVE -DVPRINTF_MISSING
#PROGS = ld size nm strip ar ranlib
#ALLOCALIBS = alloca.o
# For the NeXT:
# Set GNUCC = cc -O.
# Put -DMACH_O in CFLAGS, take out -DVPRINTF_MISSING.
# Comment out MALLOC below to use the system's malloc().
# For Sun386:
# Compile with -DPORTAR -DCOFF_ENCAPSULATE.
# Depending on how you configure gcc, you might also want -Dnounderscore,
# though I did not wind up using it.
# If you run out of stack space while running GNU ar or GNU ld (this
# manifests itself as a segment violation), you should link in alloca.c
# from the gcc sources, and get rid of the "#define alloca" in ar.c and
# ld.c; or you could try to get Sun to fix this annoying "feature".
#CFLAGS = -g -DCOFF_ENCAPSULATE -DPORTAR
#PROGS = ld size nm strip ar robotussin objdump ranlib gprof
# nm tries to malloc enough space for the string table. The old GNU malloc
# rounds this up to a power of two (e.g. 5M becomes 8M), and so it might
# fail unnecessarily. I've also seen some Unix malloc's fail, even when
# there is enough memory. So use the new GNU malloc.
MALLOC = $(archpfx)gmalloc.o
GNU_GETOPT = $(archpfx)getopt.o
GNU_GETOPT_LONG = $(archpfx)getopt.o $(archpfx)getopt1.o
# C++ demangler
CPLUS_DEM = $(archpfx)cplus-dem.o
LIBS=$(ALLOCALIBS) $(SIGNAME)
all: $(PROGS)
$(archpfx)ld: $(archpfx)ld.o $(GNU_GETOPT_LONG) $(CPLUS_DEM) $(LIBS)
# LIBS is used here since ld needs to use alloca.
# Alternatively, compile it with GNU C--then the compiler handles alloca.
$(CC) $(CFLAGS) -o $(archpfx)ld $(archpfx)ld.o $(GNU_GETOPT_LONG) $(CPLUS_DEM) $(LIBS)
$(archpfx)size: $(archpfx)size.o $(LIBS)
$(CC) $(CFLAGS) -o $(archpfx)size $(archpfx)size.o
$(archpfx)nm: $(archpfx)nm.o $(GNU_GETOPT_LONG) $(CPLUS_DEM) $(MALLOC) $(LIBS)
$(CC) $(CFLAGS) -o $(archpfx)nm $(archpfx)nm.o \
$(GNU_GETOPT_LONG) $(CPLUS_DEM) $(LIBS) $(MALLOC)
$(archpfx)strip: $(archpfx)strip.o $(archpfx)error.o $(GNU_GETOPT_LONG) $(LIBS)
$(CC) $(CFLAGS) -o $(archpfx)strip $(archpfx)strip.o $(archpfx)error.o $(GNU_GETOPT_LONG) $(LIBS)
$(archpfx)ar: $(archpfx)ar.o $(LIBS)
$(CC) $(CFLAGS) -o $(archpfx)ar $(archpfx)ar.o $(LIBS)
$(archpfx)gprof: $(archpfx)gprof.o $(GNU_GETOPT_LONG) $(CPLUS_DEM) $(LIBS)
$(GNUCC) $(CFLAGS) -o $(archpfx)gprof $(archpfx)gprof.o \
$(GNU_GETOPT_LONG) $(CPLUS_DEM) $(LIBS)
$(archpfx)gprof.o: gprof.c gmon.h
$(GNUCC) $(CFLAGS) -c gprof.c $(OUTPUT_OPTION)
$(archpfx)ranlib: $(archpfx)ranlib.o $(GNU_GETOPT_LONG) $(LIBS)
$(CC) $(CFLAGS) -o $(archpfx)ranlib $(archpfx)ranlib.o $(GNU_GETOPT_LONG) $(LIBS)
$(archpfx)ranlib.o: ranlib.c
$(CC) -c $(CFLAGS) -DAR_PROG=\"$(bindir)/ar\" ranlib.c $(OUTPUT_OPTION)
$(archpfx)objdump: $(archpfx)objdump.o $(archpfx)error.o $(GNU_GETOPT_LONG) a.out.gnu.h $(LIBS)
$(CC) $(CFLAGS) -o $(archpfx)objdump $(archpfx)objdump.o $(archpfx)error.o \
$(GNU_GETOPT_LONG) $(LIBS)
# Robotussin is NOT part of `all'.
$(archpfx)robotussin: $(archpfx)robotussin.o $(LIBS)
$(CC) $(CFLAGS) -o $(archpfx)robotussin $(archpfx)robotussin.o
libc.a: $(archpfx)robotussin libconvert $(archpfx)ar
libconvert /lib/libc.a libc.a
# usg-gnulib is the file gcc makes using the usg compiler
gnulib: $(archpfx)robotussin libconvert usg-gnulib $(archpfx)ar
libconvert usg-gnulib gnulib
clean:
-rm -f *.o core
-rm -f $(archpfx)*.o
-rm -f $(PROGS) objdump
DISTNAME = binutils-1.9
dist:
rm -rf $(DISTNAME)
mkdir $(DISTNAME) $(DISTNAME)/hp-bin $(DISTNAME)/hp-include
ln COPYING ChangeLog Makefile README README-ENCAP \
a.out.encap.h a.out.gnu.h ar.c cplus-dem.c \
error.c getopt.c getopt.h getopt1.c gmalloc.c \
gmon.h gprof.c gprof.texinfo ld.c libconvert nm.c objdump.c \
ranlib.c ranlib.h robotussin.c signame.c signame.h size.c \
stab.def stab.h strip.c symseg.h $(DISTNAME)
cd hp-bin; ln Makefile chatr.c hpxt.c ioutil.c ioutil.h \
mkhplib ../$(DISTNAME)/hp-bin
cd hp-include; ln a.out.h stab.def stab.h ../$(DISTNAME)/hp-include
tar chZf $(DISTNAME).tar.Z $(DISTNAME)
rm -rf $(DISTNAME)
.PHONY: dist
.PHONY: install
install: $(PROGS)
for file in $(PROGS); do \
cp $$file $(bindir)/$${file}.new; \
mv $(bindir)/$${file}.new $(bindir)/$$file; \
done
|