summaryrefslogtreecommitdiff
path: root/beos/Makefile
blob: 1b9e61375710445380dcf7ac1c3aeab8bcdc567c (plain)
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
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
######################################################################
#
# Makefile for Info-ZIP's zip, zipcloak, zipnote, and zipsplit on BeOS
#
# Copyright © 1999 Info-ZIP
#             Chris Herborth (chrish@pobox.com)
#
# This is the new New and Improved Makefile for BeOS; it automatically
# detects your platform and uses the appropriate compiler and compiler
# flags.

######################################################################
# Things that don't change:

# Punish people who don't have SMP hardware.
MAKE  = make -j 4 -f beos/Makefile
SHELL = /bin/sh

LN = ln -s

BIND = $(CC)
AS   = $(CC) -c
CPP  = $(CC) -E

INSTALL = install

# Target directories
prefix = /boot/home/config
BINDIR = $(prefix)/bin
manext = 1
MANDIR = $(prefix)/man/man$(manext)
ZIPMANUAL = MANUAL

VERSION = Version 2.3 of __DATE__

######################################################################
# Things that change:

# PowerPC system
ifeq "$(BE_HOST_CPU)" "ppc"

CC:=mwcc

ifeq "$(shell uname -r)" "4.0"

CFLAGS:=-O7 -opt schedule604 -rostr -w9 \
		-I. -DHAVE_DIRENT_H -DPASSWD_FROM_STDIN
LFLAGS1:=-warn

else

CFLAGS:=-O7 -proc 604e -w9 -I. -DHAVE_DIRENT_H -DPASSWD_FROM_STDIN
LFLAGS1:=-nodup

endif

LFLAGS2:=-L/boot/develop/lib/ppc -lbe -lroot
OBJA =
TARGET=$(ZIPS)

# x86 system
else

CC:=gcc

# Removed -Wconversion and -Wshadow because of the unnecessary warnings 
# they generate. - Sept. 28, 1999
CFLAGS:=-O3 -mpentiumpro \
		-Wall -Wno-multichar -Wno-ctor-dtor-privacy \
		-Wbad-function-cast -Woverloaded-virtual \
		-I. -I/boot/develop/headers/be/support \
	    -I/boot/develop/headers/be/storage \
	    -DHAVE_DIRENT_H -DPASSWD_FROM_STDIN # -DASMV
LFLAGS1:=
LFLAGS2:=-L/boot/develop/lib/x86 -lbe -lroot
OBJA = #match.o
TARGET=$(ZIPS)

endif

######################################################################
# Helpful targets
all:
	$(MAKE) CC=$(CC) CFLAGS="$(CFLAGS)" \
		LFLAGS1="$(LFLAGS1)" LFLAGS2="$(LFLAGS2)" \
		$(TARGET)

######################################################################
# Object file lists and other build goodies

# Object file lists
OBJZ = zip.o zipfile.o zipup.o fileio.o util.o globals.o crypt.o ttyio.o \
       beos.o crc32.o
OBJI = deflate.o trees.o
# OBJA moved into ifeq block above; we'll use assembly for x86
OBJU = zipfile_.o fileio_.o util_.o globals.o beos_.o
OBJN = zipnote.o  $(OBJU)
OBJC = zipcloak.o $(OBJU) crc32_.o crypt_.o ttyio.o
OBJS = zipsplit.o $(OBJU)

# Headers
ZIP_H = zip.h ziperr.h tailor.h beos/osdep.h

# What to build?
ZIPS = zip zipnote zipsplit zipcloak

# suffix rules
.SUFFIXES:
.SUFFIXES: _.o .o .c .doc .1
.c_.o:
	rm -f $*_.c; $(LN) $< $*_.c
	$(CC) -c $(CFLAGS) -DUTIL $*_.c
	rm -f $*_.c

.c.o:
	$(CC) -c $(CFLAGS) $<

.1.doc:
	groff -man -Tascii $< > $@

# rules for zip, zipnote, zipcloak, zipsplit, and the Zip MANUAL.
$(OBJZ): $(ZIP_H)
$(OBJI): $(ZIP_H)
$(OBJN): $(ZIP_H)
$(OBJS): $(ZIP_H)
$(OBJC): $(ZIP_H)
zip.o crc32.o crypt.o fileio.o zipfile.o zipup.o: crc32.h
zipcloak.o crc32_.o crypt_.o fileio_.o zipfile_.o: crc32.h
zip.o zipup.o crypt.o ttyio.o zipcloak.o crypt_.o: crypt.h
zip.o zipup.o zipnote.o zipcloak.o zipsplit.o: revision.h
zip.o crypt.o ttyio.o zipcloak.o crypt_.o: ttyio.h
zipup.o: beos/zipup.h

match.o: match.S
	$(CPP) match.S > _match.s
	$(AS) _match.s
	mv -f _match.o match.o
	rm -f _match.s

beos.o: beos/beos.c
	$(CC) -c $(CFLAGS) beos/beos.c

beos_.o: beos/beos.c
	rm -f $*_.c; $(LN) beos/beos.c $*_.c
	$(CC) -c $(CFLAGS) -DUTIL $*_.c
	rm -f $*_.c

zips: $(ZIPS)
zipsman: $(ZIPS) $(ZIPMANUAL)

zip: $(OBJZ) $(OBJI) $(OBJA)
	$(BIND) -o zip $(LFLAGS1) $(OBJZ) $(OBJI) $(OBJA) $(LFLAGS2)
zipnote: $(OBJN)
	$(BIND) -o zipnote $(LFLAGS1) $(OBJN) $(LFLAGS2)
zipcloak: $(OBJC)
	$(BIND) -o zipcloak $(LFLAGS1) $(OBJC) $(LFLAGS2)
zipsplit: $(OBJS)
	$(BIND) -o zipsplit $(LFLAGS1) $(OBJS) $(LFLAGS2)

$(ZIPMANUAL): man/zip.1
	groff -man -Tascii man/zip.1 > $(ZIPMANUAL)

# install
install:        $(ZIPS)
	$(INSTALL) -m755 $(ZIPS) $(BINDIR)
	mkdir -p $(MANDIR)
	$(INSTALL) -m644 man/zip.1 $(MANDIR)/zip.$(manext)

uninstall:
	-cd $(BINDIR); rm -f $(ZIPS)
	-cd $(MANDIR); rm -f zip.$(manext)

dist: $(ZIPMANUAL)
	zip -u9T zip`sed -e '/VERSION/!d' -e 's/.*"\(.*\)".*/\1/' \
			  -e s/[.]//g -e q revision.h` \
	  `awk '/^Makefile/,/vms_zip.rnh/ {print $$1}' < contents`

# clean up after making stuff and installing it
clean:
	rm -f *.o $(ZIPS) flags

# end of Makefile