Imakefile revision 145479
1XCOMM
2XCOMM $Id: Imakefile,v 1.84 2004/12/25 21:15:05 christos Exp $
3XCOMM
4XCOMM Imakefile for tcsh 6.12
5XCOMM Marc Horowitz, MIT SIPB
6XCOMM
7
8#ifdef DestDir
9#undef DestDir
10#endif
11#ifdef ManSuffix
12#undef ManSuffix
13#endif
14
15/* All config options go in a separate file. */
16
17#include "imake.config"
18
19#ifndef HasGcc
20# define HasGcc 0
21#endif
22
23#ifndef HasGcc2
24# define HasGcc2 0
25#endif
26
27/* This is a giant conditional block.  It should be set up right for
28platforms which are in here, but it may need to be changed for new
29ones.  Please send in your fixes and additions! */
30
31/**** tcsh configuration defines ****/
32
33/* specific platforms */
34
35#ifndef ConfigH
36# ifdef UltrixArchitecture
37#  define ConfigH ultrix
38# endif
39
40# ifdef UxpArchitecture
41#  define ConfigH sysv4
42# endif
43
44# if defined(LinuxArchitecture) || defined(GNUArchitecture)
45#  define ConfigH linux
46# endif
47
48# ifdef AlphaArchitecture
49#  if !defined(LinuxArchitecture) && !defined(GNUArchitecture)
50#    define ConfigH decosf1
51#  endif
52#  if !HasGcc
53#   define MyCflags -std1 -Olimit 2000
54#  else
55#   define NoCombineRegs
56#  endif
57# endif
58
59# if defined(VaxArchitecture) && !defined(UltrixArchitecture)
60#  define ConfigH bsd
61# endif
62
63# ifdef NeXTArchitecture
64#  define ConfigH mach
65# endif
66
67# if defined(SunArchitecture)
68#  if (OSMajorVersion == 3)
69#   define ConfigH sunos35
70#  else
71#   if (OSMajorVersion == 4)
72#    if (OSMinorVersion == 0)
73#     define ConfigH sunos40
74#    else /* OSMinorVersion == 1 */
75#     if (OSTeenyVersion == 3)
76#      define ConfigH sunos413
77#     else /* OsTeenyVersion in [0,1,2] */
78#      define ConfigH sunos41
79#     endif
80#    endif
81#    define NoCombineRegs
82#   else /* OSMajorVersion == 5 */
83#    if (OSMinorVersion < 3)
84#     if (OSMinorVersion < 2)
85#      define ConfigH sol2
86#     else
87#      define ConfigH sol22
88#     endif
89#    else
90#     if (OSMinorVersion < 4)
91#      define ConfigH sol23
92#     else
93#      if (OSMinorVersion < 6)
94#       define ConfigH sol24
95#      else
96#       define ConfigH sol26
97#      endif
98#     endif
99#    endif
100#    define NoCombineRegs
101#   endif
102#  endif
103# endif
104
105# ifdef HPArchitecture
106/* For some stupid reason makedepend on HP requires this */
107DEPENDFLAGS = -o.o
108#  if (OSMajorVersion >= 8)
109#   define ConfigH hpux8
110#  else
111#   define ConfigH hpux7
112#  endif
113# endif
114
115# ifdef CrayArchitecture
116#  define ConfigH cray
117# endif
118
119# ifdef SGIArchitecture
120#   define ConfigH irix
121#   define UseLibBSD
122#  if (OSMajorVersion < 5)
123#   ifdef you_are_using_yp
124#    define UseSunLib 
125#   endif
126#   if !HasGCC
127#    define MyStdc -D__STDC__
128#    if SGICompilerMajorVersion < 4
129CCOPTIONS=-float	# We don't want -cckr and -prototypes
130#    endif
131#   endif
132#  endif
133#  if (OSMajorVersion == 6)
134#   if (OSMinorVersion >= 2)
135#    undef UseLibBSD
136#    define ConfigH irix62
137#   endif
138#  endif
139# endif
140
141# ifdef IBMArchitecture
142#  undef UseLibBSD
143#  if (SystemV == YES)
144#   define ConfigH aix
145#   if OSMajorVersion < 3 
146#    if OSMinorVersion < 2
147#     define UseLibBSD
148#    endif
149#   endif
150#  else
151#   define ConfigH bsd
152#   define AOSArchitecture
153#  endif
154# endif
155
156
157#ifdef AOSArchitecture
158#define MyStdc -U__STDC__
159#endif
160
161# if defined(MipsBsdArchitecture) || defined(MipsSysvArchitecture)
162#  define ConfigH mips
163# endif
164
165# ifdef DguxArchitecture
166#  define ConfigH dgux
167# endif
168
169# ifdef ConvexArchitecture
170#  define ConfigH convex
171# endif
172
173# if defined(SQNTArchitecture) || defined(SequentArchitecture)
174#  define ConfigH sequent
175# endif
176
177# ifdef MacIIArchitecture
178#  define ConfigH mac2
179# endif
180
181# ifdef MinixArchitecture
182/* Maybe conditional on MACH? */
183SYSSRCS=mi.termios.c mi.wait.h mi.varargs.h
184SYSOBJS=mi.termios.${SUF}
185EXTF=ma.setp.c vms.termcap.c
186# else
187/* Maybe conditional on MACH? */
188SYSSRCS=ma.setp.c
189SYSOBJS=ma.setp.${SUF}
190EXTF=mi.termios.c mi.wait.h mi.varargs.h vms.termcap.c
191# endif
192
193# ifdef i386Isc
194#  if IscVersion != 202
195#   define ConfigH isc
196#   define UseLibCposix
197#  else
198#   define ConfigH isc202
199#  endif
200# endif /* i386Isc */
201
202# ifdef OpenBSDArchitecture
203#  define ConfigH bsd4.4
204# endif /* OpenBsdArchitecture */
205
206# ifdef NetBSDArchitecture
207#  define ConfigH bsd4.4
208# endif /* NetBsdArchitecture */
209
210# ifdef FreeBSDArchitecture
211#  define ConfigH bsd4.4
212# endif /* FreeBsdArchitecture */
213
214# ifdef i386SVR4Architecture
215#  define ConfigH sysv4
216#  ifdef DELL
217#   define NoCombineRegs
218#  endif
219# endif
220
221#endif /* !ConfigH */
222
223/* generic os's */
224
225#ifndef ConfigH
226
227#if (SystemV == YES)
228#define ConfigH sysv3
229#else
230/* why this as a default?  Why not? */
231#define ConfigH bsd
232#endif
233
234#endif /* !ConfigH */
235
236/**** libraries ****/
237
238#if (SystemV == NO) || defined(HPArchitecture) || \
239	defined(SQNTArchitecture) || defined(SequentArchitecture) || \
240	defined(MacIIArchitecture) || defined(UseLibTermcap)
241LIBTERMCAP = -ltermcap
242#else
243LIBTERMCAP =
244#endif
245
246#if defined(SQNTArchitecture) || defined(SequentArchitecture)
247LIBSQNT=-lsocket -linet -lnsl -lseq
248#endif
249
250/* This may not be good enough - I don't have access to enough systems
251to really test it. */
252#if (SystemV == YES) || defined(UseLibCurses) && !defined(HPArchitecture)
253LIBCURSES = -lcurses
254#else
255LIBCURSES =
256#endif
257
258#if defined(UseLibNet)
259LIBNET = -lnet
260#else
261LIBNET =
262#endif
263
264#if defined(UseLibSocket)
265LIBSOCKET = -lsocket
266#else
267LIBSOCKET =
268#endif
269
270#if defined(UseLibBSD)
271LIBBSD = -lbsd
272#else
273LIBBSD = 
274#endif
275
276#if (defined(SGIArchitecture) && \
277     (OSMajorVersion == 3) && (OSMinorVersion == 3)) || \
278	defined(UseLibC_S)
279LIBC_S = -lc_s
280#else
281LIBC_S =
282#endif
283
284#if defined(UseLibSun)
285LIBSUN = -lsun
286#else
287LIBSUN =
288#endif
289
290#if defined(UseLibCposix)
291LIBCPOSIX = -lcposix
292#else
293LIBCPOSIX =
294#endif
295
296#if defined(UseLibInet)
297LIBINET = -linet
298#else
299LIBINET =
300#endif
301
302#if defined(UseLibDir)
303LIBDIRECT = -ldir
304#else
305LIBDIRECT = 
306#endif
307
308#if defined(UseLibX)
309LIBX = -lx
310#else
311LIBX =
312#endif
313
314#if defined(UseLibIntl)
315LIBINTL = -lintl
316#else
317LIBINTL =
318#endif
319
320#if (HasLibCrypt == YES)
321LIBCRYPT = -lcrypt
322#else
323LIBCRYPT =
324#endif
325
326#if defined(MacIIArchitecture) || defined(UseLibPosix)
327LIBPOSIX = -lposix
328#else
329LIBPOSIX =
330#endif
331
332#if defined(ATTArchitecture) || defined(UseLibDirent)
333LIBDIRECTENT = -ldirent
334#else
335LIBDIRECTENT =
336#endif
337
338/* The order here is significant.  Although nothing uses all of these, 
339some platforms which use more than one do care about the order. */
340
341SYSLIBS = $(LIBPOSIX) $(LIBDIRECTENT) $(LIBTERMCAP) $(LIBCURSES) \
342	$(LIBNET) $(LIBINTL) $(LIBSOCKET) $(LIBSUN) $(LIBBSD) $(LIBCPOSIX) \
343	$(LIBINET) $(LIBDIRECT) $(LIBX) $(LIBC_S) $(LIBSQNT) $(LIBCRYPT)
344
345/* Past here, nothing should need to be changed to compile on a different
346platform, unless you have a really weird architecture. */
347
348#ifdef MyCC
349CC = MyCC
350#else
351# if HasGcc
352#  if HasGcc2
353CC = gcc 
354#  else
355#   ifdef NoCombineRegs
356CC = gcc -finline-functions -fstrength-reduce
357#   else
358CC = gcc -fcombine-regs -finline-functions -fstrength-reduce
359#   endif
360#  endif
361# else
362CC = cc
363# endif
364#endif
365
366#ifdef HESIOD
367HESLIB = -L/usr/athena/lib -lhesiod
368/* it seems to me that the -I shouldn't be necessary, but there seems
369to be a bug in the Imake stuff, so here it is. */
370HESDEF = -DHESIOD -I/usr/athena/include
371#else
372HESLIB =
373HESDEF =
374#endif
375
376#ifdef AFS
377#ifndef AFSDIR
378AFSDIR = /usr/afsws
379#endif
380#ifdef AFS33
381#define AFS33LIB -laudit
382#else
383#define AFS33LIB
384#endif
385/* Auxilliary libs needed for AFS */
386/* Both HPUX and Solaris need the BSD libraries.  We need -lc before
387 * the bsd library to avoid using any more of it than is necessary.
388 */
389#if defined(HPArchitecture)
390#define AFSAUXLIB -lc -lBSD
391/* This is probably a kludge, but so is imake. */
392#else
393#if defined(SunArchitecture) && (OSMajorVersion == 5)
394#define AFSAUXLIB -lsocket -lnsl -lc -lucb
395#else
396#define AFSAUXLIB
397#endif
398#endif /* AFSAUXLIB */
399AFSLIB = -L$(AFSDIR)/lib -L$(AFSDIR)/lib/afs -lkauth -lprot -lubik\
400	 -lauth -lrxkad -lsys -ldes -lrx -llwp -lcom_err\
401	 $(AFSDIR)/lib/afs/util.a AFS33LIB AFSAUXLIB
402AFSDEF = -DAFS -I$(AFSDIR)/include
403#else
404AFSLIB =
405AFSDEF =
406#endif
407
408/* This is encore specific, but I don't know what encore's #define is,
409and it shouldn't hurt to have it here, so here it is */
410PARALLEL=12				# Make the multi-max run fast.
411
412#ifndef TcshTop
413#define TcshTop /usr/local
414#endif
415TCSHTOP = TcshTop
416
417#ifndef ManSuffix
418#define ManSuffix 1
419#endif
420MANSUFFIX = ManSuffix
421
422#ifdef TcshPath
423PATH_TCSHELL = TcshPath
424TCSHPATH = -D_PATH_TCSHELL='"$(PATH_TCSHELL)"'
425#else
426TCSHPATH =
427#endif
428
429#ifdef DestBin
430TCSH_BINDIR = DestBin
431#else
432TCSH_BINDIR = $(TCSHTOP)/bin
433#endif
434#ifdef DestMan
435TCSH_MANDIR = DestMan
436#else
437TCSH_MANDIR = $(TCSHTOP)/man/man$(MANSUFFIX)
438#endif
439
440LOCALLIBS =
441
442#ifndef MyCflags
443#define MyCflags
444#endif
445
446#ifndef MyDefines
447#define MyDefines
448#endif
449
450#ifndef MyIncludes
451#define MyIncludes
452#endif
453
454#ifndef MyStdc
455#define MyStdc
456#endif
457
458#ifdef CDebugFlags
459CDEBUGFLAGS = CDebugFlags
460#else
461# if HasGcc2
462CDEBUGFLAGS = -O2
463# else
464CDEBUGFLAGS = -O
465# endif
466#endif
467
468
469#ifdef HostType
470HOSTTYPE=HostType
471HTDEF = -DHOSTTYPE='"$(HOSTTYPE)"'
472#else
473HTDEF =
474#endif
475
476DEFINES = $(TCSHPATH) $(HESDEF) $(AFSDEF) $(HTDEF) MyDefines MyCflags MyStdc
477INCLUDES = -I. MyIncludes
478#ifdef MyLibs
479LDLIBS = MyLibs
480#endif
481
482SUF = o
483VERSION = 6.12
484
485SHSRCS=	sh.c sh.dir.c sh.dol.c sh.err.c sh.exec.c \
486	sh.char.c sh.exp.c sh.file.c sh.func.c \
487	sh.glob.c sh.hist.c sh.init.c sh.lex.c \
488	sh.misc.c sh.parse.c sh.print.c sh.proc.c \
489	sh.sem.c sh.set.c sh.time.c glob.c \
490	sh.char.h sh.dir.h sh.proc.h sh.h \
491	sh.decls.h glob.h ${SYSSRCS}
492SHOBJS=	sh.${SUF} sh.dir.${SUF} sh.dol.${SUF} sh.err.${SUF} sh.exec.${SUF} \
493	sh.char.${SUF} sh.exp.${SUF} sh.file.${SUF} sh.func.${SUF} \
494	sh.glob.${SUF} sh.hist.${SUF} sh.init.${SUF} sh.lex.${SUF} \
495	sh.misc.${SUF} sh.parse.${SUF} sh.print.${SUF} sh.proc.${SUF} \
496	sh.sem.${SUF} sh.set.${SUF} sh.time.${SUF} glob.${SUF} ${SYSOBJS}
497
498TWSRCS= tw.decls.h tw.h tw.help.c tw.init.c tw.parse.c tw.spell.c \
499	tw.comp.c tw.color.c
500TWOBJS=	tw.help.${SUF} tw.init.${SUF} tw.parse.${SUF} tw.spell.${SUF} \
501	tw.comp.${SUF} tw.color.${SUF}
502
503EDSRCS= ed.chared.c ed.decls.h ed.defns.c ed.h ed.init.c ed.inputl.c \
504	ed.refresh.c ed.screen.c ed.xmap.c ed.term.c ed.term.h
505EDOBJS=	ed.chared.${SUF} ed.refresh.${SUF} ed.screen.${SUF} ed.init.${SUF} \
506	ed.inputl.${SUF} ed.defns.${SUF} ed.xmap.${SUF} ed.term.${SUF}
507
508TCSRCS= tc.alloc.c tc.bind.c tc.const.c tc.decls.h tc.disc.c \
509	tc.func.c tc.os.c tc.os.h tc.printf.c tc.prompt.c \
510	tc.sched.c tc.sig.c tc.sig.h tc.str.c sh.types.h tc.vers.c tc.wait.h \
511	tc.who.c tc.h 
512TCOBJS=	tc.alloc.${SUF} tc.bind.${SUF} tc.const.${SUF} tc.defs.${SUF} \
513	tc.disc.${SUF} tc.func.${SUF} tc.os.${SUF} tc.printf.${SUF} \
514	tc.prompt.${SUF} tc.sched.${SUF} tc.sig.${SUF} tc.str.${SUF} \
515	tc.vers.${SUF} tc.who.${SUF} 
516
517MISCF = Makefile.std Fixes MAKEDIFFS MAKESHAR NewThings README FAQ \
518	WishList config_f.h eight-bit.me glob.3 patchlevel.h \
519	pathnames.h tcsh.man Ported src.desc Imakefile imake.config \
520	README.imake complete.tcsh vmsreadme.txt Makefile.vms termcap.vms \
521	snames.h host.defs gethost.c tcsh.man2html Makefile.in configure.in \
522	Makefile.win32
523CONFSRCS=config/[a-z]*
524
525
526SRCS = $(SHSRCS) $(TWSRCS) $(EDSRCS) $(TCSRCS)
527OBJS = $(SHOBJS) $(TWOBJS) $(EDOBJS) $(TCOBJS)
528
529ALLSRCS= $(MISCF) $(SRCS) $(EXTF)
530
531AllTarget(tcsh)
532
533ed.defns.h: config.h ed.defns.c
534	@rm -f $@
535	@echo '/* Do not edit this file, make creates it. */' > $@
536	@echo '#ifndef _h_ed_defns' >> $@
537	@echo '#define _h_ed_defns' >> $@
538	egrep '[FV]_' ed.defns.c | egrep '^#define' >> $@
539	@echo '#endif /* _h_ed_defns */' >> $@
540
541sh.err.h: config.h sh.err.c
542	@rm -f $@
543	@echo '/* Do not edit this file, make creates it. */' > $@
544	@echo '#ifndef _h_sh_err' >> $@
545	@echo '#define _h_sh_err' >> $@
546	egrep 'ERR_' sh.err.c | egrep '^#define' >> $@
547	@echo '#endif /* _h_sh_err */' >> $@
548
549tc.const.h: config.h tc.const.c
550	@rm -f $@
551	@echo '/* Do not edit this file, make creates it. */' > $@
552	@echo '#ifndef _h_tc_const' >> $@
553	@echo '#define _h_tc_const' >> $@
554	${CC} -E $(INCLUDES) ${DEFINES} -D_h_tc_const tc.const.c | \
555	    grep 'Char STR' | \
556	    sed -e 's/Char \([a-zA-Z0-9_]*\)\[\].*/extern Char \1[];/' | \
557	    sort >> $@
558	@echo '#endif /* _h_tc_const */' >> $@
559
560config.h: config_f.h
561	cp config/ConfigH config.h
562
563$(OBJS): sh.err.h tc.const.h ed.defns.h
564
565tar.Z:
566	rm -f tcsh-${VERSION}.tar.Z
567	rm -rf tcsh-${VERSION} 
568	mkdir tcsh-${VERSION} tcsh-${VERSION}/config
569	cp ${ALLSRCS} tcsh-${VERSION}
570	cp ${CONFSRCS} tcsh-${VERSION}/config
571	tar cf - nls/Makefile nls/?*/set?* | (cd tcsh-${VERSION}; tar xpf -)
572	tar cvf - tcsh-${VERSION} | compress > tcsh-${VERSION}.tar.Z
573	rm -rf tcsh-${VERSION}
574
575tar.gz:
576	rm -f tcsh-${VERSION}.tar.gz
577	rm -rf tcsh-${VERSION} 
578	mkdir tcsh-${VERSION} tcsh-${VERSION}/config
579	cp ${ALLSRCS} tcsh-${VERSION}
580	cp ${CONFSRCS} tcsh-${VERSION}/config
581	tar cf - nls/Makefile nls/?*/set?* | (cd tcsh-${VERSION}; tar xpf -)
582	tar cvf - tcsh-${VERSION} | gzip > tcsh-${VERSION}.tar.gz
583	rm -rf tcsh-${VERSION}
584
585shar:
586	rm -f tcsh-*.shar
587	rm -rf tcsh-${VERSION} 
588	mkdir tcsh-${VERSION} tcsh-${VERSION}/config
589	cp ${ALLSRCS} tcsh-${VERSION}
590	cp ${CONFSRCS} tcsh-${VERSION}/config
591	tar cf - nls/Makefile nls/?*/set?* | (cd tcsh-${VERSION}; tar xpf -)
592	MAKESHAR -v -n tcsh-${VERSION} tcsh-${VERSION} \
593		 tcsh-${VERSION}/?* tcsh-${VERSION}/config/?* \
594		 tcsh-${VERSION}/?*/set?*
595	rm -rf tcsh-${VERSION}
596
597catalogs:
598	@(cd nls; make catalogs)
599	
600world:
601	$(MAKE) clean ; $(MAKE) depend ; $(MAKE) tcsh ; $(MAKE) install
602
603clean::
604	rm -f ed.defns.h sh.err.h tc.const.h config.h tc.defs.*
605	rm -f tcsh.*.m tcsh.*.cat
606
607depend:: config.h ed.defns.h sh.err.h tc.const.h $(SRCS) tc.defs.c
608
609tc.defs.${SUF}:	tc.defs.c sh.h
610
611tc.defs.c:	gethost host.defs
612	@rm -f $@
613	@echo "/* Do not edit this file, make creates it */" > $@
614	./gethost host.defs >> $@
615
616ALIB=$(HESLIB) $(AFSLIB) $(SYSLIBS)
617AINC=ed.defns.h sh.err.h tc.const.h sh.h
618
619NormalProgramTarget(tcsh, $(OBJS), $(AINC), $(LOCALLIBS), $(ALIB))
620NormalProgramTarget(gethost, gethost.${SUF}, $(AINC), $(LOCALLIBS), $(ALIB))
621
622InstallProgram(tcsh,$(TCSH_BINDIR))
623InstallManPage(tcsh,$(TCSH_MANDIR))
624DependTarget()
625