home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-bin / x11r6.1 / lib / x11 / config / win32.rules < prev    next >
Encoding:
Text File  |  1996-10-17  |  13.1 KB  |  463 lines

  1. XCOMM platform:  $XConsortium: Win32.rules /main/45 1996/01/19 15:26:44 kaleb $
  2.  
  3. #define HasSharedLibraries YES
  4. #define NeedLibInsideFlag YES
  5. #define SharedLibXaw NO
  6. #define SharedLibXmu NO
  7. #define SharedLibXt NO
  8. #define SharedDataSeparation NO
  9. #define SharedCodeDef /**/
  10. #define SharedLibraryDef /**/
  11. #define ShLibIncludeFile <WinLib.tmpl>
  12. #define SharedLibraryLoadFlags -dll
  13. #define PositionIndependentCFlags /**/
  14.  
  15. .c.obj:
  16.     $(CC) -c $*.c @<<
  17.     $(CFLAGS)
  18. <<
  19.  
  20. #if HasCplusplus
  21. .CCsuf.obj:
  22.     $(CXX) -c $*.CCsuf @<<
  23.     $(CFLAGS)
  24. <<
  25. #endif
  26.  
  27. #define ProgramTargetName(target)target.exe
  28.  
  29. #define RunProgram(progvar,options) $(progvar:/=\) options
  30.  
  31. #define RemoveFile(file) if exist file $(RM) file
  32.  
  33. #define RemoveFiles(files) @$(MAKE) $(MFLAGS) -f <<            @@\
  34. .SUFFIXES:                                @@\
  35.                                     @@\
  36. all: files                                @@\
  37.     !for %%i in ( Avoid.Error $$** ) do if exist %%i $(RM) %%i    @@\
  38.                                     @@\
  39. Avoid.Error files:                            @@\
  40. <<
  41.  
  42. #define MakeDir(dir) -$(MKDIRHIER) dir
  43.  
  44. #define ObjectCompile(options) RemoveFile($@)                @@\
  45.     $(CC) -c $*.c @<<                        @@\
  46.     $(CFLAGS) options                        @@\
  47. <<
  48.  
  49. #define LibObjCompile(dir,options) RemoveFiles($@ dir\$@)        @@\
  50.     $(CC) -c  $*.c @<<                        @@\
  51.     $(CCOPTIONS) $(ALLDEFINES) options                @@\
  52. <<                                    @@\
  53.     $(MV) $@ dir\$@
  54.  
  55. #define BuildIncludesTop(srclist,dstsubdir,dstupdir)            @@\
  56. includes:: srclist                            @@\
  57.     MakeDir($(BUILDINCDIR:/=\))                    @@\
  58.     @$(MAKE) $(MFLAGS) -f <<                    @@\
  59. .SUFFIXES:                                @@\
  60.                                     @@\
  61. all: srclist                                @@\
  62.     cd $(BUILDINCDIR:/=\)                        @@\
  63.     !RemoveFile($$**)                        @@\
  64.     !$(LN) $(BUILDINCTOP:/=\)\$(CURRENT_DIR:/=\)\$$** .        @@\
  65.                                     @@\
  66. Avoid.Error srclist:                            @@\
  67. <<
  68.  
  69. #define BuildIncludes(srclist,dstsubdir,dstupdir)            @@\
  70. XVARdef0 = $(BUILDINCDIR)/dstsubdir                    @@\
  71. XVARdef1 = $(BUILDINCTOP)/dstupdir/$(CURRENT_DIR)            @@\
  72.                                     @@\
  73. includes:: srclist                            @@\
  74.     MakeDir($(XVARuse0:/=\))                    @@\
  75.     @$(MAKE) -A $(MFLAGS) -f <<                    @@\
  76. .SUFFIXES:                                @@\
  77.                                     @@\
  78. all: srclist                                @@\
  79.     cd $(XVARuse0:/=\)                        @@\
  80.     !RemoveFile($$**)                        @@\
  81.     !$(LN) $(XVARuse1:/=\)\$$** .                    @@\
  82.                                     @@\
  83. Avoid.Error srclist:                            @@\
  84. <<
  85.  
  86. #define LinkFileList(step,list,dir,sub)                    @@\
  87. XVARdef0 = dir                                @@\
  88. XVARdef1 = sub                                @@\
  89. XVARdef2 = list                                @@\
  90.                                     @@\
  91. step:: $(XVARuse2:/=\)                            @@\
  92.     cd $(XVARuse0:/=\)                        @@\
  93.     !RemoveFile($**)                        @@\
  94.     !$(LN) $(XVARuse1:/=\)\\$** .
  95.  
  96. #define LinkRule(program,options,objects,libraries) \
  97. $(CCLINK) Concat(-Fe,program) options objects libraries $(EXTRA_LOAD_FLAGS)
  98.  
  99. #define NormalProgramTarget(program,objects,deplibs,locallibs,syslibs)    @@\
  100. XVARdef0 = objects                            @@\
  101.                                     @@\
  102. ProgramTargetName(program): $(XVARuse0:.o=.obj) deplibs            @@\
  103.     RemoveTargetProgram($@)                        @@\
  104.     LinkRule($@,$(LDOPTIONS),$(XVARuse0:.o=.obj),locallibs $(LDLIBS) syslibs) @@\
  105.                                     @@\
  106. clean::                                    @@\
  107.     RemoveFile(ProgramTargetName(program))
  108.  
  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) @@\
  113.                                     @@\
  114. InstallProgram(program,$(BINDIR))                    @@\
  115. InstallManPage(program,$(MANDIR))
  116.  
  117. #define ComplexProgramTarget(program)                    @@\
  118. PROGRAM = ProgramTargetName(program)                    @@\
  119.                                     @@\
  120. AllTarget(ProgramTargetName(program))                    @@\
  121.                                     @@\
  122. ProgramTargetHelper(program,SRCS,OBJS,DEPLIBS,$(LOCAL_LIBRARIES),NullParameter) @@\
  123.                                     @@\
  124. DependTarget()                                @@\
  125. LintTarget()                                @@\
  126.                                     @@\
  127. clean::                                    @@\
  128.     RemoveFile($(PROGRAM))
  129.  
  130. #define ComplexProgramTarget_1(program,locallib,syslib)            @@\
  131. OBJS = $(OBJS1) $(OBJS2) $(OBJS3)                    @@\
  132. SRCS = $(SRCS1) $(SRCS2) $(SRCS3)                    @@\
  133. PROGRAM1 = ProgramTargetName(program)                    @@\
  134.                                     @@\
  135. AllTarget($(PROGRAM1) $(PROGRAM2) $(PROGRAM3))                @@\
  136.                                     @@\
  137. ProgramTargetHelper(program,SRCS1,OBJS1,DEPLIBS1,locallib,syslib)    @@\
  138.                                     @@\
  139. DependTarget()                                @@\
  140. LintTarget()                                @@\
  141.                                     @@\
  142. clean::                                    @@\
  143.     for %%i in ($(PROGRAMS)) do $(RM) ProgramTargetName(%%i)
  144.  
  145. #define ComplexProgramTarget_2(program,locallib,syslib)            @@\
  146. PROGRAM2 = ProgramTargetName(program)                    @@\
  147.                                     @@\
  148. ProgramTargetHelper(program,SRCS2,OBJS2,DEPLIBS2,locallib,syslib)
  149.  
  150. #define ComplexProgramTarget_3(program,locallib,syslib)            @@\
  151. PROGRAM3 = ProgramTargetName(program)                    @@\
  152.                                     @@\
  153. ProgramTargetHelper(program,SRCS3,OBJS3,DEPLIBS3,locallib,syslib)
  154.  
  155. #define MoveToBakFile(file) -@if exist file $(MV) file file.bak
  156.  
  157. #define RMoveToBakFile(file) -RemoveFile(file.bak)            @@\
  158.     -@if exist file $(MV) file file.bak
  159.  
  160. #define InstallMultipleDestFlags(step,list,dest,flags)            @@\
  161. XVARdef0 = $(DESTDIR)dest                        @@\
  162.                                     @@\
  163. step:: list                                @@\
  164.     MakeDir($(XVARuse0:/=\))                    @@\
  165.     !$(INSTALL) $(INSTALLFLAGS) flags $** $(XVARuse0:/=\)
  166.  
  167. #define    CleanTarget()                            @@\
  168. clean::                                    @@\
  169.     RemoveFiles(FilesToClean ExtraFilesToClean)
  170.  
  171. #define LibraryTargetName(libname)libname.lib
  172.  
  173. #define LibraryTargetNameSuffix(libname,suffix)Concat(libname,suffix.lib)
  174.  
  175. #define MakeLibrary(libname,objlist) $(AR) @<<                @@\
  176. -out:libname objlist                            @@\
  177. <<
  178.  
  179. #define LinkSourceFile(src,dir)                        @@\
  180. XVARdef0 = dir/src                            @@\
  181.                                     @@\
  182. src:  $(XVARuse0:/=\)                            @@\
  183.     RemoveFile($@)                            @@\
  184.     $(LN) $? $@                            @@\
  185.                                     @@\
  186. includes:: src                                @@\
  187.                                     @@\
  188. depends:: src                                @@\
  189.                                     @@\
  190. clean::                                    @@\
  191.     RemoveFile(src)
  192.  
  193. #define LinkFile(tofile,fromfile)                    @@\
  194. XVARdef0 = fromfile                            @@\
  195. tofile:: $(XVARuse0:/=\)                        @@\
  196.     RemoveFile($@)                            @@\
  197.     $(LN) $? $@                            @@\
  198.                                     @@\
  199. includes:: tofile                            @@\
  200.                                     @@\
  201. depend:: tofile                                @@\
  202.                                     @@\
  203. clean::                                    @@\
  204.     RemoveFile(tofile)
  205.  
  206.  
  207. #define    NormalLibraryTarget(libname,objlist)                @@\
  208. AllTarget(LibraryTargetName(libname))                    @@\
  209.                                     @@\
  210. XVARdef0 = objlist                            @@\
  211.                                     @@\
  212. LibraryTargetName(libname): $(XVARuse0:.o=.obj)                @@\
  213.     RemoveFile($@)                            @@\
  214.     MakeLibrary($@,$(XVARuse0:.o=.obj))
  215.  
  216. #define    NormalLibraryTarget2(libname,objlist1,objlist2)            @@\
  217. NormalLibraryTarget(libname,objlist1 objlist2)
  218.  
  219. #define    NormalLibraryTarget3(libname,objlist1,objlist2,objlist3)    @@\
  220. NormalLibraryTarget(libname,objlist1 objlist2 objlist3)
  221.  
  222. #define    NormalDepLibraryTarget(libname,deplist,objlist)            @@\
  223. AllTarget(LibraryTargetName(libname))                    @@\
  224.                                     @@\
  225. XVARdef0 = deplist                            @@\
  226. XVARdef1 = objlist                            @@\
  227. XVARdef2 = $(XVARuse1:/=\)                        @@\
  228.                                     @@\
  229. LibraryTargetName(libname): $(XVARuse0:/=\)                @@\
  230.     RemoveFile($@)                            @@\
  231.     MakeLibrary($@,$(XVARuse2:.o=.obj))
  232.  
  233. #define    ProfiledLibraryTarget(libname,objlist)                @@\
  234. AllTarget(LibraryTargetNameSuffix(libname,_p))                @@\
  235.                                     @@\
  236. XVARdef0 = objlist                            @@\
  237.                                     @@\
  238. LibraryTargetNameSuffix(libname,_p): $(XVARuse0:.o=.obj)        @@\
  239.     RemoveFile($@)                            @@\
  240.     cd profiled                            @@\
  241.     MakeLibrary(..\$@,$(XVARuse0:.o=.obj))                @@\
  242.     cd ..
  243.  
  244. #define    DebuggedLibraryTarget(libname,objlist)                @@\
  245. AllTarget(LibraryTargetNameSuffix(libname,_d))                @@\
  246.                                     @@\
  247. XVARdef0 = objlist                            @@\
  248.                                     @@\
  249. LibraryTargetNameSuffix(libname,_d): $(XVARuse0:.o=.obj)        @@\
  250.     RemoveFile($@)                            @@\
  251.     cd debugger                            @@\
  252.     MakeLibrary(..\$@,$(XVARuse0:.o=.obj))                @@\
  253.     cd ..
  254.  
  255. #ifndef UseInstalled
  256. #define ImakeDependency(target)                        @@\
  257. target:: ProgramTargetName($(IMAKE))                    @@\
  258.                                     @@\
  259. ProgramTargetName($(IMAKE)):                        @@\
  260.     <<tmp.bat                            @@\
  261.     cd $(IMAKESRC:/=\)                        @@\
  262.     if exist Makefile $(MAKE) all                    @@\
  263.     if not exist Makefile $(MAKE) -f Makefile.ini BOOTSTRAPCFLAGS="$(BOOTSTRAPCFLAGS)" @@\
  264. <<
  265. #endif
  266.  
  267. #ifndef UseInstalled
  268. #define DependDependency()                         @@\
  269. depend:: ProgramTargetName($(DEPEND))                    @@\
  270.                                     @@\
  271. ProgramTargetName($(DEPEND)):                        @@\
  272.     <<tmp.bat                            @@\
  273.     cd $(DEPENDSRC:/=\)                        @@\
  274.     $(MAKE)                                @@\
  275. <<
  276. #endif
  277.  
  278. #define    DependTarget()                            @@\
  279. DependDependency()                            @@\
  280.                                     @@\
  281. depend::                                @@\
  282.     $(DEPEND:/=\) @<<                        @@\
  283. $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- $(SRCS)        @@\
  284. <<
  285.  
  286. #define    DependTarget3(srcs1,srcs2,srcs3)                @@\
  287. DependDependency()                            @@\
  288.                                     @@\
  289. depend::                                @@\
  290.     $(DEPEND:/=\) @<<                        @@\
  291. $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- srcs1 srcs2 srcs3    @@\
  292. <<
  293.  
  294. #define ForceSubdirs(dirs)                        @@\
  295. Avoid.Error dirs: FRC                            @@\
  296.     @cd $@                                @@\
  297.     @echo making all in $(CURRENT_DIR)/$@...            @@\
  298.     $(MAKE) $(MFLAGS) PassCDebugFlags all                @@\
  299.     cd ..                                @@\
  300.                                     @@\
  301. FRC:
  302.  
  303. #define MakeMakeSubdirs(dirs,target)                    @@\
  304. XVARdef0 = dirs                                @@\
  305. XVARdef1 = $$                                @@\
  306.                                     @@\
  307. target::                                @@\
  308.     @$(MAKE) -A $(MFLAGS) -f <<                    @@\
  309. .SUFFIXES:                                @@\
  310.                                     @@\
  311. all: $(XVARuse0:/=\)                            @@\
  312.                                     @@\
  313. Avoid.Error $(XVARuse0:/=\):                        @@\
  314.     cd $(XVARuse1)@                            @@\
  315.     RMoveToBakFile(Makefile)                    @@\
  316.     ImakeSubCmdHelper -DTOPDIR=../$(TOP) -DCURDIR=$(CURRENT_DIR)/$(XVARuse1)@ @@\
  317.     $(MAKE) $(MFLAGS) Makefiles                    @@\
  318.     cd ..                                @@\
  319. <<
  320.  
  321. #ifndef UseInstalled
  322. #define ImakeSubCmdHelper ..\$(IMAKE) -I../$(IRULESRC) $(IMAKE_DEFINES)
  323. #endif
  324.  
  325. #define NamedTargetSubdirs(name,dirs,verb,flags,subname)        @@\
  326. XVARdef0 = dirs                                @@\
  327. XVARdef1 = $$                                @@\
  328.                                     @@\
  329. name::                                    @@\
  330.     @$(MAKE) -A $(MFLAGS) -f <<                    @@\
  331. .SUFFIXES:                                @@\
  332.                                     @@\
  333. all: $(XVARuse0:/=\)                            @@\
  334.                                     @@\
  335. Avoid.Error $(XVARuse0:/=\):                        @@\
  336.     cd $(XVARuse1)@                            @@\
  337.     @echo verb in $(CURRENT_DIR)/$(XVARuse1)@...            @@\
  338.     $(MAKE) $(MFLAGS) flags subname                    @@\
  339.     cd ..                                @@\
  340. <<
  341.  
  342. #define UnsharedLibReferences(varname,libname,libsource)        @@\
  343. Concat3(DEP,varname,LIB) = _UseCat($(USRLIBDIR)/,libsource/,libname.lib) @@\
  344. Concat(varname,LIB) = LoaderLibPrefix _Use(libname.lib,$(Concat3(DEP,varname,LIB))) @@\
  345. LintLibReferences(varname,libname,libsource)
  346.  
  347. #define SharedLibReferences(varname,libname,libsource,revname,rev)    @@\
  348. revname = rev                                @@\
  349. UnsharedLibReferences(varname,libname,libsource)
  350.  
  351. #define    SubdirLibraryRule(objlist)                    @@\
  352. XVARdef0 = objlist                            @@\
  353.                                     @@\
  354. all:: DONE                                @@\
  355.                                     @@\
  356. DONE: $(XVARuse0:.o=.obj)                        @@\
  357.     RemoveFile($@)                            @@\
  358.     echo - > $@                            @@\
  359.                                     @@\
  360. clean::                                    @@\
  361.     RemoveFile(DONE)
  362.  
  363. #define CppScriptTarget(dst,src,defs,deplist)                @@\
  364. dst::                                    @@\
  365.     @echo sorry, unable to make $@
  366.  
  367. #define CppFileTarget(dst,src,defs,deplist)                @@\
  368. XFAKEVAR = X                                @@\
  369. dst::  src deplist                            @@\
  370.     RemoveFile($@)                            @@\
  371.     $(PREPROCESSCMD) -I. <<CppTmpFile.c @<< >$@            @@\
  372.     XCOMM define $(XFAKEVAR)COMM XCOMM                @@\
  373.     XCOMM include <src>                        @@\
  374. <<                                    @@\
  375.     defs                                @@\
  376. <<                                    @@\
  377.                                     @@\
  378. clean::                                    @@\
  379.     RemoveFiles(dst)
  380.  
  381. #define InstallNamedTarget(step,srcname,flags,dest,dstname)        @@\
  382. XVARdef0 = $(DESTDIR)dest                        @@\
  383.                                     @@\
  384. step:: srcname                                @@\
  385.     MakeDir($(XVARuse0:/=\))                    @@\
  386.     $(INSTALL) $(INSTALLFLAGS) flags srcname $(XVARuse0:/=\)\\dstname
  387.  
  388. #define InstallNamedTargetNoClobber(step,srcname,flags,dest,dstname)    @@\
  389. XVARdef0 = $(DESTDIR)dest                        @@\
  390.                                     @@\
  391. step:: srcname                                @@\
  392.     MakeDir($(XVARuse0:/=\))                    @@\
  393.     @if exist $(XVARuse0:/=\)\\dstname echo Not overwriting existing $(XVARuse0:/=\)\\dstname @@\
  394.     if not exist $(XVARuse0:/=\)\\dstname $(INSTALL) $(INSTALLFLAGS) flags srcname $(XVARuse0:/=\)\\dstname
  395.  
  396.  
  397. #define    InstallLibrary(libname,dest)                    @@\
  398. InstallTarget(install,LibraryTargetName(libname),$(INSTLIBFLAGS),dest)
  399.  
  400. #define    InstallScript(program,dest) /**/
  401.  
  402. #define    InstallNamedProg(srcname,dstname,dest)                @@\
  403. install:: srcname                            @@\
  404.     @echo sorry, unable to make srcname
  405.  
  406. #define    InstallSharedLibrary(libname,rev,dest)                @@\
  407. InstallTarget(install,LibraryTargetName(libname),$(INSTLIBFLAGS),$(USRLIBDIR)) @@\
  408. InstallTarget(install,libname.dll,$(INSTLIBFLAGS),dest)
  409.  
  410. #define    InstallSharedLibraryData(libname,rev,dest)
  411.  
  412. #define MakeDLL(libname,solist) $(LD) @<<                @@\
  413. SharedLibraryLoadFlags -out:libname.dll libname.exp solist        @@\
  414. <<
  415.  
  416. #define SharedLibraryTarget(libname,rev,solist,down,up)            @@\
  417. AllTarget(libname.dll)                            @@\
  418.                                     @@\
  419. CppFileTarget(libname.def,libname-def.cpp,-DLIBRARY_VERSION=rev,$(ICONFIGFILES)) @@\
  420.                                     @@\
  421. XVARdef0 = solist                            @@\
  422.                                     @@\
  423. LibraryTargetName(libname): $(XVARuse0:.o=.obj) libname.def        @@\
  424.     RemoveFile($@)                            @@\
  425.     MakeLibrary($@,-def:libname.def $(XVARuse0:.o=.obj))        @@\
  426.     RemoveFile(libname.dll)                        @@\
  427.     MakeDLL(libname,$(XVARuse0:.o=.obj) $(REQUIREDLIBS) $(EXTRA_LIBRARIES)) @@\
  428.                                     @@\
  429. libname.dll: LibraryTargetName(libname)                    @@\
  430.     RemoveFile(libname.dll)                        @@\
  431.     MakeDLL(libname,$(XVARuse0:.o=.obj) $(REQUIREDLIBS) $(EXTRA_LIBRARIES)) @@\
  432.                                     @@\
  433. clean::                                    @@\
  434.     RemoveFile(LibraryTargetName(libname))                @@\
  435.     RemoveFile(libname.dll)
  436.  
  437. #define SharedLibraryDataTarget(libname,rev,salist)
  438.  
  439. #define ObjectCplusplusCompile(options) RemoveFile($@)            @@\
  440.     $(CXX) -c $*.CCsuf @<<                        @@\
  441.     $(CFLAGS) options                        @@\
  442. <<
  443.  
  444. #define CplusplusLinkRule LinkRule
  445.  
  446. #define CplusplusProgramTargetHelper ProgramTargetHelper
  447.  
  448. #ifndef ComplexCplusplusProgramTarget
  449. #define    ComplexCplusplusProgramTarget(program)                @@\
  450.         PROGRAM = ProgramTargetName(program)                @@\
  451.                                     @@\
  452. AllTarget(ProgramTargetName(program))                    @@\
  453.                                     @@\
  454. CplusplusProgramTargetHelper(program,SRCS,OBJS,DEPLIBS,$(LOCAL_LIBRARIES),NullParameter) @@\
  455.                                     @@\
  456. DependTarget()                                @@\
  457. LintTarget()                                @@\
  458.                                     @@\
  459. clean::                                    @@\
  460.     RemoveFile(ProgramTargetName(program))
  461. #endif /* ComplexCplusplusProgramTarget */
  462.  
  463.