Imakefile revision d522f475
1XCOMM $XTermId: Imakefile,v 1.101 2007/03/18 21:06:18 tom Exp $ 2XCOMM 3XCOMM Attention xterm porters 4XCOMM 5XCOMM 6XCOMM Xterm assumes that bcopy can handle overlapping arguments. If your 7XCOMM bcopy (or memcpy) cannot, write a routine called bcopy and link it in 8XCOMM or add -Dbcopy=mybcopy to the DEFINES list below. 9XCOMM 10XCOMM $XFree86: xc/programs/xterm/Imakefile,v 3.73 2006/04/10 00:34:36 dickey Exp $ 11XCOMM 12 13/* Uncomment SCROLLBAR_RIGHT if you want the scroll bar to be on the right */ 14SCROLLBAR_RIGHT = -DSCROLLBAR_RIGHT 15 16/* Define UTF8support to compile-in support for UTF-8 */ 17#define UTF8support 18 19/* 20 * setgid mode works for systems that do not require setuid to open pty. 21 * 22 * This feature could also be applied to FreeBSD, but requires the installer 23 * to define a "utmp" group as well as chgrp the utmp file to match. 24 * 25 * Note: InstallXtermSetUID is always defined; InstallXtermSetGID is defined 26 * in newer imake configurations. 27 */ 28#if !defined(InstallXtermSetGID) && !InstallXtermSetUID 29#if defined(OpenBSDArchitecture) || \ 30 (defined(LinuxArchitecture) && \ 31 (LinuxCLibMajorVersion == 6)) 32#define InstallXtermSetGID YES 33#endif 34#endif 35 36/* 37 * Override the set uid/gid flags to use the utempter library. 38 */ 39#if defined(UseUtempter) 40#undef InstallXtermSetUID /* imake sets this */ 41#undef InstallXtermSetGID /* we set this */ 42#define InstallXtermSetUID NO 43#define InstallXtermSetGID NO 44 UTMPLIB = -lutempter 45#endif 46 47/* 48 * Fixes to allow compile with X11R5, etc. 49 */ 50#ifndef InstGidFlags 51#define InstGidFlags -m 2755 -g utmp 52#endif 53 54#ifndef InstUidFlags 55#define InstUidFlags -m 4711 56#endif 57 58#ifndef XkbClientDefines 59#define XkbClientDefines /**/ 60#endif 61 62#ifndef InstallXtermSetUID 63#define InstallXtermSetUID NO 64#endif 65 66#ifndef InstallXtermSetGID 67#define InstallXtermSetGID NO 68#endif 69 70#ifndef XkbClientDepLibs 71#define XkbClientDepLibs /**/ 72#endif 73 74#ifndef XkbClientLibs 75#define XkbClientLibs /**/ 76#endif 77 78/* This must come before setting DEFINES */ 79#if InstallXtermSetGID 80CSGIDFLAGS = -DUSE_UTMP_SETGID 81INSTSETIDFLAGS = InstGidFlags 82#elif InstallXtermSetUID 83INSTSETIDFLAGS = InstUidFlags 84#else 85INSTSETIDFLAGS = NullParameter 86#endif 87 88/* 89 * Compensate for broken imake configuration. 90 */ 91#ifdef LinuxGnuSourceDefines 92# ifdef UseInstalled 93 IMAKEDEFINES = -D_GNU_SOURCE 94# endif 95#endif 96 97#ifndef SpecialCObjectRule 98#define SpecialCObjectRule(module,ignore,defines) \ 99module.o: ; $(CC) -c defines $(CFLAGS) module.c 100#endif 101 102#ifndef ProgramTargetName 103#define ProgramTargetName(program) program 104#endif 105 106/* 107 * add -DWTMP and -DLASTLOG if you want them; make sure that bcopy can 108 * handle overlapping copies before using it. 109 */ 110#if SetTtyGroup /* turn on in config/machine.cf */ 111 TTYGROUPDEF = -DUSE_TTY_GROUP 112#endif 113#ifdef UsePUCCPtyd /* turn on in config/site.def */ 114 PUCCPTYDDEF = -DPUCC_PTYD /* does not need to be setuid */ 115 PTYLIB = -lpucc 116#endif 117 118#if defined(NetBSDArchitecture) || \ 119 defined(OpenBSDArchitecture) || \ 120 defined(FreeBSDArchitecture) || \ 121 (defined(LinuxArchitecture) && \ 122 (LinuxCLibMajorVersion == 6) && (LinuxCLibMinorVersion < 1)) 123 PTYLIB = -lutil 124#endif 125 126#ifdef DarwinArchitecture 127/* dyld can deadlock if a signal comes in when it is looking up a symbol */ 128 LOCAL_LDFLAGS = -Wl,-bind_at_load 129#endif 130 131#ifdef OS2Architecture 132/* 133 * Only used in os2main.c, see ptyx.h for OPT_I18N_SUPPORT 134 * <werner@suse.de> 135 */ 136#if XtermWithI18N 137 I18NDEF = -DI18N 138 FEATURE_DEFINES = -DDEBUG -DALLOWLOGGING $(I18NDEF) 139#else 140 FEATURE_DEFINES = -DDEBUG -DALLOWLOGGING 141#endif 142#endif 143 144 OSMAJORVERSION = OSMajorVersion 145 OSMINORVERSION = OSMinorVersion 146 147#if !defined(OS2Architecture) && !defined(__GNU__) 148#if defined(UseUtempter) 149 UTMPDEF = -DUSE_UTEMPTER 150#else 151 UTMPDEF = -DUTMP 152#endif 153#endif 154 155#ifdef UTF8support 156 UTF8_OPTION = -DOPT_WIDE_CHARS -DOPT_LUIT_PROG 157 UTF8SRC = charclass.c precompose.c wcwidth.c xutf8.c 158 UTF8OBJ = charclass.o precompose.o wcwidth.o xutf8.o 159#endif 160#if BuildXftLibrary 161#define XRenderSupport 162#endif 163#ifdef XRenderSupport 164 XRFDEF = -DXRENDERFONT -DXFREE86_FT2 165 XRFLIBS = XftClientLibs 166 XRFDEPLIBS = XftClientDepLibs 167 XRFINCLUDES = $(XFTINCLUDES) 168#endif 169#if !HasPutenv 170 PUTENVDEF = -DNOPUTENV 171#endif 172#ifdef TraceXTerm 173 TRACEDEF = -DOPT_TRACE=1 174#endif 175 MAIN_DEFINES = $(UTMPDEF) $(TTYGROUPDEF) $(PUCCPTYDDEF) $(CSGIDFLAGS) \ 176 -DOSMAJORVERSION=$(OSMAJORVERSION) \ 177 -DOSMINORVERSION=$(OSMINORVERSION) 178 MISC_DEFINES = /* -DALLOWLOGGING -DALLOWLOGFILEEXEC */ 179 XKB_DEFINES = XkbClientDefines 180 PATH_DEFINES = -DPROJECTROOT=$(PROJECTROOT) 181 DEFINES = $(XKB_DEFINES) $(TERMCAPDEFINES) $(FEATURE_DEFINES) $(SCROLLBAR_RIGHT) $(UTF8_OPTION) $(XRFDEF) $(PATH_DEFINES) $(PUTENVDEF) $(IMAKEDEFINES) $(TRACEDEF) 182 INCLUDES = -I. $(XRFINCLUDES) 183 184#ifdef OS2Architecture 185 MAINSRC = os2main.c 186 MAINOBJ = os2main.o 187#else 188 MAINSRC = main.c 189 MAINOBJ = main.o 190#endif 191#ifdef TraceXTerm 192 TRACESRC = trace.c 193 TRACEOBJ = trace.o 194#endif 195 SRCS1 = button.c cachedGCs.c charproc.c charsets.c cursor.c \ 196 data.c doublechr.c fontutils.c input.c \ 197 menu.c misc.c print.c ptydata.c \ 198 screen.c scrollbar.c tabs.c util.c xstrings.c xtermcap.c \ 199 TekPrsTbl.c Tekproc.c VTPrsTbl.c \ 200 $(MAINSRC) $(EXTRASRC) $(UTF8SRC) $(TRACESRC) 201 OBJS1 = button.o cachedGCs.o charproc.o charsets.o cursor.o \ 202 data.o doublechr.o fontutils.o input.o \ 203 menu.o misc.o print.o ptydata.o \ 204 screen.o scrollbar.o tabs.o util.o xstrings.o xtermcap.o \ 205 TekPrsTbl.o Tekproc.o VTPrsTbl.o \ 206 $(MAINOBJ) $(EXTRAOBJ) $(UTF8OBJ) $(TRACEOBJ) 207 SRCS2 = resize.c xstrings.c 208 OBJS2 = resize.o xstrings.o 209 SRCS = $(SRCS1) $(SRCS2) 210 OBJS = $(OBJS1) $(OBJS2) 211 PROGRAMS = ProgramTargetName(resize) ProgramTargetName(xterm) 212 DEPLIBS1 = XkbClientDepLibs XawClientDepLibs $(XRFDEPLIBS) 213 DEPLIBS2 = 214 215#ifndef TermcapLibrary 216#if SystemV && !defined(MacIIArchitecture) 217#if defined(CrayArchitecture) || \ 218 (defined(HPArchitecture) && (OSMajorVersion < 10)) || \ 219 defined(RsArchitecture) || \ 220 defined(SCOArchitecture) || \ 221 defined(USLArchitecture) 222#define TermcapLibrary -lcurses /* special cases of System V */ 223#else 224#define TermcapLibrary -ltermlib /* usually in here */ 225#endif 226#else 227#define TermcapLibrary -ltermcap /* bsd puts it here */ 228#endif 229#endif 230 231 TERMCAPLIB = TermcapLibrary 232 233AllTarget($(PROGRAMS)) 234 235SpecialCObjectRule(main,$(_NOOP_),$(MAIN_DEFINES)) 236SpecialCObjectRule(menu,$(_NOOP_),$(MISC_DEFINES)) 237SpecialCObjectRule(misc,$(_NOOP_),$(MISC_DEFINES)) 238SpecialCObjectRule(charproc,$(_NOOP_),$(MISC_DEFINES)) 239SpecialCObjectRule(data,$(_NOOP_),$(MISC_DEFINES)) 240 241#if InstallXtermSetUID 242SetUIDProgramTarget(xterm,$(OBJS1),$(DEPLIBS1),$(XRFLIBS) XkbClientLibs XawClientLibs,$(TERMCAPLIB) $(PTYLIB)) 243#else 244NormalProgramTarget(xterm,$(OBJS1),$(DEPLIBS1),$(XRFLIBS) XkbClientLibs XawClientLibs,$(TERMCAPLIB) $(UTMPLIB) $(PTYLIB)) 245#endif 246 247#if InstallXtermSetUID && defined(SunArchitecture) && HasSharedLibraries && (OSMajorVersion < 5) 248#if AlternateUsrLibDir 249#if ((OSMajorVersion == 4) && (OSMinorVersion >= 1)) 250LDOVERRIDE = -L$(DESTDIR)$(USRLIBDIR) 251#else 252#if HasGcc 253LDOVERRIDE = -static -L$(DESTDIR)$(USRLIBDIR) 254#else 255LDOVERRIDE = -Bstatic -L$(DESTDIR)$(USRLIBDIR) 256LDRESUME = -Bdynamic 257#endif 258#endif 259#endif 260install:: 261 MakeDir($(DESTDIR)$(BINDIR)) 262 RemoveFile(ProgramTargetName(xterm.inst)) 263 LinkRule(ProgramTargetName(xterm.inst),$(CDEBUGFLAGS) $(CCOPTIONS) 264 $(EXTRA_LDOPTIONS) $(LOCAL_LDFLAGS),$(OBJS1),$(LDOVERRIDE) 265 $(XRFLIBS) XawClientLibs $(LDRESUME) $(LDLIBS) $(TERMCAPLIB) 266 $(PTYLIB)) 267 $(INSTALL) -c $(INSTPGMFLAGS) $(INSTSETIDFLAGS) ProgramTargetName(xterm.inst) $(DESTDIR)$(BINDIR)/ProgramTargetName(xterm) 268 RemoveFile(ProgramTargetName(xterm.inst)) 269#else 270InstallProgramWithFlags(xterm,$(BINDIR),$(INSTSETIDFLAGS)) 271#endif 272 273InstallNamedProg(uxterm,uxterm,$(BINDIR)) 274 275/* 276 * Link with the termcap library if USE_TERMCAP is defined in resize.c 277 */ 278#if defined(NTOArchitecture) || \ 279 defined(LinuxArchitecture) || \ 280 defined(OpenBSDArchitecture) || \ 281 defined(SGIArchitecture) || \ 282 defined(SunArchitecture) 283NormalProgramTarget(resize,$(OBJS2),$(DEPLIBS2),NullParameter,NullParameter) 284#else 285NormalProgramTarget(resize,$(OBJS2),$(DEPLIBS2),NullParameter,$(TERMCAPLIB)) 286#endif 287 288InstallProgramWithFlags(resize,$(BINDIR),NullParameter) 289 290/* 291 * termcap is a special name that does not install correctly with 292 * InstallNamedNonExec() 293 */ 294install:: 295 MakeDir($(DESTDIR)$(LIBDIR)/etc) 296 $(INSTALL) $(INSTALLFLAGS) $(INSTDATFLAGS) termcap \ 297 $(DESTDIR)$(LIBDIR)/etc/xterm.termcap 298InstallNamedNonExec(terminfo,xterm.terminfo,$(LIBDIR)/etc) 299 300InstallAppDefaults(XTerm) 301InstallAppDefaults(UXTerm) 302InstallAppDefaultsLong(XTerm-col,XTerm-color) 303InstallManPage(xterm,$(MANDIR)) 304InstallManPage(resize,$(MANDIR)) 305DependTarget() 306