In addition, move the .scons directory to a subdirectory of the build
directory. This makes all build artifacts not installed to '#' live under the
build directory.
1) Changed default install directory
2) C++ driver is now an optional feature that can be installed
3) Enterprise dlls are now installed for enterprise builds
Note: Enterprise is only supported for x64 2008R2+ builds
Make the location of experimental-libraries.cc and libraries.cc
match the location where scons creates them. Run the same Python
script that scons uses to create the files.
Use <v8.h> as include path for includes of "third_party/v8/include/v8.h",
adapt Visual Studio project files to include the required path, move
includes in mongo/scripting/v8* into style guide order, build Visual Studio
output files for V8 in separate directories so that SpiderMonkey and V8
builds can be run at the same time and to prevent link errors, tell
.gitignore to ignore these new directories.
This commit makes the Visual Studio builds require Python to be installed.
Add Pre-Build Events to Visual Studio projects to run the same Python
scripts that the scons build runs to create src/mongo/base/error_codes.cpp,
src/mongo/base/error_codes.h, src/mongo/db/auth/action_type.h and
src/mongo/db/auth/action_type.cpp.
Several changes to make Visual Studio match scons behavior more closely.
Build SpiderMonkey from source in every executable that uses it so there
is no dependency on separately downloaded pre-built .lib files. Make debug
builds statically link the C runtime so there is no dependency on external
C runtime DLLs. This is required for the Visual Studio debug build to work
with IAT hooking. Use both the platform and configuration names (e.g. x64
Release) for the output directory structure so that switching between build
types doesn't require recompiling everything. Make output directories be
relative to the project file instead of the solution file so that projects
that are included in more than one solution do not conflict across
solutions. Rename db.vcxproj* to mongod.vcxproj* and rename dbgrid.vcxproj*
to mongos.vcxproj* to make the files easier to find and associate with their
executables. Add solution files mongod.sln and mongos.sln to make it easier
to build individual executables. Organize filters to model the directory
layout to make it easier to find files, break up the db filter into
alphabetical groups, use the same pattern for mongod.exe and test.exe to
make it easier to switch between projects without getting lost. Remove some
non-existent files from project file lists.
This patch is a reorganization of our build files, which brings them slightly
closer in line with standard SCons organization.
In particular, the SConstruct file sets up the various "build environment"
objects, by examining the local system and command line parameters. Then, it
delegates to some SConscript files, which describe build rules, like how to
compile "mongod" from source.
Typically, you would create several SConscript files for a project this large,
after breaking the project into logical sub projects, such as "platform
abstraction", "data manager", "query optimizer", etc. That will be future work.
For now, we only separate out the special rules for executing smoke tests into
SConscript.smoke. Pretty much all other build rules are in src/mongo/SConscript.
"tools" are placed in site_scons/site_tools.
This patch also includes better support for building and tracking dependencies
among static libraries ("libdeps" and "MergeLibrary"), and some incumbent, minor
restructuring.
This patch introduces a "warning" message from SCons about framework.o having
two rules that generate it. It is harmless, for now, and will be removed in
future work.
Future work also includes eliminating use of the SCons "Glob" utility, and
restructuring the source code into sensible components.
CR: eliot
http://codereview.10gen.com/7232243/
Still to ignore the two autogenerated files, /src/mongo/shell/mongo.cpp and
/src/mongo/shell/mongo-server.cpp.