# Makefile for file(1) cmd. # Copyright (c) Ian F. Darwin 86/09/01 - see LEGAL.NOTICE. # @(#)$Id: Makefile.std,v 1.19 2014-06-03 19:17:27 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 extension. 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-dependent 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 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}