2000-11-05 08:33:55 +00:00
|
|
|
# Makefile for file(1) cmd.
|
|
|
|
# Copyright (c) Ian F. Darwin 86/09/01 - see LEGAL.NOTICE.
|
2003-02-15 18:53:17 +00:00
|
|
|
# @(#)$Id: Makefile.std,v 1.16 2003/02/08 18:35:36 christos Exp $
|
2000-11-05 08:33:55 +00:00
|
|
|
#
|
|
|
|
# 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.
|
|
|
|
#
|
2003-02-15 18:53:17 +00:00
|
|
|
VERSION = 3.40
|
2000-11-05 08:33:55 +00:00
|
|
|
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 \
|
2002-09-16 05:54:26 +00:00
|
|
|
compress.c is_tar.c readelf.c \
|
2000-11-05 08:33:55 +00:00
|
|
|
print.c $(LOCALSRCS) $(LOCALINC)
|
|
|
|
OBJS = file.o apprentice.o fsmagic.o softmagic.o ascmagic.o \
|
2002-09-16 05:54:26 +00:00
|
|
|
compress.o is_tar.o readelf.o \
|
2000-11-05 08:33:55 +00:00
|
|
|
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}
|