2 XCOMM $tcsh: Imakefile,v 1.86 2007/03/19 23:25:02 christos Exp $
4 XCOMM Imakefile for tcsh 6.12
5 XCOMM Marc Horowitz, MIT SIPB
15 /* All config options go in a separate file. */
17 #include "imake.config"
27 /* This is a giant conditional block. It should be set up right for
28 platforms which are in here, but it may need to be changed for new
29 ones. Please send in your fixes and additions! */
31 /**** tcsh configuration defines ****/
33 /* specific platforms */
36 # ifdef UltrixArchitecture
37 # define ConfigH ultrix
40 # ifdef UxpArchitecture
41 # define ConfigH sysv4
44 # if defined(LinuxArchitecture) || defined(GNUArchitecture)
45 # define ConfigH linux
48 # ifdef AlphaArchitecture
49 # if !defined(LinuxArchitecture) && !defined(GNUArchitecture)
50 # define ConfigH decosf1
53 # define MyCflags -std1 -Olimit 2000
55 # define NoCombineRegs
59 # if defined(VaxArchitecture) && !defined(UltrixArchitecture)
63 # ifdef NeXTArchitecture
67 # if defined(SunArchitecture)
68 # if (OSMajorVersion == 3)
69 # define ConfigH sunos35
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
81 # define NoCombineRegs
82 # else /* OSMajorVersion == 5 */
83 # if (OSMinorVersion < 3)
84 # if (OSMinorVersion < 2)
87 # define ConfigH sol22
90 # if (OSMinorVersion < 4)
91 # define ConfigH sol23
93 # if (OSMinorVersion < 6)
94 # define ConfigH sol24
96 # define ConfigH sol26
100 # define NoCombineRegs
105 # ifdef HPArchitecture
106 /* For some stupid reason makedepend on HP requires this */
108 # if (OSMajorVersion >= 8)
109 # define ConfigH hpux8
111 # define ConfigH hpux7
115 # ifdef CrayArchitecture
116 # define ConfigH cray
119 # ifdef SGIArchitecture
120 # define ConfigH irix
122 # if (OSMajorVersion < 5)
123 # ifdef you_are_using_yp
127 # define MyStdc -D__STDC__
128 # if SGICompilerMajorVersion < 4
129 CCOPTIONS=-float # We don't want -cckr and -prototypes
133 # if (OSMajorVersion == 6)
134 # if (OSMinorVersion >= 2)
136 # define ConfigH irix62
141 # ifdef IBMArchitecture
143 # if (SystemV == YES)
145 # if OSMajorVersion < 3
146 # if OSMinorVersion < 2
152 # define AOSArchitecture
157 #ifdef AOSArchitecture
158 #define MyStdc -U__STDC__
161 # if defined(MipsBsdArchitecture) || defined(MipsSysvArchitecture)
162 # define ConfigH mips
165 # ifdef DguxArchitecture
166 # define ConfigH dgux
169 # ifdef ConvexArchitecture
170 # define ConfigH convex
173 # if defined(SQNTArchitecture) || defined(SequentArchitecture)
174 # define ConfigH sequent
177 # ifdef MacIIArchitecture
178 # define ConfigH mac2
181 # ifdef MinixArchitecture
182 /* Maybe conditional on MACH? */
183 SYSSRCS=mi.termios.c mi.wait.h mi.varargs.h
184 SYSOBJS=mi.termios.${SUF}
185 EXTF=ma.setp.c vms.termcap.c
187 /* Maybe conditional on MACH? */
189 SYSOBJS=ma.setp.${SUF}
190 EXTF=mi.termios.c mi.wait.h mi.varargs.h vms.termcap.c
194 # if IscVersion != 202
196 # define UseLibCposix
198 # define ConfigH isc202
200 # endif /* i386Isc */
202 # ifdef OpenBSDArchitecture
203 # define ConfigH bsd4.4
204 # endif /* OpenBsdArchitecture */
206 # ifdef NetBSDArchitecture
207 # define ConfigH bsd4.4
208 # endif /* NetBsdArchitecture */
210 # ifdef FreeBSDArchitecture
211 # define ConfigH bsd4.4
212 # endif /* FreeBsdArchitecture */
214 # ifdef MidnightBSDArchitecture
215 # define ConfigH bsd4.4
216 # endif /* MidnightBsdArchitecture */
218 # ifdef i386SVR4Architecture
219 # define ConfigH sysv4
221 # define NoCombineRegs
225 #endif /* !ConfigH */
232 #define ConfigH sysv3
234 /* why this as a default? Why not? */
238 #endif /* !ConfigH */
240 /**** libraries ****/
242 #if (SystemV == NO) || defined(HPArchitecture) || \
243 defined(SQNTArchitecture) || defined(SequentArchitecture) || \
244 defined(MacIIArchitecture) || defined(UseLibTermcap)
245 LIBTERMCAP = -ltermcap
250 #if defined(SQNTArchitecture) || defined(SequentArchitecture)
251 LIBSQNT=-lsocket -linet -lnsl -lseq
254 /* This may not be good enough - I don't have access to enough systems
255 to really test it. */
256 #if (SystemV == YES) || defined(UseLibCurses) && !defined(HPArchitecture)
262 #if defined(UseLibNet)
268 #if defined(UseLibSocket)
274 #if defined(UseLibBSD)
280 #if (defined(SGIArchitecture) && \
281 (OSMajorVersion == 3) && (OSMinorVersion == 3)) || \
288 #if defined(UseLibSun)
294 #if defined(UseLibCposix)
300 #if defined(UseLibInet)
306 #if defined(UseLibDir)
318 #if defined(UseLibIntl)
324 #if (HasLibCrypt == YES)
330 #if defined(MacIIArchitecture) || defined(UseLibPosix)
336 #if defined(ATTArchitecture) || defined(UseLibDirent)
337 LIBDIRECTENT = -ldirent
342 /* The order here is significant. Although nothing uses all of these,
343 some platforms which use more than one do care about the order. */
345 SYSLIBS = $(LIBPOSIX) $(LIBDIRECTENT) $(LIBTERMCAP) $(LIBCURSES) \
346 $(LIBNET) $(LIBINTL) $(LIBSOCKET) $(LIBSUN) $(LIBBSD) $(LIBCPOSIX) \
347 $(LIBINET) $(LIBDIRECT) $(LIBX) $(LIBC_S) $(LIBSQNT) $(LIBCRYPT)
349 /* Past here, nothing should need to be changed to compile on a different
350 platform, unless you have a really weird architecture. */
359 # ifdef NoCombineRegs
360 CC = gcc -finline-functions -fstrength-reduce
362 CC = gcc -fcombine-regs -finline-functions -fstrength-reduce
371 HESLIB = -L/usr/athena/lib -lhesiod
372 /* it seems to me that the -I shouldn't be necessary, but there seems
373 to be a bug in the Imake stuff, so here it is. */
374 HESDEF = -DHESIOD -I/usr/athena/include
385 #define AFS33LIB -laudit
389 /* Auxilliary libs needed for AFS */
390 /* Both HPUX and Solaris need the BSD libraries. We need -lc before
391 * the bsd library to avoid using any more of it than is necessary.
393 #if defined(HPArchitecture)
394 #define AFSAUXLIB -lc -lBSD
395 /* This is probably a kludge, but so is imake. */
397 #if defined(SunArchitecture) && (OSMajorVersion == 5)
398 #define AFSAUXLIB -lsocket -lnsl -lc -lucb
402 #endif /* AFSAUXLIB */
403 AFSLIB = -L$(AFSDIR)/lib -L$(AFSDIR)/lib/afs -lkauth -lprot -lubik\
404 -lauth -lrxkad -lsys -ldes -lrx -llwp -lcom_err\
405 $(AFSDIR)/lib/afs/util.a AFS33LIB AFSAUXLIB
406 AFSDEF = -DAFS -I$(AFSDIR)/include
412 /* This is encore specific, but I don't know what encore's #define is,
413 and it shouldn't hurt to have it here, so here it is */
414 PARALLEL=12 # Make the multi-max run fast.
417 #define TcshTop /usr/local
424 MANSUFFIX = ManSuffix
427 PATH_TCSHELL = TcshPath
428 TCSHPATH = -D_PATH_TCSHELL='"$(PATH_TCSHELL)"'
434 TCSH_BINDIR = DestBin
436 TCSH_BINDIR = $(TCSHTOP)/bin
439 TCSH_MANDIR = DestMan
441 TCSH_MANDIR = $(TCSHTOP)/man/man$(MANSUFFIX)
463 CDEBUGFLAGS = CDebugFlags
475 HTDEF = -DHOSTTYPE='"$(HOSTTYPE)"'
480 DEFINES = $(TCSHPATH) $(HESDEF) $(AFSDEF) $(HTDEF) MyDefines MyCflags MyStdc
481 INCLUDES = -I. MyIncludes
489 SHSRCS= sh.c sh.dir.c sh.dol.c sh.err.c sh.exec.c \
490 sh.char.c sh.exp.c sh.file.c sh.func.c \
491 sh.glob.c sh.hist.c sh.init.c sh.lex.c \
492 sh.misc.c sh.parse.c sh.print.c sh.proc.c \
493 sh.sem.c sh.set.c sh.time.c glob.c \
494 sh.char.h sh.dir.h sh.proc.h sh.h \
495 sh.decls.h glob.h ${SYSSRCS}
496 SHOBJS= sh.${SUF} sh.dir.${SUF} sh.dol.${SUF} sh.err.${SUF} sh.exec.${SUF} \
497 sh.char.${SUF} sh.exp.${SUF} sh.file.${SUF} sh.func.${SUF} \
498 sh.glob.${SUF} sh.hist.${SUF} sh.init.${SUF} sh.lex.${SUF} \
499 sh.misc.${SUF} sh.parse.${SUF} sh.print.${SUF} sh.proc.${SUF} \
500 sh.sem.${SUF} sh.set.${SUF} sh.time.${SUF} glob.${SUF} ${SYSOBJS}
502 TWSRCS= tw.decls.h tw.h tw.help.c tw.init.c tw.parse.c tw.spell.c \
504 TWOBJS= tw.help.${SUF} tw.init.${SUF} tw.parse.${SUF} tw.spell.${SUF} \
505 tw.comp.${SUF} tw.color.${SUF}
507 EDSRCS= ed.chared.c ed.decls.h ed.defns.c ed.h ed.init.c ed.inputl.c \
508 ed.refresh.c ed.screen.c ed.xmap.c ed.term.c ed.term.h
509 EDOBJS= ed.chared.${SUF} ed.refresh.${SUF} ed.screen.${SUF} ed.init.${SUF} \
510 ed.inputl.${SUF} ed.defns.${SUF} ed.xmap.${SUF} ed.term.${SUF}
512 TCSRCS= tc.alloc.c tc.bind.c tc.const.c tc.decls.h tc.disc.c \
513 tc.func.c tc.os.c tc.os.h tc.printf.c tc.prompt.c \
514 tc.sched.c tc.sig.c tc.sig.h tc.str.c sh.types.h tc.vers.c tc.wait.h \
516 TCOBJS= tc.alloc.${SUF} tc.bind.${SUF} tc.const.${SUF} tc.defs.${SUF} \
517 tc.disc.${SUF} tc.func.${SUF} tc.os.${SUF} tc.printf.${SUF} \
518 tc.prompt.${SUF} tc.sched.${SUF} tc.sig.${SUF} tc.str.${SUF} \
519 tc.vers.${SUF} tc.who.${SUF}
521 MISCF = Makefile.std Fixes MAKEDIFFS MAKESHAR NewThings README FAQ \
522 WishList config_f.h eight-bit.me glob.3 patchlevel.h \
523 pathnames.h tcsh.man Ported src.desc Imakefile imake.config \
524 README.imake complete.tcsh vmsreadme.txt Makefile.vms termcap.vms \
525 snames.h host.defs gethost.c tcsh.man2html Makefile.in configure.in \
527 CONFSRCS=config/[a-z]*
530 SRCS = $(SHSRCS) $(TWSRCS) $(EDSRCS) $(TCSRCS)
531 OBJS = $(SHOBJS) $(TWOBJS) $(EDOBJS) $(TCOBJS)
533 ALLSRCS= $(MISCF) $(SRCS) $(EXTF)
537 ed.defns.h: config.h ed.defns.c
539 @echo '/* Do not edit this file, make creates it. */' > $@
540 @echo '#ifndef _h_ed_defns' >> $@
541 @echo '#define _h_ed_defns' >> $@
542 egrep '[FV]_' ed.defns.c | egrep '^#define' >> $@
543 @echo '#endif /* _h_ed_defns */' >> $@
545 sh.err.h: config.h sh.err.c
547 @echo '/* Do not edit this file, make creates it. */' > $@
548 @echo '#ifndef _h_sh_err' >> $@
549 @echo '#define _h_sh_err' >> $@
550 egrep 'ERR_' sh.err.c | egrep '^#define' >> $@
551 @echo '#endif /* _h_sh_err */' >> $@
553 tc.const.h: config.h tc.const.c
555 @echo '/* Do not edit this file, make creates it. */' > $@
556 @echo '#ifndef _h_tc_const' >> $@
557 @echo '#define _h_tc_const' >> $@
558 ${CC} -E $(INCLUDES) ${DEFINES} -D_h_tc_const tc.const.c | \
560 sed -e 's/Char \([a-zA-Z0-9_]*\)\[\].*/extern Char \1[];/' | \
562 @echo '#endif /* _h_tc_const */' >> $@
565 cp config/ConfigH config.h
567 $(OBJS): sh.err.h tc.const.h ed.defns.h
570 rm -f tcsh-${VERSION}.tar.Z
571 rm -rf tcsh-${VERSION}
572 mkdir tcsh-${VERSION} tcsh-${VERSION}/config
573 cp ${ALLSRCS} tcsh-${VERSION}
574 cp ${CONFSRCS} tcsh-${VERSION}/config
575 tar cf - nls/Makefile nls/?*/set?* | (cd tcsh-${VERSION}; tar xpf -)
576 tar cvf - tcsh-${VERSION} | compress > tcsh-${VERSION}.tar.Z
577 rm -rf tcsh-${VERSION}
580 rm -f tcsh-${VERSION}.tar.gz
581 rm -rf tcsh-${VERSION}
582 mkdir tcsh-${VERSION} tcsh-${VERSION}/config
583 cp ${ALLSRCS} tcsh-${VERSION}
584 cp ${CONFSRCS} tcsh-${VERSION}/config
585 tar cf - nls/Makefile nls/?*/set?* | (cd tcsh-${VERSION}; tar xpf -)
586 tar cvf - tcsh-${VERSION} | gzip > tcsh-${VERSION}.tar.gz
587 rm -rf tcsh-${VERSION}
591 rm -rf tcsh-${VERSION}
592 mkdir tcsh-${VERSION} tcsh-${VERSION}/config
593 cp ${ALLSRCS} tcsh-${VERSION}
594 cp ${CONFSRCS} tcsh-${VERSION}/config
595 tar cf - nls/Makefile nls/?*/set?* | (cd tcsh-${VERSION}; tar xpf -)
596 MAKESHAR -v -n tcsh-${VERSION} tcsh-${VERSION} \
597 tcsh-${VERSION}/?* tcsh-${VERSION}/config/?* \
598 tcsh-${VERSION}/?*/set?*
599 rm -rf tcsh-${VERSION}
602 @(cd nls; make catalogs)
605 $(MAKE) clean ; $(MAKE) depend ; $(MAKE) tcsh ; $(MAKE) install
608 rm -f ed.defns.h sh.err.h tc.const.h config.h tc.defs.*
609 rm -f tcsh.*.m tcsh.*.cat
611 depend:: config.h ed.defns.h sh.err.h tc.const.h $(SRCS) tc.defs.c
613 tc.defs.${SUF}: tc.defs.c sh.h
615 tc.defs.c: gethost host.defs
617 @echo "/* Do not edit this file, make creates it */" > $@
618 ./gethost host.defs >> $@
620 ALIB=$(HESLIB) $(AFSLIB) $(SYSLIBS)
621 AINC=ed.defns.h sh.err.h tc.const.h sh.h
623 NormalProgramTarget(tcsh, $(OBJS), $(AINC), $(LOCALLIBS), $(ALIB))
624 NormalProgramTarget(gethost, gethost.${SUF}, $(AINC), $(LOCALLIBS), $(ALIB))
626 InstallProgram(tcsh,$(TCSH_BINDIR))
627 InstallManPage(tcsh,$(TCSH_MANDIR))