summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--site_scons/site_tools/mergelib.py24
-rw-r--r--site_scons/site_tools/mergelibposix.py42
-rw-r--r--site_scons/site_tools/mergelibwin.py34
-rw-r--r--src/mongo/SConscript2
4 files changed, 17 insertions, 85 deletions
diff --git a/site_scons/site_tools/mergelib.py b/site_scons/site_tools/mergelib.py
index 8c63d3aacce..d8fcf3347ba 100644
--- a/site_scons/site_tools/mergelib.py
+++ b/site_scons/site_tools/mergelib.py
@@ -6,19 +6,27 @@ The following rule creates a library "mylib" whose contents are the contents of
be distributed to customers.
MergeLibrary('mylib', ['firstlib', 'secondlib'])
-MergeSharedLibrary('mylib', ['firstlib', 'secondlib'])
-This file provides the platform-independent tool, which just selects and imports
-the platform-specific tool providing MergeLibrary and MergeSharedLibrary.
"""
-import sys
+import libdeps
+from SCons.Action import Action
+from SCons.Builder import Builder
+
+def merge_library_method(env, target, source, LIBDEPS=None, **kwargs):
+ return env._MergeLibrary(target, [], LIBDEPS=source, **kwargs)
def exists( env ):
return True
def generate( env ):
- if sys.platform == 'win32':
- env.Tool( 'mergelibwin' )
- else:
- env.Tool( 'mergelibposix' )
+ merge_library = Builder(
+ action='$ARCOM $_LIBDEPS_OBJS',
+ src_prefix='$LIBPREFIX',
+ src_suffix='$LIBSUFFIX',
+ prefix='$LIBPREFIX',
+ suffix='$LIBSUFFIX',
+ emitter=libdeps.libdeps_emitter )
+ libdeps.update_scanner( merge_library )
+ env['BUILDERS']['_MergeLibrary'] = merge_library
+ env.AddMethod( merge_library_method, 'MergeLibrary' )
diff --git a/site_scons/site_tools/mergelibposix.py b/site_scons/site_tools/mergelibposix.py
deleted file mode 100644
index d93dbaf3ae5..00000000000
--- a/site_scons/site_tools/mergelibposix.py
+++ /dev/null
@@ -1,42 +0,0 @@
-"""Builder for static libraries composed of the contents of other static libraries.
-
-The following rule creates a library "mylib" whose contents are the contents of
-"firstlib", "secondlib", and all LIBDEPS dependencies of "firstlib" and
-"secondlib". This creates self-contained static and shared libraries that can
-be distributed to customers.
-
-MergeLibrary('mylib', ['firstlib', 'secondlib'])
-MergeSharedLibrary('mylib', ['firstlib', 'secondlib'])
-
-This implementation is for posix systems whose linkers can generate "relocatable
-objects" (usually with the -r option).
-"""
-
-import libdeps
-from SCons.Action import Action
-from SCons.Builder import Builder
-
-def merge_library_method( env, target, source, LIBDEPS=None, **kwargs ):
- robj_name = env.subst( '${TARGET}-mergelib', target=target, source=source )
- robj = env.RelocatableObject( robj_name, [], LIBDEPS=source, **kwargs )
- return env.Library( target, robj, LIBDEPS=LIBDEPS or [], **kwargs )
-
-def merge_shared_library_method( env, target, source, LIBDEPS=None, **kwargs ):
- robj_name = env.subst( '${TARGET}-mergeshlib', target=target, source=source )
- robj = env.RelocatableObject( robj_name, [], LIBDEPS=source, **kwargs )
- return env.SharedLibrary( target, robj, LIBDEPS=LIBDEPS or [], **kwargs )
-
-def exists( env ):
- return True
-
-def generate( env ):
- env['_RELOBJDEPSFLAGS'] = '$RELOBJ_LIBDEPS_START ${_concat("$RELOBJ_LIBDEPS_ITEM ", __env__.subst(_LIBDEPS, target=TARGET, source=SOURCE), "", __env__, target=TARGET, source=SOURCE)} $RELOBJ_LIBDEPS_END'
- env['RELOBJCOM'] = 'ld -o $TARGET $RELOBJFLAGS -r $SOURCES $_RELOBJDEPSFLAGS'
- relobj_builder = Builder( action='$RELOBJCOM',
- prefix="$OBJPREFIX",
- suffix="$OBJSUFFIX",
- emitter=libdeps.libdeps_emitter )
- libdeps.update_scanner( relobj_builder )
- env['BUILDERS']['RelocatableObject'] = relobj_builder
- env.AddMethod( merge_library_method, 'MergeLibrary' )
- env.AddMethod( merge_shared_library_method, 'MergeSharedLibrary' )
diff --git a/site_scons/site_tools/mergelibwin.py b/site_scons/site_tools/mergelibwin.py
deleted file mode 100644
index 680ccdd5b9a..00000000000
--- a/site_scons/site_tools/mergelibwin.py
+++ /dev/null
@@ -1,34 +0,0 @@
-"""Builder for static libraries composed of the contents of other static libraries.
-
-The following rule creates a library "mylib" whose contents are the contents of
-"firstlib", "secondlib", and all LIBDEPS dependencies of "firstlib" and
-"secondlib". This creates self-contained static and shared libraries that can
-be distributed to customers.
-
-MergeLibrary('mylib', ['firstlib', 'secondlib'])
-MergeSharedLibrary('mylib', ['firstlib', 'secondlib'])
-
-This implementation is for win32 systems using msvc.
-"""
-
-import libdeps
-from SCons.Action import Action
-from SCons.Builder import Builder
-
-def merge_library_method( env, target, source, LIBDEPS=None, **kwargs ):
- return env._MergeLibrary( target, [], LIBDEPS=source, **kwargs )
-
-def exists( env ):
- return True
-
-def generate( env ):
- merge_library = Builder(
- action='${TEMPFILE("$AR $ARFLAGS /OUT:$TARGET $_LIBDEPS")}',
- src_prefix='$LIBPREFIX',
- src_suffix='$LIBSUFFIX',
- prefix='$LIBPREFIX',
- suffix='$LIBSUFFIX',
- emitter=libdeps.libdeps_emitter )
- libdeps.update_scanner( merge_library )
- env['BUILDERS']['_MergeLibrary'] = merge_library
- env.AddMethod( merge_library_method, 'MergeLibrary' )
diff --git a/src/mongo/SConscript b/src/mongo/SConscript
index b55ef153173..ad0531b7525 100644
--- a/src/mongo/SConscript
+++ b/src/mongo/SConscript
@@ -362,7 +362,7 @@ clientLib = env.MergeLibrary( "mongoclient", ["allclient"] )
env.Install( '#/', clientLib )
clientLibName = str( clientLib[0] )
if has_option( "sharedclient" ):
- sharedClientLibName = str( env.MergeSharedLibrary( "mongoclient", ["allclient"] )[0] )
+ sharedClientLibName = str( env.SharedLibrary( "mongoclient", [], LIBDEPS=["allclient"], _LIBDEPS='$_LIBDEPS_OBJS' )[0] )
clientEnv = env.Clone();
clientEnv.Append( CPPPATH=["../"] )