From 079f408e8ef5233f3899ad7df423a058b989448b Mon Sep 17 00:00:00 2001
From: Steven Knight <knight@baldmt.com>
Date: Fri, 30 Jul 2004 13:05:28 +0000
Subject: Move LIB{PREFIX,SUFFIX} definitions from the Platform modules to
 individual Tool modules.  (Chris Murray)

---
 doc/man/scons.1                 | 10 ++++++++++
 src/CHANGES.txt                 |  4 ++++
 src/engine/SCons/Tool/ar.py     |  2 ++
 src/engine/SCons/Tool/mslib.py  |  2 ++
 src/engine/SCons/Tool/mslink.py |  4 ++--
 src/engine/SCons/Tool/msvc.py   |  4 ++++
 src/engine/SCons/Tool/sgiar.py  |  2 ++
 src/engine/SCons/Tool/sunar.py  |  2 ++
 src/engine/SCons/Tool/tlib.py   |  2 ++
 9 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/doc/man/scons.1 b/doc/man/scons.1
index b3e4ad4..9dff843 100644
--- a/doc/man/scons.1
+++ b/doc/man/scons.1
@@ -5143,6 +5143,11 @@ env = Environment(LINKCOM="my_linker $_LIBDIRFLAGS $_LIBFLAGS -o $TARGET $SOURCE
 
 .IP LIBPREFIX
 The prefix used for (static) library file names.
+A default value is set for each platform
+(posix, win32, os2, etc.),
+but the value is overridden by individual tools
+(ar, mslib, sgiar, sunar, tlib, etc.)
+to reflect the names of the libraries they create.
 
 .IP LIBPREFIXES
 An array of legal prefixes for library file names.
@@ -5174,6 +5179,11 @@ env = Environment(LINKCOM="my_linker $_LIBDIRFLAGS $_LIBFLAGS -o $TARGET $SOURCE
 
 .IP LIBSUFFIX 
 The suffix used for (static) library file names.
+A default value is set for each platform
+(posix, win32, os2, etc.),
+but the value is overridden by individual tools
+(ar, mslib, sgiar, sunar, tlib, etc.)
+to reflect the names of the libraries they create.
 
 .IP LIBSUFFIXES
 An array of legal suffixes for library file names.
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index 9447c52..5042043 100644
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -158,6 +158,10 @@ RELEASE 0.96 - XXX
     variables for when different compilers/flags/etc. must be specified
     for different Fortran versions.
 
+  - Have individual tools that create libraries override the default
+    $LIBPREFIX and $LIBSUFFIX values set by the platform.  This makes
+    it easier to use Microsoft Visual Studio tools on a CygWin platform.
+
   From Gary Oberbrunner:
 
   - Add a --debug=presub option to print actions prior to substitution.
diff --git a/src/engine/SCons/Tool/ar.py b/src/engine/SCons/Tool/ar.py
index 0522adc..ab232ee 100644
--- a/src/engine/SCons/Tool/ar.py
+++ b/src/engine/SCons/Tool/ar.py
@@ -51,6 +51,8 @@ def generate(env):
     env['RANLIB']      = ranlib
     env['RANLIBFLAGS'] = SCons.Util.CLVar('')
     env['ARCOM']       = arcom
+    env['LIBPREFIX']   = 'lib'
+    env['LIBSUFFIX']   = '.a'
 
 def exists(env):
     return env.Detect('ar')
diff --git a/src/engine/SCons/Tool/mslib.py b/src/engine/SCons/Tool/mslib.py
index 1075c56..45712dc 100644
--- a/src/engine/SCons/Tool/mslib.py
+++ b/src/engine/SCons/Tool/mslib.py
@@ -60,6 +60,8 @@ def generate(env):
     env['AR']          = 'lib'
     env['ARFLAGS']     = SCons.Util.CLVar('/nologo')
     env['ARCOM']       = "${TEMPFILE('$AR $ARFLAGS /OUT:$TARGET $SOURCES')}"
+    env['LIBPREFIX']   = ''
+    env['LIBSUFFIX']   = '.lib'
 
 def exists(env):
     try:
diff --git a/src/engine/SCons/Tool/mslink.py b/src/engine/SCons/Tool/mslink.py
index c44e62b..0c7b7dc 100644
--- a/src/engine/SCons/Tool/mslink.py
+++ b/src/engine/SCons/Tool/mslink.py
@@ -143,7 +143,7 @@ def generate(env):
     env['LINK']        = 'link'
     env['LINKFLAGS']   = SCons.Util.CLVar('/nologo')
     env['_PDB'] = pdbGenerator
-    env['LINKCOM'] = '${TEMPFILE("$LINK $LINKFLAGS /OUT:$TARGET $( $_LIBDIRFLAGS $) $_LIBFLAGS $_PDB $SOURCES")}'
+    env['LINKCOM'] = '${TEMPFILE("$LINK $LINKFLAGS /OUT:$TARGET.win32 $( $_LIBDIRFLAGS $) $_LIBFLAGS $_PDB $SOURCES.win32")}'
     env.Append(PROGEMITTER = [prog_emitter])
     env['LIBDIRPREFIX']='/LIBPATH:'
     env['LIBDIRSUFFIX']=''
@@ -160,7 +160,7 @@ def generate(env):
     env['REGSVRACTION'] = regServerCheck
     env['REGSVR'] = os.path.join(SCons.Platform.win32.get_system_root(),'System32','regsvr32')
     env['REGSVRFLAGS'] = '/s '
-    env['REGSVRCOM'] = '$REGSVR $REGSVRFLAGS $TARGET'
+    env['REGSVRCOM'] = '$REGSVR $REGSVRFLAGS ${TARGET.win32}'
 
     try:
         version = SCons.Tool.msvs.get_default_visualstudio_version(env)
diff --git a/src/engine/SCons/Tool/msvc.py b/src/engine/SCons/Tool/msvc.py
index 5ab3779..ae67fdc 100644
--- a/src/engine/SCons/Tool/msvc.py
+++ b/src/engine/SCons/Tool/msvc.py
@@ -445,6 +445,10 @@ def generate(env):
     env['RCFLAGS'] = SCons.Util.CLVar('')
     env['RCCOM'] = '$RC $_CPPDEFFLAGS $_CPPINCFLAGS $RCFLAGS /fo$TARGET $SOURCES'
     env['BUILDERS']['RES'] = res_builder
+    env['OBJPREFIX']      = ''
+    env['OBJSUFFIX']      = '.obj'
+    env['SHOBJPREFIX']    = '$OBJPREFIX'
+    env['SHOBJSUFFIX']    = '$OBJSUFFIX'
 
     try:
         version = SCons.Tool.msvs.get_default_visualstudio_version(env)
diff --git a/src/engine/SCons/Tool/sgiar.py b/src/engine/SCons/Tool/sgiar.py
index 1409d03..010f090 100644
--- a/src/engine/SCons/Tool/sgiar.py
+++ b/src/engine/SCons/Tool/sgiar.py
@@ -55,6 +55,8 @@ def generate(env):
     env['SHLINK']      = '$LINK'
     env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared')
     env['SHLINKCOM']   = '$SHLINK $SHLINKFLAGS -o $TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
+    env['LIBPREFIX']   = 'lib'
+    env['LIBSUFFIX']   = '.a'
 
 def exists(env):
     return env.Detect('CC') or env.Detect('ar')
diff --git a/src/engine/SCons/Tool/sunar.py b/src/engine/SCons/Tool/sunar.py
index 36a6984..66053e7 100644
--- a/src/engine/SCons/Tool/sunar.py
+++ b/src/engine/SCons/Tool/sunar.py
@@ -54,6 +54,8 @@ def generate(env):
     env['SHLINK']      = '$LINK'
     env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -G')
     env['SHLINKCOM']   = '$SHLINK $SHLINKFLAGS -o $TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'
+    env['LIBPREFIX']   = 'lib'
+    env['LIBSUFFIX']   = '.a'
 
 def exists(env):
     return env.Detect('CC') or env.Detect('ar')
diff --git a/src/engine/SCons/Tool/tlib.py b/src/engine/SCons/Tool/tlib.py
index 4a70c14..ec80a21 100644
--- a/src/engine/SCons/Tool/tlib.py
+++ b/src/engine/SCons/Tool/tlib.py
@@ -40,6 +40,8 @@ def generate(env):
     env['AR']          = 'tlib'
     env['ARFLAGS']     = SCons.Util.CLVar('')
     env['ARCOM']       = '$AR $TARGET $ARFLAGS /a $SOURCES'
+    env['LIBPREFIX']   = ''
+    env['LIBSUFFIX']   = '.lib'
 
 def exists(env):
     return SCons.Tool.bcc32.findIt('tlib', env)
-- 
cgit v0.12