Imakefile revision 167466
1XCOMM 2XCOMM $tcsh: Imakefile,v 1.85 2006/03/02 18:46:44 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