summaryrefslogtreecommitdiff
path: root/doc/user/variants.in
diff options
context:
space:
mode:
Diffstat (limited to 'doc/user/variants.in')
-rw-r--r--doc/user/variants.in151
1 files changed, 0 insertions, 151 deletions
diff --git a/doc/user/variants.in b/doc/user/variants.in
deleted file mode 100644
index dc3315d..0000000
--- a/doc/user/variants.in
+++ /dev/null
@@ -1,151 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
-<!--
-
-=head1 Variant builds
-
-=head2 Variations on a theme
-
-Other variations of this model are possible. For example, you might decide
-that you want to separate out your include files into platform dependent and
-platform independent files. In this case, you'd have to define an
-alternative to C<$INCLUDE> for platform-dependent files. Most F<Conscript>
-files, generating purely platform-independent include files, would not have
-to change.
-
-You might also want to be able to compile your whole system with debugging
-or profiling, for example, enabled. You could do this with appropriate
-command line options, such as C<DEBUG=on>. This would then be translated
-into the appropriate platform-specific requirements to enable debugging
-(this might include turning off optimization, for example). You could
-optionally vary the name space for these different types of systems, but, as
-we'll see in the next section, it's not B<essential> to do this, since Cons
-is pretty smart about rebuilding things when you change options.
-
--->
-
- <para>
-
- The &variant_dir; keyword argument of
- the &SConscript; function provides everything
- we need to show how easy it is to create
- variant builds using &SCons;.
- Suppose, for example, that we want to
- build a program for both Windows and Linux platforms,
- but that we want to build it in a shared directory
- with separate side-by-side build directories
- for the Windows and Linux versions of the program.
-
- </para>
-
- <scons_example name="ex_variants">
- <file name="SConstruct" printme="1">
- platform = ARGUMENTS.get('OS', Platform())
-
- include = "#export/$PLATFORM/include"
- lib = "#export/$PLATFORM/lib"
- bin = "#export/$PLATFORM/bin"
-
- env = Environment(PLATFORM = platform,
- BINDIR = bin,
- INCDIR = include,
- LIBDIR = lib,
- CPPPATH = [include],
- LIBPATH = [lib],
- LIBS = 'world')
-
- Export('env')
-
- env.SConscript('src/SConscript', variant_dir='build/$PLATFORM')
- </file>
- <directory name="src"></directory>
- <directory name="src/hello"></directory>
- <directory name="src/world"></directory>
- <file name="src/SConscript">
- Import('env')
- SConscript('hello/SConscript')
- SConscript('world/SConscript')
- </file>
- <file name="src/hello/SConscript">
- Import('env')
- hello = env.Program('hello.c')
- env.Install('$BINDIR', hello)
- </file>
- <file name="src/hello/hello.c">
- #include "world.h"
- int main(int argc, char *argv[]) { printf "hello.c\n"; world(); }
- </file>
- <file name="src/world/SConscript">
- Import('env')
- world = env.Library('world.c')
- env.Install('$LIBDIR', world)
- env.Install('$INCDIR', 'world.h')
- </file>
- <file name="src/world/world.h">
- #define STRING "world.h"
- extern int world();
- </file>
- <file name="src/world/world.c">
- int world() { printf "world.c\n"; }
- </file>
- </scons_example>
-
- <para>
-
- This SConstruct file,
- when run on a Linux system, yields:
-
- </para>
-
- <scons_output example="ex_variants" os="posix">
- <scons_output_command>scons -Q OS=linux</scons_output_command>
- </scons_output>
-
- <para>
-
- The same SConstruct file on Windows would build:
-
- </para>
-
- <scons_output example="ex_variants" os="win32">
- <scons_output_command>scons -Q OS=windows</scons_output_command>
- </scons_output>
-
- <!--
-
- <scons_example name="ex_var2">
- <file name="SConstruct" printme="1">
- env = Environment(OS = ARGUMENTS.get('OS'))
- for os in ['newell', 'post']:
- SConscript('src/SConscript', variant_dir='build/' + os)
- </file>
- </scons_example>
-
- <scons_output example="ex_var2">
- <scons_output_command>scons -Q</scons_output_command>
- </scons_output>
-
- -->