source: trunk/third/sysinfo/Makefile @ 12298

Revision 12298, 13.7 KB checked in by danw, 26 years ago (diff)
fix DESTDIR stuff, hopefully for the last time.
Line 
1#
2# Copyright (c) 1992-1998 Michael A. Cooper.
3# This software may be freely used and distributed provided it is not sold
4# for profit or used for commercial gain and the author is credited
5# appropriately.
6#
7# $Revision: 1.8 $
8#
9# Sysinfo Makefile
10#
11# To compile, just run "make".  This should automatically figure out
12# your OS type.
13#
14
15#
16# The ${PROG} variable defines the name the sysinfo software is installed
17# as.  If you want to install sysinfo to use a name other than "sysinfo"
18# you should just need to change this value.
19#
20PROG            = sysinfo
21
22#
23# The ${PREFIX} variable determines the top level directory that
24# things are installed under.
25#
26PREFIX          = /usr/athena
27
28#
29# The bin directory that user's will run the program from.
30#
31# A good place is something like /usr/local/bin.
32#
33BIN             = ${PREFIX}/bin
34
35#
36# Directory containing sysinfo.cf configuration files
37#
38#CONFDIR                = /usr/local/lib/${PROG}
39CONFDIR         = ${PREFIX}/lib/${PROG}
40
41#
42# The LIBDIR directory is where all the sysinfo binary executables
43# will be installed.
44#
45LIBDIR          = ${PREFIX}/lib/${PROG}
46
47#
48# Man sections and directories
49#
50ManDir          = ${PREFIX}/man
51ManSect1        = 1
52ManSect5        = 5
53ManDir1         = ${ManDir}/man${ManSect1}
54ManDir5         = ${ManDir}/man${ManSect5}
55
56#
57# The shell that commands from this Makefile will run from.
58# This _MUST_ be a bourne shell compatible shell.
59#
60SHELL           = /bin/sh
61
62#
63# Installation options
64#
65# Sysinfo needs to be able to read your unix image (/vmunix usually),
66# /dev/kmem, and device files in /dev for things like disk drives and tapes.
67# Under SunOS, /dev/kmem is owned by group "kmem", but the disk files
68# (e.g. /dev/rsd0a) are owned by group "operator".  Therefor, you usually
69# can't make setgid to a group, but need it setuid root.
70#
71# You should set INSTALLMODE and INSTALLOWN appropriately to allow sysinfo
72# to read everything it needs to.  Try running "sysinfo -debug" to find out
73# the special files it reads.
74#
75INSTALLMODE     = -m 4555
76INSTALLOWN      = -o root -g bin
77INSTALLOPTS     = $(INSTALLMODE) $(INSTALLOWN)
78
79#
80# Name of the program that installs files.
81# This program should support the BSD-style install(1) options.
82# The install.sh script from the sysinfo distribution should work fine
83# on most systems.
84#
85INSTALLPROG     = sh ./install.sh
86
87###########################################################################
88#
89#       END OF NORMAL SITE CONFIGURATION
90#
91###########################################################################
92
93#
94# The name of the kvm library to use.
95# For SunOS this should be "-lkvm".  If you don't have one, add
96# "kvmlib.o" to MISSINGFILES below and leave LIBKVM blank.
97#
98LIBKVM          = #-lkvm
99
100#
101# SunOS 4.0, 4.0.1, and 4.0.3 requires using the System V cc and libc
102# in order to get uname().  Enable the two lines below if your OS is one
103# of these.
104#
105# Do NOT set CC to /usr/ucb/cc for SunOS 5.x.  This enables BSD
106# compatibility mode in SunC which breaks sysinfo.
107#
108#CC             = gcc           # Use GCC
109#STATICFLAG     = -static       # Use GCC
110LIBS            = $(OSLIBS)
111
112#
113# Defines
114#
115DEFINES         = $(OSDEFINES) -DCONFIG_DIR=\"$(CONFDIR)\"
116
117#
118# Optimization or debugging flag
119#
120OPT             = -g
121
122#
123# Include directories
124#
125INCLUDES        = -I.
126
127CFLAGS          = ${OPT} ${INCLUDES} ${DEFINES} $(OSCFLAGS)
128LDFLAGS         = ${OPT} ${OSLDFLAGS}
129
130NetIf-Files     = netif.o netif-info.o
131Env-Files       = getenv.o putenv.o setenv.o
132
133#
134# Distribution Files
135#
136BUILDINFO       = build/buildinfo
137VERCMD          = `build/vername ./$(PROG) -version -level terse`
138PLATFORMCMD     = `${BUILDINFO} -platform`
139MANFILES        = sysinfo.man sysinfo.cf.man
140MAKEFILES       = Makefile
141BINDistFiles    = README INSTALL.html INSTALL.txt \
142                        RELEASE_NOTES.html RELEASE_NOTES.txt \
143                        COPYRIGHT CHANGES \
144                        $(MANFILES) metasysinfo.sh  install.sh \
145                        build/buildinfo build/mkversion \
146                        build/vername build/mkdirhier \
147                        config/*.cf config/*.ddb $(MAKEFILES)
148
149#
150# OS Specific Files
151#
152AIX-OS-Files    = os-aix.o
153IRIX-OS-Files   = os-irix.o ${NetIf-Files} myscsi.o
154SunOS-OS-Files  = os-sunos.o sunos-fb.o sunos-kbd.o sunos-kdt.o sunos-obp.o \
155                        ${NetIf-Files}
156SunOS4-OS-Files = os-sunos4.o ${SunOS-OS-Files} myscsi.o
157SunOS5-OS-Files = os-sunos5.o dlpi.o sunos-ddb.o ${SunOS-OS-Files} myscsi.o \
158                        dospart.o edid.o pci.o
159HPUX-OS-Files   = os-hpux.o ${NetIf-Files} myscsi.o
160SPPUX-OS-Files  = os-sppux.o
161BSD-Files       = bsd.o bsd-sysctl.o dospart.o ${NetIf-Files} myscsi.o
162BSDOS-OS-Files  = os-bsdos.o ${BSD-Files}
163FreeBSD-OS-Files= os-freebsd.o pci.o ${BSD-Files}
164Linux-OS-Files  = os-linux.c
165
166#
167# Select the OS specific files to compile
168#
169OSFILES         =
170
171#
172# Missing files
173#
174# List of files of things your system may not have.
175#
176MISSINGFILES    =
177
178OBJS            = sysinfo.o devices.o memory.o run.o run-data.o mcl.o kvm.o \
179                        mcregex.o options.o virtmem.o getosver.o getosname.o \
180                        getosdist.o getcpu.o \
181                        gethost.o getmodel.o psi.o getmisc.o boottime.o \
182                        kernel.o general.o class.o var.o report.o misc.o msg.o\
183                        cf.o define.o devdefine.o strutil.o namelist.o \
184                        classtype.o type.o \
185                        getarch.o getkernver.o getman.o macinfo.o sysconf.o \
186                        ${MISSINGFILES} ${OSFILES}
187
188#
189# Macro to set OS info variables
190#
191SetOS = \
192        set `${BUILDINFO}`; \
193        osname=`${BUILDINFO} -osname`; \
194        osver=`${BUILDINFO} -osvernodot`; \
195        ostype=`${BUILDINFO} -osnamemver`; \
196        osmver=`${BUILDINFO} -osmver`; \
197        kisa=`${BUILDINFO} -kisa`; \
198        case "$${ostype}" in \
199        hpux*)          os=hpux$${osmver};; \
200        sunos*)         os=sunos$${osmver};; \
201        *)              os=$${osname};; \
202        esac
203OSmakeDefs      = OSname=$$osname OSver=$$osver OSmver=$$osmver \
204                        OStype=$$ostype KISA=$$kisa
205MKPARAMS        = PREFIX=$(PREFIX)
206
207#
208# Default
209#
210default:
211        @if [ -f sysinfo -a ! -f sysinfo.c ]; then \
212                echo 'This is a binary distribution.  There is nothing to compile.'; \
213        else \
214                $(SetOS); \
215                $(MAKE) $(MFLAGS) \
216                        CONFDIR=${CONFDIR} BIN=${BIN} CC=${CC} \
217                        LIBDIR=${LIBDIR}\
218                        $(OSmakeDefs) $${ostype}; \
219        fi
220
221all: ${PROG}
222
223${PROG}: ${OBJS} buildinfo.o
224        rm -f $@
225        ${CC} ${LDFLAGS} -o $@ ${OBJS} buildinfo.o ${LIBS} ${LIBKVM}
226
227buildinfo.c: $(OBJS) build/mkversion
228        @build/mkversion -file $@
229#       @build/mkversion -host magnicomp.com -user mcooper -file $@
230
231bindist: $(PROG) $(BINDistFiles)
232        sysver=$(VERCMD); \
233        vername=`${BUILDINFO} -distname -disttype bin -prodver $$sysver`; \
234        filelist=filelist.tmp; \
235        rm -f $$filelist; \
236        touch $$filelist; \
237        chmod 664 $$filelist; \
238        for f in $(PROG) $(BINDistFiles); do \
239                echo $$vername/$${f} >> $$filelist; \
240        done; \
241        rm -f $$vername; \
242        ln -s . $$vername; \
243        strip $$vername/$(PROG); \
244        tar cf - `cat $$filelist` | gzip --best > \
245                $$vername.tar.gz; \
246        rm -f $$vername $$filelist; \
247        echo DIST File is $$vername.tar.gz
248
249install: ${DESTDIR}$(LIBDIR) ${DESTDIR}$(BIN) metasysinfo
250        @$(MAKE) $(MFLAGS) $(MKPARAMS) install.cf CONFDIR=${CONFDIR}
251        @if [ ! -z "$(LIBDIR)" ]; then \
252                RTPLATFORM=`${BUILDINFO} -rtplatform`; \
253                build/mkdirhier ${DESTDIR}$(LIBDIR)/$${RTPLATFORM}; \
254                echo "$(INSTALLPROG) -c -m 555 $(INSTALLOWN) metasysinfo ${DESTDIR}$(BIN)/$(PROG)"; \
255                $(INSTALLPROG) -c -m 555 $(INSTALLOWN) metasysinfo ${DESTDIR}$(BIN)/$(PROG); \
256                echo "$(INSTALLPROG) -c ${INSTALLOPTS} ${PROG} ${DESTDIR}$(LIBDIR)/$${RTPLATFORM}/${PROG}"; \
257                $(INSTALLPROG) -c ${INSTALLOPTS} ${PROG} ${DESTDIR}$(LIBDIR)/$${RTPLATFORM}/${PROG}; \
258                strip ${DESTDIR}$(LIBDIR)/$${RTPLATFORM}/${PROG}; \
259        else \
260                echo $(INSTALLPROG) -c ${INSTALLOPTS} ${PROG} ${DESTDIR}${BIN}/${PROG}; \
261                $(INSTALLPROG) -c ${INSTALLOPTS} ${PROG} ${DESTDIR}${BIN}/${PROG}; \
262        fi
263
264metasysinfo: metasysinfo.sh
265        rm -f $@
266        sed -e "s;#LIBDIR#;$(LIBDIR);" < metasysinfo.sh > $@
267        chmod 555 $@
268
269install.man: $(MANFILES) ${DESTDIR}$(ManDir1) ${DESTDIR}$(ManDir5)
270        $(INSTALLPROG) -c -m 444 -o bin -g bin sysinfo.man \
271                ${DESTDIR}${ManDir1}/${PROG}.${ManSect1}
272        $(INSTALLPROG) -c -m 444 -o bin -g bin sysinfo.cf.man \
273                ${DESTDIR}${ManDir5}/${PROG}.cf.${ManSect5}
274
275${DESTDIR}$(BIN):
276        build/mkdirhier ${DESTDIR}${BIN}
277
278${DESTDIR}$(LIBDIR):
279        build/mkdirhier ${DESTDIR}${LIBDIR}
280
281${DESTDIR}$(CONFDIR):
282        build/mkdirhier ${DESTDIR}${CONFDIR}
283
284${DESTDIR}$(ManDir1):
285        build/mkdirhier ${DESTDIR}${ManDir1}
286
287${DESTDIR}$(ManDir5):
288        build/mkdirhier ${DESTDIR}${ManDir5}
289
290install.cf: ${DESTDIR}$(CONFDIR)
291        @for file in config/*.cf config/*.ddb ; do \
292                cf=`echo $$file | sed -e 's;.*/;;'`; \
293                echo $(INSTALLPROG) -c -m 444 $(INSTALLOWN) $$file ${DESTDIR}$(CONFDIR)/$$cf; \
294                $(INSTALLPROG) -c -m 444 $(INSTALLOWN) $$file \
295                        ${DESTDIR}$(CONFDIR)/$$cf; \
296        done
297
298clean:
299        rm -f *.o ${PROG} *~ *% \#* core a.out metasysinfo \
300                buildinfo.c sysinfo.tar sysinfo.tar.Z sysinfo.tar.gz
301
302${OBJS}: os.h defs.h mconfig.h declare.h
303
304test: default
305        @echo "Running sysinfo as a test . . ."
306        @echo "NOTE: You must be root to run this test successfully."
307        ./$(PROG) -cfdir ./config -level all
308
309#
310# OS targets
311#
312
313#
314# SunOS 4.x (Solaris 1.x)
315#
316# NOTE: We compile statically (-Bstatic) to avoid LD_LIBRARY_PATH
317#       security problems.  Overriding this will open a major security
318#       whole if sysinfo is run set{u,g}id.
319#
320sunos4 solaris1:
321        @echo "Making ${PROG} for SunOS 4.x ... "; \
322        $(MAKE) $(MFLAGS) \
323                CONFDIR=${CONFDIR} \
324                LIBKVM=-lkvm \
325                MISSINGFILES="strcasecmp.o strdup.o strerror.o snprintf.o" \
326                OSDEFINES="-Dsunos -DOSMVER=4 -D`/bin/arch -k`" \
327                OSFILES="${SunOS4-OS-Files}" \
328                OSLDFLAGS="${STATICFLAG}" \
329                OSLIBS="-lresolv" \
330                PROG=${PROG} \
331                all
332
333#
334# SunOS 5.x (Solaris 2.x)
335#
336sunos5 solaris2:
337        @echo "Making ${PROG} for SunOS 5.x ... "; \
338        echo "Make sure that \`cc' is not \`/usr/ucb/cc' or sysinfo may not work."; \
339        if [ $$OSver -lt 54 ]; then \
340                OtherLibs="-lgen"; \
341        fi; \
342        if [ $$OSver -lt 56 ]; then \
343                OtherMissing="snprintf.o"; \
344        fi; \
345        if [ $$OSver -ge 56 ]; then \
346                OtherLibs="-lvolmgt"; \
347        fi; \
348        if [ $$OSver -ge 57 -a "$$KISA" = "sparcv9" ]; then \
349                xarch="-xarch=v9"; \
350        fi; \
351        $(MAKE) $(MFLAGS) \
352                CONFDIR=${CONFDIR} \
353                LIBKVM=-lkvm \
354                MISSINGFILES="setreuid.o $$OtherMissing" \
355                OSCFLAGS="$$xarch" \
356                OSDEFINES="-Dsunos -DOSMVER=${OSmver} -DOSVER=${OSver}" \
357                OSFILES="${SunOS5-OS-Files}" \
358                OSLDFLAGS="-i -R/usr/lib $$xarch" \
359                OSLIBS="-lsocket -lnsl -lelf -ladm -lresolv -lgen $$OtherLibs" \
360                PROG=${PROG} \
361                all
362
363#
364# AIX 3.x for RS/6000
365# AIX 4.x for RS/6000
366#
367aix3 aix4:
368        @echo "Making ${PROG} for AIX ... "; \
369        $(MAKE) $(MFLAGS) \
370                CONFDIR=${CONFDIR} \
371                LIBKVM="" \
372                MISSINGFILES="strdup.o kvmlib.o" \
373                OSDEFINES="-D${OSname} -DOSMVER=${OSmver}" \
374                OSFILES="${AIX-OS-Files}" \
375                OSLIBS="-lodm -lcfg" \
376                PROG=${PROG} \
377                all
378
379#
380# HP-UX 9.x
381#
382hpux9:
383        @echo "Making ${PROG} for HP-UX 9.x ... "; \
384        $(MAKE) $(MFLAGS) \
385                CONFDIR=${CONFDIR} \
386                LIBKVM="" \
387                MISSINGFILES="kvmlib.o" \
388                OPT="" \
389                OSDEFINES="-D${OSname} -DOSMVER=${OSmver}" \
390                OSFILES="${HPUX-OS-Files}" \
391                OSLIBS="" \
392                PROG=${PROG} \
393                all
394
395#
396# HP-UX 10 and later
397#
398hpux10 hpux11:
399        @echo "Making ${PROG} for HP-UX ${OSmver} ... "; \
400        $(MAKE) $(MFLAGS) \
401                CONFDIR=${CONFDIR} \
402                LIBKVM="" \
403                MISSINGFILES="kvmlib.o" \
404                OPT="" \
405                OSCFLAGS="-Ae" \
406                OSDEFINES="-D${OSname} -DOSMVER=${OSmver}" \
407                OSFILES="${HPUX-OS-Files}" \
408                OSLIBS="" \
409                PROG=${PROG} \
410                all
411
412#
413# Convex SPP-UX
414#
415sppux3:
416        @echo "Making ${PROG} for SPP-UX ... "; \
417        echo "Ignore errors regarding /usr/include/sys/wait.h"; \
418        $(MAKE) $(MFLAGS) \
419                CC=/usr/convex/bin/cc \
420                CONFDIR=${CONFDIR} \
421                LIBKVM="" \
422                MISSINGFILES="kvmlib.o" \
423                OPT="-cxdb" \
424                OSDEFINES="-D${OSname} -DOSMVER=${OSmver}" \
425                OSFILES="${SPPUX-OS-Files}" \
426                OSLIBS="/lib/cnx_syscall.a" \
427                OSCFLAGS="-or none" \
428                PROG=${PROG} \
429                all
430
431#
432# IRIX 5.x (Does this still work?)
433#
434irix5: 
435        @echo "Making ${PROG} for IRIX 5.x ... "; \
436        $(MAKE) $(MFLAGS) \
437                CONFDIR=${CONFDIR} \
438                LIBKVM="" \
439                MISSINGFILES="kvmlib.o" \
440                OPT="-g" \
441                OSDEFINES="-D${OSname} -DOSMVER=${OSmver} -DOSVER=${OSver}" \
442                OSCFLAGS="-woff 1174 -woff 1552 -woff 1204 -woff 1009" \
443                OSFILES="${IRIX-OS-Files}" \
444                OSLIBS="-lmld -lelf" \
445                PROG=${PROG} \
446                all
447
448#
449# IRIX 6.x (32-bit Kernel)
450#
451# Add "-UHAVE_GRAPHICS_HDRS" to OSDEFINES below if you don't have
452# any of the IRIX graphics .h files installed in /usr/include.
453#
454irix6: 
455        @echo "Making ${PROG} for IRIX (32-bit) 6.x ... "; \
456        if [ $$OSver -lt 65 ]; then \
457                OtherMissing="snprintf.o"; \
458        fi; \
459        $(MAKE) $(MFLAGS) \
460                CONFDIR=${CONFDIR} \
461                LIBKVM="" \
462                MISSINGFILES="kvmlib.o $$OtherMissing" \
463                OPT="-g" \
464                OSLDFLAGS="" \
465                OSCFLAGS="" \
466                OSDEFINES="-D${OSname} -DOSMVER=${OSmver} -DOSVER=${OSver}" \
467                OSFILES="${IRIX-OS-Files}" \
468                OSLIBS="-lelf" \
469                PROG=${PROG} \
470                all
471
472#
473# IRIX 6.x (64-bit Kernel)
474#
475# Add "-UHAVE_GRAPHICS_HDRS" to OSDEFINES below if you don't have
476# any of the IRIX graphics .h files installed in /usr/include.
477#
478irix646:
479        @echo "Making ${PROG} for IRIX (64-bit) 6.x ... "; \
480        if [ $$OSver -lt 65 ]; then \
481                OtherMissing="snprintf.o"; \
482        fi; \
483        $(MAKE) $(MFLAGS) \
484                CONFDIR=${CONFDIR} \
485                LIBKVM="" \
486                MISSINGFILES="kvmlib.o $$OtherMissing" \
487                OPT="-g" \
488                OSLDFLAGS="" \
489                OSCFLAGS="" \
490                OSDEFINES="-Dirix -D${OSname} -DOSMVER=${OSmver} -DOSVER=${OSver}" \
491                OSFILES="${IRIX-OS-Files}" \
492                OSLIBS="-lelf" \
493                PROG=${PROG} \
494                all
495
496#
497# BSD/OS
498#
499# Known to work on BSD/OS 3.x and later.
500#
501bsdos3 bsdos4:
502        @echo "Making ${PROG} for BSD/OS ... "; \
503        $(MAKE) $(MFLAGS) \
504                CC="gcc" \
505                CONFDIR=${CONFDIR} \
506                LIBKVM="" \
507                MISSINGFILES="" \
508                OPT="" \
509                OSLDFLAGS="" \
510                OSCFLAGS="" \
511                OSDEFINES="-D${OSname} -DOSMVER=${OSmver} -DOSVER=${OSver}" \
512                OSFILES="${BSDOS-OS-Files}" \
513                OSLIBS="-lkvm" \
514                PROG=${PROG} \
515                all
516
517#
518# FreeBSD 2.x
519#
520# Known to work on FreeBSD 2.2.6 and later.
521#
522freebsd2:
523        @echo "Making ${PROG} for FreeBSD ... "; \
524        $(MAKE) $(MFLAGS) \
525                CC="gcc" \
526                CONFDIR=${CONFDIR} \
527                LIBKVM="" \
528                MISSINGFILES="" \
529                OPT="" \
530                OSLDFLAGS="" \
531                OSCFLAGS="-I/sys" \
532                OSDEFINES="-D${OSname} -DOSMVER=${OSmver} -DOSVER=${OSver}" \
533                OSFILES="${FreeBSD-OS-Files}" \
534                OSLIBS="-lkvm" \
535                PROG=${PROG} \
536                all
537
538#
539# Linux
540#
541linux linux2:
542        @echo "Making ${PROG} for Linux ... "; \
543        $(MAKE) $(MFLAGS) \
544                CC="cc" \
545                CONFDIR=${CONFDIR} \
546                LIBKVM="" \
547                MISSINGFILES="" \
548                OPT="" \
549                OSLDFLAGS="" \
550                OSCFLAGS="" \
551                OSDEFINES="-D${OSname} -DOSMVER=${OSmver} -DOSVER=${OSver}" \
552                OSFILES="${Linux-OS-Files}" \
553                OSLIBS="" \
554                PROG=${PROG} \
555                all
Note: See TracBrowser for help on using the repository browser.