1 XCOMM platform: $TOG: Win32.rules /main/51 1997/12/02 14:48:29 kaleb $
3 #define HasSharedLibraries YES
4 #define NeedLibInsideFlag YES
5 #define SharedLibXaw NO
6 #define SharedLibXmu NO
8 #define SharedDataSeparation NO
9 #define SharedCodeDef /**/
10 #define SharedLibraryDef /**/
11 #define ShLibIncludeFile <WinLib.tmpl>
12 #define SharedLibraryLoadFlags -dll
13 #define PositionIndependentCFlags /**/
22 $(CXX) -c $*.CCsuf @<<
27 #define ProgramTargetName(target) target.exe
29 #define RunProgram(progvar,options) $(progvar:/=\) options
31 #define RemoveFile(file) if exist file $(RM) file
33 #define RemoveFiles(files) @$(MAKE) $(MFLAGS) -f << @@\
37 !for %%i in ( Avoid.Error $$** ) do if exist %%i $(RM) %%i @@\
39 Avoid.Error files: @@\
42 #define MakeDir(dir) -$(MKDIRHIER) dir
44 #define ObjectCompile(options) RemoveFile($@) @@\
49 #define LibObjCompile(dir,options) RemoveFiles($@ dir\$@) @@\
51 $(CCOPTIONS) $(ALLDEFINES) options @@\
55 #define BuildIncludesTop(srclist,dstsubdir,dstupdir) @@\
56 includes:: srclist @@\
57 MakeDir($(BUILDINCDIR:/=\)) @@\
58 @$(MAKE) $(MFLAGS) -f << @@\
62 cd $(BUILDINCDIR:/=\) @@\
64 !$(LN) $(BUILDINCTOP:/=\)\$(CURRENT_DIR:/=\)\$$** . @@\
66 Avoid.Error srclist: @@\
69 #define BuildIncludes(srclist,dstsubdir,dstupdir) @@\
70 XVARdef0 = $(BUILDINCDIR)/dstsubdir @@\
71 XVARdef1 = $(BUILDINCTOP)/dstupdir/$(CURRENT_DIR) @@\
73 includes:: srclist @@\
74 MakeDir($(XVARuse0:/=\)) @@\
75 @$(MAKE) -A $(MFLAGS) -f << @@\
79 cd $(XVARuse0:/=\) @@\
81 !$(LN) $(XVARuse1:/=\)\$$** . @@\
83 Avoid.Error srclist: @@\
86 #define LinkFileList(step,list,dir,sub) @@\
91 step:: $(XVARuse2:/=\) @@\
92 cd $(XVARuse0:/=\) @@\
94 !$(LN) $(XVARuse1:/=\)\\$** .
96 #define LinkRule(program,options,objects,libraries) \
97 $(CCLINK) Concat(-Fe,program) options objects libraries $(EXTRA_LOAD_FLAGS)
99 #define NormalProgramTarget(program,objects,deplibs,locallibs,syslibs) @@\
100 XVARdef0 = objects @@\
102 ProgramTargetName(program): $(XVARuse0:.o=.obj) deplibs @@\
103 RemoveTargetProgram($@) @@\
104 LinkRule($@,$(LDOPTIONS),$(XVARuse0:.o=.obj),locallibs $(LDLIBS) syslibs) @@\
107 RemoveFile(ProgramTargetName(program))
109 #define ProgramTargetHelper(program,srcs,objs,deplib,locallib,syslib) @@\
110 ProgramTargetName(program): $(objs:.o=.obj) $(deplib) @@\
111 RemoveTargetProgram($@) @@\
112 LinkRule($@,$(LDOPTIONS),$(objs:.o=.obj),locallib $(LDLIBS) syslib) @@\
114 InstallProgram(program,$(BINDIR)) @@\
115 InstallManPage(program,$(MANDIR))
117 #define ComplexProgramTarget(program) @@\
118 PROGRAM = ProgramTargetName(program) @@\
120 AllTarget(ProgramTargetName(program)) @@\
122 ProgramTargetHelper(program,SRCS,OBJS,DEPLIBS,$(LOCAL_LIBRARIES),NullParameter) @@\
128 RemoveFile($(PROGRAM))
130 #define ComplexProgramTarget_1(program,locallib,syslib) @@\
131 OBJS = $(OBJS1) $(OBJS2) $(OBJS3) @@\
132 SRCS = $(SRCS1) $(SRCS2) $(SRCS3) @@\
133 PROGRAM1 = ProgramTargetName(program) @@\
135 AllTarget($(PROGRAM1) $(PROGRAM2) $(PROGRAM3)) @@\
137 ProgramTargetHelper(program,SRCS1,OBJS1,DEPLIBS1,locallib,syslib) @@\
143 for %%i in ($(PROGRAMS)) do $(RM) ProgramTargetName(%%i)
145 #define ComplexProgramTarget_2(program,locallib,syslib) @@\
146 PROGRAM2 = ProgramTargetName(program) @@\
148 ProgramTargetHelper(program,SRCS2,OBJS2,DEPLIBS2,locallib,syslib)
150 #define ComplexProgramTarget_3(program,locallib,syslib) @@\
151 PROGRAM3 = ProgramTargetName(program) @@\
153 ProgramTargetHelper(program,SRCS3,OBJS3,DEPLIBS3,locallib,syslib)
155 #define MoveToBakFile(file) -@if exist file $(MV) file file.bak
157 #define RMoveToBakFile(file) -RemoveFile(file.bak) @@\
158 -@if exist file $(MV) file file.bak
160 #define InstallMultipleDestFlags(step,list,dest,flags) @@\
161 XVARdef0 = $(DESTDIR)dest @@\
164 MakeDir($(XVARuse0:/=\)) @@\
165 !$(INSTALL) $(INSTALLFLAGS) flags $** $(XVARuse0:/=\)
167 #define CleanTarget() @@\
169 RemoveFiles(FilesToClean ExtraFilesToClean)
171 #define LibraryTargetName(libname)libname.lib
173 #define LibraryTargetNameSuffix(libname,suffix)Concat(libname,suffix.lib)
175 #define MakeLibrary(libname,objlist) $(AR) @<< @@\
176 -out:libname objlist @@\
179 #define LinkSourceFile(src,dir) @@\
180 XVARdef0 = dir/src @@\
182 src: $(XVARuse0:/=\) @@\
193 #define LinkFile(tofile,fromfile) @@\
194 XVARdef0 = fromfile @@\
195 tofile:: $(XVARuse0:/=\) @@\
199 includes:: tofile @@\
207 #define NormalLibraryTarget(libname,objlist) @@\
208 AllTarget(LibraryTargetName(libname)) @@\
210 XVARdef0 = objlist @@\
212 LibraryTargetName(libname): $(XVARuse0:.o=.obj) $(EXTRALIBRARYDEPS) @@\
214 MakeLibrary($@,$(XVARuse0:.o=.obj)) @@\
217 #define NormalLibraryTarget2(libname,objlist1,objlist2) @@\
218 NormalLibraryTarget(libname,objlist1 objlist2)
220 #define NormalLibraryTarget3(libname,objlist1,objlist2,objlist3) @@\
221 NormalLibraryTarget(libname,objlist1 objlist2 objlist3)
223 #define NormalDepLibraryTarget(libname,deplist,objlist) @@\
224 AllTarget(LibraryTargetName(libname)) @@\
226 XVARdef0 = deplist @@\
227 XVARdef1 = objlist @@\
228 XVARdef2 = $(XVARuse1:/=\) @@\
230 LibraryTargetName(libname): $(XVARuse0:/=\) $(EXTRALIBRARYDEPS) @@\
232 MakeLibrary($@,$(XVARuse2:.o=.obj)) @@\
235 #define ProfiledLibraryTarget(libname,objlist) @@\
236 AllTarget(LibraryTargetNameSuffix(libname,_p)) @@\
238 XVARdef0 = objlist @@\
240 LibraryTargetNameSuffix(libname,_p): $(XVARuse0:.o=.obj) $(EXTRALIBRARYDEPS) @@\
243 MakeLibrary(..\$@,$(XVARuse0:.o=.obj)) @@\
246 #define DebuggedLibraryTarget(libname,objlist) @@\
247 AllTarget(LibraryTargetNameSuffix(libname,_d)) @@\
249 XVARdef0 = objlist @@\
251 LibraryTargetNameSuffix(libname,_d): $(XVARuse0:.o=.obj) $(EXTRALIBRARYDEPS) @@\
254 MakeLibrary(..\$@,$(XVARuse0:.o=.obj)) @@\
258 #define ImakeDependency(target) @@\
259 target:: ProgramTargetName($(IMAKE)) @@\
261 ProgramTargetName($(IMAKE)): @@\
263 cd $(IMAKESRC:/=\) @@\
264 if exist Makefile $(MAKE) all @@\
265 if not exist Makefile $(MAKE) -f Makefile.ini BOOTSTRAPCFLAGS="$(BOOTSTRAPCFLAGS)" @@\
270 #define DependDependency() @@\
271 depend:: ProgramTargetName($(DEPEND)) @@\
273 ProgramTargetName($(DEPEND)): @@\
275 cd $(DEPENDSRC:/=\) @@\
280 #define DependTarget() @@\
281 DependDependency() @@\
284 $(DEPEND:/=\) @<< @@\
285 $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- $(SRCS) @@\
288 #define DependTarget3(srcs1,srcs2,srcs3) @@\
289 DependDependency() @@\
292 $(DEPEND:/=\) @<< @@\
293 $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs1 srcs2 srcs3 @@\
296 #define ForceSubdirs(dirs) @@\
297 Avoid.Error dirs: FRC @@\
299 @echo making all in $(CURRENT_DIR)/$@... @@\
300 $(MAKE) $(MFLAGS) PassCDebugFlags all @@\
305 #define MakeMakeSubdirs(dirs,target) @@\
310 @$(MAKE) -A $(MFLAGS) -f << @@\
313 all: $(XVARuse0:/=\) @@\
315 Avoid.Error $(XVARuse0:/=\): @@\
317 RMoveToBakFile(Makefile) @@\
318 ImakeSubCmdHelper -DTOPDIR=../$(TOP) -DCURDIR=$(CURRENT_DIR)/$(XVARuse1)@ @@\
319 $(MAKE) $(MFLAGS) Makefiles @@\
324 # define ImakeSubCmdHelper $(IMAKE_CMD)
326 # define ImakeSubCmdHelper ..\$(IMAKE) -I../$(IRULESRC) $(IMAKE_DEFINES)
329 #define NamedTargetSubdirs(name,dirs,verb,flags,subname) @@\
334 @$(MAKE) -A $(MFLAGS) -f << @@\
337 all: $(XVARuse0:/=\) @@\
339 Avoid.Error $(XVARuse0:/=\): @@\
341 @echo verb in $(CURRENT_DIR)/$(XVARuse1)@... @@\
342 $(MAKE) $(MFLAGS) flags subname @@\
346 #define UnsharedLibReferences(varname,libname,libsource) @@\
347 Concat3(DEP,varname,LIB) = _UseCat($(USRLIBDIR)/,libsource/,libname.lib) @@\
348 Concat(varname,LIB) = LoaderLibPrefix _Use(libname.lib,$(Concat3(DEP,varname,LIB))) @@\
349 LintLibReferences(varname,libname,libsource)
351 #define SharedLibReferences(varname,libname,libsource,revname,rev) @@\
353 UnsharedLibReferences(varname,libname,libsource)
355 #define SubdirLibraryRule(objlist) @@\
356 XVARdef0 = objlist @@\
360 DONE: $(XVARuse0:.o=.obj) @@\
367 #define CppScriptTarget(dst,src,defs,deplist) @@\
369 @echo sorry, unable to make $@
371 #define CppFileTarget(dst,src,defs,deplist) @@\
373 dst:: src deplist @@\
375 $(PREPROCESSCMD) -I. <<CppTmpFile.c @<< >$@ @@\
376 XCOMM define $(XFAKEVAR)COMM XCOMM @@\
377 XCOMM include <src> @@\
385 #define InstallNamedTarget(step,srcname,flags,dest,dstname) @@\
386 XVARdef0 = $(DESTDIR)dest @@\
389 MakeDir($(XVARuse0:/=\)) @@\
390 $(INSTALL) $(INSTALLFLAGS) flags srcname $(XVARuse0:/=\)\\dstname
392 #define InstallNamedTargetNoClobber(step,srcname,flags,dest,dstname) @@\
393 XVARdef0 = $(DESTDIR)dest @@\
396 MakeDir($(XVARuse0:/=\)) @@\
397 @if exist $(XVARuse0:/=\)\\dstname echo Not overwriting existing $(XVARuse0:/=\)\\dstname @@\
398 if not exist $(XVARuse0:/=\)\\dstname $(INSTALL) $(INSTALLFLAGS) flags srcname $(XVARuse0:/=\)\\dstname
401 #define InstallLibrary(libname,dest) @@\
402 InstallTarget(install,LibraryTargetName(libname),$(INSTLIBFLAGS),dest)
404 #define InstallScript(program,dest) /**/
406 #define InstallNamedProg(srcname,dstname,dest) @@\
407 install:: srcname @@\
408 @echo sorry, unable to install srcname
410 #define InstallSharedLibrary(libname,rev,dest) @@\
411 InstallTarget(install,LibraryTargetName(libname),$(INSTLIBFLAGS),$(USRLIBDIR)) @@\
412 InstallTarget(install,libname.dll,$(INSTLIBFLAGS),dest)
414 #define InstallSharedLibraryData(libname,rev,dest)
416 #define MakeDLL(libname,solist) $(LD) @<< @@\
417 $(SHLIBLDFLAGS) -out:libname.dll libname.exp solist @@\
420 #define SharedLibraryTarget(libname,rev,solist,down,up) @@\
421 AllTarget(libname.dll) @@\
423 CppFileTarget(libname.def,libname-def.cpp,-DLIBRARY_VERSION=rev,$(ICONFIGFILES)) @@\
425 XVARdef0 = solist @@\
427 LibraryTargetName(libname): $(XVARuse0:.o=.obj) libname.def $(EXTRALIBRARYDEPS) @@\
429 MakeLibrary($@,-def:libname.def $(XVARuse0:.o=.obj)) @@\
430 LinkBuildLibrary($@) @@\
432 libname.dll: LibraryTargetName(libname) $(EXTRALIBRARYDEPS) @@\
433 RemoveFile(libname.dll) @@\
434 MakeDLL(libname,$(XVARuse0:.o=.obj) $(REQUIREDLIBS) $(EXTRA_LIBRARIES)) @@\
435 LinkBuildDLL(libname.dll) @@\
438 RemoveFile(LibraryTargetName(libname)) @@\
439 RemoveFile(libname.dll)
441 #define SharedLibraryDataTarget(libname,rev,salist)
443 #define ObjectCplusplusCompile(options) RemoveFile($@) @@\
444 $(CXX) -c $*.CCsuf @<< @@\
445 $(CFLAGS) options @@\
448 #define CplusplusLinkRule LinkRule
450 #define CplusplusProgramTargetHelper ProgramTargetHelper
452 #ifndef ComplexCplusplusProgramTarget
453 #define ComplexCplusplusProgramTarget(program) @@\
454 PROGRAM = ProgramTargetName(program) @@\
456 AllTarget(ProgramTargetName(program)) @@\
458 CplusplusProgramTargetHelper(program,SRCS,OBJS,DEPLIBS,$(LOCAL_LIBRARIES),NullParameter) @@\
464 RemoveFile(ProgramTargetName(program))
465 #endif /* ComplexCplusplusProgramTarget */
468 # define LinkBuildDLL(binary) MakeDir($(BUILDBINDIR:/=\)) @@\
469 RemoveFile(Concat($(BUILDBINDIR:/=\)\,binary)) @@\
470 cd $(BUILDBINDIR:/=\) && $(LN) Concat($(BUILDBINTOP:/=\)\$(CURRENT_DIR:/=\)\,binary) .
472 # ifdef LinkBuildBinary
473 # undef LinkBuildBinary
475 # define LinkBuildBinary(binary) @@\
476 all:: $(BUILDBINDIR)\ProgramTargetName(binary) ProgramTargetName(binary) @@\
478 $(BUILDBINDIR)\ProgramTargetName(binary): ProgramTargetName(binary) @@\
479 MakeDir($(BUILDBINDIR:/=\)) @@\
480 RemoveFile($(BUILDBINDIR:/=\)\ProgramTargetName(binary))) @@\
481 cd $(BUILDBINDIR:/=\) && $(LN) $(BUILDBINTOP:/=\)\$(CURRENT_DIR:/=\)\ProgramTargetName(binary) .
483 # ifdef LinkBuildLibrary
484 # undef LinkBuildLibrary
486 # define LinkBuildLibrary(lib) MakeDir($(BUILDLIBDIR:/=\)) @@\
487 RemoveFile(Concat($(BUILDLIBDIR:/=\)\,lib)) @@\
488 cd $(BUILDLIBDIR:/=\) && $(LN) Concat($(BUILDLIBTOP:/=\)\$(CURRENT_DIR:/=\)\,lib) .
492 #ifndef ProjectUnsharedLibReferences
493 #define ProjectUnsharedLibReferences(varname,libname,libsource,buildlibdir) @@\
494 Concat3(DEP,varname,LIB) = _UseCat($(USRLIBDIR)/lib,buildlibdir/,libname.lib) @@\
495 Concat(varname,LIB) = $(Concat3(DEP,varname,LIB)) @@\
496 LintLibReferences(varname,libname,libsource)
501 * ServerTargetWithFlags - generate rules to compile, link, and relink a server
503 #ifndef ServerTargetWithFlags
504 #define ServerTargetWithFlags(server,subdirs,objects,libs,syslibs,flags) @@\
505 XVARdef0 = objects @@\
507 AllTarget(ProgramTargetName(server)) @@\
508 ProgramTargetName(server): subdirs $(XVARuse0:.o=.obj) libs @@\
509 MoveToBakFile($@) @@\
510 LinkRule($@,$(LDOPTIONS),$(XVARuse0:.o=.obj),libs $(LDLIBS) syslibs) @@\
512 Concat(load,server): @@\
513 MoveToBakFile(ProgramTargetName(server)) @@\
514 LinkRule(ProgramTargetName(server),$(LDOPTIONS),$(XVARuse0:.o=.obj),libs $(LDLIBS) syslibs) @@\
516 loadX:: Concat(load,server) @@\
518 ProofProgramTarget(server,subdirs objects libs,objects libs $(LDLIBS) syslibs) @@\
519 ProofLinkTarget(Concat(load,server),server,objects libs $(LDLIBS) syslibs) @@\
521 InstallProgramWithFlags(server,$(BINDIR),flags) @@\
524 RemoveFile(ProgramTargetName(server))
525 #endif /* ServerTargetWithFlags */