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