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