Imakefile revision 956cc18d
17ec681f3SmrgXCOMM $XTermId: Imakefile,v 1.102 2009/04/27 19:26:34 tom Exp $
27ec681f3SmrgXCOMM
37ec681f3SmrgXCOMM                         Attention xterm porters
47ec681f3SmrgXCOMM
57ec681f3SmrgXCOMM
67ec681f3SmrgXCOMM Xterm assumes that bcopy can handle overlapping arguments.  If your
77ec681f3SmrgXCOMM bcopy (or memcpy) cannot, write a routine called bcopy and link it in
87ec681f3SmrgXCOMM or add -Dbcopy=mybcopy to the DEFINES list below.
97ec681f3SmrgXCOMM
107ec681f3SmrgXCOMM $XFree86: xc/programs/xterm/Imakefile,v 3.73 2006/04/10 00:34:36 dickey Exp $
117ec681f3SmrgXCOMM
127ec681f3Smrg
137ec681f3Smrg/* Uncomment SCROLLBAR_RIGHT if you want the scroll bar to be on the right */
147ec681f3SmrgSCROLLBAR_RIGHT = -DSCROLLBAR_RIGHT
157ec681f3Smrg
167ec681f3Smrg/* Define UTF8support to compile-in support for UTF-8 */
177ec681f3Smrg#define UTF8support
187ec681f3Smrg
197ec681f3Smrg/*
207ec681f3Smrg * setgid mode works for systems that do not require setuid to open pty.
217ec681f3Smrg *
227ec681f3Smrg * This feature could also be applied to FreeBSD, but requires the installer
237ec681f3Smrg * to define a "utmp" group as well as chgrp the utmp file to match.
247ec681f3Smrg *
257ec681f3Smrg * Note: InstallXtermSetUID is always defined; InstallXtermSetGID is defined
267ec681f3Smrg * in newer imake configurations.
277ec681f3Smrg */
287ec681f3Smrg#if !defined(InstallXtermSetGID) && !InstallXtermSetUID
297ec681f3Smrg#if defined(OpenBSDArchitecture) || \
307ec681f3Smrg    (defined(LinuxArchitecture) && \
317ec681f3Smrg     (LinuxCLibMajorVersion == 6))
327ec681f3Smrg#define InstallXtermSetGID YES
337ec681f3Smrg#endif
347ec681f3Smrg#endif
357ec681f3Smrg
367ec681f3Smrg/*
377ec681f3Smrg * Override the set uid/gid flags to use the utempter library.
387ec681f3Smrg */
397ec681f3Smrg#if defined(UseUtempter)
407ec681f3Smrg#undef InstallXtermSetUID /* imake sets this */
417ec681f3Smrg#undef InstallXtermSetGID /* we set this */
427ec681f3Smrg#define InstallXtermSetUID NO
437ec681f3Smrg#define InstallXtermSetGID NO
447ec681f3Smrg        UTMPLIB = -lutempter
457ec681f3Smrg#endif
467ec681f3Smrg
477ec681f3Smrg/*
487ec681f3Smrg * Fixes to allow compile with X11R5, etc.
497ec681f3Smrg */
507ec681f3Smrg#ifndef InstGidFlags
517ec681f3Smrg#define InstGidFlags -m 2755 -g utmp
527ec681f3Smrg#endif
537ec681f3Smrg
547ec681f3Smrg#ifndef InstUidFlags
557ec681f3Smrg#define InstUidFlags -m 4711
567ec681f3Smrg#endif
577ec681f3Smrg
587ec681f3Smrg#ifndef XkbClientDefines
597ec681f3Smrg#define XkbClientDefines /**/
607ec681f3Smrg#endif
617ec681f3Smrg
627ec681f3Smrg#ifndef InstallXtermSetUID
637ec681f3Smrg#define InstallXtermSetUID NO
647ec681f3Smrg#endif
657ec681f3Smrg
667ec681f3Smrg#ifndef InstallXtermSetGID
677ec681f3Smrg#define InstallXtermSetGID NO
687ec681f3Smrg#endif
697ec681f3Smrg
707ec681f3Smrg#ifndef XkbClientDepLibs
717ec681f3Smrg#define XkbClientDepLibs /**/
727ec681f3Smrg#endif
737ec681f3Smrg
747ec681f3Smrg#ifndef XkbClientLibs
757ec681f3Smrg#define XkbClientLibs /**/
767ec681f3Smrg#endif
777ec681f3Smrg
787ec681f3Smrg/* This must come before setting DEFINES */
797ec681f3Smrg#if InstallXtermSetGID
807ec681f3SmrgCSGIDFLAGS = -DUSE_UTMP_SETGID
817ec681f3SmrgINSTSETIDFLAGS = InstGidFlags
827ec681f3Smrg#elif InstallXtermSetUID
837ec681f3SmrgINSTSETIDFLAGS = InstUidFlags
847ec681f3Smrg#else
857ec681f3SmrgINSTSETIDFLAGS = NullParameter
867ec681f3Smrg#endif
877ec681f3Smrg
887ec681f3Smrg/*
897ec681f3Smrg * Compensate for broken imake configuration.
907ec681f3Smrg */
917ec681f3Smrg#ifdef LinuxGnuSourceDefines
927ec681f3Smrg# ifdef UseInstalled
937ec681f3Smrg   IMAKEDEFINES = -D_GNU_SOURCE
947ec681f3Smrg# endif
957ec681f3Smrg#endif
967ec681f3Smrg
977ec681f3Smrg#ifndef SpecialCObjectRule
987ec681f3Smrg#define SpecialCObjectRule(module,ignore,defines) \
997ec681f3Smrgmodule.o: ; $(CC) -c defines $(CFLAGS) module.c
1007ec681f3Smrg#endif
1017ec681f3Smrg
1027ec681f3Smrg#ifndef ProgramTargetName
1037ec681f3Smrg#define ProgramTargetName(program) program
1047ec681f3Smrg#endif
1057ec681f3Smrg
1067ec681f3Smrg/*
1077ec681f3Smrg * add -DWTMP and -DLASTLOG if you want them; make sure that bcopy can
1087ec681f3Smrg * handle overlapping copies before using it.
1097ec681f3Smrg */
1107ec681f3Smrg#if SetTtyGroup			/* turn on in config/machine.cf */
1117ec681f3Smrg    TTYGROUPDEF = -DUSE_TTY_GROUP
1127ec681f3Smrg#endif
1137ec681f3Smrg#ifdef UsePUCCPtyd		/* turn on in config/site.def */
1147ec681f3Smrg    PUCCPTYDDEF = -DPUCC_PTYD	/* does not need to be setuid */
1157ec681f3Smrg         PTYLIB = -lpucc
1167ec681f3Smrg#endif
1177ec681f3Smrg
1187ec681f3Smrg#if defined(NetBSDArchitecture) || \
1197ec681f3Smrg    defined(OpenBSDArchitecture) || \
1207ec681f3Smrg    defined(FreeBSDArchitecture) || \
1217ec681f3Smrg    (defined(LinuxArchitecture) && \
1227ec681f3Smrg     (LinuxCLibMajorVersion == 6) && (LinuxCLibMinorVersion < 1))
1237ec681f3Smrg         PTYLIB = -lutil
1247ec681f3Smrg#endif
1257ec681f3Smrg
1267ec681f3Smrg#ifdef DarwinArchitecture
1277ec681f3Smrg/* dyld can deadlock if a signal comes in when it is looking up a symbol */
1287ec681f3Smrg  LOCAL_LDFLAGS = -Wl,-bind_at_load
1297ec681f3Smrg#endif
1307ec681f3Smrg
1317ec681f3Smrg#ifdef OS2Architecture
1327ec681f3Smrg/*
1337ec681f3Smrg * Only used in os2main.c, see ptyx.h for OPT_I18N_SUPPORT
1347ec681f3Smrg * <werner@suse.de>
1357ec681f3Smrg */
1367ec681f3Smrg#if XtermWithI18N
1377ec681f3Smrg        I18NDEF = -DI18N
1387ec681f3Smrg      FEATURE_DEFINES = -DDEBUG -DALLOWLOGGING $(I18NDEF)
1397ec681f3Smrg#else
1407ec681f3Smrg      FEATURE_DEFINES = -DDEBUG -DALLOWLOGGING
1417ec681f3Smrg#endif
1427ec681f3Smrg#endif
1437ec681f3Smrg
1447ec681f3Smrg OSMAJORVERSION = OSMajorVersion
1457ec681f3Smrg OSMINORVERSION = OSMinorVersion
1467ec681f3Smrg
1477ec681f3Smrg#if !defined(OS2Architecture) && !defined(__GNU__)
1487ec681f3Smrg#if defined(UseUtempter)
1497ec681f3Smrg        UTMPDEF = -DUSE_UTEMPTER
1507ec681f3Smrg#else
1517ec681f3Smrg        UTMPDEF = -DUTMP
1527ec681f3Smrg#endif
1537ec681f3Smrg#endif
1547ec681f3Smrg
1557ec681f3Smrg#ifdef UTF8support
1567ec681f3Smrg    UTF8_OPTION = -DOPT_WIDE_CHARS -DOPT_LUIT_PROG
1577ec681f3Smrg        UTF8SRC = charclass.c precompose.c wcwidth.c xutf8.c
1587ec681f3Smrg        UTF8OBJ = charclass.o precompose.o wcwidth.o xutf8.o
1597ec681f3Smrg#endif
1607ec681f3Smrg#if BuildXftLibrary
1617ec681f3Smrg#define XRenderSupport
1627ec681f3Smrg#endif
1637ec681f3Smrg#ifdef XRenderSupport
1647ec681f3Smrg         XRFDEF = -DXRENDERFONT -DXFREE86_FT2
1657ec681f3Smrg        XRFLIBS = XftClientLibs
1667ec681f3Smrg     XRFDEPLIBS = XftClientDepLibs
1677ec681f3Smrg    XRFINCLUDES = $(XFTINCLUDES)
1687ec681f3Smrg#endif
1697ec681f3Smrg#if !HasPutenv
1707ec681f3Smrg      PUTENVDEF = -DNOPUTENV
1717ec681f3Smrg#endif
1727ec681f3Smrg#ifdef TraceXTerm
1737ec681f3Smrg       TRACEDEF = -DOPT_TRACE=1
1747ec681f3Smrg#endif
1757ec681f3Smrg   MAIN_DEFINES = $(UTMPDEF) $(TTYGROUPDEF) $(PUCCPTYDDEF) $(CSGIDFLAGS) \
1767ec681f3Smrg		  -DOSMAJORVERSION=$(OSMAJORVERSION) \
1777ec681f3Smrg		  -DOSMINORVERSION=$(OSMINORVERSION)
1787ec681f3Smrg   MISC_DEFINES = /* -DALLOWLOGGING -DALLOWLOGFILEEXEC */
1797ec681f3Smrg    XKB_DEFINES = XkbClientDefines
1807ec681f3Smrg   PATH_DEFINES = -DPROJECTROOT=$(PROJECTROOT)
1817ec681f3Smrg        DEFINES = $(XKB_DEFINES) $(TERMCAPDEFINES) $(FEATURE_DEFINES) $(SCROLLBAR_RIGHT) $(UTF8_OPTION) $(XRFDEF) $(PATH_DEFINES) $(PUTENVDEF) $(IMAKEDEFINES) $(TRACEDEF)
1827ec681f3Smrg       INCLUDES = -I. $(XRFINCLUDES)
1837ec681f3Smrg
1847ec681f3Smrg#ifdef OS2Architecture
1857ec681f3Smrg        MAINSRC = os2main.c
1867ec681f3Smrg        MAINOBJ = os2main.o
1877ec681f3Smrg#else
1887ec681f3Smrg        MAINSRC = main.c
1897ec681f3Smrg        MAINOBJ = main.o
1907ec681f3Smrg#endif
1917ec681f3Smrg#ifdef TraceXTerm
1927ec681f3Smrg       TRACESRC = trace.c
1937ec681f3Smrg       TRACEOBJ = trace.o
1947ec681f3Smrg#endif
1957ec681f3Smrg          SRCS1 = button.c cachedGCs.c charproc.c charsets.c cursor.c \
1967ec681f3Smrg		  data.c doublechr.c fontutils.c input.c \
1977ec681f3Smrg		  linedata.c menu.c misc.c print.c ptydata.c scrollback.c \
1987ec681f3Smrg		  screen.c scrollbar.c tabs.c util.c xstrings.c xtermcap.c \
1997ec681f3Smrg		  TekPrsTbl.c Tekproc.c VTPrsTbl.c \
2007ec681f3Smrg		  $(MAINSRC) $(EXTRASRC) $(UTF8SRC) $(TRACESRC)
2017ec681f3Smrg          OBJS1 = button.o cachedGCs.o charproc.o charsets.o cursor.o \
2027ec681f3Smrg		  data.o doublechr.o fontutils.o input.o \
2037ec681f3Smrg		  linedata.o menu.o misc.o print.o ptydata.o scrollback.o \
2047ec681f3Smrg		  screen.o scrollbar.o tabs.o util.o xstrings.o xtermcap.o \
2057ec681f3Smrg		  TekPrsTbl.o Tekproc.o VTPrsTbl.o \
2067ec681f3Smrg		  $(MAINOBJ) $(EXTRAOBJ) $(UTF8OBJ) $(TRACEOBJ)
2077ec681f3Smrg          SRCS2 = resize.c xstrings.c
2087ec681f3Smrg          OBJS2 = resize.o xstrings.o
2097ec681f3Smrg           SRCS = $(SRCS1) $(SRCS2)
2107ec681f3Smrg           OBJS = $(OBJS1) $(OBJS2)
2117ec681f3Smrg       PROGRAMS = ProgramTargetName(resize) ProgramTargetName(xterm)
2127ec681f3Smrg       DEPLIBS1 = XkbClientDepLibs XawClientDepLibs $(XRFDEPLIBS)
2137ec681f3Smrg       DEPLIBS2 =
2147ec681f3Smrg
2157ec681f3Smrg#ifndef TermcapLibrary
2167ec681f3Smrg#if SystemV && !defined(MacIIArchitecture)
2177ec681f3Smrg#if	defined(CrayArchitecture) || \
2187ec681f3Smrg	(defined(HPArchitecture) && (OSMajorVersion < 10)) || \
2197ec681f3Smrg	defined(RsArchitecture) || \
2207ec681f3Smrg	defined(SCOArchitecture) || \
2217ec681f3Smrg	defined(USLArchitecture)
2227ec681f3Smrg#define TermcapLibrary -lcurses		/* special cases of System V */
2237ec681f3Smrg#else
2247ec681f3Smrg#define TermcapLibrary -ltermlib	/* usually in here */
2257ec681f3Smrg#endif
2267ec681f3Smrg#else
2277ec681f3Smrg#define TermcapLibrary -ltermcap	/* bsd puts it here */
2287ec681f3Smrg#endif
2297ec681f3Smrg#endif
2307ec681f3Smrg
2317ec681f3Smrg     TERMCAPLIB = TermcapLibrary
2327ec681f3Smrg
2337ec681f3SmrgAllTarget($(PROGRAMS))
2347ec681f3Smrg
2357ec681f3SmrgSpecialCObjectRule(main,$(_NOOP_),$(MAIN_DEFINES))
2367ec681f3SmrgSpecialCObjectRule(menu,$(_NOOP_),$(MISC_DEFINES))
2377ec681f3SmrgSpecialCObjectRule(misc,$(_NOOP_),$(MISC_DEFINES))
2387ec681f3SmrgSpecialCObjectRule(charproc,$(_NOOP_),$(MISC_DEFINES))
2397ec681f3SmrgSpecialCObjectRule(data,$(_NOOP_),$(MISC_DEFINES))
2407ec681f3Smrg
2417ec681f3Smrg#if InstallXtermSetUID
2427ec681f3SmrgSetUIDProgramTarget(xterm,$(OBJS1),$(DEPLIBS1),$(XRFLIBS) XkbClientLibs XawClientLibs,$(TERMCAPLIB) $(PTYLIB))
2437ec681f3Smrg#else
2447ec681f3SmrgNormalProgramTarget(xterm,$(OBJS1),$(DEPLIBS1),$(XRFLIBS) XkbClientLibs XawClientLibs,$(TERMCAPLIB) $(UTMPLIB) $(PTYLIB))
2457ec681f3Smrg#endif
2467ec681f3Smrg
2477ec681f3Smrg#if InstallXtermSetUID && defined(SunArchitecture) && HasSharedLibraries && (OSMajorVersion < 5)
2487ec681f3Smrg#if AlternateUsrLibDir
2497ec681f3Smrg#if ((OSMajorVersion == 4) && (OSMinorVersion >= 1))
2507ec681f3SmrgLDOVERRIDE = -L$(DESTDIR)$(USRLIBDIR)
2517ec681f3Smrg#else
2527ec681f3Smrg#if HasGcc
2537ec681f3SmrgLDOVERRIDE = -static -L$(DESTDIR)$(USRLIBDIR)
2547ec681f3Smrg#else
2557ec681f3SmrgLDOVERRIDE = -Bstatic -L$(DESTDIR)$(USRLIBDIR)
2567ec681f3SmrgLDRESUME = -Bdynamic
2577ec681f3Smrg#endif
2587ec681f3Smrg#endif
2597ec681f3Smrg#endif
2607ec681f3Smrginstall::
2617ec681f3Smrg	MakeDir($(DESTDIR)$(BINDIR))
2627ec681f3Smrg	RemoveFile(ProgramTargetName(xterm.inst))
2637ec681f3Smrg	LinkRule(ProgramTargetName(xterm.inst),$(CDEBUGFLAGS) $(CCOPTIONS)
2647ec681f3Smrg	$(EXTRA_LDOPTIONS) $(LOCAL_LDFLAGS),$(OBJS1),$(LDOVERRIDE)
2657ec681f3Smrg	$(XRFLIBS) XawClientLibs $(LDRESUME) $(LDLIBS) $(TERMCAPLIB)
2667ec681f3Smrg	$(PTYLIB))
2677ec681f3Smrg	$(INSTALL) -c $(INSTPGMFLAGS) $(INSTSETIDFLAGS) ProgramTargetName(xterm.inst) $(DESTDIR)$(BINDIR)/ProgramTargetName(xterm)
2687ec681f3Smrg	RemoveFile(ProgramTargetName(xterm.inst))
2697ec681f3Smrg#else
2707ec681f3SmrgInstallProgramWithFlags(xterm,$(BINDIR),$(INSTSETIDFLAGS))
2717ec681f3Smrg#endif
2727ec681f3Smrg
2737ec681f3SmrgInstallNamedProg(uxterm,uxterm,$(BINDIR))
2747ec681f3Smrg
2757ec681f3Smrg/*
2767ec681f3Smrg * Link with the termcap library if USE_TERMCAP is defined in resize.c
2777ec681f3Smrg */
2787ec681f3Smrg#if	defined(NTOArchitecture)	|| \
2797ec681f3Smrg	defined(LinuxArchitecture)	|| \
2807ec681f3Smrg	defined(OpenBSDArchitecture)	|| \
2817ec681f3Smrg	defined(SGIArchitecture)	|| \
2827ec681f3Smrg	defined(SunArchitecture)
2837ec681f3SmrgNormalProgramTarget(resize,$(OBJS2),$(DEPLIBS2),NullParameter,NullParameter)
2847ec681f3Smrg#else
2857ec681f3SmrgNormalProgramTarget(resize,$(OBJS2),$(DEPLIBS2),NullParameter,$(TERMCAPLIB))
2867ec681f3Smrg#endif
2877ec681f3Smrg
2887ec681f3SmrgInstallProgramWithFlags(resize,$(BINDIR),NullParameter)
2897ec681f3Smrg
2907ec681f3Smrg/*
2917ec681f3Smrg * termcap is a special name that does not install correctly with
2927ec681f3Smrg * InstallNamedNonExec()
2937ec681f3Smrg */
2947ec681f3Smrginstall::
2957ec681f3Smrg	MakeDir($(DESTDIR)$(LIBDIR)/etc)
2967ec681f3Smrg	$(INSTALL) $(INSTALLFLAGS) $(INSTDATFLAGS) termcap \
2977ec681f3Smrg		$(DESTDIR)$(LIBDIR)/etc/xterm.termcap
2987ec681f3SmrgInstallNamedNonExec(terminfo,xterm.terminfo,$(LIBDIR)/etc)
2997ec681f3Smrg
3007ec681f3SmrgInstallAppDefaults(XTerm)
3017ec681f3SmrgInstallAppDefaults(UXTerm)
3027ec681f3SmrgInstallAppDefaultsLong(XTerm-col,XTerm-color)
3037ec681f3SmrgInstallManPage(xterm,$(MANDIR))
3047ec681f3SmrgInstallManPage(resize,$(MANDIR))
3057ec681f3SmrgDependTarget()
3067ec681f3Smrg