]> git.sesse.net Git - rdpsrv/blob - Xserver/config/cf/os2.rules
998ff4885a473b8d75861ec93c8eae1b4d09b7eb
[rdpsrv] / Xserver / config / cf / os2.rules
1 XCOMM $XConsortium: os2.rules /main/1 1996/10/31 14:47:27 kaleb $
2
3
4
5 XCOMM platform:  $XFree86: xc/config/cf/os2.rules,v 3.15 1997/01/05 11:49:39 dawes Exp $
6
7 .SUFFIXES: .Osuf .c .CCsuf
8
9 .c.Osuf:
10         $(CC) $(CFLAGS) -c $*.c
11
12 #if HasCplusplus
13 .CCsuf.Osuf:
14         $(CXX) $(CFLAGS) -c $*.CCsuf
15 #endif
16
17 #ifndef UseInstalled
18 #define ImakeHelper \imakesvc
19 #define IMmode n
20 #define ImakeIndir \indir
21 #define ImakeSubCmdHelper \imake -I$(IRULESRC) $(IMAKE_DEFINES)
22 #define Fontc \bdftopcf
23 #define MkFontDir \mkfontdir
24 #define XkbComp \xkbcomp
25 #else
26 #define ImakeHelper imakesvc
27 #define IMmode u
28 #define ImakeIndir indir
29 #define ImakeSubCmdHelper $(IMAKE_CMD)
30 #define Fontc bdftopcf
31 #define MkFontDir mkfontdir
32 #define XkbComp xkbcomp
33 #endif
34
35 #define echo ImakeHelper 8 
36 #define RunProgram(progvar,options) $(subst /,\,$(progvar)) options
37 #define RemoveFile(file) $(RM) file
38 #define RemoveFiles(files) $(RM) files
39 #define NeedLdLibraryPathForXkbComp NO
40
41 #define LibObjCompile(dir,options) RemoveFiles($@ dir\$@)               @@\
42         $(CC) $(CCOPTIONS) $(ALLDEFINES) options -c  $*.c               @@\
43         $(MV) $@ dir\$@
44
45 #define MakeDir(dir) $(MKDIRHIER) dir
46
47 #define BuildIncludesTop(srclist)                                       @@\
48 includes:: srclist                                                      @@\
49         MakeDir($(BUILDINCDIR))                                         @@\
50         @for %i in (srclist) do ImakeHelper 2 $(BUILDINCDIR) $(BUILDINCTOP) $(CURRENT_DIR) %i
51
52 #define ProgramTargetHelper(program,srcs,objs,deplib,locallib,syslib)   @@\
53 ProgramTargetName(program): $(objs)                                     @@\
54         RemoveTargetProgram($@)                                         @@\
55         LinkRule($@,$(LDOPTIONS),$(objs),locallib $(LDLIBS) syslib)     @@\
56                                                                         @@\
57 InstallProgram(program,$(BINDIR))                                       @@\
58 InstallManPage(program,$(MANDIR))
59
60 #if 0
61 #define ProgramTargetHelperNoMan(program,srcs,objs,deplib,locallib,syslib)      @@\
62 ProgramTargetName(program): $(objs)                                     @@\
63         RemoveTargetProgram($@)                                         @@\
64         LinkRule($@,$(LDOPTIONS),$(objs),locallib $(LDLIBS) syslib)     @@\
65                                                                         @@\
66 InstallProgram(program,$(BINDIR))
67 #endif
68
69
70 #define BuildIncludes(srclist,dstsubdir,dstupdir)                       @@\
71 includes:: srclist                                                      @@\
72         MakeDir($(BUILDINCDIR)/dstsubdir)                               @@\
73         @for %i in (srclist) do ImakeHelper 3 $(BUILDINCTOP)/dstupdir/$(CURRENT_DIR) $(BUILDINCDIR)/dstsubdir %i
74
75 #define LinkFileList(step,list,dir,sub)                                 @@\
76 step::  list                                                            @@\
77         @for %i in (list) do ImakeHelper 3 sub dir %i
78
79 #define ComplexProgramTarget(program)                                   @@\
80 PROGRAM = ProgramTargetName(program)                                    @@\
81                                                                         @@\
82 AllTarget(ProgramTargetName(program))                                   @@\
83                                                                         @@\
84 ProgramTargetHelper(program,SRCS,OBJS,DEPLIBS,$(LOCAL_LIBRARIES),NullParameter) @@\
85                                                                         @@\
86 DependTarget()                                                          @@\
87 LintTarget()                                                            @@\
88                                                                         @@\
89 clean::                                                                 @@\
90         RemoveFile($(PROGRAM))
91
92 #define ComplexProgramTarget_1(program,locallib,syslib)                 @@\
93 OBJS = $(OBJS1) $(OBJS2) $(OBJS3)                                       @@\
94 SRCS = $(SRCS1) $(SRCS2) $(SRCS3)                                       @@\
95 PROGRAM1 = ProgramTargetName(program)                                   @@\
96                                                                         @@\
97 AllTarget($(PROGRAM1) $(PROGRAM2) $(PROGRAM3))                          @@\
98                                                                         @@\
99 ProgramTargetHelper(program,SRCS1,OBJS1,DEPLIBS1,locallib,syslib)       @@\
100                                                                         @@\
101 DependTarget()                                                          @@\
102 LintTarget()                                                            @@\
103                                                                         @@\
104 clean::                                                                 @@\
105         RemoveFiles($(PROGRAMS))
106
107 #define ComplexProgramTarget_2(program,locallib,syslib)                 @@\
108 PROGRAM2 = ProgramTargetName(program)                                   @@\
109                                                                         @@\
110 ProgramTargetHelper(program,SRCS2,OBJS2,DEPLIBS2,locallib,syslib)
111
112 #define ComplexProgramTarget_3(program,locallib,syslib)                 @@\
113 PROGRAM3 = ProgramTargetName(program)                                   @@\
114                                                                         @@\
115 ProgramTargetHelper(program,SRCS3,OBJS3,DEPLIBS3,locallib,syslib)
116
117 #define NormalProgramTarget(program,objects,deplibs,locallibs,syslibs)  @@\
118 ProgramTargetName(program): objects                                     @@\
119         RemoveTargetProgram($@)                                         @@\
120         LinkRule($@,$(LDOPTIONS),objects,locallibs $(LDLIBS) syslibs)   @@\
121                                                                         @@\
122 clean::                                                                 @@\
123         RemoveFile(ProgramTargetName(program))
124
125 #if 0
126 #define ComplexProgramTargetNoMan(program)                              @@\
127 PROGRAM = ProgramTargetName(program)                                    @@\
128                                                                         @@\
129 AllTarget(ProgramTargetName(program))                                   @@\
130                                                                         @@\
131 ProgramTargetHelperNoMan(program,SRCS,OBJS,DEPLIBS,$(LOCAL_LIBRARIES),NullParameter) @@\
132                                                                         @@\
133 DependTarget()                                                          @@\
134 LintTarget()                                                            @@\
135                                                                         @@\
136 clean::                                                                 @@\
137         RemoveFile($(PROGRAM))
138 #endif
139
140 #define MoveToBakFile(file) ImakeHelper 5 file
141
142 #define RMoveToBakFile(file) ImakeHelper 6 file
143
144 #define InstallMultipleDestFlags(step,list,dest,flags)                  @@\
145 step:: list                                                             @@\
146         MakeDir($(DESTDIR)dest)                                                 @@\
147         $(INSTALL) $(INSTALLFLAGS) flags list $(subst /,\,$(DESTDIR)dest)
148
149 #define CleanTarget()                                                   @@\
150 clean::                                                                 @@\
151         RemoveFiles(FilesToClean ExtraFilesToClean)
152
153 #define LinkSourceFile(src,dir)                                         @@\
154 src:                                                                    @@\
155         ImakeHelper 3 dir . src                                         @@\
156                                                                         @@\
157 includes:: src                                                          @@\
158                                                                         @@\
159 depends:: src                                                           @@\
160                                                                         @@\
161 clean::                                                                 @@\
162         RemoveFile(src)
163
164 #define LinkFile(tofile,fromfile)                                       @@\
165 tofile:: fromfile                                                       @@\
166         ImakeHelper 7 fromfile tofile                                   @@\
167                                                                         @@\
168 includes:: tofile                                                       @@\
169                                                                         @@\
170 depend:: tofile                                                         @@\
171                                                                         @@\
172 clean::                                                                 @@\
173         RemoveFile(tofile)
174
175 #ifndef UseInstalled
176 #define ImakeDependency(target)                                         @@\
177 target:: ProgramTargetName($(IMAKE))                                    @@\
178                                                                         @@\
179 ProgramTargetName($(IMAKE)):                                            @@\
180         @ImakeIndir $(IMAKESRC) if exist Makefile $(MAKE) SHELL= MAKE=x11make all               @@\
181         @ImakeIndir $(IMAKESRC) if not exist Makefile $(MAKE) SHELL= MAKE=x11make -f Makefile.ini BOOTSTRAPCFLAGS="$(BOOTSTRAPCFLAGS)"
182 #endif
183
184 #ifndef UseInstalled
185 #define DependDependency()                                              @@\
186 depend:: ProgramTargetName($(DEPEND))                                   @@\
187                                                                         @@\
188 ProgramTargetName($(DEPEND)):                                           @@\
189         @ImakeIndir $(DEPENDSRC) $(MAKE) SHELL= MAKE=x11make 
190 #endif
191
192 #define DependTarget()                                                  @@\
193 DependDependency()                                                      @@\
194                                                                         @@\
195 depend::                                                                @@\
196         $(subst /,\,$(DEPEND)) $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- $(SRCS)
197
198 #define DependTarget3(srcs1,srcs2,srcs3)                                @@\
199 DependDependency()                                                      @@\
200
201 /* Currently this stuff doesn't work correctly for libX11
202 depend::                                                                @@\
203         $(subst /,\,$(DEPEND)) $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs1 @@\
204         $(subst /,\,$(DEPEND)) $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs2 @@\
205         $(subst /,\,$(DEPEND)) $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs3
206 */
207
208 #define ForceSubdirs(dirs)                                              @@\
209 dirs: DONE                                                              @@\
210                                                                         @@\
211 DONE:                                                                   @@\
212         @for %i in (dirs) do ImakeIndir %i $(MAKE) SHELL= MAKE=x11make $(MFLAGS) PassCDebugFlags all @@\
213         touch DONE                                                      @@\
214                                                                         @@\
215 clean::                                                                 @@\
216         RemoveFile(DONE)
217
218 #define MakeMakeSubdirs(dirs,target)                                    @@\
219 MMSDIRS = dirs                                                          @@\
220 MMSTOP = $(TOP)                                                         @@\
221 MMSRULES = $(IRULESRC)                                                  @@\
222 MMSCUR = $(CURRENT_DIR)                                                 @@\
223 target::                                                                @@\
224         @for %i in ($(subst /,\,$(MMSDIRS))) do ImakeHelper 1 IMmode %i $(MMSRULES) $(MMSTOP) $(MMSCUR)
225
226 #define NamedTargetSubdirs(name,dirs,verb,flags,subname)                @@\
227 Concat(SUBST,name) = dirs                                               @@\
228 name::                                                                  @@\
229         @for %i in ($(subst /,\,$(Concat(SUBST,name)))) do ImakeIndir %i $(MAKE) SHELL= MAKE=x11make $(MFLAGS) flags subname
230
231 #define InstallNamedTarget(step,srcname,flags,dest,dstname)             @@\
232 step:: srcname                                                          @@\
233         MakeDir($(DESTDIR)dest)                                         @@\
234         $(INSTALL) $(INSTALLFLAGS) flags srcname $(subst \,/,$(DESTDIR)dest)/dstname
235
236 #define BuildMakefileTarget(notused,imakeflags)                         @@\
237 ImakeDependency(Makefile)                                               @@\
238                                                                         @@\
239 Makefile::                                                              @@\
240         RMoveToBakFile(Makefile)                                        @@\
241         ImakeSubCmdHelper -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR) imakeflags
242
243 #define AssembleObject(flags) $(RM) $@                                  @@\
244         $(CPP) AsmDefines $(DEFINES) $(INCLUDES) flags $*.s | \         @@\
245             grep -v '^\#' > _tmp_.s                                     @@\
246         $(CC) $(CFLAGS) -o $*.Osuf -c _tmp_.s                           @@\
247         $(RM) _tmp_.s
248
249 #define NormalAsmObjectRule()                                           @@\
250 .s.Osuf:                                                                @@\
251         AssembleObject($(_NOOP_))
252
253 #define ObjectMapIncludeFromSpecialSource(dst,src,flags)                @@\
254 dst.c: src.c                                                            @@\
255         ImakeHelper 9 $@ mfbmap.h $?                                    @@\
256                                                                         @@\
257 SpecialCObjectRule(dst,NullParameter,flags)                             @@\
258                                                                         @@\
259 depend:: dst.c                                                          @@\
260                                                                         @@\
261 clean::                                                                 @@\
262         RemoveFile(dst.c)
263
264 #define FontBaseObj(basename)basename.pcf
265 /*
266  * UncompressedFontTarget
267  */
268 #define UncompressedFontTarget(basename)                                @@\
269 FontBaseObj(basename):  FontSrc(basename)                               @@\
270         Fontc $(FONTCFLAGS) $? -o $@
271
272 /*
273  * CompressedFontTarget
274  */
275 #ifndef CompressedFontTarget
276 #if GzipFontCompression
277 #define CompressedFontTarget(basename)                                  @@\
278 FontBaseObj(basename).gz:  FontSrc(basename)                            @@\
279         Fontc $(FONTCFLAGS) $? | $(GZIPCMD) > $@
280 #else
281 #define CompressedFontTarget(basename)                                  @@\
282 FontBaseObj(basename).Z:  FontSrc(basename)                             @@\
283         Fontc $(FONTCFLAGS) $? | $(COMPRESS) > $@
284 #endif
285 #endif
286
287 /*
288  * MakeFontsDir - generate rules to build fonts.dir database.
289  */
290 #define MakeFontsDir(deplist)                                           @@\
291 all:: fonts.dir                                                         @@\
292                                                                         @@\
293 fonts.dir:  deplist                                                     @@\
294         MkFontDir .                                                     @@\
295                                                                         @@\
296 clean::                                                                 @@\
297         RemoveFile(fonts.dir)
298
299 /* OS/2 scripts are based on REXX
300  * it is just the SHELL variable that is messed up that forces me to
301  * modify this rule
302  */
303 #define ConfigTargetLong(target,dep,script,args,extra)                  @@\
304 all:: Configure                                                         @@\
305                                                                         @@\
306 Configure:: target.o                                                    @@\
307                                                                         @@\
308 target.c: script dep                                                    @@\
309         $(MAKE) SHELL= MAKE=x11make $(MFLAGS) extra Concat(Build,target)                        @@\
310                                                                         @@\
311 Concat(Build,target):                                                   @@\
312         $(RM) target.c                                                  @@\
313         script args                                                     @@\
314                                                                         @@\
315 clean::                                                                 @@\
316         $(RM) target.c
317
318 #ifndef ServerTargetWithFlags
319 #define ServerTargetWithFlags(server,subdirs,objects,libs,syslibs,flags) @@\
320 AllTarget(ProgramTargetName(server))                                    @@\
321 ProgramTargetName(server): subdirs objects libs                         @@\
322         MoveToBakFile($@)                                               @@\
323         LinkRule($@,$(LDOPTIONS),objects,libs $(LDLIBS) syslibs)        @@\
324         emxbind -a ProgramTargetName(server) -h255                      @@\
325                                                                         @@\
326 Concat(load,server):                                                    @@\
327         MoveToBakFile(ProgramTargetName(server))                        @@\
328         LinkRule(ProgramTargetName(server),$(LDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\
329                                                                         @@\
330 loadX:: Concat(load,server)                                             @@\
331                                                                         @@\
332 SentinelProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\
333 SentinelLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\
334 PurifyProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\
335 PurifyLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\
336 ProofProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\
337 ProofLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\
338                                                                         @@\
339 InstallProgramWithFlags(server,$(BINDIR),flags)                         @@\
340                                                                         @@\
341 clean::                                                                 @@\
342         RemoveFile(ProgramTargetName(server))
343 #endif /* ServerTargetWithFlags */
344
345 /*
346  * ServerTarget - rules to compile, link, and relink a normal server
347  * Need a .def file for OS/2
348  */
349 #ifndef ServerTarget
350 #define ServerTarget(server,subdirs,objects,libs,syslibs)               @@\
351 ServerTargetWithFlags(server,subdirs,objects,libs,syslibs server.def,$(_NOOP_)) @@\
352                                                                         @@\
353 ProgramTargetName(server): server.def
354 #endif /* ServerTarget */
355
356 /*
357  * ToolkitMakeStrings generates a string-table, i.e., a C source
358  * file and the matching header(s), e.g., Xt's StringDefs.c, StringDefs.h,
359  * and Shell.h files; or Motif's XmStrDefs.c and XmStrDefs.h files.
360  *
361  * The 'files' argument is the list of files that will be produced by
362  * this rule, e.g., for Xt they would be "Shell.h StringDefs.c StringDefs.h"
363  * and for Motif they would be "XmStrDefs.c XmStrDefs.h".
364  *
365  * The 'source' argument is the string-list file to be parsed, e.g., in
366  * Xt that would be "util/string.list".  For Motif 2.0 it would be
367  * "../../tools/makestr/xmstring.list", and for Motif-CDE1 it would be
368  * "util/xmstring.list".
369  *
370  * The 'options' argument is passed by the library's Imakefile, see the
371  * Xt Imakefile for an example.  Typically this would be nothing, -intelabi,
372  * or -sparcabi; there are other choices, but these are typical.
373  *
374  * The 'depends' argument names additional files the target files
375  * depend on.  It should name the #ctmpl and #htmpl files from the
376  * 'source' file.
377  *
378  * The 'dest' argument is the C source output file.  For Xt this should
379  * be "StringDefs.c", and for all versions of Motif it would be "XmStrDefs.c"
380  *
381  * Headers are generated and named according to data in the 'source'
382  * file.
383  */
384
385 #ifndef ToolkitMakeStrings
386 #define ToolkitMakeStrings(files,source,options,depends,dest)           @@\
387 MAKESTRS = $(CONFIGSRC)/util/makestrs                                   @@\
388 MAKESTRS1 = /makestrs.exe                                               @@\
389                                                                         @@\
390 ProgramTargetName($(MAKESTRS)): $(MAKESTRS).c                           @@\
391         ImakeIndir $(CONFIGSRC)/util make SHELL= ProgramTargetName(makestrs)    @@\
392         ImakeHelper 7 $(CONFIGSRC)/util/makestrs.exe /                  @@\
393                                                                         @@\
394 files: ProgramTargetName($(MAKESTRS)) source depends                    @@\
395         RemoveFiles(files)                                              @@\
396         RunProgram(MAKESTRS1,options < source > dest)                   @@\
397                                                                         @@\
398 AllTarget(files)                                                        @@\
399                                                                         @@\
400 includes:: files                                                        @@\
401                                                                         @@\
402 depend:: files                                                          @@\
403                                                                         @@\
404 clean::                                                                 @@\
405         RemoveFiles(files)
406
407 #endif /* ToolkitMakeStrings */
408
409 /*#define CppSedMagic SedMagic*/
410 #define CppSedMagic sed -e '/^#  *[0-9][0-9]*  *.*$$/d' -e 's/^XCOMM/#/g' -e 's/^XCOMM[^a-zA-Z0-9_]/#/g'
411
412 #ifndef InstallNamedTargetNoClobber
413 #define InstallNamedTargetNoClobber(step,srcname,flags,dest,dstname)    @@\
414 step:: srcname                                                          @@\
415         MakeDir($(DESTDIR)dest)                                         @@\
416         if not exist $(subst /,\,$(DESTDIR)dest)\dstname $(INSTALL) $(INSTALLFLAGS) flags srcname $(DESTDIR)dest/dstname
417
418 #endif /* InstallNamedTargetNoClobber */
419
420 #if CompressManPages
421
422 #ifndef InstallManPageLong
423 #define InstallManPageLong(file,destdir,dest)                           @@\
424 install.man:: file.man                                                  @@\
425         MakeDir($(DESTDIR)destdir)                                      @@\
426         ImakeHelper 12 file $(DESTDIR)destdir dest
427 #endif
428
429 #ifndef InstallManPageAliases
430 #define InstallManPageAliases(file,destdir,aliases)                     @@\
431 install.man::                                                           @@\
432         MakeDir($(DESTDIR)destdir)                                      @@\
433         for %i in (aliases) do $(INSTALL) $(DESTDIR)destdir/file.gz $(DESTDIR)destdir/%i.gz
434 #endif
435
436 #ifndef InstallGenManPageLong
437 #define InstallGenManPageLong(file,destdir,dest,suffix)                 @@\
438 install.man:: file.man                                                  @@\
439         MakeDir($(DESTDIR)destdir)                                      @@\
440         ImakeHelper 12 file $(DESTDIR)destdir dest
441 #endif
442
443 #ifndef InstallMultipleMan
444 #define InstallMultipleMan(list,dest)                                   @@\
445 install.man:: list                                                      @@\
446         MakeDir($(DESTDIR)dest)                                         @@\
447         for %i in (list) do ImakeHelper 12 %i $(DESTDIR)dest %i
448 #endif
449
450 #else /* CompressManPages */
451
452 #ifndef InstallManPageLong
453 #define InstallManPageLong(file,destdir,dest)                           @@\
454 install.man:: file.man                                                  @@\
455         MakeDir($(DESTDIR)destdir)                                      @@\
456         ImakeHelper 10 file $(DESTDIR)destdir dest $(MANSUFFIX)
457 #endif
458
459 #ifndef InstallManPageAliases
460 #define InstallManPageAliases(file,destdir,aliases)                     @@\
461 install.man::                                                           @@\
462         MakeDir($(DESTDIR)destdir)                                      @@\
463         for %i in (aliases) do $(INSTALL) $(DESTDIR)destdir/file.$(MANSUFFIX) $(DESTDIR)destdir/%i.$(MANSUFFIX) 
464 #endif
465
466 #ifndef InstallGenManPageLong
467 #define InstallGenManPageLong(file,destdir,dest,suffix)                 @@\
468 install.man:: file.man                                                  @@\
469         MakeDir($(DESTDIR)destdir)                                      @@\
470         ImakeHelper 10 file $(DESTDIR)destdir dest suffix
471 #endif
472
473 #ifndef InstallMultipleMan
474 #define InstallMultipleMan(list,dest)                                   @@\
475 install.man:: list                                                      @@\
476         MakeDir($(DESTDIR)dest)                                         @@\
477         for %i in (list) do ImakeHelper 10 %i $(DESTDIR)dest %i $(MANSUFFIX)
478 #endif
479
480 #endif
481
482 #ifndef NormalLintTarget
483 #define NormalLintTarget(srclist)
484 #endif /* NormalLintTarget */
485
486 #ifndef MakeDirectories
487 #define MakeDirectories(step,dirs)                                      @@\
488 step::                                                                  @@\
489         -for %i in (dirs) do $(MKDIRHIER) $(DESTDIR)%i
490 #endif /* MakeDirectories */
491
492 #ifndef YaccFile
493 #define YaccFile(file,flags)                                            @@\
494 depend:: file.c                                                         @@\
495                                                                         @@\
496 file.h file.c: file.y                                                   @@\
497         $(YACC) flags file.y                                            @@\
498         $(MV) y.tab.c file.c                                            @@\
499         @if exist y.tab.h $(MV) y.tab.h file.h                          @@\
500                                                                         @@\
501 clean::                                                                 @@\
502         RemoveFiles(y.tab.c y.tab.h file.h file.c)
503 #endif /* YaccFile */
504
505 #ifndef StaticLibrary
506 #define StaticLibrary(libpath,libname) Concat4(libpath,/,libname,_s.a)
507 #endif
508
509 #ifndef MakeXkbDir
510 #define MakeXkbDir(basedir,subdir)                                      @@\
511 all::   Concat(subdir,.dir)                                             @@\
512                                                                         @@\
513 Concat(subdir,.dir):                                                    @@\
514         $(XKBCOMPCMD) -lfhlpR -o Concat(subdir,.dir) *                  @@\
515                                                                         @@\
516 InstallTarget(install,Concat(subdir,.dir),$(INSTDATFLAGS),basedir)
517 #endif
518
519 /* This is to replace an ugly hack in /xc/nls/XLC_LOCALE */
520 /* the corresponding Imake.rules rule would be:
521    define LinkFileSpecial(gotodir,tofile,fromfile)      @@\
522         @MakeFlagsToShellFlags(i,set +e); \             @@\
523         cd dir && (set -x; RemoveFile(tofile); $(LN) fromfile tofile)
524  */
525 #ifndef LinkFileSpecial
526 #define LinkFileSpecial(gotodir,tofile,fromfile)                        @@\
527         ImakeHelper 13 gotodir fromfile tofile
528 #endif
529
530 #ifndef LinkBuildBinary
531 #define LinkBuildBinary(binary)                                         @@\
532 all:: $(BUILDBINDIR)/binary binary                                      @@\
533                                                                         @@\
534 $(BUILDBINDIR)/binary: binary                                           @@\
535         ImakeHelper 13 $(BUILDBINDIR) $(BUILDBINTOP)/$(CURRENT_DIR)/binary binary @@\
536         $(CP) binary /
537 #endif /* LinkBuildBinary */