[Gd-chatter] r11221 - trunk/fundev/sources/lib/run-time/pentium-win32

housel at gwydiondylan.org housel at gwydiondylan.org
Fri Mar 2 09:13:44 CET 2007


Author: housel
Date: Fri Mar  2 09:13:42 2007
New Revision: 11221

Added:
   trunk/fundev/sources/lib/run-time/pentium-win32/x86-win32-vc8-build.jam   (contents, props changed)
Log:
Bug: 7003
Add a new Jam build script for VC8 (Microsoft Visual Studio 2005 and
Visual Studio 2005 Express).


Added: trunk/fundev/sources/lib/run-time/pentium-win32/x86-win32-vc8-build.jam
==============================================================================
--- (empty file)
+++ trunk/fundev/sources/lib/run-time/pentium-win32/x86-win32-vc8-build.jam	Fri Mar  2 09:13:42 2007
@@ -0,0 +1,464 @@
+#
+# Configuration variables
+#
+
+CC      ?= cl /nologo ;
+CCFLAGS ?= -DWIN32 -D_WIN32 -D_MT -D_DLL -MD -Z7 -Od ;
+CP      ?= copy /y ;
+RC      ?= rc ;
+RM      ?= del/f/q ;
+LINK    ?= link /nologo ;
+MT 	?= mt -nologo ;
+
+MKF     ?= dylanmakefile.mkf ;
+
+SUFOBJ  ?= .obj ;               # object files suffix
+SUFRC   ?= .rc  ;               # source resource file suffix
+SUFRES  ?= .res ;               # compiled resource file suffix
+SUFDLL  ?= .dll ;               # shared library suffix
+SUFLIB  ?= .lib ;               # import library suffix
+SUFEXE  ?= .exe ;               # executable suffix
+SUFMKF  ?= .mkf ;               # build-system files
+
+{
+  local _lib = lib ;
+  local _bin = bin ;
+
+  # SYSTEM_ROOT is set by the build-system
+  SYSTEM_LIBDIR ?= $(_lib:P=$(SYSTEM_ROOT)) ;
+  SYSTEM_BINDIR ?= $(_bin:P=$(SYSTEM_ROOT)) ;
+
+  # PERSONAL_ROOT is set by the build-system
+  PERSONAL_LIBDIR ?= $(_lib:P=$(PERSONAL_ROOT)) ;
+  PERSONAL_BINDIR ?= $(_bin:P=$(PERSONAL_ROOT)) ;
+
+  # . is set by the build system
+  LIBDIR ?= $(_lib:P=$(PERSONAL_ROOT:E=$(.:P))) ;
+  BINDIR ?= $(_bin:P=$(PERSONAL_ROOT:E=$(.:P))) ;
+}
+
+LIBPATH	?= $(PERSONAL_LIBDIR) $(SYSTEM_LIBDIR) ;
+
+LINKFLAGS ?= /NODEFAULTLIB /INCREMENTAL:NO /DEBUG /MANIFEST ;
+
+#
+# Runtime
+#
+
+# External libraries linked with the dylan library
+# (via the Linker-Options: keyword in Sources/dylan/dylan.lid)
+rtlibs  ?= kernel32.lib pentium-run-time.lib mmdw.lib mpsplinth.lib 
+           minvcrt.lib ;
+
+# External libraries linked with libraries other than the dylan library
+# (via the DylanLibrary function defined below)
+suplibs ?= kernel32.lib dylan-support.lib ;
+
+libcmt	?= msvcrt.lib ;
+
+# Linker flags and libraries for GUI applications
+# Used in the Linker-Options: LID keyword of DUIM applications.
+guilflags ?= /RELEASE /subsystem:windows,4.0 ;
+
+guilibsmt ?= wsock32.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib 
+             winspool.lib ;
+
+olelibsmt ?= ole32.lib uuid.lib oleaut32.lib $(guilibsmt) ;
+
+comctl32 ?= comctl32.lib ;
+
+ole32	?= ole32.lib ;
+
+#
+# Jambase
+#
+include $(SYSTEM_LIBDIR)/mini-jambase.jam ;
+
+#
+# Pseudo-targets
+#
+
+NotFile all lib dll exe unify-dll unify-exe release dirs clean clean-all ;
+Always clean clean-all ;
+
+#
+# Rules called from jam-build
+#
+
+# In each of the following rules, $(image[1]) contains the name from
+# the Library: header, and $(image[2]) contains the name from
+# the Executable: header (if present).
+
+rule DylanLibrary image : version {
+  # DylanLibrary image : version ;
+  #Echo DylanLibrary $(image) ":" $(version) ;
+
+  # Link a Dylan library as a shared library or executable image.
+
+  local _dll = [ FDLLName $(image) ] ;
+  local _lib = [ FLIBName $(image) ] ;
+  local _exe = [ FEXEName $(image) ] ;
+
+  # Here we save the name of the DLL and import lib for this library.
+  
+  _dll_$(image[1]:L) = $(_dll) ;
+  _lib_$(image[1]:L) = $(_lib) ;
+
+  _system_$(image[1]:L) = $(SYSTEM) ;
+
+  # Shared libraries and executable images
+
+  MakeLocate $(_dll) : $(BINDIR) ;
+  MakeLocate $(_lib) : $(LIBDIR) ;
+  MakeLocate $(_exe) : $(BINDIR) ;
+
+  # Manifest files
+
+  local _dlm = $(_dll).manifest ;
+  local _exm = $(_exe).manifest ;
+
+  # Bleah. If we don't explicitly specify a directory path for the
+  # manifest file, the linker will put it in the same directory as the
+  # target.
+
+  MakeLocate $(_dlm) $(_exm) : $(LOCATE_TARGET:E=$(.)) ;
+
+  # We'll use the library name as the grist to identify referenced
+  # source and object files.
+  
+  SOURCE_GRIST = $(image[1]:L) ;
+
+  # Save the current dylanmakefile.mkf for reference by other libraries
+  # in the event that it later becomes a system library.
+
+  local _mkf = $(image[1]:LS=$(SUFMKF)) ;
+  MakeLocate $(_mkf) : $(LIBDIR) ;
+  if ! $(SYSTEM) {
+    File $(_mkf) : [ FGristFiles $(MKF) ] ;
+    Depends $(_lib) : $(_mkf) ;
+  }
+
+  # If this is the top-level project, make the dll, exe, and clean
+  # targets depend on its build products.
+  
+  if ! $(PARENT) {
+    Depends dll : $(_dll) $(_lib) $(_mkf) ;
+    Depends lib : $(_lib) $(_mkf) ;
+    Depends exe : $(_exe) ;
+
+    Clean clean : $(_dll) $(_dlm) $(_lib) $(_mkf) $(_exe) $(_exm) $(_obj) ;
+  }
+  if ! $(SYSTEM) {
+    Clean clean-all : $(_dll) $(_dlm) $(_lib) $(_mkf) $(_exe) $(_exm) $(_obj) ;
+  }
+
+  # Set the initial libraries
+  if $(image[1]:L) != dylan {
+    LINKLIBS on $(_dll) $(_lib) $(_exe) ?= $(suplibs) ;
+  }
+
+  # Mark the library version
+
+  VERSION on $(_dll) $(_lib) $(_exe) ?= $(version:J=.) ;
+
+  # Determine the entry points
+  local _mangled = [ DFMCMangle $(image[1]:L) ] ;
+  ENTRY on $(_dll) $(_lib) ?= $(_mangled)Dll at 12 ;
+  ENTRY on $(_exe) ?= $(_mangled)Exe ;
+}
+
+rule DylanLibraryFiles image : files {
+  # DylanLibraryFiles image : files ;
+  #Echo DylanLibraryFiles $(image) ":" $(files) ;
+
+  # Link Dylan-derived object files into the resulting shared library.
+  if ! $(SYSTEM) {
+    local _dll = [ FDLLName $(image) ] ;
+    local _lib = [ FLIBName $(image) ] ;
+    local _exe = [ FEXEName $(image) ] ;
+
+    local _dlm = $(_dll).manifest ;
+    local _exm = $(_exe).manifest ;
+    
+    local _obj = [ FGristFiles _glue$(SUFOBJ) $(files:S=$(SUFOBJ)) ] ;
+    local _el  = [ FGristFiles $(files:S=.el) ] ;
+    SEARCH on $(_obj) $(_el) = $(SEARCH_SOURCE) ;
+    
+    if ! $(PARENT) {
+      Clean clean : $(_obj) $(_el) ;
+    }
+    if ! $(SYSTEM) {
+      Clean clean-all : $(_obj) $(_el) ;
+    }
+    
+    LinkDLL $(_dll) $(_dlm) $(_lib) : $(_obj) ;
+    LinkEXE $(_exe) $(_exm) : $(_obj) ;
+  }
+}
+
+rule DylanLibraryLinkerOptions image : options {
+  # DylanLibraryLinkerOptions image : options ;
+  #Echo DylanLibraryLinkerOptions $(image) ":" $(options) ;
+
+  # Add the given options to the link command line of the shared library
+  # and executable images.
+  local _dll = [ FDLLName $(image) ] ;
+  local _lib = [ FLIBName $(image) ] ;
+  local _exe = [ FEXEName $(image) ] ;
+
+  LINKFLAGS on $(_dll) $(_lib) $(_exe) ?= $(LINKFLAGS) ;
+  LINKFLAGS on $(_dll) $(_lib) $(_exe) += $(options) ;
+}
+
+rule DylanLibraryBaseAddress image : address {
+  # DylanLibraryBaseAddress image : address ;
+  #Echo DylanLibraryBaseAddress $(image) ":" $(address) ;
+
+  # Set the base address of the shared library.
+  
+  local _dll = [ FDLLName $(image) ] ;
+  local _lib = [ FLIBName $(image) ] ;
+  BASE on $(_dll) $(_lib) ?= $(address) ;
+}
+
+rule DylanLibraryCLibraries image : libraries {
+  # DylanLibraryCLibraries image : libraries ;
+  #Echo DylanLibraryCLibraries $(image) ":" $(libraries) ;
+
+  # Link C (or other externally-derived) libraries into the shared library.
+  
+  local _dll = [ FDLLName $(image) ] ;
+  local _lib = [ FLIBName $(image) ] ;
+  local _exe = [ FEXEName $(image) ] ;
+
+  _clib_$(image[1]:L) += $(libraries) ;
+  LINKLIBS on $(_dll) $(_lib) $(_exe) += $(libraries) ;
+}
+
+rule DylanLibraryCObjects image : objects {
+  # DylanLibraryCObjects image : objects ;
+  #Echo DylanLibraryCObjects $(image) ":" $(objects) ;
+
+  # Link C (or other externally-derived) object files into the shared library.
+  if ! $(SYSTEM) {
+    local _dll = [ FDLLName $(image) ] ;
+    local _lib = [ FLIBName $(image) ] ;
+    local _exe = [ FEXEName $(image) ] ;
+
+    local _dlm = $(_dll).manifest ;
+    local _exm = $(_exe).manifest ;
+    
+    local _obj = [ FGristFiles $(objects) ] ;
+    SEARCH on $(_obj) = $(SEARCH_SOURCE) ;
+    LinkDLL $(_dll) $(_dlm) $(_lib) : $(_obj) ;
+    LinkEXE $(_exe) $(_exm) : $(_obj) ;
+  }
+}
+
+rule DylanLibraryCSources image : sources {
+  # DylanLibraryCSources image : sources ;
+  #Echo DylanLibraryCSources $(image) ":" $(sources) ;
+
+  # Link C source files into the shared library.
+  if ! $(SYSTEM) {
+    local _dll = [ FDLLName $(image) ] ;
+    local _lib = [ FLIBName $(image) ] ;
+    local _exe = [ FEXEName $(image) ] ;
+
+    local _dlm = $(_dll).manifest ;
+    local _exm = $(_exe).manifest ;
+    
+    local _i ;
+    for _i in [ FGristFiles $(sources) ] {
+      SEARCH on $(_i) = $(SEARCH_SOURCE) ;
+      local _obj = [ FGristFiles $(_i:S=$(SUFOBJ)) ] ;
+      MakeLocate $(_obj) : $(LOCATE_TARGET) ;
+      
+      Cc $(_obj) : $(_i) ;
+      
+      LinkDLL $(_dll) $(_dlm) $(_lib) : $(_obj) ;
+      LinkEXE $(_exe) $(_exm) : $(_obj) ;
+    }
+  }
+}
+
+rule DylanLibraryCHeaders image : headers {
+  # DylanLibraryCHeaders image : headers ;
+  #Echo DylanLibraryCHeaders $(image) ":" $(headers) ;
+
+  # Mark the shared library as depending on the given header files.
+  # TODO: The original build-system didn't do anything with this either.
+}
+
+rule DylanLibraryRCFiles image : rcfiles {
+  # DylanLibraryRCFiles image : rcfiles ;
+  #Echo DylanLibraryRCFiles $(image) ":" $(rcfiles) ;
+  
+  # Link Win32 resource files into the shared library and executable.
+  if ! $(SYSTEM) {
+    local _dll = [ FDLLName $(image) ] ;
+    local _lib = [ FLIBName $(image) ] ;
+    local _exe = [ FEXEName $(image) ] ;
+
+    local _dlm = $(_dll).manifest ;
+    local _exm = $(_exe).manifest ;
+    
+    local _rc ;
+    for _rc in [ FGristFiles $(rcfiles) ] {
+      SEARCH on $(_rc) = $(SEARCH_SOURCE) ;
+      
+      local _res = [ FGristFiles $(_rc:S=$(SUFRES)) ] ;
+      MakeLocate $(_res) : $(LOCATE_TARGET) ;
+      
+      RC $(_res) : $(_rc) ;
+
+      LinkDLL $(_dll) $(_dlm) $(_lib) : $(_res) ;
+      LinkEXE $(_exe) $(_exm) : $(_res) ;
+    }
+  }
+}
+
+rule DylanLibraryJamIncludes image : includes {
+  # DylanLibraryJamIncludes image : includes ;
+  
+  Echo Ignoring Jam include file(s) $(includes) ;
+}
+
+rule DylanLibraryUses image : library : dir {
+  # DylanLibraryUses image : library : dir ;
+  #Echo DylanLibraryUses $(image) ":" $(library) ":" $(dir) ;
+
+  # Link other Dylan libraries into the shared library.
+  
+  local _dll = [ FDLLName $(image) ] ;
+  local _exe = [ FEXEName $(image) ] ;
+
+  if ! $(_lib_$(library:L)) {
+    local PARENT = $(image[1]:L) ;
+
+    if $(dir) = system || $(SYSTEM) {
+      # This is a system library; read $(SYSTEM_LIBDIR)/$(library:L).mkf
+
+      local SYSTEM = true ;
+      local LIBDIR = $(SYSTEM_LIBDIR) ;
+      local BINDIR = $(SYSTEM_BINDIR) ;
+      
+      local SEARCH_SOURCE LOCATE_SOURCE LOCATE_TARGET = $(SYSTEM_LIBDIR) ;
+      local SOURCE_GRIST ;
+      
+      local _mkf = $(library:LS=$(SUFMKF)) ;
+      SEARCH on $(_mkf) ?= $(SYSTEM_LIBDIR) ;
+      IncludeMKF $(_mkf) ;
+    } else {
+      # Another personal library; read its mkf from its build directory.
+	
+      local SEARCH_SOURCE LOCATE_SOURCE LOCATE_TARGET
+        = $(dir:R=$(LOCATE_TARGET:E=$(.))) ;
+      local SOURCE_GRIST ;
+      
+      local LIBDIR BINDIR ;
+      {
+	local _lib = lib ;
+	local _bin = bin ;
+
+	LIBDIR = $(_lib:P=$(PERSONAL_ROOT:E=$(LOCATE_TARGET:P))) ;
+	BINDIR = $(_bin:P=$(PERSONAL_ROOT:E=$(LOCATE_TARGET:P))) ;
+      }
+
+      local _mkf = $(MKF:G=$(library:L)) ;
+      SEARCH on $(_mkf) ?= $(SEARCH_SOURCE) ;
+      IncludeMKF $(_mkf) ;
+    }
+  }
+
+  DylanLibraryClosure $(image) : $(library:L) ;
+}
+
+rule DylanLibraryClosure image : libraries {
+  local _dll = [ FDLLName $(image) ] ;
+  local _lib = [ FLIBName $(image) ] ;
+  local _exe = [ FEXEName $(image) ] ;
+
+  local _i ;
+  for _i in $(libraries) {
+    if ! $(_i) in $(_use_$(image[1]:L)) {
+      _use_$(image[1]:L) += $(_i) ;
+      Depends $(_dll) : $(_lib_$(_i)) ;
+      NEEDLIBS on $(_dll) $(_lib) $(_exe) += $(_lib_$(_i)) ;
+      LINKLIBS on $(_dll) $(_lib) $(_exe) += $(_clib_$(_i)) ;
+
+      if $(PERSONAL_ROOT) {
+	Depends $(_exe) : $(_dll_$(_i)) ;
+      } else if ! $(_system_$(_i)) {
+	local _xdll = [ FGristFiles $(_dll_$(_i)) ] ;
+	File $(_xdll) : $(_dll_$(_i)) ;
+	MakeLocate $(_xdll) : $(BINDIR) ;
+	Depends $(_exe) : $(_xdll) ;
+      }
+
+      DylanLibraryClosure $(image) : $(_use_$(_i)) ;
+    }
+  }
+}
+
+#
+# Build rules and actions
+#
+
+actions Cc
+{
+  $(CC) /c /Fo"$(<)" $(CCFLAGS) $(CCDEFS) $(CCHDRS) "$(>)"
+}
+
+rule LinkDLL {
+  Depends $(<) : $(>) ;
+}
+
+actions together LinkDLL bind NEEDLIBS {
+  $(LINK) /DLL /OUT:"$(<[1])" /MANIFESTFILE:"$(<[2])" /IMPLIB:"$(<[3])" /LIBPATH:"$(LIBPATH)" $(LINKFLAGS) /BASE:$(BASE) /VERSION:$(VERSION) /ENTRY:$(ENTRY) @"$(>:Q@)" @"$(NEEDLIBS:Q@)" $(LINKLIBS) & $(MT) -manifest "$(<[2])" -outputresource:"$(<[1])";2
+}
+
+rule LinkEXE {
+  Depends $(<) : $(>) ;
+}
+
+actions together LinkEXE bind NEEDLIBS {
+  $(LINK) /RELEASE /OUT:"$(<[1])" /MANIFESTFILE:"$(<[2])" /SUBSYSTEM:CONSOLE,4.0 /LIBPATH:"$(LIBPATH)" $(LINKFLAGS) /VERSION:$(VERSION) /ENTRY:$(ENTRY) @"$(>:Q@)" @"$(NEEDLIBS:Q@)" "$(LINKLIBS)" & $(MT) -manifest "$(<[2])" -outputresource:"$(<[1])";1 
+}
+
+rule RC {
+  Depends $(<) : $(>) ;
+}
+
+actions RC {
+  $(RC) /r /dWIN32 /d_WIN32 /dWINVER=0x0400 /FO "$(<)" "$(>)"
+}
+
+#
+# Utility rules
+#
+
+rule FDLLName {
+  if $(<[2]) {
+    return $(<[2]:S=$(SUFDLL)) ;
+  } else {
+    return $(<[1]:S=$(SUFDLL)) ;
+  }
+}
+
+rule FLIBName {
+  if $(<[2]) {
+    return $(<[2]:S=$(SUFLIB)) ;
+  } else {
+    return $(<[1]:S=$(SUFLIB)) ;
+  }
+}
+
+rule FEXEName {
+  if $(<[2]) {
+    return $(<[2]:S=$(SUFEXE)) ;
+  } else {
+    return $(<[1]:S=$(SUFEXE)) ;
+  }
+}
+



More information about the chatter mailing list