| 1 | XCOMM $XTermId: Imakefile,v 1.101 2007/03/18 21:06:18 tom Exp $ |
|---|
| 2 | XCOMM |
|---|
| 3 | XCOMM Attention xterm porters |
|---|
| 4 | XCOMM |
|---|
| 5 | XCOMM |
|---|
| 6 | XCOMM Xterm assumes that bcopy can handle overlapping arguments. If your |
|---|
| 7 | XCOMM bcopy (or memcpy) cannot, write a routine called bcopy and link it in |
|---|
| 8 | XCOMM or add -Dbcopy=mybcopy to the DEFINES list below. |
|---|
| 9 | XCOMM |
|---|
| 10 | XCOMM $XFree86: xc/programs/xterm/Imakefile,v 3.73 2006/04/10 00:34:36 dickey Exp $ |
|---|
| 11 | XCOMM |
|---|
| 12 | |
|---|
| 13 | /* Uncomment SCROLLBAR_RIGHT if you want the scroll bar to be on the right */ |
|---|
| 14 | SCROLLBAR_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 |
|---|
| 80 | CSGIDFLAGS = -DUSE_UTMP_SETGID |
|---|
| 81 | INSTSETIDFLAGS = InstGidFlags |
|---|
| 82 | #elif InstallXtermSetUID |
|---|
| 83 | INSTSETIDFLAGS = InstUidFlags |
|---|
| 84 | #else |
|---|
| 85 | INSTSETIDFLAGS = 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) \ |
|---|
| 99 | module.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 | |
|---|
| 233 | AllTarget($(PROGRAMS)) |
|---|
| 234 | |
|---|
| 235 | SpecialCObjectRule(main,$(_NOOP_),$(MAIN_DEFINES)) |
|---|
| 236 | SpecialCObjectRule(menu,$(_NOOP_),$(MISC_DEFINES)) |
|---|
| 237 | SpecialCObjectRule(misc,$(_NOOP_),$(MISC_DEFINES)) |
|---|
| 238 | SpecialCObjectRule(charproc,$(_NOOP_),$(MISC_DEFINES)) |
|---|
| 239 | SpecialCObjectRule(data,$(_NOOP_),$(MISC_DEFINES)) |
|---|
| 240 | |
|---|
| 241 | #if InstallXtermSetUID |
|---|
| 242 | SetUIDProgramTarget(xterm,$(OBJS1),$(DEPLIBS1),$(XRFLIBS) XkbClientLibs XawClientLibs,$(TERMCAPLIB) $(PTYLIB)) |
|---|
| 243 | #else |
|---|
| 244 | NormalProgramTarget(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)) |
|---|
| 250 | LDOVERRIDE = -L$(DESTDIR)$(USRLIBDIR) |
|---|
| 251 | #else |
|---|
| 252 | #if HasGcc |
|---|
| 253 | LDOVERRIDE = -static -L$(DESTDIR)$(USRLIBDIR) |
|---|
| 254 | #else |
|---|
| 255 | LDOVERRIDE = -Bstatic -L$(DESTDIR)$(USRLIBDIR) |
|---|
| 256 | LDRESUME = -Bdynamic |
|---|
| 257 | #endif |
|---|
| 258 | #endif |
|---|
| 259 | #endif |
|---|
| 260 | install:: |
|---|
| 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 |
|---|
| 270 | InstallProgramWithFlags(xterm,$(BINDIR),$(INSTSETIDFLAGS)) |
|---|
| 271 | #endif |
|---|
| 272 | |
|---|
| 273 | InstallNamedProg(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) |
|---|
| 283 | NormalProgramTarget(resize,$(OBJS2),$(DEPLIBS2),NullParameter,NullParameter) |
|---|
| 284 | #else |
|---|
| 285 | NormalProgramTarget(resize,$(OBJS2),$(DEPLIBS2),NullParameter,$(TERMCAPLIB)) |
|---|
| 286 | #endif |
|---|
| 287 | |
|---|
| 288 | InstallProgramWithFlags(resize,$(BINDIR),NullParameter) |
|---|
| 289 | |
|---|
| 290 | /* |
|---|
| 291 | * termcap is a special name that does not install correctly with |
|---|
| 292 | * InstallNamedNonExec() |
|---|
| 293 | */ |
|---|
| 294 | install:: |
|---|
| 295 | MakeDir($(DESTDIR)$(LIBDIR)/etc) |
|---|
| 296 | $(INSTALL) $(INSTALLFLAGS) $(INSTDATFLAGS) termcap \ |
|---|
| 297 | $(DESTDIR)$(LIBDIR)/etc/xterm.termcap |
|---|
| 298 | InstallNamedNonExec(terminfo,xterm.terminfo,$(LIBDIR)/etc) |
|---|
| 299 | |
|---|
| 300 | InstallAppDefaults(XTerm) |
|---|
| 301 | InstallAppDefaults(UXTerm) |
|---|
| 302 | InstallAppDefaultsLong(XTerm-col,XTerm-color) |
|---|
| 303 | InstallManPage(xterm,$(MANDIR)) |
|---|
| 304 | InstallManPage(resize,$(MANDIR)) |
|---|
| 305 | DependTarget() |
|---|