1XCOMM $Xorg: os2Lib.rules,v 1.3 2000/08/17 19:41:48 cpqbld Exp $ 2 3 4 5XCOMM $XFree86: xc/config/cf/os2Lib.rules,v 3.19 2003/10/11 09:40:15 herrb Exp $ 6 7/* 8 * OS2/EMX shared library rules (DLL version) 9 * 10#ifndef __UNIXOS2__ 11#error You must edit os2Lib.rules for your OS/2 dev system 12#endif */ 13 14#define HasSharedLibraries YES 15#define ForceNormalLib NO 16#define SharedOldX NO 17#define SharedDataSeparation NO 18#define SharedCodeDef /**/ 19#define SharedLibraryDef /**/ 20#define ShLibIncludeFile <os2Lib.tmpl> 21#define SharedLibraryLoadFlags /**/ 22#define PositionIndependentCFlags -Zmtd 23 24#define NormalSharedLibObjCompile(options) RemoveFile($@) @@\ 25 $(CC) -c $(CFLAGS) options $(SHLIBDEF) $(SHAREDCODEDEF) $(PICFLAGS) $*.c 26 27#define InstallSharedLibrary(libname,rev,dest) @@\ 28install:: libname.dll LibraryTargetName(libname) libname.lib @@\ 29 MakeDir($(DESTDIR)dest) @@\ 30 $(INSTALL) -c $(INSTLIBFLAGS) $(DLLNAME) $(DESTDIR)dest @@\ 31 $(INSTALL) -c $(INSTLIBFLAGS) LibraryTargetName(libname) $(DESTDIR)dest @@\ 32 $(INSTALL) -c $(INSTLIBFLAGS) libname.a $(DESTDIR)dest @@\ 33 $(INSTALL) -c $(INSTLIBFLAGS) libname.lib $(DESTDIR)dest 34 35#define LinkBuildLibrary2(slib,ext) MakeDir($(BUILDLIBDIR)) @@\ 36 RemoveFile($(BUILDLIBDIR)/slib.ext) @@\ 37 (cd $(BUILDLIBDIR); $(LN) $(BUILDINCTOP)/$(CURRENT_DIR)/slib.ext .) 38 39#define LinkBuildLibrary3(slib,rev,ext) MakeDir($(BUILDLIBDIR)) @@\ 40 RemoveFile($(BUILDLIBDIR)/Concat3(slib,rev,ext)) @@\ 41 (cd $(BUILDLIBDIR); $(LN) $(BUILDINCTOP)/$(CURRENT_DIR)/Concat3(slib,rev,ext) .) 42 43#define LinkBuildLibrary4(pre,slib,rev,ext) MakeDir($(BUILDLIBDIR)) @@\ 44 RemoveFile($(BUILDLIBDIR)/Concat4(pre,slib,rev,ext)) @@\ 45 (cd $(BUILDLIBDIR); $(LN) $(BUILDINCTOP)/$(CURRENT_DIR)/Concat4(pre,slib,rev,ext) .) 46 47#define LinkBuildLibrary5(slib,rev,ext) MakeDir($(BUILDLIBDIR)) @@\ 48 RemoveFile($(BUILDLIBDIR)/$(DLLNAME)) @@\ 49 (cd $(BUILDLIBDIR); $(LN) $(BUILDINCTOP)/$(CURRENT_DIR)/$(INSTDLLNAME) .) 50 51 EMXIMP = emximp 52 EMXOMF = emxomf -p 32 53 SHLD = gcc -Zdll -Zmtd -Zmap -Zbin-files 54 SHXXLD = g++ -Zdll -Zmtd -Zmap -Zbin-files 55 SHADDLIBS = ExtraLibraries -lc_import 56 DLLNAME = `cat $(TOP)/$(CURRENT_DIR)/dll.name` 57 INSTDLLNAME = `cat $(BUILDINCTOP)/$(CURRENT_DIR)/dll.name` 58 59#define BuildDllSupportLibs3(slib,rev) @@\ 60 $(EMXIMP) -o Concat3(slib,rev,.imp) Concat3(slib,os2,.def) @@\ 61 $(EMXIMP) -o Concat4(lib,slib,rev,.a) Concat3(slib,rev,.imp) @@\ 62 $(EMXIMP) -o Concat3(slib,rev,_o.imp) Concat3(slib,o_os2,.def) @@\ 63 $(EMXIMP) -o Concat3(slib,rev,.a) Concat3(slib,rev,_o.imp) @@\ 64 $(EMXOMF) -s -l -o Concat3(slib,rev,.lib) Concat3(slib,rev,.a) @@\ 65 LinkBuildLibrary4(lib,slib,rev,.a) @@\ 66 67#define BuildLibSupportLibs(slib) @@\ 68 $(EMXOMF) -s -l -o Concat(slib,.lib) Concat(slib,.a) @@\ 69 LinkBuildLibrary3(lib,slib,.a) @@\ 70 71#define BuildLibSupportLibs2(slib) @@\ 72 $(EMXOMF) -s -l -o Concat(slib,.lib) Concat3(lib,slib,.a) @@\ 73 LinkBuildLibrary3(lib,slib,.a) @@\ 74 75#define SharedLibraryTarget(libname,rev,solist,down,up) @@\ 76AllTarget(Concat3(libname,rev,.dll)) @@\ 77.SUFFIXES: .def @@\ 78 @@\ 79Concat(libname,os2.def): Concat(libname,-def.cpp) @@\ 80 cmd /c $(subst /,\\,$(CONFIGSRC)/util/makedef.cmd) $(CONFIGSRC)/cf/os2def.db libname @@\ 81 cmd /c $(subst /,\\,$(CONFIGSRC)/util/makedef.cmd) -O1 $(CONFIGSRC)/cf/os2def.db libname @@\ 82 @@\ 83Concat3(libname,rev,.dll): solist Concat(libname,os2.def) @@\ 84 RemoveFile($@) @@\ 85 $(SHLD) -o $(DLLNAME) solist $(REQUIREDLIBS) $(SHADDLIBS) Concat(libname,o_os2.def) @@\ 86 touch $@ @@\ 87 BuildDllSupportLibs3(libname,rev) @@\ 88 LinkBuildLibrary5(libname,rev,.dll) @@\ 89 @@\ 90clean:: @@\ 91 RemoveFiles(Concat3(libname,rev,.imp) Concat3(libname,rev,_o.imp)) @@\ 92 RemoveFiles(Concat(libname,os2.def) Concat(libname,o_os2.def)) @@\ 93 RemoveFile(dll.name) 94 95#define NormalLibraryTarget(libname,objlist) @@\ 96AllTarget(LibraryTargetName(libname)) @@\ 97 @@\ 98LibraryTargetName(libname): objlist @@\ 99 RemoveFile($@) @@\ 100 MakeLibrary($@,objlist) @@\ 101 BuildLibSupportLibs2(libname) 102 103#define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\ 104AllTarget(Concat3(libname,rev,.dll)) @@\ 105 @@\ 106Concat(libname,os2.def): deplist $(EXTRALIBRARYDEPS) Concat(libname,-def.cpp) @@\ 107 cmd /c $(subst /,\\,$(CONFIGSRC)/util/makedef.cmd) $(CONFIGSRC)/cf/os2def.db libname @@\ 108 cmd /c $(subst /,\\,$(CONFIGSRC)/util/makedef.cmd) -O1 $(CONFIGSRC)/cf/os2def.db libname @@\ 109 @@\ 110Concat3(libname,rev,.dll): Concat(libname,os2.def) @@\ 111 RemoveFile($@) @@\ 112 (cd down; $(SHLD) -o up/$(DLLNAME) solist $(REQUIREDLIBS) $(SHADDLIBS) Concat(libname,o_os2.def)) @@\ 113 touch $@ @@\ 114 BuildDllSupportLibs3(libname,rev) @@\ 115 LinkBuildLibrary5(libname,rev,.dll) @@\ 116 @@\ 117clean:: @@\ 118 RemoveFiles(Concat3(libname,rev,.imp) Concat3(libname,rev,_o.imp)) @@\ 119 RemoveFiles(Concat(libname,os2.def) Concat(libname,o_os2.def)) @@\ 120 RemoveFile(dll.name) 121 122#define SharedDepCplusplusLibraryTarget(libname,rev,deplist,solist,down,up) @@\ 123AllTarget(Concat3(libname,rev,.dll)) @@\ 124 @@\ 125Concat(libname,os2.def): deplist $(EXTRALIBRARYDEPS) Concat(libname,-def.cpp) @@\ 126 cmd /c $(subst /,\\,$(CONFIGSRC)/util/makedef.cmd) $(CONFIGSRC)/cf/os2def.db libname @@\ 127 cmd /c $(subst /,\\,$(CONFIGSRC)/util/makedef.cmd) -O1 $(CONFIGSRC)/cf/os2def.db libname @@\ 128 @@\ 129Concat3(libname,rev,.dll): Concat(libname,os2.def) @@\ 130 RemoveFile($@) @@\ 131 (cd down; $(SHXXLD) -o up/$(DLLNAME) solist $(REQUIREDLIBS) $(SHADDLIBS) Concat(libname,o_os2.def)) @@\ 132 touch $@ @@\ 133 BuildDllSupportLibs3(libname,rev) @@\ 134 LinkBuildLibrary5(libname,rev,.dll) @@\ 135 @@\ 136clean:: @@\ 137 RemoveFiles(Concat3(libname,rev,.imp) Concat3(libname,rev,_o.imp)) @@\ 138 RemoveFiles(Concat(libname,os2.def) Concat(libname,o_os2.def)) @@\ 139 RemoveFile(dll.name) 140 141#define SharedDepModuleTarget(name,deps,solist) @@\ 142AllTarget(name) @@\ 143 @@\ 144name: deps @@\ 145 $(CC) -o $@ $(SHLIBLDFLAGS) solist $(REQUIREDLIBS) BaseShLibReqs @@\ 146 @@\ 147clean:: @@\ 148 RemoveFile(name) 149 150#define SharedLibraryDataTarget(libname,rev,salist) 151 152#define InstallSharedLibraryData(libname,rev,dest) 153 154#define InstallLibrary(libname,dest) @@\ 155install:: LibraryTargetName(libname) Concat(libname,.lib) @@\ 156 MakeDir($(DESTDIR)dest) @@\ 157 $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) LibraryTargetName(libname) $(DESTDIR)dest @@\ 158 $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) Concat(libname,.lib) $(DESTDIR)dest @@\ 159 RanLibrary($(RANLIBINSTFLAGS) $(DESTDIR)dest/LibraryTargetName(libname)) 160 161#define MakeStaticLibrary(libname) $(AR) libname *.o 162 163#define UnsharedLibraryTarget(libname,objlist,down,up) @@\ 164AllTarget(LibraryTargetNameSuffix(libname,_s)) @@\ 165 @@\ 166LibraryTargetNameSuffix(libname,_s): objlist @@\ 167 RemoveFile($@) @@\ 168 (cd down; MakeStaticLibrary(up/$@)) @@\ 169 RanLibrary($@) @@\ 170 _LinkBuildLibrary($@) @@\ 171 @@\ 172install:: LibraryTargetNameSuffix(libname,_s) @@\ 173 $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) LibraryTargetNameSuffix(libname,_s) $(DESTDIR)$(SHLIBDIR) 174 175#define UnsharedLibraryTarget3(libname,objlist1,objlist2,objlist3,down,up) @@\ 176AllTarget(LibraryTargetNameSuffix(libname,_s)) @@\ 177 @@\ 178LibraryTargetNameSuffix(libname,_s): objlist1 objlist2 objlist3 @@\ 179 RemoveFile($@) @@\ 180 (cd down; MakeStaticLibrary(up/$@)) @@\ 181 RanLibrary($@) @@\ 182 _LinkBuildLibrary($@) @@\ 183 @@\ 184install:: LibraryTargetNameSuffix(libname,_s) @@\ 185 $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) LibraryTargetNameSuffix(libname,_s) $(DESTDIR)$(SHLIBDIR) 186 187#define DebuggedLibraryTarget(libname,objlist) @@\ 188AllTarget(LibraryTargetNameSuffix(libname,_d)) @@\ 189 @@\ 190LibraryTargetNameSuffix(libname,_d): objlist $(EXTRALIBRARYDEPS) @@\ 191 RemoveFile($@) @@\ 192 (cd debugger; MakeStaticLibrary(../$@)) @@\ 193 RanLibrary($@) @@\ 194 _LinkBuildLibrary($@) 195 196#define ProfiledLibraryTarget(libname,objlist) @@\ 197AllTarget(LibraryTargetNameSuffix(libname,_p)) @@\ 198 @@\ 199LibraryTargetNameSuffix(libname,_p): objlist $(EXTRALIBRARYDEPS) @@\ 200 RemoveFile($@) @@\ 201 (cd profiled; MakeStaticLibrary(../$@)) @@\ 202 RanLibrary($@) @@\ 203 _LinkBuildLibrary($@) 204 205#define LibraryModuleTarget(module,objlist) @@\ 206AllTarget(LibraryTargetName(module)) @@\ 207 @@\ 208LibraryTargetName(module): objlist @@\ 209 RemoveFile($@) @@\ 210 MakeLibrary($@,objlist) 211