Imakefile revision f2e35a3a
1f2e35a3aSmrgXCOMM $XTermId: Imakefile,v 1.123 2019/11/02 21:50:51 tom Exp $ 2d522f475SmrgXCOMM 3d522f475SmrgXCOMM Attention xterm porters 4d522f475SmrgXCOMM 5d522f475SmrgXCOMM 6d522f475SmrgXCOMM Xterm assumes that bcopy can handle overlapping arguments. If your 7d522f475SmrgXCOMM bcopy (or memcpy) cannot, write a routine called bcopy and link it in 8d522f475SmrgXCOMM or add -Dbcopy=mybcopy to the DEFINES list below. 9d522f475SmrgXCOMM 10d522f475Smrg 11d522f475Smrg/* Uncomment SCROLLBAR_RIGHT if you want the scroll bar to be on the right */ 12d522f475SmrgSCROLLBAR_RIGHT = -DSCROLLBAR_RIGHT 13d522f475Smrg 14d522f475Smrg/* Define UTF8support to compile-in support for UTF-8 */ 15d522f475Smrg#define UTF8support 16d522f475Smrg 17d522f475Smrg/* 18d522f475Smrg * setgid mode works for systems that do not require setuid to open pty. 19d522f475Smrg * 20d522f475Smrg * This feature could also be applied to FreeBSD, but requires the installer 21d522f475Smrg * to define a "utmp" group as well as chgrp the utmp file to match. 22d522f475Smrg * 23d522f475Smrg * Note: InstallXtermSetUID is always defined; InstallXtermSetGID is defined 24d522f475Smrg * in newer imake configurations. 25d522f475Smrg */ 26d522f475Smrg#if !defined(InstallXtermSetGID) && !InstallXtermSetUID 27d522f475Smrg#if defined(OpenBSDArchitecture) || \ 28d522f475Smrg (defined(LinuxArchitecture) && \ 29d522f475Smrg (LinuxCLibMajorVersion == 6)) 30d522f475Smrg#define InstallXtermSetGID YES 31d522f475Smrg#endif 32d522f475Smrg#endif 33d522f475Smrg 34d522f475Smrg/* 35d522f475Smrg * Override the set uid/gid flags to use the utempter library. 36d522f475Smrg */ 37d522f475Smrg#if defined(UseUtempter) 38d522f475Smrg#undef InstallXtermSetUID /* imake sets this */ 39d522f475Smrg#undef InstallXtermSetGID /* we set this */ 40d522f475Smrg#define InstallXtermSetUID NO 41d522f475Smrg#define InstallXtermSetGID NO 42d522f475Smrg UTMPLIB = -lutempter 43d522f475Smrg#endif 44d522f475Smrg 45d522f475Smrg/* 46d522f475Smrg * Fixes to allow compile with X11R5, etc. 47d522f475Smrg */ 48d522f475Smrg#ifndef InstGidFlags 49d522f475Smrg#define InstGidFlags -m 2755 -g utmp 50d522f475Smrg#endif 51d522f475Smrg 52d522f475Smrg#ifndef InstUidFlags 53d522f475Smrg#define InstUidFlags -m 4711 54d522f475Smrg#endif 55d522f475Smrg 56d522f475Smrg#ifndef XkbClientDefines 57d522f475Smrg#define XkbClientDefines /**/ 58d522f475Smrg#endif 59d522f475Smrg 60d522f475Smrg#ifndef InstallXtermSetUID 61d522f475Smrg#define InstallXtermSetUID NO 62d522f475Smrg#endif 63d522f475Smrg 64d522f475Smrg#ifndef InstallXtermSetGID 65d522f475Smrg#define InstallXtermSetGID NO 66d522f475Smrg#endif 67d522f475Smrg 68d522f475Smrg#ifndef XkbClientDepLibs 69d522f475Smrg#define XkbClientDepLibs /**/ 70d522f475Smrg#endif 71d522f475Smrg 72d522f475Smrg#ifndef XkbClientLibs 73d522f475Smrg#define XkbClientLibs /**/ 74d522f475Smrg#endif 75d522f475Smrg 76d522f475Smrg/* This must come before setting DEFINES */ 77d522f475Smrg#if InstallXtermSetGID 78d522f475SmrgCSGIDFLAGS = -DUSE_UTMP_SETGID 79d522f475SmrgINSTSETIDFLAGS = InstGidFlags 80d522f475Smrg#elif InstallXtermSetUID 81d522f475SmrgINSTSETIDFLAGS = InstUidFlags 82d522f475Smrg#else 83d522f475SmrgINSTSETIDFLAGS = NullParameter 84d522f475Smrg#endif 85d522f475Smrg 86d522f475Smrg/* 87d522f475Smrg * Compensate for broken imake configuration. 88d522f475Smrg */ 89d522f475Smrg#ifdef LinuxGnuSourceDefines 90d522f475Smrg# ifdef UseInstalled 91f2e35a3aSmrg IMAKEDEFINES = -D_DEFAULT_SOURCE -U_XOPEN_SOURCE -D_XOPEN_SOURCE=600 92d522f475Smrg# endif 93d522f475Smrg#endif 94d522f475Smrg 95d522f475Smrg#ifndef SpecialCObjectRule 96d522f475Smrg#define SpecialCObjectRule(module,ignore,defines) \ 97d522f475Smrgmodule.o: ; $(CC) -c defines $(CFLAGS) module.c 98d522f475Smrg#endif 99d522f475Smrg 100d522f475Smrg#ifndef ProgramTargetName 101d522f475Smrg#define ProgramTargetName(program) program 102d522f475Smrg#endif 103d522f475Smrg 104d522f475Smrg/* 105d522f475Smrg * add -DWTMP and -DLASTLOG if you want them; make sure that bcopy can 106d522f475Smrg * handle overlapping copies before using it. 107d522f475Smrg */ 108d522f475Smrg#if SetTtyGroup /* turn on in config/machine.cf */ 109d522f475Smrg TTYGROUPDEF = -DUSE_TTY_GROUP 110d522f475Smrg#endif 111d522f475Smrg#ifdef UsePUCCPtyd /* turn on in config/site.def */ 112d522f475Smrg PUCCPTYDDEF = -DPUCC_PTYD /* does not need to be setuid */ 113d522f475Smrg PTYLIB = -lpucc 114d522f475Smrg#endif 115d522f475Smrg 116d522f475Smrg#if defined(NetBSDArchitecture) || \ 117d522f475Smrg defined(OpenBSDArchitecture) || \ 118d522f475Smrg defined(FreeBSDArchitecture) || \ 119d522f475Smrg (defined(LinuxArchitecture) && \ 120d522f475Smrg (LinuxCLibMajorVersion == 6) && (LinuxCLibMinorVersion < 1)) 121d522f475Smrg PTYLIB = -lutil 122d522f475Smrg#endif 123d522f475Smrg 124d522f475Smrg#ifdef DarwinArchitecture 125d522f475Smrg/* dyld can deadlock if a signal comes in when it is looking up a symbol */ 126d522f475Smrg LOCAL_LDFLAGS = -Wl,-bind_at_load 127d522f475Smrg#endif 128d522f475Smrg 129d522f475Smrg OSMAJORVERSION = OSMajorVersion 130d522f475Smrg OSMINORVERSION = OSMinorVersion 131d522f475Smrg 132f2e35a3aSmrg/* none of these can be expected to use termcap unless emulated by terminfo */ 133a1f3da82Smrg#if defined(NTOArchitecture) || \ 134a1f3da82Smrg defined(OpenBSDArchitecture) || \ 135a1f3da82Smrg defined(SGIArchitecture) || \ 136f2e35a3aSmrg defined(SunArchitecture) || \ 137f2e35a3aSmrg defined(NetBSDArchitecture) || \ 138f2e35a3aSmrg defined(OpenBSDArchitecture) || \ 139f2e35a3aSmrg defined(FreeBSDArchitecture) || \ 140f2e35a3aSmrg defined(LinuxArchitecture) 141f2e35a3aSmrgTERMCAPDEFINES=-DUSE_TERMINFO -DHAVE_TIGETSTR -DHAVE_TERM_H 142a1f3da82Smrg#endif 143a1f3da82Smrg 14401037d57Smrg#if !defined(OS2Architecture) && !defined(__GNU__) && !defined(Minix3Architecture) 145d522f475Smrg#if defined(UseUtempter) 146d522f475Smrg UTMPDEF = -DUSE_UTEMPTER 147d522f475Smrg#else 148d522f475Smrg UTMPDEF = -DUTMP 149d522f475Smrg#endif 150d522f475Smrg#endif 151d522f475Smrg 152d522f475Smrg#ifdef UTF8support 153d522f475Smrg UTF8_OPTION = -DOPT_WIDE_CHARS -DOPT_LUIT_PROG 154d522f475Smrg UTF8SRC = charclass.c precompose.c wcwidth.c xutf8.c 155d522f475Smrg UTF8OBJ = charclass.o precompose.o wcwidth.o xutf8.o 156d522f475Smrg#endif 157d522f475Smrg#if BuildXftLibrary 158d522f475Smrg#define XRenderSupport 159d522f475Smrg#endif 160d522f475Smrg#ifdef XRenderSupport 161d522f475Smrg XRFDEF = -DXRENDERFONT -DXFREE86_FT2 162d522f475Smrg XRFLIBS = XftClientLibs 163d522f475Smrg XRFDEPLIBS = XftClientDepLibs 164d522f475Smrg XRFINCLUDES = $(XFTINCLUDES) 165d522f475Smrg#endif 166d522f475Smrg#if !HasPutenv 167d522f475Smrg PUTENVDEF = -DNOPUTENV 168d522f475Smrg#endif 169894e0ac8Smrg#ifdef RegisXTerm 170894e0ac8Smrg SIXELDEF = -DOPT_REGIS_GRAPHICS=1 171894e0ac8Smrg#endif 172e0a2b6dfSmrg#ifdef SixelXTerm 173e0a2b6dfSmrg SIXELDEF = -DOPT_SIXEL_GRAPHICS=1 174e0a2b6dfSmrg#endif 175d522f475Smrg#ifdef TraceXTerm 176d522f475Smrg TRACEDEF = -DOPT_TRACE=1 177d522f475Smrg#endif 178d522f475Smrg MAIN_DEFINES = $(UTMPDEF) $(TTYGROUPDEF) $(PUCCPTYDDEF) $(CSGIDFLAGS) \ 179d522f475Smrg -DOSMAJORVERSION=$(OSMAJORVERSION) \ 180d522f475Smrg -DOSMINORVERSION=$(OSMINORVERSION) 181d522f475Smrg MISC_DEFINES = /* -DALLOWLOGGING -DALLOWLOGFILEEXEC */ 182d522f475Smrg XKB_DEFINES = XkbClientDefines 183d522f475Smrg PATH_DEFINES = -DPROJECTROOT=$(PROJECTROOT) 184f2e35a3aSmrg DEFINES = $(XKB_DEFINES) $(TERMCAPDEFINES) $(FEATURE_DEFINES) $(SCROLLBAR_RIGHT) $(UTF8_OPTION) $(XRFDEF) $(PATH_DEFINES) $(PUTENVDEF) $(IMAKEDEFINES) $(SIXELDEF) $(TRACEDEF) 185d522f475Smrg INCLUDES = -I. $(XRFINCLUDES) 186d522f475Smrg 187d522f475Smrg MAINSRC = main.c 188d522f475Smrg MAINOBJ = main.o 1892e4f8982Smrg DUMPSSRC = html.c svg.c 1902e4f8982Smrg DUMPSOBJ = html.o svg.o 191894e0ac8Smrg#ifdef RegisXTerm 192894e0ac8Smrg SIXELSRC = graphics_regis.c 193894e0ac8Smrg SIXELOBJ = graphics_regis.o 194894e0ac8Smrg#endif 195e0a2b6dfSmrg#ifdef SixelXTerm 196894e0ac8Smrg SIXELSRC = graphics_sixel.c 197894e0ac8Smrg SIXELOBJ = graphics_sixel.o 198e0a2b6dfSmrg#endif 199d522f475Smrg#ifdef TraceXTerm 200d522f475Smrg TRACESRC = trace.c 201d522f475Smrg TRACEOBJ = trace.o 202d522f475Smrg#endif 203d522f475Smrg SRCS1 = button.c cachedGCs.c charproc.c charsets.c cursor.c \ 204d522f475Smrg data.c doublechr.c fontutils.c input.c \ 205956cc18dSsnj linedata.c menu.c misc.c print.c ptydata.c scrollback.c \ 2060bd37d32Smrg screen.c scrollbar.c tabs.c util.c version.c xstrings.c \ 2070bd37d32Smrg xtermcap.c TekPrsTbl.c Tekproc.c VTPrsTbl.c \ 2082e4f8982Smrg $(MAINSRC) $(EXTRASRC) $(UTF8SRC) $(SIXELSRC) $(TRACESRC) $(DUMPSSRC) 209d522f475Smrg OBJS1 = button.o cachedGCs.o charproc.o charsets.o cursor.o \ 210d522f475Smrg data.o doublechr.o fontutils.o input.o \ 211956cc18dSsnj linedata.o menu.o misc.o print.o ptydata.o scrollback.o \ 2120bd37d32Smrg screen.o scrollbar.o tabs.o util.o version.o xstrings.o \ 2130bd37d32Smrg xtermcap.o TekPrsTbl.o Tekproc.o VTPrsTbl.o \ 2142e4f8982Smrg $(MAINOBJ) $(EXTRAOBJ) $(UTF8OBJ) $(SIXELOBJ) $(TRACEOBJ) $(DUMPSOBJ) 2150bd37d32Smrg SRCS2 = resize.c version.c xstrings.c 2160bd37d32Smrg OBJS2 = resize.o version.o xstrings.o 217d522f475Smrg SRCS = $(SRCS1) $(SRCS2) 218d522f475Smrg OBJS = $(OBJS1) $(OBJS2) 219d522f475Smrg PROGRAMS = ProgramTargetName(resize) ProgramTargetName(xterm) 220d522f475Smrg DEPLIBS1 = XkbClientDepLibs XawClientDepLibs $(XRFDEPLIBS) 221d522f475Smrg DEPLIBS2 = 222d522f475Smrg 223d522f475Smrg#ifndef TermcapLibrary 224d522f475Smrg#if SystemV && !defined(MacIIArchitecture) 225d522f475Smrg#if defined(CrayArchitecture) || \ 226d522f475Smrg (defined(HPArchitecture) && (OSMajorVersion < 10)) || \ 227d522f475Smrg defined(RsArchitecture) || \ 228d522f475Smrg defined(SCOArchitecture) || \ 229d522f475Smrg defined(USLArchitecture) 230d522f475Smrg#define TermcapLibrary -lcurses /* special cases of System V */ 231d522f475Smrg#else 232d522f475Smrg#define TermcapLibrary -ltermlib /* usually in here */ 233d522f475Smrg#endif 234d522f475Smrg#else 235d522f475Smrg#define TermcapLibrary -ltermcap /* bsd puts it here */ 236d522f475Smrg#endif 237d522f475Smrg#endif 238d522f475Smrg 239d522f475Smrg TERMCAPLIB = TermcapLibrary 240d522f475Smrg 241d522f475SmrgAllTarget($(PROGRAMS)) 242d522f475Smrg 2432e4f8982SmrgVTPARSE_H = VTparse.h VTparse.hin 2442e4f8982SmrgTEKPARSE_H = Tekparse.h Tekparse.hin 2452e4f8982Smrg 246f2e35a3aSmrgVTPARSE_C = VTparse.h VTparse.cin 247f2e35a3aSmrgTEKPARSE_C = Tekparse.h Tekparse.cin 248f2e35a3aSmrg 249f2e35a3aSmrg.SUFFIXES : .def .cin .hin 250f2e35a3aSmrg.def.cin : 251f2e35a3aSmrg awk '/^CASE_/{printf "{ %d, \"%s\" },\n", n++, $$1; }' < $< >$@ 2522e4f8982Smrg.def.hin : 2532e4f8982Smrg awk '/^CASE_/{printf "#define %s %d\n", $$1, n++}' < $< >$@ 2542e4f8982Smrg 255d522f475SmrgSpecialCObjectRule(main,$(_NOOP_),$(MAIN_DEFINES)) 256d522f475SmrgSpecialCObjectRule(menu,$(_NOOP_),$(MISC_DEFINES)) 2572e4f8982SmrgSpecialCObjectRule(misc,$(VTPARSE_H),$(MISC_DEFINES)) 2582e4f8982SmrgSpecialCObjectRule(VTPrsTbl,$(VTPARSE_H),$(MISC_DEFINES)) 2592e4f8982SmrgSpecialCObjectRule(charproc,$(VTPARSE_H),$(MISC_DEFINES)) 260d522f475SmrgSpecialCObjectRule(data,$(_NOOP_),$(MISC_DEFINES)) 2612e4f8982SmrgSpecialCObjectRule(TekPrsTbl,$(TEKPARSE_H),$(MISC_DEFINES)) 2622e4f8982SmrgSpecialCObjectRule(TekProc,$(TEKPARSE_H),$(MISC_DEFINES)) 263f2e35a3aSmrgSpecialCObjectRule(trace,$(VTPARSE_C) $(TEKPARSE_C),$(MISC_DEFINES)) 264d522f475Smrg 265d522f475Smrg#if InstallXtermSetUID 266d522f475SmrgSetUIDProgramTarget(xterm,$(OBJS1),$(DEPLIBS1),$(XRFLIBS) XkbClientLibs XawClientLibs,$(TERMCAPLIB) $(PTYLIB)) 267d522f475Smrg#else 268d522f475SmrgNormalProgramTarget(xterm,$(OBJS1),$(DEPLIBS1),$(XRFLIBS) XkbClientLibs XawClientLibs,$(TERMCAPLIB) $(UTMPLIB) $(PTYLIB)) 269d522f475Smrg#endif 270d522f475Smrg 2710bd37d32Smrg#if defined(OpenBSDArchitecture) || defined(MirBSDArchitecture) 2720bd37d32Smrg/* On OpenBSD xterm is now setgid utmp */ 2730bd37d32SmrgINSTUIDFLAGS= -m 2555 -g utmp 2740bd37d32Smrg#endif 2750bd37d32Smrg 276d522f475Smrg#if InstallXtermSetUID && defined(SunArchitecture) && HasSharedLibraries && (OSMajorVersion < 5) 277d522f475Smrg#if AlternateUsrLibDir 278d522f475Smrg#if ((OSMajorVersion == 4) && (OSMinorVersion >= 1)) 279d522f475SmrgLDOVERRIDE = -L$(DESTDIR)$(USRLIBDIR) 280d522f475Smrg#else 281d522f475Smrg#if HasGcc 282d522f475SmrgLDOVERRIDE = -static -L$(DESTDIR)$(USRLIBDIR) 283d522f475Smrg#else 284d522f475SmrgLDOVERRIDE = -Bstatic -L$(DESTDIR)$(USRLIBDIR) 285d522f475SmrgLDRESUME = -Bdynamic 286d522f475Smrg#endif 287d522f475Smrg#endif 288d522f475Smrg#endif 289d522f475Smrginstall:: 290d522f475Smrg MakeDir($(DESTDIR)$(BINDIR)) 291d522f475Smrg RemoveFile(ProgramTargetName(xterm.inst)) 292d522f475Smrg LinkRule(ProgramTargetName(xterm.inst),$(CDEBUGFLAGS) $(CCOPTIONS) 293d522f475Smrg $(EXTRA_LDOPTIONS) $(LOCAL_LDFLAGS),$(OBJS1),$(LDOVERRIDE) 294d522f475Smrg $(XRFLIBS) XawClientLibs $(LDRESUME) $(LDLIBS) $(TERMCAPLIB) 295d522f475Smrg $(PTYLIB)) 296d522f475Smrg $(INSTALL) -c $(INSTPGMFLAGS) $(INSTSETIDFLAGS) ProgramTargetName(xterm.inst) $(DESTDIR)$(BINDIR)/ProgramTargetName(xterm) 297d522f475Smrg RemoveFile(ProgramTargetName(xterm.inst)) 298d522f475Smrg#else 299d522f475SmrgInstallProgramWithFlags(xterm,$(BINDIR),$(INSTSETIDFLAGS)) 300d522f475Smrg#endif 301d522f475Smrg 302d522f475SmrgInstallNamedProg(uxterm,uxterm,$(BINDIR)) 303d522f475Smrg 304d522f475Smrg/* 305d522f475Smrg * Link with the termcap library if USE_TERMCAP is defined in resize.c 306d522f475Smrg */ 307d522f475Smrg#if defined(NTOArchitecture) || \ 308d522f475Smrg defined(LinuxArchitecture) || \ 309d522f475Smrg defined(OpenBSDArchitecture) || \ 310d522f475Smrg defined(SGIArchitecture) || \ 311d522f475Smrg defined(SunArchitecture) 312d522f475SmrgNormalProgramTarget(resize,$(OBJS2),$(DEPLIBS2),NullParameter,NullParameter) 313d522f475Smrg#else 314d522f475SmrgNormalProgramTarget(resize,$(OBJS2),$(DEPLIBS2),NullParameter,$(TERMCAPLIB)) 315d522f475Smrg#endif 316d522f475Smrg 317d522f475SmrgInstallProgramWithFlags(resize,$(BINDIR),NullParameter) 318d522f475Smrg 319d522f475Smrg/* 320d522f475Smrg * termcap is a special name that does not install correctly with 321d522f475Smrg * InstallNamedNonExec() 322d522f475Smrg */ 323d522f475Smrginstall:: 324d522f475Smrg MakeDir($(DESTDIR)$(LIBDIR)/etc) 325d522f475Smrg $(INSTALL) $(INSTALLFLAGS) $(INSTDATFLAGS) termcap \ 326d522f475Smrg $(DESTDIR)$(LIBDIR)/etc/xterm.termcap 327d522f475SmrgInstallNamedNonExec(terminfo,xterm.terminfo,$(LIBDIR)/etc) 328d522f475Smrg 329d522f475SmrgInstallAppDefaults(XTerm) 330d522f475SmrgInstallAppDefaults(UXTerm) 331d522f475SmrgInstallAppDefaultsLong(XTerm-col,XTerm-color) 332d522f475SmrgInstallManPage(xterm,$(MANDIR)) 333d522f475SmrgInstallManPage(resize,$(MANDIR)) 3342e4f8982Smrg 3352e4f8982Smrgcleandir:: 336f2e35a3aSmrg $(RM) *parse.hin *parse.cin 3372e4f8982Smrg 338d522f475SmrgDependTarget() 339