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.12 2001/09/03 14:44:21 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.37
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 internat.c \
print.c $(LOCALSRCS) $(LOCALINC)
OBJS = file.o apprentice.o fsmagic.o softmagic.o ascmagic.o \
compress.o is_tar.o readelf.o internat.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}
|