summaryrefslogtreecommitdiffstats
path: root/contrib/file/Makefile.std
blob: ff2a9b5ddc9212f4144e371a0ce8a91a52454a83 (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
# Makefile for file(1) cmd. 
# Copyright (c) Ian F. Darwin 86/09/01 - see LEGAL.NOTICE.
# @(#)$Id: Makefile.std,v 1.17 2003/02/27 20:47:45 christos Exp $
#
# This software is not subject to any license of the American Telephone
# and Telegraph Company or of the Regents of the University of California.
#
# Permission is granted to anyone to use this software for any purpose on
# any computer system, and to alter it and redistribute it freely, subject
# to the following restrictions:
#
# 1. The author is not responsible for the consequences of use of this
#    software, no matter how awful, even if they arise from flaws in it.
#
# 2. The origin of this software must not be misrepresented, either by
#    explicit claim or by omission.  Since few users ever read sources,
#    credits must appear in the documentation.
#
# 3. Altered versions must be plainly marked as such, and must not be
#    misrepresented as being the original software.  Since few users
#    ever read sources, credits must appear in the documentation.
#
# 4. This notice may not be removed or altered.
#
VERSION	= 3.41
SHELL	= /bin/sh
#MAGIC	= /etc/magic
MAGIC	= /usr/local/etc/magic
DEFS	= -DMAGIC='"$(MAGIC)"' -DBUILTIN_ELF # -Dvoid=int
CC	= cc
COPTS	= -O -g		# newer compilers allow both; else drop -O
# For truly antique environments, use this for (dummy) include files:
COPTS	= -O # -Ilocalinc
CFLAGS	= $(COPTS) $(DEFS)
LDFLAGS	= $(COPTS) # -Bstatic	# older gdb couldn't handle shared libs
SHAR	= bundle
OFILE	= /usr/bin/file		# old or distributed version, for comparison
# Where new binary lives; typically /usr/local (BSD), /usr/lbin (USG).
BINDIR	= /usr/local/bin
# For installing our man pages; 
# MANCxxx is manual section for Commands, MANFxxx is section for file formats.
# MANxDIR is directory names; MANxEXT is the filename extention. Usual values:
# Variable	V7		4BSD		Sys V
# MANCDIR 	/usr/man/man1	/usr/man/man1	/usr/man/u_man/man1
# MANFDIR 	/usr/man/man5	/usr/man/man5	/usr/man/u_man/man4
# MANCEXT	1		1		1
# MANFEXT	5		5		4
# --- possible alternative for 4BSD ---
# MANCDIR			/usr/local/man/man1
# MANCEXT			1
# or
# MANCDIR			/usr/man/manl
# MANCEXT			l
# --- possible alternative for USG ---
# MANCDIR			/usr/man/local/man1
# MANCEXT			1

MANCDIR	= /usr/local/man/man1
MANCEXT	= 1
MANFDIR	= /usr/local/man/man4
MANFEXT	= 4

# There are no system-dependant configuration options (except maybe CFLAGS).
# Uncomment any of these that is missing from your "standard" library.
LOCALSRCS = # localsrc/getopt.c localsrc/strtol.c \
#		localsrc/strtok.c localsrc/strchr.c
LOCALOBJS = # localsrc/getopt.o localsrc/strtol.o \
#		localsrc/strtok.o localsrc/strchr.o
# These are not compiled in unless you use -Ilocalinc, but
# are not commented out as "make dist" &c use them.
LOCALINC = # localinc/*.h localinc/sys/*.h

SRCS = file.c apprentice.c fsmagic.c softmagic.c ascmagic.c \
	compress.c is_tar.c readelf.c \
	print.c $(LOCALSRCS) $(LOCALINC)
OBJS = file.o apprentice.o fsmagic.o softmagic.o ascmagic.o \
	compress.o is_tar.o readelf.o \
	print.o $(LOCALOBJS)
HDRS = file.h names.h patchlevel.h readelf.h tar.h

AUTOSRC=configure configure.in install-sh config.h.in Makefile.in
ALLSRC = LEGAL.NOTICE README MAINT PORTING $(SRCS) $(HDRS) \
	 Makefile.std file.man magic.man magic2mime $(AUTOSRC) \
	 Localstuff Header
ALLMAGIC =   Magdir/[a-z]*

all:		file magic file.${MANCEXT} magic.${MANFEXT}

TESTFILES = * tst/*
try:		all $(OFILE)
		cd tst; $(MAKE)
		time $(OFILE) $(TESTFILES) >/tmp/t1 # can't use ./magic
		time ./file -m ./magic $(TESTFILES) >/tmp/t2
		-diff -b /tmp/t[12]
		what ./file >lastnocore

file:		$(OBJS)
		$(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) -o $@
lint:		$(SRCS)
		lint -ha $(DEFS) $(SRCS) | tee $@
magic:		Localstuff Header Magdir
		cat Header Localstuff Magdir/[a-z] > $@

ascmagic.o:	names.h

compress.o apprentice.o ascmagic.o file.o fsmagic.o print.o softmagic.o: file.h

install:	file magic
		cp file	$(BINDIR)/file
		cp magic $(MAGIC)

install.man: file.${MANCEXT} magic.${MANFEXT}
		cp file.${MANCEXT} $(MANCDIR)/file.$(MANCEXT)
		cp magic.${MANFEXT} $(MANFDIR)/magic.$(MANFEXT)

clean:
		rm -f *.o core file magic lint dist.* MANIFEST \
		      magic.${MANFEXT} file.${MANCEXT} \
		      config.h config.status config.cache config.log
clobber:
		cd tst; $(MAKE) clean


magic.${MANFEXT} :	Makefile magic.man
		@rm -f $@
		sed -e s@__CSECTION__@${MANCEXT}@g \
		    -e s@__FSECTION__@${MANFEXT}@g \
		    -e s@__VERSION__@${VERSION}@g \
		    -e s@__MAGIC__@${MAGIC}@g magic.man > $@

file.${MANCEXT} :	Makefile file.man
		@rm -f $@
		sed -e s@__CSECTION__@${MANCEXT}@g \
		    -e s@__FSECTION__@${MANFEXT}@g \
		    -e s@__VERSION__@${VERSION}@g \
		    -e s@__MAGIC__@${MAGIC}@g file.man > $@

send:		dist
		ftp ftp.cs

dist:		dist.src dist.magic
		@echo Now check this patchlevel!
		ident patchlevel.h

dist.src:	$(ALLSRC) MANIFEST
#		Some versions of shar can't handle a single file from
#		a subdirectory, so we manually insert mkdir as needed.
#		The point is to exclude all the generable targets in tst.
		(echo mkdir localinc localinc/sys localsrc tst; \
			$(SHAR) $(ALLSRC) MANIFEST) > $@

rcsdiff:	$(ALLSRC)
		rcsdiff -q RCS/*

MANIFEST:	$(ALLSRC)
		ident $(ALLSRC) > MANIFEST
dist.magic:	Magdir
#		As above, but to exclude Magdir/RCS from being shipped.
		(echo mkdir Magdir; $(SHAR) $(ALLMAGIC)) >$@

tar:		$(ALLSRC) $(ALLMAGIC)
		-rm -fr file-${VERSION}
		-mkdir file-${VERSION} file-${VERSION}/Magdir
		ln $(ALLSRC) file-${VERSION}
		ln ${ALLMAGIC} file-${VERSION}/Magdir
		tar cvf file-${VERSION}.tar file-${VERSION}
		-rm -fr file-${VERSION}
OpenPOWER on IntegriCloud