Merge from vendor branch OPENSSL:
[dragonfly.git] / contrib / file / Makefile.std
1 # Makefile for file(1) cmd. 
2 # Copyright (c) Ian F. Darwin 86/09/01 - see LEGAL.NOTICE.
3 # @(#)$Id: Makefile.std,v 1.17 2003/02/27 20:47:45 christos Exp $
4 #
5 # This software is not subject to any license of the American Telephone
6 # and Telegraph Company or of the Regents of the University of California.
7 #
8 # Permission is granted to anyone to use this software for any purpose on
9 # any computer system, and to alter it and redistribute it freely, subject
10 # to the following restrictions:
11 #
12 # 1. The author is not responsible for the consequences of use of this
13 #    software, no matter how awful, even if they arise from flaws in it.
14 #
15 # 2. The origin of this software must not be misrepresented, either by
16 #    explicit claim or by omission.  Since few users ever read sources,
17 #    credits must appear in the documentation.
18 #
19 # 3. Altered versions must be plainly marked as such, and must not be
20 #    misrepresented as being the original software.  Since few users
21 #    ever read sources, credits must appear in the documentation.
22 #
23 # 4. This notice may not be removed or altered.
24 #
25 VERSION = 3.41
26 SHELL   = /bin/sh
27 #MAGIC  = /etc/magic
28 MAGIC   = /usr/local/etc/magic
29 DEFS    = -DMAGIC='"$(MAGIC)"' -DBUILTIN_ELF # -Dvoid=int
30 CC      = cc
31 COPTS   = -O -g         # newer compilers allow both; else drop -O
32 # For truly antique environments, use this for (dummy) include files:
33 COPTS   = -O # -Ilocalinc
34 CFLAGS  = $(COPTS) $(DEFS)
35 LDFLAGS = $(COPTS) # -Bstatic   # older gdb couldn't handle shared libs
36 SHAR    = bundle
37 OFILE   = /usr/bin/file         # old or distributed version, for comparison
38 # Where new binary lives; typically /usr/local (BSD), /usr/lbin (USG).
39 BINDIR  = /usr/local/bin
40 # For installing our man pages; 
41 # MANCxxx is manual section for Commands, MANFxxx is section for file formats.
42 # MANxDIR is directory names; MANxEXT is the filename extention. Usual values:
43 # Variable      V7              4BSD            Sys V
44 # MANCDIR       /usr/man/man1   /usr/man/man1   /usr/man/u_man/man1
45 # MANFDIR       /usr/man/man5   /usr/man/man5   /usr/man/u_man/man4
46 # MANCEXT       1               1               1
47 # MANFEXT       5               5               4
48 # --- possible alternative for 4BSD ---
49 # MANCDIR                       /usr/local/man/man1
50 # MANCEXT                       1
51 # or
52 # MANCDIR                       /usr/man/manl
53 # MANCEXT                       l
54 # --- possible alternative for USG ---
55 # MANCDIR                       /usr/man/local/man1
56 # MANCEXT                       1
57
58 MANCDIR = /usr/local/man/man1
59 MANCEXT = 1
60 MANFDIR = /usr/local/man/man4
61 MANFEXT = 4
62
63 # There are no system-dependant configuration options (except maybe CFLAGS).
64 # Uncomment any of these that is missing from your "standard" library.
65 LOCALSRCS = # localsrc/getopt.c localsrc/strtol.c \
66 #               localsrc/strtok.c localsrc/strchr.c
67 LOCALOBJS = # localsrc/getopt.o localsrc/strtol.o \
68 #               localsrc/strtok.o localsrc/strchr.o
69 # These are not compiled in unless you use -Ilocalinc, but
70 # are not commented out as "make dist" &c use them.
71 LOCALINC = # localinc/*.h localinc/sys/*.h
72
73 SRCS = file.c apprentice.c fsmagic.c softmagic.c ascmagic.c \
74         compress.c is_tar.c readelf.c \
75         print.c $(LOCALSRCS) $(LOCALINC)
76 OBJS = file.o apprentice.o fsmagic.o softmagic.o ascmagic.o \
77         compress.o is_tar.o readelf.o \
78         print.o $(LOCALOBJS)
79 HDRS = file.h names.h patchlevel.h readelf.h tar.h
80
81 AUTOSRC=configure configure.in install-sh config.h.in Makefile.in
82 ALLSRC = LEGAL.NOTICE README MAINT PORTING $(SRCS) $(HDRS) \
83          Makefile.std file.man magic.man magic2mime $(AUTOSRC) \
84          Localstuff Header
85 ALLMAGIC =   Magdir/[a-z]*
86
87 all:            file magic file.${MANCEXT} magic.${MANFEXT}
88
89 TESTFILES = * tst/*
90 try:            all $(OFILE)
91                 cd tst; $(MAKE)
92                 time $(OFILE) $(TESTFILES) >/tmp/t1 # can't use ./magic
93                 time ./file -m ./magic $(TESTFILES) >/tmp/t2
94                 -diff -b /tmp/t[12]
95                 what ./file >lastnocore
96
97 file:           $(OBJS)
98                 $(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) -o $@
99 lint:           $(SRCS)
100                 lint -ha $(DEFS) $(SRCS) | tee $@
101 magic:          Localstuff Header Magdir
102                 cat Header Localstuff Magdir/[a-z] > $@
103
104 ascmagic.o:     names.h
105
106 compress.o apprentice.o ascmagic.o file.o fsmagic.o print.o softmagic.o: file.h
107
108 install:        file magic
109                 cp file $(BINDIR)/file
110                 cp magic $(MAGIC)
111
112 install.man: file.${MANCEXT} magic.${MANFEXT}
113                 cp file.${MANCEXT} $(MANCDIR)/file.$(MANCEXT)
114                 cp magic.${MANFEXT} $(MANFDIR)/magic.$(MANFEXT)
115
116 clean:
117                 rm -f *.o core file magic lint dist.* MANIFEST \
118                       magic.${MANFEXT} file.${MANCEXT} \
119                       config.h config.status config.cache config.log
120 clobber:
121                 cd tst; $(MAKE) clean
122
123
124 magic.${MANFEXT} :      Makefile magic.man
125                 @rm -f $@
126                 sed -e s@__CSECTION__@${MANCEXT}@g \
127                     -e s@__FSECTION__@${MANFEXT}@g \
128                     -e s@__VERSION__@${VERSION}@g \
129                     -e s@__MAGIC__@${MAGIC}@g magic.man > $@
130
131 file.${MANCEXT} :       Makefile file.man
132                 @rm -f $@
133                 sed -e s@__CSECTION__@${MANCEXT}@g \
134                     -e s@__FSECTION__@${MANFEXT}@g \
135                     -e s@__VERSION__@${VERSION}@g \
136                     -e s@__MAGIC__@${MAGIC}@g file.man > $@
137
138 send:           dist
139                 ftp ftp.cs
140
141 dist:           dist.src dist.magic
142                 @echo Now check this patchlevel!
143                 ident patchlevel.h
144
145 dist.src:       $(ALLSRC) MANIFEST
146 #               Some versions of shar can't handle a single file from
147 #               a subdirectory, so we manually insert mkdir as needed.
148 #               The point is to exclude all the generable targets in tst.
149                 (echo mkdir localinc localinc/sys localsrc tst; \
150                         $(SHAR) $(ALLSRC) MANIFEST) > $@
151
152 rcsdiff:        $(ALLSRC)
153                 rcsdiff -q RCS/*
154
155 MANIFEST:       $(ALLSRC)
156                 ident $(ALLSRC) > MANIFEST
157 dist.magic:     Magdir
158 #               As above, but to exclude Magdir/RCS from being shipped.
159                 (echo mkdir Magdir; $(SHAR) $(ALLMAGIC)) >$@
160
161 tar:            $(ALLSRC) $(ALLMAGIC)
162                 -rm -fr file-${VERSION}
163                 -mkdir file-${VERSION} file-${VERSION}/Magdir
164                 ln $(ALLSRC) file-${VERSION}
165                 ln ${ALLMAGIC} file-${VERSION}/Magdir
166                 tar cvf file-${VERSION}.tar file-${VERSION}
167                 -rm -fr file-${VERSION}