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