From f7e5d2b46b03cc4bc09c38f7e0873378bb9c3b78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sun, 21 Jun 2015 07:55:15 +0200 Subject: Imported Upstream version 2.3.5 --- LICENSE | 2 +- QMTest/README.txt | 4 +- QMTest/SConscript | 2 +- QMTest/TestRuntest.py | 4 +- QMTest/TestSCons.py | 10 +- QMTest/TestSConsMSVS.py | 6 +- QMTest/TestSCons_time.py | 4 +- QMTest/TestSConsign.py | 4 +- QMTest/scons_tdb.py | 4 +- SConstruct | 69 +- bin/SConsDoc.py | 8 +- bin/import-test.py | 4 +- bin/linecount.py | 4 +- bin/restore.sh | 28 +- bin/update-release-info.py | 4 +- bootstrap.py | 2 +- doc/SConscript | 98 +- doc/design/SConstruct | 2 +- doc/design/acks.xml | 2 +- doc/design/bground.xml | 2 +- doc/design/chtml.xsl | 2 +- doc/design/copyright.xml | 2 +- doc/design/engine.xml | 2 +- doc/design/goals.xml | 2 +- doc/design/html.xsl | 2 +- doc/design/install.xml | 2 +- doc/design/intro.xml | 2 +- doc/design/issues.xml | 2 +- doc/design/main.xml | 2 +- doc/design/native.xml | 2 +- doc/design/overview.xml | 2 +- doc/design/pdf.xsl | 2 +- doc/design/scons_title.xsl | 2 +- doc/design/summary.xml | 2 +- doc/developer/SConstruct | 2 +- doc/developer/architecture.xml | 2 +- doc/developer/branches.xml | 2 +- doc/developer/copyright.xml | 2 +- doc/developer/cycle.xml | 2 +- doc/developer/main.xml | 2 +- doc/developer/packaging.xml | 2 +- doc/developer/preface.xml | 2 +- doc/developer/sourcetree.xml | 2 +- doc/developer/testing.xml | 2 +- doc/generated/builders.gen | 528 +++++---- doc/generated/examples/troubleshoot_Dump_2.xml | 4 +- doc/generated/functions.gen | 15 +- doc/generated/tools.gen | 27 +- doc/generated/tools.mod | 6 +- doc/generated/variables.gen | 803 ++++++++------ doc/generated/variables.mod | 36 +- doc/man/SConstruct | 2 +- doc/man/epub.xsl | 2 +- doc/man/html.xsl | 2 +- doc/man/pdf.xsl | 2 +- doc/man/scons-time.xml | 5 +- doc/man/scons.xml | 9 +- doc/man/scons_title.xsl | 2 +- doc/man/sconsign.xml | 5 +- doc/python10/SConstruct | 2 +- doc/python10/abstract.xml | 2 +- doc/python10/acks.xml | 2 +- doc/python10/copyright.xml | 2 +- doc/python10/design.xml | 2 +- doc/python10/future.xml | 2 +- doc/python10/install.xml | 2 +- doc/python10/intro.xml | 2 +- doc/python10/main.xml | 2 +- doc/python10/process.xml | 2 +- doc/python10/summary.xml | 2 +- doc/reference/Alias.xml | 2 +- doc/reference/CFile.xml | 2 +- doc/reference/CXXFile.xml | 2 +- doc/reference/Command.xml | 2 +- doc/reference/Install.xml | 2 +- doc/reference/InstallAs.xml | 2 +- doc/reference/Library.xml | 2 +- doc/reference/Object.xml | 2 +- doc/reference/PCH.xml | 2 +- doc/reference/PDF.xml | 2 +- doc/reference/PostScript.xml | 2 +- doc/reference/Program.xml | 2 +- doc/reference/RES.xml | 2 +- doc/reference/SConstruct | 2 +- doc/reference/SharedLibrary.xml | 2 +- doc/reference/SharedObject.xml | 2 +- doc/reference/StaticLibrary.xml | 2 +- doc/reference/StaticObject.xml | 2 +- doc/reference/chtml.xsl | 2 +- doc/reference/copyright.xml | 2 +- doc/reference/errors.xml | 2 +- doc/reference/html.xsl | 2 +- doc/reference/main.xml | 2 +- doc/reference/pdf.xsl | 2 +- doc/reference/preface.xml | 2 +- doc/reference/scons_title.xsl | 2 +- doc/scons.mod | 2 +- doc/user/README | 2 +- doc/user/SConstruct | 2 +- doc/user/actions.xml | 2 +- doc/user/add-method.xml | 2 +- doc/user/alias.xml | 2 +- doc/user/ant.xml | 2 +- doc/user/build-install.xml | 2 +- doc/user/builders-built-in.xml | 2 +- doc/user/builders-commands.xml | 2 +- doc/user/builders-writing.xml | 4 +- doc/user/builders.xml | 2 +- doc/user/caching.xml | 2 +- doc/user/chtml.xsl | 2 +- doc/user/command-line.xml | 2 +- doc/user/copyright.xml | 2 +- doc/user/depends.xml | 2 +- doc/user/environments.xml | 2 +- doc/user/epub.xsl | 2 +- doc/user/errors.xml | 2 +- doc/user/example.xml | 2 +- doc/user/factories.xml | 2 +- doc/user/file-removal.xml | 2 +- doc/user/functions.xml | 2 +- doc/user/gettext.xml | 2 +- doc/user/hierarchy.xml | 2 +- doc/user/html.xsl | 2 +- doc/user/install.xml | 2 +- doc/user/java.xml | 2 +- doc/user/less-simple.xml | 3 +- doc/user/libraries.xml | 4 +- doc/user/main.xml | 6 +- doc/user/make.xml | 2 +- doc/user/mergeflags.xml | 2 +- doc/user/misc.xml | 2 +- doc/user/nodes.xml | 2 +- doc/user/output.xml | 2 +- doc/user/parseconfig.xml | 2 +- doc/user/parseflags.xml | 2 +- doc/user/pdf.xsl | 2 +- doc/user/preface.xml | 2 +- doc/user/python.xml | 2 +- doc/user/repositories.xml | 2 +- doc/user/run.xml | 2 +- doc/user/scanners.xml | 2 +- doc/user/sconf.xml | 2 +- doc/user/scons_title.xsl | 2 +- doc/user/separate.xml | 2 +- doc/user/sideeffect.xml | 2 +- doc/user/simple.xml | 2 +- doc/user/sourcecode.xml | 2 +- doc/user/tasks.xml | 2 +- doc/user/tools.xml | 2 +- doc/user/troubleshoot.xml | 2 +- doc/user/variables.xml | 2 +- doc/user/variants.xml | 2 +- doc/version.xml | 4 +- src/Announce.txt | 51 +- src/CHANGES.txt | 51 +- src/LICENSE.txt | 2 +- src/README.txt | 18 +- src/RELEASE.txt | 72 +- src/engine/SCons/Action.py | 38 +- src/engine/SCons/Action.xml | 2 +- src/engine/SCons/ActionTests.py | 6 +- src/engine/SCons/Builder.py | 8 +- src/engine/SCons/BuilderTests.py | 4 +- src/engine/SCons/CacheDir.py | 4 +- src/engine/SCons/CacheDirTests.py | 4 +- src/engine/SCons/Debug.py | 4 +- src/engine/SCons/Defaults.py | 9 +- src/engine/SCons/Defaults.xml | 2 +- src/engine/SCons/DefaultsTests.py | 4 +- src/engine/SCons/Environment.py | 13 +- src/engine/SCons/Environment.xml | 15 +- src/engine/SCons/EnvironmentTests.py | 14 +- src/engine/SCons/Errors.py | 4 +- src/engine/SCons/ErrorsTests.py | 4 +- src/engine/SCons/Executor.py | 23 +- src/engine/SCons/ExecutorTests.py | 4 +- src/engine/SCons/Job.py | 4 +- src/engine/SCons/JobTests.py | 4 +- src/engine/SCons/Memoize.py | 4 +- src/engine/SCons/MemoizeTests.py | 4 +- src/engine/SCons/Node/Alias.py | 4 +- src/engine/SCons/Node/AliasTests.py | 4 +- src/engine/SCons/Node/FS.py | 86 +- src/engine/SCons/Node/FSTests.py | 30 +- src/engine/SCons/Node/NodeTests.py | 4 +- src/engine/SCons/Node/Python.py | 4 +- src/engine/SCons/Node/PythonTests.py | 4 +- src/engine/SCons/Node/__init__.py | 4 +- src/engine/SCons/Options/BoolOption.py | 4 +- src/engine/SCons/Options/EnumOption.py | 4 +- src/engine/SCons/Options/ListOption.py | 4 +- src/engine/SCons/Options/PackageOption.py | 4 +- src/engine/SCons/Options/PathOption.py | 4 +- src/engine/SCons/Options/__init__.py | 4 +- src/engine/SCons/PathList.py | 4 +- src/engine/SCons/PathListTests.py | 4 +- src/engine/SCons/Platform/PlatformTests.py | 35 +- src/engine/SCons/Platform/__init__.py | 36 +- src/engine/SCons/Platform/__init__.xml | 2 +- src/engine/SCons/Platform/aix.py | 4 +- src/engine/SCons/Platform/cygwin.py | 4 +- src/engine/SCons/Platform/darwin.py | 4 +- src/engine/SCons/Platform/hpux.py | 4 +- src/engine/SCons/Platform/irix.py | 4 +- src/engine/SCons/Platform/os2.py | 4 +- src/engine/SCons/Platform/posix.py | 4 +- src/engine/SCons/Platform/posix.xml | 2 +- src/engine/SCons/Platform/sunos.py | 4 +- src/engine/SCons/Platform/sunos.xml | 2 +- src/engine/SCons/Platform/win32.py | 4 +- src/engine/SCons/Platform/win32.xml | 2 +- src/engine/SCons/SConf.py | 10 +- src/engine/SCons/SConfTests.py | 4 +- src/engine/SCons/SConsign.py | 4 +- src/engine/SCons/SConsignTests.py | 4 +- src/engine/SCons/Scanner/C.py | 4 +- src/engine/SCons/Scanner/CTests.py | 4 +- src/engine/SCons/Scanner/D.py | 4 +- src/engine/SCons/Scanner/Dir.py | 4 +- src/engine/SCons/Scanner/DirTests.py | 4 +- src/engine/SCons/Scanner/Fortran.py | 4 +- src/engine/SCons/Scanner/FortranTests.py | 4 +- src/engine/SCons/Scanner/IDL.py | 4 +- src/engine/SCons/Scanner/IDLTests.py | 4 +- src/engine/SCons/Scanner/LaTeX.py | 4 +- src/engine/SCons/Scanner/LaTeXTests.py | 4 +- src/engine/SCons/Scanner/Prog.py | 29 +- src/engine/SCons/Scanner/ProgTests.py | 39 +- src/engine/SCons/Scanner/RC.py | 4 +- src/engine/SCons/Scanner/RCTests.py | 4 +- src/engine/SCons/Scanner/ScannerTests.py | 4 +- src/engine/SCons/Scanner/__init__.py | 4 +- src/engine/SCons/Scanner/__init__.xml | 2 +- src/engine/SCons/Script/Interactive.py | 4 +- src/engine/SCons/Script/Main.py | 6 +- src/engine/SCons/Script/Main.xml | 2 +- src/engine/SCons/Script/MainTests.py | 4 +- src/engine/SCons/Script/SConsOptions.py | 20 +- src/engine/SCons/Script/SConscript.py | 4 +- src/engine/SCons/Script/SConscript.xml | 2 +- src/engine/SCons/Script/SConscriptTests.py | 4 +- src/engine/SCons/Script/__init__.py | 4 +- src/engine/SCons/Sig.py | 4 +- src/engine/SCons/Subst.py | 4 +- src/engine/SCons/Subst.xml | 2 +- src/engine/SCons/SubstTests.py | 4 +- src/engine/SCons/Taskmaster.py | 4 +- src/engine/SCons/TaskmasterTests.py | 4 +- src/engine/SCons/Tool/386asm.py | 4 +- src/engine/SCons/Tool/386asm.xml | 2 +- src/engine/SCons/Tool/BitKeeper.py | 4 +- src/engine/SCons/Tool/BitKeeper.xml | 2 +- src/engine/SCons/Tool/CVS.py | 4 +- src/engine/SCons/Tool/CVS.xml | 2 +- src/engine/SCons/Tool/DCommon.py | 4 +- src/engine/SCons/Tool/FortranCommon.py | 20 +- src/engine/SCons/Tool/GettextCommon.py | 4 +- src/engine/SCons/Tool/JavaCommon.py | 4 +- src/engine/SCons/Tool/JavaCommonTests.py | 4 +- src/engine/SCons/Tool/MSCommon/__init__.py | 4 +- src/engine/SCons/Tool/MSCommon/arch.py | 4 +- src/engine/SCons/Tool/MSCommon/common.py | 4 +- src/engine/SCons/Tool/MSCommon/netframework.py | 4 +- src/engine/SCons/Tool/MSCommon/sdk.py | 31 +- src/engine/SCons/Tool/MSCommon/vc.py | 4 +- src/engine/SCons/Tool/MSCommon/vs.py | 4 +- src/engine/SCons/Tool/Perforce.py | 4 +- src/engine/SCons/Tool/Perforce.xml | 2 +- src/engine/SCons/Tool/PharLapCommon.py | 4 +- src/engine/SCons/Tool/PharLapCommonTests.py | 4 +- src/engine/SCons/Tool/RCS.py | 4 +- src/engine/SCons/Tool/RCS.xml | 2 +- src/engine/SCons/Tool/SCCS.py | 4 +- src/engine/SCons/Tool/SCCS.xml | 2 +- src/engine/SCons/Tool/Subversion.py | 4 +- src/engine/SCons/Tool/Subversion.xml | 2 +- src/engine/SCons/Tool/ToolTests.py | 4 +- src/engine/SCons/Tool/__init__.py | 21 +- src/engine/SCons/Tool/__init__.xml | 7 +- src/engine/SCons/Tool/aixc++.py | 4 +- src/engine/SCons/Tool/aixc++.xml | 2 +- src/engine/SCons/Tool/aixcc.py | 4 +- src/engine/SCons/Tool/aixcc.xml | 2 +- src/engine/SCons/Tool/aixf77.py | 4 +- src/engine/SCons/Tool/aixf77.xml | 2 +- src/engine/SCons/Tool/aixlink.py | 4 +- src/engine/SCons/Tool/aixlink.xml | 2 +- src/engine/SCons/Tool/applelink.py | 4 +- src/engine/SCons/Tool/applelink.xml | 2 +- src/engine/SCons/Tool/ar.py | 4 +- src/engine/SCons/Tool/ar.xml | 2 +- src/engine/SCons/Tool/as.py | 4 +- src/engine/SCons/Tool/as.xml | 2 +- src/engine/SCons/Tool/bcc32.py | 4 +- src/engine/SCons/Tool/bcc32.xml | 2 +- src/engine/SCons/Tool/c++.py | 4 +- src/engine/SCons/Tool/c++.xml | 2 +- src/engine/SCons/Tool/cc.py | 4 +- src/engine/SCons/Tool/cc.xml | 2 +- src/engine/SCons/Tool/cvf.py | 4 +- src/engine/SCons/Tool/cvf.xml | 2 +- src/engine/SCons/Tool/default.py | 4 +- src/engine/SCons/Tool/default.xml | 2 +- src/engine/SCons/Tool/dmd.py | 16 +- src/engine/SCons/Tool/dmd.xml | 2 +- src/engine/SCons/Tool/docbook/__init__.xml | 2 +- src/engine/SCons/Tool/dvi.py | 4 +- src/engine/SCons/Tool/dvi.xml | 2 +- src/engine/SCons/Tool/dvipdf.py | 4 +- src/engine/SCons/Tool/dvipdf.xml | 2 +- src/engine/SCons/Tool/dvips.py | 4 +- src/engine/SCons/Tool/dvips.xml | 2 +- src/engine/SCons/Tool/f03.py | 4 +- src/engine/SCons/Tool/f03.xml | 2 +- src/engine/SCons/Tool/f08.py | 63 ++ src/engine/SCons/Tool/f08.xml | 311 ++++++ src/engine/SCons/Tool/f77.py | 4 +- src/engine/SCons/Tool/f77.xml | 2 +- src/engine/SCons/Tool/f90.py | 4 +- src/engine/SCons/Tool/f90.xml | 2 +- src/engine/SCons/Tool/f95.py | 4 +- src/engine/SCons/Tool/f95.xml | 2 +- src/engine/SCons/Tool/filesystem.py | 4 +- src/engine/SCons/Tool/fortran.py | 4 +- src/engine/SCons/Tool/fortran.xml | 2 +- src/engine/SCons/Tool/g++.py | 4 +- src/engine/SCons/Tool/g++.xml | 2 +- src/engine/SCons/Tool/g77.py | 4 +- src/engine/SCons/Tool/g77.xml | 2 +- src/engine/SCons/Tool/gas.py | 4 +- src/engine/SCons/Tool/gas.xml | 2 +- src/engine/SCons/Tool/gcc.py | 4 +- src/engine/SCons/Tool/gcc.xml | 2 +- src/engine/SCons/Tool/gdc.py | 14 +- src/engine/SCons/Tool/gdc.xml | 2 +- src/engine/SCons/Tool/gettext.py | 4 +- src/engine/SCons/Tool/gettext.xml | 2 +- src/engine/SCons/Tool/gfortran.py | 6 +- src/engine/SCons/Tool/gfortran.xml | 2 +- src/engine/SCons/Tool/gnulink.py | 4 +- src/engine/SCons/Tool/gnulink.xml | 2 +- src/engine/SCons/Tool/gs.py | 4 +- src/engine/SCons/Tool/gs.xml | 2 +- src/engine/SCons/Tool/hpc++.py | 4 +- src/engine/SCons/Tool/hpc++.xml | 2 +- src/engine/SCons/Tool/hpcc.py | 4 +- src/engine/SCons/Tool/hpcc.xml | 2 +- src/engine/SCons/Tool/hplink.py | 4 +- src/engine/SCons/Tool/hplink.xml | 2 +- src/engine/SCons/Tool/icc.py | 4 +- src/engine/SCons/Tool/icc.xml | 2 +- src/engine/SCons/Tool/icl.py | 4 +- src/engine/SCons/Tool/icl.xml | 2 +- src/engine/SCons/Tool/ifl.py | 4 +- src/engine/SCons/Tool/ifl.xml | 2 +- src/engine/SCons/Tool/ifort.py | 4 +- src/engine/SCons/Tool/ifort.xml | 2 +- src/engine/SCons/Tool/ilink.py | 4 +- src/engine/SCons/Tool/ilink.xml | 2 +- src/engine/SCons/Tool/ilink32.py | 4 +- src/engine/SCons/Tool/ilink32.xml | 2 +- src/engine/SCons/Tool/install.py | 28 +- src/engine/SCons/Tool/install.xml | 21 +- src/engine/SCons/Tool/intelc.py | 4 +- src/engine/SCons/Tool/intelc.xml | 2 +- src/engine/SCons/Tool/ipkg.py | 4 +- src/engine/SCons/Tool/jar.py | 6 +- src/engine/SCons/Tool/jar.xml | 2 +- src/engine/SCons/Tool/javac.py | 6 +- src/engine/SCons/Tool/javac.xml | 2 +- src/engine/SCons/Tool/javacTests.py | 2 +- src/engine/SCons/Tool/javah.py | 4 +- src/engine/SCons/Tool/javah.xml | 2 +- src/engine/SCons/Tool/latex.py | 4 +- src/engine/SCons/Tool/latex.xml | 2 +- src/engine/SCons/Tool/ldc.py | 23 +- src/engine/SCons/Tool/ldc.xml | 2 +- src/engine/SCons/Tool/lex.py | 4 +- src/engine/SCons/Tool/lex.xml | 2 +- src/engine/SCons/Tool/link.py | 38 +- src/engine/SCons/Tool/link.xml | 2 +- src/engine/SCons/Tool/linkloc.py | 4 +- src/engine/SCons/Tool/linkloc.xml | 2 +- src/engine/SCons/Tool/m4.py | 4 +- src/engine/SCons/Tool/m4.xml | 2 +- src/engine/SCons/Tool/masm.py | 4 +- src/engine/SCons/Tool/masm.xml | 2 +- src/engine/SCons/Tool/midl.py | 4 +- src/engine/SCons/Tool/midl.xml | 2 +- src/engine/SCons/Tool/mingw.py | 4 +- src/engine/SCons/Tool/mingw.xml | 2 +- src/engine/SCons/Tool/msgfmt.py | 4 +- src/engine/SCons/Tool/msgfmt.xml | 2 +- src/engine/SCons/Tool/msginit.py | 4 +- src/engine/SCons/Tool/msginit.xml | 2 +- src/engine/SCons/Tool/msgmerge.py | 4 +- src/engine/SCons/Tool/msgmerge.xml | 2 +- src/engine/SCons/Tool/mslib.py | 6 +- src/engine/SCons/Tool/mslib.xml | 2 +- src/engine/SCons/Tool/mslink.py | 18 +- src/engine/SCons/Tool/mslink.xml | 2 +- src/engine/SCons/Tool/mssdk.py | 4 +- src/engine/SCons/Tool/mssdk.xml | 2 +- src/engine/SCons/Tool/msvc.py | 12 +- src/engine/SCons/Tool/msvc.xml | 2 +- src/engine/SCons/Tool/msvs.py | 244 ++++- src/engine/SCons/Tool/msvs.xml | 1115 +++++++++----------- src/engine/SCons/Tool/msvsTests.py | 83 +- src/engine/SCons/Tool/mwcc.py | 4 +- src/engine/SCons/Tool/mwcc.xml | 2 +- src/engine/SCons/Tool/mwld.py | 4 +- src/engine/SCons/Tool/mwld.xml | 2 +- src/engine/SCons/Tool/nasm.py | 4 +- src/engine/SCons/Tool/nasm.xml | 2 +- src/engine/SCons/Tool/packaging.xml | 2 +- src/engine/SCons/Tool/packaging/__init__.py | 4 +- src/engine/SCons/Tool/packaging/__init__.xml | 2 +- src/engine/SCons/Tool/packaging/ipk.py | 4 +- src/engine/SCons/Tool/packaging/msi.py | 4 +- src/engine/SCons/Tool/packaging/rpm.py | 4 +- src/engine/SCons/Tool/packaging/src_tarbz2.py | 4 +- src/engine/SCons/Tool/packaging/src_targz.py | 4 +- src/engine/SCons/Tool/packaging/src_zip.py | 4 +- src/engine/SCons/Tool/packaging/tarbz2.py | 4 +- src/engine/SCons/Tool/packaging/targz.py | 4 +- src/engine/SCons/Tool/packaging/zip.py | 4 +- src/engine/SCons/Tool/pdf.py | 4 +- src/engine/SCons/Tool/pdf.xml | 2 +- src/engine/SCons/Tool/pdflatex.py | 4 +- src/engine/SCons/Tool/pdflatex.xml | 2 +- src/engine/SCons/Tool/pdftex.py | 4 +- src/engine/SCons/Tool/pdftex.xml | 2 +- src/engine/SCons/Tool/qt.py | 4 +- src/engine/SCons/Tool/qt.xml | 2 +- src/engine/SCons/Tool/rmic.py | 4 +- src/engine/SCons/Tool/rmic.xml | 2 +- src/engine/SCons/Tool/rpcgen.py | 4 +- src/engine/SCons/Tool/rpcgen.xml | 2 +- src/engine/SCons/Tool/rpm.py | 4 +- src/engine/SCons/Tool/rpmutils.py | 4 +- src/engine/SCons/Tool/sgiar.py | 4 +- src/engine/SCons/Tool/sgiar.xml | 2 +- src/engine/SCons/Tool/sgic++.py | 4 +- src/engine/SCons/Tool/sgic++.xml | 2 +- src/engine/SCons/Tool/sgicc.py | 4 +- src/engine/SCons/Tool/sgicc.xml | 2 +- src/engine/SCons/Tool/sgilink.py | 4 +- src/engine/SCons/Tool/sgilink.xml | 2 +- src/engine/SCons/Tool/sunar.py | 4 +- src/engine/SCons/Tool/sunar.xml | 2 +- src/engine/SCons/Tool/sunc++.py | 4 +- src/engine/SCons/Tool/sunc++.xml | 2 +- src/engine/SCons/Tool/suncc.py | 4 +- src/engine/SCons/Tool/suncc.xml | 2 +- src/engine/SCons/Tool/sunf77.py | 4 +- src/engine/SCons/Tool/sunf77.xml | 2 +- src/engine/SCons/Tool/sunf90.py | 4 +- src/engine/SCons/Tool/sunf90.xml | 2 +- src/engine/SCons/Tool/sunf95.py | 4 +- src/engine/SCons/Tool/sunf95.xml | 2 +- src/engine/SCons/Tool/sunlink.py | 4 +- src/engine/SCons/Tool/sunlink.xml | 2 +- src/engine/SCons/Tool/swig.py | 4 +- src/engine/SCons/Tool/swig.xml | 2 +- src/engine/SCons/Tool/tar.py | 4 +- src/engine/SCons/Tool/tar.xml | 2 +- src/engine/SCons/Tool/tex.py | 4 +- src/engine/SCons/Tool/tex.xml | 2 +- src/engine/SCons/Tool/textfile.py | 4 +- src/engine/SCons/Tool/textfile.xml | 2 +- src/engine/SCons/Tool/tlib.py | 4 +- src/engine/SCons/Tool/tlib.xml | 2 +- src/engine/SCons/Tool/wix.py | 4 +- src/engine/SCons/Tool/wixTests.py | 4 +- src/engine/SCons/Tool/xgettext.py | 4 +- src/engine/SCons/Tool/xgettext.xml | 2 +- src/engine/SCons/Tool/yacc.py | 4 +- src/engine/SCons/Tool/yacc.xml | 2 +- src/engine/SCons/Tool/zip.py | 4 +- src/engine/SCons/Tool/zip.xml | 2 +- src/engine/SCons/Util.py | 4 +- src/engine/SCons/UtilTests.py | 4 +- src/engine/SCons/Variables/BoolVariable.py | 4 +- src/engine/SCons/Variables/BoolVariableTests.py | 4 +- src/engine/SCons/Variables/EnumVariable.py | 4 +- src/engine/SCons/Variables/EnumVariableTests.py | 4 +- src/engine/SCons/Variables/ListVariable.py | 4 +- src/engine/SCons/Variables/ListVariableTests.py | 4 +- src/engine/SCons/Variables/PackageVariable.py | 4 +- src/engine/SCons/Variables/PackageVariableTests.py | 4 +- src/engine/SCons/Variables/PathVariable.py | 4 +- src/engine/SCons/Variables/PathVariableTests.py | 4 +- src/engine/SCons/Variables/VariablesTests.py | 4 +- src/engine/SCons/Variables/__init__.py | 4 +- src/engine/SCons/Warnings.py | 4 +- src/engine/SCons/WarningsTests.py | 4 +- src/engine/SCons/__init__.py | 12 +- src/engine/SCons/compat/__init__.py | 4 +- src/engine/SCons/compat/_scons_builtins.py | 4 +- src/engine/SCons/compat/_scons_collections.py | 4 +- src/engine/SCons/compat/_scons_dbm.py | 4 +- src/engine/SCons/compat/_scons_hashlib.py | 4 +- src/engine/SCons/compat/_scons_io.py | 4 +- src/engine/SCons/cpp.py | 4 +- src/engine/SCons/cppTests.py | 4 +- src/engine/SCons/exitfuncs.py | 4 +- src/script/scons-time.py | 4 +- src/script/scons.bat | 6 +- src/script/scons.py | 12 +- src/script/sconsign.py | 12 +- src/setup.py | 16 +- src/test_aegistests.py | 4 +- src/test_files.py | 4 +- src/test_interrupts.py | 4 +- src/test_pychecker.py | 4 +- src/test_setup.py | 4 +- src/test_strings.py | 8 +- 517 files changed, 3534 insertions(+), 2234 deletions(-) create mode 100644 src/engine/SCons/Tool/f08.py create mode 100644 src/engine/SCons/Tool/f08.xml diff --git a/LICENSE b/LICENSE index 32aa74a..a0a96a0 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2001 - 2014 The SCons Foundation +Copyright (c) 2001 - 2015 The SCons Foundation Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/QMTest/README.txt b/QMTest/README.txt index 28c37de..10f5148 100644 --- a/QMTest/README.txt +++ b/QMTest/README.txt @@ -54,5 +54,5 @@ the pieces here are local to SCons. from this infrastructure, in no small part because we're not really using it as originally envisioned. -Copyright (c) 2001 - 2014 The SCons Foundation -QMTest/README.txt 2014/09/27 12:51:43 garyo +Copyright (c) 2001 - 2015 The SCons Foundation +QMTest/README.txt pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog diff --git a/QMTest/SConscript b/QMTest/SConscript index eb1ece5..7cf784c 100644 --- a/QMTest/SConscript +++ b/QMTest/SConscript @@ -3,7 +3,7 @@ # # -# Copyright (c) 2001 - 2014 The SCons Foundation +# Copyright (c) 2001 - 2015 The SCons Foundation # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the diff --git a/QMTest/TestRuntest.py b/QMTest/TestRuntest.py index aebf76a..240cf49 100644 --- a/QMTest/TestRuntest.py +++ b/QMTest/TestRuntest.py @@ -12,9 +12,9 @@ from those classes, as well as any overridden or additional methods or attributes defined in this subclass. """ -# Copyright (c) 2001 - 2014 The SCons Foundation +# Copyright (c) 2001 - 2015 The SCons Foundation -__revision__ = "QMTest/TestRuntest.py 2014/09/27 12:51:43 garyo" +__revision__ = "QMTest/TestRuntest.py pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog" import os import os.path diff --git a/QMTest/TestSCons.py b/QMTest/TestSCons.py index 35ed918..a786ec7 100644 --- a/QMTest/TestSCons.py +++ b/QMTest/TestSCons.py @@ -12,10 +12,10 @@ from those classes, as well as any overridden or additional methods or attributes defined in this subclass. """ -# Copyright (c) 2001 - 2014 The SCons Foundation +# Copyright (c) 2001 - 2015 The SCons Foundation from __future__ import division -__revision__ = "QMTest/TestSCons.py 2014/09/27 12:51:43 garyo" +__revision__ = "QMTest/TestSCons.py pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog" import os import re @@ -34,7 +34,7 @@ from TestCmd import PIPE # here provides some independent verification that what we packaged # conforms to what we expect. -default_version = '2.3.4' +default_version = '2.3.5' python_version_unsupported = (2, 3, 0) python_version_deprecated = (2, 7, 0) @@ -43,7 +43,7 @@ python_version_deprecated = (2, 7, 0) # line must remain "__ VERSION __" (without the spaces) so the built # version in build/QMTest/TestSCons.py contains the actual version # string of the packages that have been built. -SConsVersion = '2.3.4' +SConsVersion = '2.3.5' if SConsVersion == '__' + 'VERSION' + '__': SConsVersion = default_version @@ -693,7 +693,7 @@ class TestSCons(TestCommon): else: jni_dirs = ['/System/Library/Frameworks/JavaVM.framework/Versions/%s*/Headers/jni.h'%version] jni_dirs.extend(['/usr/lib/jvm/java-*-sun-%s*/include/jni.h'%version, - '/usr/lib/jvm/java-%s*-openjdk/include/jni.h'%version, + '/usr/lib/jvm/java-%s*-openjdk*/include/jni.h'%version, '/usr/java/jdk%s*/include/jni.h'%version]) dirs = self.paths(jni_dirs) if not dirs: diff --git a/QMTest/TestSConsMSVS.py b/QMTest/TestSConsMSVS.py index a8b6982..6a1ece4 100644 --- a/QMTest/TestSConsMSVS.py +++ b/QMTest/TestSConsMSVS.py @@ -13,9 +13,9 @@ as well as any overridden or additional methods or attributes defined in this subclass. """ -# Copyright (c) 2001 - 2014 The SCons Foundation +# Copyright (c) 2001 - 2015 The SCons Foundation -__revision__ = "QMTest/TestSConsMSVS.py 2014/09/27 12:51:43 garyo" +__revision__ = "QMTest/TestSConsMSVS.py pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog" import os import sys @@ -709,6 +709,7 @@ expected_vcprojfile_10_0 = """\ \t \t\tMakefile \t\tfalse +\t\tv100 \t \t \t @@ -773,6 +774,7 @@ expected_vcprojfile_11_0 = """\ \t \t\tMakefile \t\tfalse +\t\tv110 \t \t \t diff --git a/QMTest/TestSCons_time.py b/QMTest/TestSCons_time.py index 5c36bec..9dad253 100644 --- a/QMTest/TestSCons_time.py +++ b/QMTest/TestSCons_time.py @@ -11,9 +11,9 @@ from those classes, as well as any overridden or additional methods or attributes defined in this subclass. """ -# Copyright (c) 2001 - 2014 The SCons Foundation +# Copyright (c) 2001 - 2015 The SCons Foundation -__revision__ = "QMTest/TestSCons_time.py 2014/09/27 12:51:43 garyo" +__revision__ = "QMTest/TestSCons_time.py pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog" import os import os.path diff --git a/QMTest/TestSConsign.py b/QMTest/TestSConsign.py index 9285975..f3d88fd 100644 --- a/QMTest/TestSConsign.py +++ b/QMTest/TestSConsign.py @@ -1,6 +1,6 @@ -# Copyright (c) 2001 - 2014 The SCons Foundation +# Copyright (c) 2001 - 2015 The SCons Foundation -__revision__ = "QMTest/TestSConsign.py 2014/09/27 12:51:43 garyo" +__revision__ = "QMTest/TestSConsign.py pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog" __doc__ = """ TestSConsign.py: a testing framework for the "sconsign" script diff --git a/QMTest/scons_tdb.py b/QMTest/scons_tdb.py index 8994a62..b9eb4af 100644 --- a/QMTest/scons_tdb.py +++ b/QMTest/scons_tdb.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright (c) 2001 - 2014 The SCons Foundation +# Copyright (c) 2001 - 2015 The SCons Foundation # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the @@ -28,7 +28,7 @@ QMTest classes to support SCons' testing and Aegis-inspired workflow. Thanks to Stefan Seefeld for the initial code. """ -__revision__ = "QMTest/scons_tdb.py 2014/09/27 12:51:43 garyo" +__revision__ = "QMTest/scons_tdb.py pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog" ######################################################################## # Imports diff --git a/SConstruct b/SConstruct index cb344fa..34a5276 100644 --- a/SConstruct +++ b/SConstruct @@ -3,13 +3,13 @@ # # See the README.rst file for an overview of how SCons is built and tested. -copyright_years = '2001 - 2014' +copyright_years = '2001 - 2015' # This gets inserted into the man pages to reflect the month of release. -month_year = 'September 2014' +month_year = 'June 2015' # -# Copyright (c) 2001 - 2014 The SCons Foundation +# Copyright (c) 2001 - 2015 The SCons Foundation # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the @@ -43,11 +43,17 @@ import tempfile import bootstrap project = 'scons' -default_version = '2.3.4' +default_version = '2.3.5' copyright = "Copyright (c) %s The SCons Foundation" % copyright_years platform = distutils.util.get_platform() +def is_windows(): + if platform.startswith('win'): + return True + else: + return False + SConsignFile() # @@ -56,7 +62,7 @@ SConsignFile() # def whereis(file): exts = [''] - if platform == "win32": + if is_windows(): exts += ['.exe'] for dir in os.environ['PATH'].split(os.pathsep): f = os.path.join(dir, file) @@ -166,6 +172,14 @@ if build_id is None: else: build_id = '' +import os.path +import distutils.command + +no_winpack_templates = not os.path.exists(os.path.join(os.path.split(distutils.command.__file__)[0],'wininst-9.0.exe')) +skip_win_packages = ARGUMENTS.get('SKIP_WIN_PACKAGES',False) or no_winpack_templates +if skip_win_packages: + print "Skipping the build of Windows packages..." + python_ver = sys.version[0:3] # @@ -229,6 +243,8 @@ command_line_variables = [ ("VERSION=", "The SCons version being packaged. The default " + "is the hard-coded value '%s' " % default_version + "from this SConstruct file."), + + ("SKIP_WIN_PACKAGES=", "If set, skip building win32 and win64 packages."), ] Default('.', build_dir) @@ -267,7 +283,7 @@ test_local_zip_dir = os.path.join(build_dir, "test-local-zip") unpack_tar_gz_dir = os.path.join(build_dir, "unpack-tar-gz") unpack_zip_dir = os.path.join(build_dir, "unpack-zip") -if platform == "win32": +if is_windows(): tar_hflag = '' python_project_subinst_dir = os.path.join("Lib", "site-packages", project) project_script_subinst_dir = 'Scripts' @@ -331,7 +347,8 @@ try: path = os.path.join(dirname, name) if os.path.isfile(path): arg.write(path) - zf = zipfile.ZipFile(str(target[0]), 'w') + # default ZipFile compression is ZIP_STORED + zf = zipfile.ZipFile(str(target[0]), 'w', compression=zipfile.ZIP_DEFLATED) olddir = os.getcwd() os.chdir(env['CD']) try: os.path.walk(env['PSV'], visit, zf) @@ -356,7 +373,7 @@ try: if not os.path.isdir(dest): open(dest, 'wb').write(zf.read(name)) -except: +except ImportError: if unzip and zip: zipit = "cd $CD && $ZIP $ZIPFLAGS $( ${TARGET.abspath} $) $PSV" unzipit = "$UNZIP $UNZIPFLAGS $SOURCES" @@ -488,10 +505,13 @@ Version_values = [Value(version), Value(build_id)] # separate packages. # +from distutils.sysconfig import get_python_lib; + + python_scons = { 'pkg' : 'python-' + project, 'src_subdir' : 'engine', - 'inst_subdir' : os.path.join('lib', 'python1.5', 'site-packages'), + 'inst_subdir' : get_python_lib(), 'rpm_dir' : '/usr/lib/scons', 'debian_deps' : [ @@ -729,10 +749,7 @@ for p in [ scons ]: platform_zip = os.path.join(build, 'dist', "%s.%s.zip" % (pkg_version, platform)) - if platform == "win-amd64": - win32_exe = os.path.join(build, 'dist', "%s.win-amd64.exe" % pkg_version) - else: - win32_exe = os.path.join(build, 'dist', "%s.win32.exe" % pkg_version) + # # Update the environment with the relevant information @@ -805,7 +822,7 @@ for p in [ scons ]: # # Now run everything in src_file through the sed command we - # concocted to expand SConstruct, 2.3.4, etc. + # concocted to expand SConstruct, 2.3.5, etc. # for b in src_files: s = p['filemap'].get(b, b) @@ -843,12 +860,19 @@ for p in [ scons ]: Local(*build_src_files) distutils_formats = [] + distutils_targets = [] - distutils_targets = [ win32_exe ] + if not skip_win_packages: + win64_exe = os.path.join(build, 'dist', "%s.win-amd64.exe" % pkg_version) + win32_exe = os.path.join(build, 'dist', "%s.win32.exe" % pkg_version) + distutils_targets.extend([ win32_exe , win64_exe ]) + + dist_distutils_targets = [] - dist_distutils_targets = env.Install('$DISTDIR', distutils_targets) - Local(dist_distutils_targets) - AddPostAction(dist_distutils_targets, Chmod(dist_distutils_targets, 0644)) + for target in distutils_targets: + dist_target = env.Install('$DISTDIR', target) + AddPostAction(dist_target, Chmod(dist_target, 0644)) + dist_distutils_targets += dist_target if not gzip: print "gzip not found in %s; skipping .tar.gz package for %s." % (os.environ['PATH'], pkg) @@ -1080,7 +1104,10 @@ for p in [ scons ]: commands.append("$PYTHON $PYTHONFLAGS $SETUP_PY sdist --formats=%s" % \ ','.join(distutils_formats)) - commands.append("$PYTHON $PYTHONFLAGS $SETUP_PY bdist_wininst --plat-name win32 --user-access-control auto") + if not skip_win_packages: + commands.append("$PYTHON $PYTHONFLAGS $SETUP_PY bdist_wininst --plat-name=win32 --user-access-control auto") + + commands.append("$PYTHON $PYTHONFLAGS $SETUP_PY bdist_wininst --plat-name=win-amd64 --user-access-control auto") env.Command(distutils_targets, build_src_files, commands) @@ -1108,7 +1135,7 @@ for p in [ scons ]: for script in scripts: # add .py extension for scons-local scripts on non-windows platforms - if platform == "win32": + if is_windows(): break local_script = os.path.join(build_dir_local, script) commands.append(Move(local_script + '.py', local_script)) @@ -1132,7 +1159,7 @@ for p in [ scons ]: Local(l) if gzip: - if platform == "win32": + if is_windows(): # avoid problem with tar interpreting c:/ as a remote machine tar_cargs = '-cz --force-local -f' else: diff --git a/bin/SConsDoc.py b/bin/SConsDoc.py index b42e994..39434c7 100644 --- a/bin/SConsDoc.py +++ b/bin/SConsDoc.py @@ -127,8 +127,7 @@ except: try: import lxml except: - print("Failed to import either libxml2/libxslt or lxml") - sys.exit(1) + raise ImportError("Failed to import either libxml2/libxslt or lxml") has_etree = False if not has_libxml2: @@ -154,8 +153,7 @@ if not has_etree: # normal ElementTree install import elementtree.ElementTree as etree except ImportError: - print("Failed to import ElementTree from any known place") - sys.exit(1) + raise ImportError("Failed to import ElementTree from any known place") re_entity = re.compile("\&([^;]+);") re_entity_header = re.compile("") @@ -169,7 +167,7 @@ xsi = "http://www.w3.org/2001/XMLSchema-instance" # Header comment with copyright copyright_comment = """ -Copyright (c) 2001 - 2014 The SCons Foundation +Copyright (c) 2001 - 2015 The SCons Foundation This file is processed by the bin/SConsDoc.py module. See its __doc__ string for a discussion of the format. diff --git a/bin/import-test.py b/bin/import-test.py index e37fe65..b2fa797 100644 --- a/bin/import-test.py +++ b/bin/import-test.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright (c) 2001 - 2014 The SCons Foundation +# Copyright (c) 2001 - 2015 The SCons Foundation # # tree2test.py - turn a directory tree into TestSCons code # @@ -25,7 +25,7 @@ # """ triple-quotes will need to have their contents edited by hand. # -__revision__ = "bin/import-test.py 2014/09/27 12:51:43 garyo" +__revision__ = "bin/import-test.py pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog" import os.path import sys diff --git a/bin/linecount.py b/bin/linecount.py index 7c7e561..4394df4 100644 --- a/bin/linecount.py +++ b/bin/linecount.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright (c) 2001 - 2014 The SCons Foundation +# Copyright (c) 2001 - 2015 The SCons Foundation # # Count statistics about SCons test and source files. This must be run # against a fully-populated tree (for example, one that's been freshly @@ -23,7 +23,7 @@ # interesting one for most purposes. from __future__ import division -__revision__ = "bin/linecount.py 2014/09/27 12:51:43 garyo" +__revision__ = "bin/linecount.py pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog" import os.path diff --git a/bin/restore.sh b/bin/restore.sh index 12a5026..15c3aad 100644 --- a/bin/restore.sh +++ b/bin/restore.sh @@ -1,6 +1,6 @@ #!/usr/bin/env sh # -# Simple hack script to restore __revision__, __COPYRIGHT_, 2.3.4 +# Simple hack script to restore __revision__, __COPYRIGHT_, 2.3.5 # and other similar variables to what gets checked in to source. This # comes in handy when people send in diffs based on the released source. # @@ -22,9 +22,9 @@ header() { for i in `find $DIRS -name '*.py'`; do header $i ed $i < """ % (date, ver, rev)) + +# The names of the target files for the MAN pages +man_page_list = ['scons.1','scons-time.1','sconsign.1'] + +# Template for the MAN page texts when we can't properly +# create them because the skip_doc flag is set (required +# modules/tools aren't installed in the current system) +man_replace_tpl = """.TH "%(uctitle)s" "1" "%(today)s" "SCons %(version)s" "SCons %(version)s" +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.nh +.ad l +.SH "NOTE" +%(title)s \- This is a replacement file, stemming from an incomplete +packaging process without the required doc modules installed. Please +update the system and try running bootstrap.py again. +""" + # -# Check whether we have all tools installed for -# building the documentation. +# --- Processing --- # -skip_doc = False -try: - import libxml2 - import libxslt -except: - try: - import lxml - except: - print "doc: Neither libxml2 nor lxml Python bindings found!" - print " Please install one of the packages python-libxml2 or python-lxml." - skip_doc = True - -if not fop and not xep: - print "doc: No PDF renderer found (fop|xep)!" - skip_doc = True - if skip_doc: print "doc: ...skipping building User Guide." + print " ...creating fake MAN pages." + + # Since the top-level SConstruct requires the MAN + # pages to exist for the basic packaging, we create simple + # stub texts here as replacement... + scdir = os.path.join(build, 'man') + if not os.path.isdir(scdir): + os.makedirs(scdir) + + import datetime + today = datetime.date.today().strftime("%m/%d/%Y") + version = env.subst('$VERSION') + for m in man_page_list: + man, _ = os.path.splitext(m) + fman = open(os.path.join(scdir, m), "w") + fman.write(man_replace_tpl % {'uctitle' : man.upper().replace("-", "\\-"), + 'today' : today, + 'title' : man, + 'version' : version}) + fman.close() else: if not lynx: print "doc: Warning, lynx is not installed...created release packages won't be complete!" @@ -275,9 +316,6 @@ else: 'man' : (['man','epub','text'], [], []) } - # The names of the target files for the MAN pages - man_page_list = ['scons.1','scons-time.1','sconsign.1'] - # # We have to tell SCons to scan the top-level XML files which # get included by the document XML files in the subdirectories. diff --git a/doc/design/SConstruct b/doc/design/SConstruct index 5cee70e..ee01a1d 100644 --- a/doc/design/SConstruct +++ b/doc/design/SConstruct @@ -3,7 +3,7 @@ # # -# Copyright (c) 2001 - 2014 The SCons Foundation +# Copyright (c) 2001 - 2015 The SCons Foundation # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the diff --git a/doc/design/acks.xml b/doc/design/acks.xml index 76aa968..6691d33 100644 --- a/doc/design/acks.xml +++ b/doc/design/acks.xml @@ -12,7 +12,7 @@ - - + + diff --git a/src/Announce.txt b/src/Announce.txt index 31275b7..e1e1392 100644 --- a/src/Announce.txt +++ b/src/Announce.txt @@ -18,14 +18,59 @@ So that everyone using SCons can help each other learn how to use it more effectively, please go to http://scons.org/lists.php#users to sign up for the scons-users mailing list. +==============IMPORTANT NOTICE FOR NEXT VERSION V2.4.0=========== -RELEASE 2.3.4 - Mon, 27 Sep 2014 12:50:35 -0400 +PLEASE READ. CHANGES COMING IN NEXT MAJOR RELEASE V2.4.0 +As has been pre-announced in SCons's mailing lists: + +* https://pairlist4.pair.net/pipermail/scons-users/2014-July/002734.html , +* https://pairlist2.pair.net/pipermail/scons-dev/2014-December/002107.html +* https://pairlist4.pair.net/pipermail/scons-users/2015-February/003454.html + +We're planning to switch the Node class to using "slots" in the core sources, +mainly to reduce memory consumption by up to 35% in large build projects. + +This feature has been tested extensively and we don't expect any problems for you. +However as with all major changes it would be wise to test V2.4.0 when it is +released. Especially if you are directly using the Node class. + +================================================================= + + +RELEASE 2.3.5 - Mon, 17 Jun 2015 21:07:32 -0700 Please consult the RELEASE.txt file for a summary of changes since the last release and consult the CHANGES.txt file for complete a list of changes since last release. This announcement highlights only the important changes. + + Please note the following important changes since release 2.3.4: + - Documentation fixes for libraries.xml and + builders-writing.xml (#2989 and #2990) + - Extended docs for InstallVersionedLib/SharedLibrary, + and added SKIP_WIN_PACKAGES argument to build script + bootstrap.py (PR #230, #3002). + - Fixed symlink support (PR #227, #2395). + - Updated debug-count test case (PR #229). + - Fixed incomplete LIBS flattening and substitution in + Program scanner(PR #205, #2954). + - Added new method rentry_exists_on_disk to Node.FS (PR #193). + - Fixed several D tests under the different OS. + - Add support for f08 file extensions for Fortran 2008 code. + - Show --config choices if no argument is specified (PR #202). + - Fixed build crash when XML toolchain isn't installed, and + activated compression for ZIP archives. + - Fix for VersionedSharedLibrary under 'sunos' platform. + - Fixed dll link with precompiled headers on MSVC 2012 + - Added an 'exclude' parameter to Glob() + - Support for multiple cmdargs (one per variant) in VS project files. + - Various improvements for TempFileMunge class. + - Added an implementation for Visual Studio users files (PR #209). + - Added support for the 'PlatformToolset' tag in VS project files (#2978). + - Added support for '-isystem' to ParseFlags. + + Please note the following important changes since release 2.3.3: -- Fix for EnsureSConsVersion regression in 2.3.3. @@ -1128,5 +1173,5 @@ improve SCons for your needs. Gary Oberbrunner and Bill Deegan, maintainers Thanks to all the contributors for all your help! -Copyright (c) 2001 - 2014 The SCons Foundation -src/Announce.txt 2014/09/27 12:51:43 garyo +Copyright (c) 2001 - 2015 The SCons Foundation +src/Announce.txt pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog diff --git a/src/CHANGES.txt b/src/CHANGES.txt index affa94f..da16705 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -4,6 +4,53 @@ Change Log +RELEASE 2.3.5 - Mon, 17 Jun 2015 21:07:32 -0700 + + From Stephen Pollard: + - Documentation fixes for libraries.xml and + builders-writing.xml (#2989 and #2990) + + From William Deegan: + - Extended docs for InstallVersionedLib/SharedLibrary, + and added SKIP_WIN_PACKAGES argument to build script + bootstrap.py (PR #230, #3002). + + From William Blevins: + - Fixed symlink support (PR #227, #2395). + - Updated debug-count test case (PR #229). + + From Alexey Klimkin: + - Fixed incomplete LIBS flattening and substitution in + Program scanner(PR #205, #2954). + + From Dirk Baechle: + - Added new method rentry_exists_on_disk to Node.FS (PR #193). + + From Russel Winder: + - Fixed several D tests under the different OS. + - Add support for f08 file extensions for Fortran 2008 code. + + From Anatoly Techtonik: + - Show --config choices if no argument is specified (PR #202). + - Fixed build crash when XML toolchain isn't installed, and + activated compression for ZIP archives. + + From Alexandre Feblot: + - Fix for VersionedSharedLibrary under 'sunos' platform. + - Fixed dll link with precompiled headers on MSVC 2012 + - Added an 'exclude' parameter to Glob() + + From Laurent Marchelli: + - Support for multiple cmdargs (one per variant) in VS project files. + - Various improvements for TempFileMunge class. + - Added an implementation for Visual Studio users files (PR #209). + + From Dan Pidcock: + - Added support for the 'PlatformToolset' tag in VS project files (#2978). + + From James McCoy: + - Added support for '-isystem' to ParseFlags. + RELEASE 2.3.4 - Mon, 27 Sep 2014 12:50:35 -0400 From Bernhard Walle and Dirk Baechle: @@ -5831,5 +5878,5 @@ A brief overview of important functionality available in release 0.01: -Copyright (c) 2001 - 2014 The SCons Foundation -src/CHANGES.txt 2014/09/27 12:51:43 garyo +Copyright (c) 2001 - 2015 The SCons Foundation +src/CHANGES.txt pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog diff --git a/src/LICENSE.txt b/src/LICENSE.txt index 32aa74a..a0a96a0 100644 --- a/src/LICENSE.txt +++ b/src/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2001 - 2014 The SCons Foundation +Copyright (c) 2001 - 2015 The SCons Foundation Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/src/README.txt b/src/README.txt index c4dc677..6b726d0 100644 --- a/src/README.txt +++ b/src/README.txt @@ -2,7 +2,7 @@ SCons - a software construction tool - Version 2.3.4 + Version 2.3.5 This is SCons, a tool for building software (and other files). SCons is @@ -56,7 +56,7 @@ provided Python-standard setup script as follows: By default, the above command will do the following: - -- Install the version-numbered "scons-2.3.4" and "sconsign-2.3.4" + -- Install the version-numbered "scons-2.3.5" and "sconsign-2.3.5" scripts in the default system script directory (/usr/bin or C:\Python*\Scripts, for example). This can be disabled by specifying the "--no-version-script" option on the command @@ -70,17 +70,17 @@ By default, the above command will do the following: making it the default on your system. On UNIX or Linux systems, you can have the "scons" and "sconsign" - scripts be hard links or symbolic links to the "scons-2.3.4" and - "sconsign-2.3.4" scripts by specifying the "--hardlink-scons" + scripts be hard links or symbolic links to the "scons-2.3.5" and + "sconsign-2.3.5" scripts by specifying the "--hardlink-scons" or "--symlink-scons" options on the command line. - -- Install "scons-2.3.4.bat" and "scons.bat" wrapper scripts in the + -- Install "scons-2.3.5.bat" and "scons.bat" wrapper scripts in the Python prefix directory on Windows (C:\Python*, for example). This can be disabled by specifying the "--no-install-bat" option on the command line. On UNIX or Linux systems, the "--install-bat" option may be - specified to have "scons-2.3.4.bat" and "scons.bat" files + specified to have "scons-2.3.5.bat" and "scons.bat" files installed in the default system script directory, which is useful if you want to install SCons in a shared file system directory that can be used to execute SCons from both UNIX/Linux and @@ -88,7 +88,7 @@ By default, the above command will do the following: -- Install the SCons build engine (a Python module) in an appropriate version-numbered SCons library directory - (/usr/lib/scons-2.3.4 or C:\Python*\scons-2.3.4, for example). + (/usr/lib/scons-2.3.5 or C:\Python*\scons-2.3.5, for example). See below for more options related to installing the build engine library. @@ -239,5 +239,5 @@ With plenty of help from the SCons Development team: Greg Spencer Christoph Wiedemann -Copyright (c) 2001 - 2014 The SCons Foundation -src/README.txt 2014/09/27 12:51:43 garyo +Copyright (c) 2001 - 2015 The SCons Foundation +src/README.txt pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog diff --git a/src/RELEASE.txt b/src/RELEASE.txt index e607403..869e299 100644 --- a/src/RELEASE.txt +++ b/src/RELEASE.txt @@ -1,19 +1,73 @@ - A new SCons checkpoint release, 2.3.4, is now available + A new SCons checkpoint release, 2.3.5, is now available on the SCons download page: http://www.scons.org/download.php - This is a bug fix release to fix a regression in EnsureSConsVersion. + XXX The primary purpose of this release ... XXX - Here is a summary of the changes since 2.3.3 + A SCons "checkpoint release" is intended to provide early access to + new features so they can be tested in the field before being released + for adoption by other software distributions. + + Note that a checkpoint release is developed using the same test-driven + development methodology as all SCons releases. Existing SCons + functionality should all work as it does in previous releases (except + for any changes identified in the release notes) and early adopters + should be able to use a checkpoint release safely for production work + with existing SConscript files. If not, it represents not only a bug + in SCons but also a hole in the regression test suite, and we want to + hear about it. + + New features may be more lightly tested than in past releases, + especially as concerns their interaction with all of the other + functionality in SCons. We are especially interested in hearing bug + reports about new functionality. + + We do not recommend that downstream distributions (Debian, Fedora, + etc.) package a checkpoint release, mainly to avoid confusing the + "public" release numbering with the long checkpoint release names. + + Here is a summary of the changes since 1.3.0: + + NEW FUNCTIONALITY + + - List new features (presumably why a checkpoint is being released) + + DEPRECATED FUNCTIONALITY + + - List anything that's been deprecated since the last release + + CHANGED/ENHANCED EXISTING FUNCTIONALITY + + - List modifications to existing features, where the previous behavior + wouldn't actually be considered a bug FIXES - - Fix regression in EnsureSConsVersion + - List fixes of outright bugs + + IMPROVEMENTS + + - List improvements that wouldn't be visible to the user in the + documentation: performance improvements (describe the circumstances + under which they would be observed), or major code cleanups + + PACKAGING + + - List changes in the way SCons is packaged and/or released + + DOCUMENTATION + + - List any significant changes to the documentation (not individual + typo fixes, even if they're mentioned in src/CHANGES.txt to give + the contributor credit) + + DEVELOPMENT + + - List visible changes in the way SCons is developed - Thanks to Anatoly Techtonik and Russel Winder for their - contributions to this release. Contributors are listed - alphabetically by their last name. + Thanks to CURLY, LARRY, and MOE for their contributions to this release. + Contributors are listed alphabetically by their last name. -Copyright (c) 2001 - 2014 The SCons Foundation -src/RELEASE.txt 2014/09/27 12:51:43 garyo +Copyright (c) 2001 - 2015 The SCons Foundation +src/RELEASE.txt pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog diff --git a/src/engine/SCons/Action.py b/src/engine/SCons/Action.py index aec164f..ca3eddf 100644 --- a/src/engine/SCons/Action.py +++ b/src/engine/SCons/Action.py @@ -76,7 +76,7 @@ way for wrapping up the functions. """ -# Copyright (c) 2001 - 2014 The SCons Foundation +# Copyright (c) 2001 - 2015 The SCons Foundation # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the @@ -97,9 +97,7 @@ way for wrapping up the functions. # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -__revision__ = "src/engine/SCons/Action.py 2014/09/27 12:51:43 garyo" - -import SCons.compat +__revision__ = "src/engine/SCons/Action.py pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog" import dis import os @@ -112,7 +110,6 @@ import subprocess import SCons.Debug from SCons.Debug import logInstanceCreation import SCons.Errors -import SCons.Executor import SCons.Util import SCons.Subst @@ -357,21 +354,6 @@ def _do_create_action(act, kw): if isinstance(act, ActionBase): return act - if is_List(act): - return CommandAction(act, **kw) - - if callable(act): - try: - gen = kw['generator'] - del kw['generator'] - except KeyError: - gen = 0 - if gen: - action_type = CommandGeneratorAction - else: - action_type = FunctionAction - return action_type(act, kw) - if is_String(act): var=SCons.Util.get_environment_var(act) if var: @@ -388,6 +370,22 @@ def _do_create_action(act, kw): # The list of string commands may include a LazyAction, so we # reprocess them via _do_create_list_action. return _do_create_list_action(commands, kw) + + if is_List(act): + return CommandAction(act, **kw) + + if callable(act): + try: + gen = kw['generator'] + del kw['generator'] + except KeyError: + gen = 0 + if gen: + action_type = CommandGeneratorAction + else: + action_type = FunctionAction + return action_type(act, kw) + # Catch a common error case with a nice message: if isinstance(act, int) or isinstance(act, float): raise TypeError("Don't know how to create an Action from a number (%s)"%act) diff --git a/src/engine/SCons/Action.xml b/src/engine/SCons/Action.xml index a0a6421..30eb6e7 100644 --- a/src/engine/SCons/Action.xml +++ b/src/engine/SCons/Action.xml @@ -1,6 +1,6 @@ + + +%scons; + +%builders-mod; + +%functions-mod; + +%tools-mod; + +%variables-mod; +]> + + + + + + +Set construction variables for generic POSIX Fortran 08 compilers. + + + +F08 +F08FLAGS +F08COM +F08PPCOM +SHF08 +SHF08FLAGS +SHF08COM +SHF08PPCOM +_F08INCFLAGS + + +F08COMSTR +F08PPCOMSTR +SHF08COMSTR +SHF08PPCOMSTR + + + + + + +The Fortran 08 compiler. +You should normally set the &cv-link-FORTRAN; variable, +which specifies the default Fortran compiler +for all Fortran versions. +You only need to set &cv-link-F08; if you need to use a specific compiler +or compiler version for Fortran 08 files. + + + + + + + +The command line used to compile a Fortran 08 source file to an object file. +You only need to set &cv-link-F08COM; if you need to use a specific +command line for Fortran 08 files. +You should normally set the &cv-link-FORTRANCOM; variable, +which specifies the default command line +for all Fortran versions. + + + + + + + +The string displayed when a Fortran 08 source file +is compiled to an object file. +If this is not set, then &cv-link-F08COM; or &cv-link-FORTRANCOM; +(the command line) is displayed. + + + + + + + +The list of file extensions for which the F08 dialect will be used. By +default, this is ['.f08'] + + + + + + + +The list of file extensions for which the compilation + preprocessor pass for +F08 dialect will be used. By default, this is empty + + + + + + + +General user-specified options that are passed to the Fortran 08 compiler. +Note that this variable does +not +contain + +(or similar) include search path options +that scons generates automatically from &cv-link-F08PATH;. +See +&cv-link-_F08INCFLAGS; +below, +for the variable that expands to those options. +You only need to set &cv-link-F08FLAGS; if you need to define specific +user options for Fortran 08 files. +You should normally set the &cv-link-FORTRANFLAGS; variable, +which specifies the user-specified options +passed to the default Fortran compiler +for all Fortran versions. + + + + + + + +An automatically-generated construction variable +containing the Fortran 08 compiler command-line options +for specifying directories to be searched for include files. +The value of &cv-link-_F08INCFLAGS; is created +by appending &cv-link-INCPREFIX; and &cv-link-INCSUFFIX; +to the beginning and end +of each directory in &cv-link-F08PATH;. + + + + + + + +The list of directories that the Fortran 08 compiler will search for include +directories. The implicit dependency scanner will search these +directories for include files. Don't explicitly put include directory +arguments in &cv-link-F08FLAGS; because the result will be non-portable +and the directories will not be searched by the dependency scanner. Note: +directory names in &cv-link-F08PATH; will be looked-up relative to the SConscript +directory when they are used in a command. To force +&scons; +to look-up a directory relative to the root of the source tree use #: +You only need to set &cv-link-F08PATH; if you need to define a specific +include path for Fortran 08 files. +You should normally set the &cv-link-FORTRANPATH; variable, +which specifies the include path +for the default Fortran compiler +for all Fortran versions. + + + +env = Environment(F08PATH='#/include') + + + +The directory look-up can also be forced using the +&Dir;() +function: + + + +include = Dir('include') +env = Environment(F08PATH=include) + + + +The directory list will be added to command lines +through the automatically-generated +&cv-link-_F08INCFLAGS; +construction variable, +which is constructed by +appending the values of the +&cv-link-INCPREFIX; and &cv-link-INCSUFFIX; +construction variables +to the beginning and end +of each directory in &cv-link-F08PATH;. +Any command lines you define that need +the F08PATH directory list should +include &cv-link-_F08INCFLAGS;: + + + +env = Environment(F08COM="my_compiler $_F08INCFLAGS -c -o $TARGET $SOURCE") + + + + + + + +The command line used to compile a Fortran 08 source file to an object file +after first running the file through the C preprocessor. +Any options specified in the &cv-link-F08FLAGS; and &cv-link-CPPFLAGS; construction variables +are included on this command line. +You only need to set &cv-link-F08PPCOM; if you need to use a specific +C-preprocessor command line for Fortran 08 files. +You should normally set the &cv-link-FORTRANPPCOM; variable, +which specifies the default C-preprocessor command line +for all Fortran versions. + + + + + + + +The string displayed when a Fortran 08 source file +is compiled to an object file +after first running the file through the C preprocessor. +If this is not set, then &cv-link-F08PPCOM; or &cv-link-FORTRANPPCOM; +(the command line) is displayed. + + + + + + + +The Fortran 08 compiler used for generating shared-library objects. +You should normally set the &cv-link-SHFORTRAN; variable, +which specifies the default Fortran compiler +for all Fortran versions. +You only need to set &cv-link-SHF08; if you need to use a specific compiler +or compiler version for Fortran 08 files. + + + + + + + +The command line used to compile a Fortran 08 source file +to a shared-library object file. +You only need to set &cv-link-SHF08COM; if you need to use a specific +command line for Fortran 08 files. +You should normally set the &cv-link-SHFORTRANCOM; variable, +which specifies the default command line +for all Fortran versions. + + + + + + + +The string displayed when a Fortran 08 source file +is compiled to a shared-library object file. +If this is not set, then &cv-link-SHF08COM; or &cv-link-SHFORTRANCOM; +(the command line) is displayed. + + + + + + + +Options that are passed to the Fortran 08 compiler +to generated shared-library objects. +You only need to set &cv-link-SHF08FLAGS; if you need to define specific +user options for Fortran 08 files. +You should normally set the &cv-link-SHFORTRANFLAGS; variable, +which specifies the user-specified options +passed to the default Fortran compiler +for all Fortran versions. + + + + + + + +The command line used to compile a Fortran 08 source file to a +shared-library object file +after first running the file through the C preprocessor. +Any options specified in the &cv-link-SHF08FLAGS; and &cv-link-CPPFLAGS; construction variables +are included on this command line. +You only need to set &cv-link-SHF08PPCOM; if you need to use a specific +C-preprocessor command line for Fortran 08 files. +You should normally set the &cv-link-SHFORTRANPPCOM; variable, +which specifies the default C-preprocessor command line +for all Fortran versions. + + + + + + + +The string displayed when a Fortran 08 source file +is compiled to a shared-library object file +after first running the file through the C preprocessor. +If this is not set, then &cv-link-SHF08PPCOM; or &cv-link-SHFORTRANPPCOM; +(the command line) is displayed. + + + + + diff --git a/src/engine/SCons/Tool/f77.py b/src/engine/SCons/Tool/f77.py index bcedb87..91c1f62 100644 --- a/src/engine/SCons/Tool/f77.py +++ b/src/engine/SCons/Tool/f77.py @@ -9,7 +9,7 @@ selection method. """ # -# Copyright (c) 2001 - 2014 The SCons Foundation +# Copyright (c) 2001 - 2015 The SCons Foundation # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the @@ -31,7 +31,7 @@ selection method. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/f77.py 2014/09/27 12:51:43 garyo" +__revision__ = "src/engine/SCons/Tool/f77.py pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog" import SCons.Defaults import SCons.Scanner.Fortran diff --git a/src/engine/SCons/Tool/f77.xml b/src/engine/SCons/Tool/f77.xml index f1ac1dc..cd632d6 100644 --- a/src/engine/SCons/Tool/f77.xml +++ b/src/engine/SCons/Tool/f77.xml @@ -1,6 +1,6 @@ - + %scons; - + %builders-mod; - + %functions-mod; - + %tools-mod; - + %variables-mod; ]> - - - - - - -Sets construction variables for Microsoft Visual Studio. - - - -MSVSPROJECTCOM -MSVSSOLUTIONCOM -MSVSSCONSCRIPT -MSVSSCONS -MSVSSCONSFLAGS -MSVSSCONSCOM -MSVSBUILDCOM -MSVSREBUILDCOM -MSVSCLEANCOM -MSVSENCODING - - - - - - - - -Builds a Microsoft Visual Studio project file, -and by default builds a solution file as well. - - - -This builds a Visual Studio project file, based on the version of -Visual Studio that is configured (either the latest installed version, -or the version specified by -&cv-link-MSVS_VERSION; -in the Environment constructor). -For Visual Studio 6, it will generate a -.dsp -file. -For Visual Studio 7 (.NET) and later versions, it will generate a -.vcproj -file. - - - -By default, -this also generates a solution file -for the specified project, -a -.dsw -file for Visual Studio 6 -or a -.sln -file for Visual Studio 7 (.NET). -This behavior may be disabled by specifying -auto_build_solution=0 -when you call -&b-MSVSProject;, -in which case you presumably want to -build the solution file(s) -by calling the -&b-MSVSSolution; -Builder (see below). - - - -The &b-MSVSProject; builder -takes several lists of filenames -to be placed into the project file. -These are currently limited to -srcs, -incs, -localincs, -resources, -and -misc. -These are pretty self-explanatory, but it should be noted that these -lists are added to the &cv-link-SOURCES; construction variable as strings, -NOT as SCons File Nodes. This is because they represent file -names to be added to the project file, not the source files used to -build the project file. - - - -The above filename lists are all optional, -although at least one must be specified -for the resulting project file to be non-empty. - - - -In addition to the above lists of values, -the following values may be specified: - - - -target: -The name of the target -.dsp -or -.vcproj -file. -The correct -suffix for the version of Visual Studio must be used, -but the -&cv-link-MSVSPROJECTSUFFIX; -construction variable -will be defined to the correct value (see example below). - - - -variant: -The name of this particular variant. -For Visual Studio 7 projects, -this can also be a list of variant names. -These are typically things like "Debug" or "Release", but really -can be anything you want. -For Visual Studio 7 projects, -they may also specify a target platform -separated from the variant name by a -| -(vertical pipe) -character: -Debug|Xbox. -The default target platform is Win32. -Multiple calls to -&b-MSVSProject; -with different variants are allowed; -all variants will be added to the project file with their appropriate -build targets and sources. - - - -buildtarget: -An optional string, node, or list of strings or nodes -(one per build variant), to tell the Visual Studio debugger -what output target to use in what build variant. -The number of -buildtarget -entries must match the number of -variant -entries. - - - -runfile: -The name of the file that Visual Studio 7 and later -will run and debug. -This appears as the value of the -Output -field in the resutling Visual Studio project file. -If this is not specified, -the default is the same as the specified -buildtarget -value. - - - -Note that because &SCons; always executes its build commands -from the directory in which the &SConstruct; file is located, -if you generate a project file in a different directory -than the &SConstruct; directory, -users will not be able to double-click -on the file name in compilation error messages -displayed in the Visual Studio console output window. -This can be remedied by adding the -Visual C/C++ -/FC -compiler option to the &cv-link-CCFLAGS; variable -so that the compiler will print -the full path name of any -files that cause compilation errors. - - - -Example usage: - - - -barsrcs = ['bar.cpp'], + +Sets construction variables for Microsoft Visual Studio. + MSVSPROJECTCOM MSVSSOLUTIONCOM +MSVSSCONSCRIPT MSVSSCONS MSVSSCONSFLAGS +MSVSSCONSCOM MSVSBUILDCOM +MSVSREBUILDCOM MSVSCLEANCOM +MSVSENCODING Builds a Microsoft Visual Studio project +file, and by default builds a solution file as well. This +builds a Visual Studio project file, based on the version of Visual Studio +that is configured (either the latest installed version, or the version +specified by &cv-link-MSVS_VERSION; in the Environment constructor). For +Visual Studio 6, it will generate a .dsp file. For Visual +Studio 7 (.NET) and later versions, it will generate a +.vcproj file. By default, this also +generates a solution file for the specified project, a +.dsw file for Visual Studio 6 or a +.sln file for Visual Studio 7 (.NET). This behavior may +be disabled by specifying auto_build_solution=0 when you +call &b-MSVSProject;, in which case you presumably want to build the solution +file(s) by calling the &b-MSVSSolution; Builder (see below). +The &b-MSVSProject; builder takes several lists of filenames to be placed into +the project file. These are currently limited to srcs, +incs, localincs, +resources, and misc. These are pretty +self-explanatory, but it should be noted that these lists are added to the +&cv-link-SOURCES; construction variable as strings, NOT as SCons File Nodes. +This is because they represent file names to be added to the project file, not +the source files used to build the project file. The above +filename lists are all optional, although at least one must be specified for +the resulting project file to be non-empty. In addition to the +above lists of values, the following values may be specified: + + + target + + + The name of the target .dsp or + .vcproj file. The correct suffix for the version + of Visual Studio must be used, but the &cv-link-MSVSPROJECTSUFFIX; + construction variable will be defined to the correct value (see + example below). + + + + + variant + + + The name of this particular variant. For Visual Studio 7 + projects, this can also be a list of variant names. These are + typically things like "Debug" or "Release", but really can be anything + you want. For Visual Studio 7 projects, they may also specify a target + platform separated from the variant name by a | + (vertical pipe) character: Debug|Xbox. The default + target platform is Win32. Multiple calls to &b-MSVSProject; with + different variants are allowed; all variants will be added to the + project file with their appropriate build targets and + sources. + + + + + cmdargs + + + Additional command line arguments for the different + variants. The number of cmdargs entries must match + the number of variant entries, or be empty (not + specified). If you give only one, it will automatically be propagated + to all variants. + + + + + buildtarget + + + An optional string, node, or list of strings or nodes (one + per build variant), to tell the Visual Studio debugger what output + target to use in what build variant. The number of + buildtarget entries must match the number of + variant entries. + + + + + runfile + + + The name of the file that Visual Studio 7 and later will + run and debug. This appears as the value of the + Output field in the resulting Visual Studio project + file. If this is not specified, the default is the same as the + specified buildtarget value. + + + Note that because &SCons; always executes its build +commands from the directory in which the &SConstruct; file is located, if you +generate a project file in a different directory than the &SConstruct; +directory, users will not be able to double-click on the file name in +compilation error messages displayed in the Visual Studio console output +window. This can be remedied by adding the Visual C/C++ /FC +compiler option to the &cv-link-CCFLAGS; variable so that the compiler will +print the full path name of any files that cause compilation errors. + Example usage: barsrcs = ['bar.cpp'], barincs = ['bar.h'], barlocalincs = ['StdAfx.h'] barresources = ['bar.rc','resource.h'] @@ -218,440 +145,374 @@ env.MSVSProject(target = 'Bar' + env['MSVSPROJECTSUFFIX'], buildtarget = dll, variant = 'Release') - - - - - - -Builds a Microsoft Visual Studio solution file. - - - -This builds a Visual Studio solution file, -based on the version of Visual Studio that is configured -(either the latest installed version, -or the version specified by -&cv-link-MSVS_VERSION; -in the construction environment). -For Visual Studio 6, it will generate a -.dsw -file. -For Visual Studio 7 (.NET), it will -generate a -.sln -file. - - - -The following values must be specified: - - - -target: -The name of the target .dsw or .sln file. The correct -suffix for the version of Visual Studio must be used, but the value -&cv-link-MSVSSOLUTIONSUFFIX; -will be defined to the correct value (see example below). - - - -variant: -The name of this particular variant, or a list of variant -names (the latter is only supported for MSVS 7 solutions). These are -typically things like "Debug" or "Release", but really can be anything -you want. For MSVS 7 they may also specify target platform, like this -"Debug|Xbox". Default platform is Win32. - - - -projects: -A list of project file names, or Project nodes returned by calls to the -&b-MSVSProject; -Builder, -to be placed into the solution file. -It should be noted that these file names are NOT added to the $SOURCES -environment variable in form of files, but rather as strings. This -is because they represent file names to be added to the solution file, -not the source files used to build the solution file. - - - -Example Usage: - - - -env.MSVSSolution(target = 'Bar' + env['MSVSSOLUTIONSUFFIX'], - projects = ['bar' + env['MSVSPROJECTSUFFIX']], - variant = 'Release') - - - - - - - -When the Microsoft Visual Studio tools are initialized, they set up -this dictionary with the following keys: - - - -VERSION: -the version of MSVS being used (can be set via -&cv-link-MSVS_VERSION;) - - - -VERSIONS: -the available versions of MSVS installed - - - -VCINSTALLDIR: -installed directory of Visual C++ - - - -VSINSTALLDIR: -installed directory of Visual Studio - - - -FRAMEWORKDIR: -installed directory of the .NET framework - - - -FRAMEWORKVERSIONS: -list of installed versions of the .NET framework, sorted latest to oldest. - - - -FRAMEWORKVERSION: -latest installed version of the .NET framework - - - -FRAMEWORKSDKDIR: -installed location of the .NET SDK. - - - -PLATFORMSDKDIR: -installed location of the Platform SDK. - - - -PLATFORMSDK_MODULES: -dictionary of installed Platform SDK modules, -where the dictionary keys are keywords for the various modules, and -the values are 2-tuples where the first is the release date, and the -second is the version number. - - - -If a value isn't set, it wasn't available in the registry. - - - - - - - -Sets the architecture for which the generated project(s) should build. - - - -The default value is x86. -amd64 is also supported -by &SCons; for some Visual Studio versions. -Trying to set &cv-MSVS_ARCH; to an architecture that's not -supported for a given Visual Studio version -will generate an error. - - - - - - - -The string -placed in a generated Microsoft Visual Studio project file -as the value of the -ProjectGUID -attribute. -There is no default value. If not defined, a new GUID is generated. - - - - - - - -The path name -placed in a generated Microsoft Visual Studio project file -as the value of the -SccAuxPath -attribute -if the -MSVS_SCC_PROVIDER -construction variable is also set. -There is no default value. - - - - - - - -The root path of projects in your SCC workspace, i.e the path under which -all project and solution files will be generated. It is used as a -reference path from which the relative paths of the generated -Microsoft Visual Studio project and solution files are computed. -The relative project file path is placed as the value of the -SccLocalPath -attribute -of the project file -and as the values of the -SccProjectFilePathRelativizedFromConnection[i] -(where [i] ranges from 0 to the number of projects in the solution) -attributes of the -GlobalSection(SourceCodeControl) -section of the Microsoft Visual Studio solution file. -Similarly the relative solution file path is placed as the values of the -SccLocalPath[i] -(where [i] ranges from 0 to the number of projects in the solution) -attributes of the -GlobalSection(SourceCodeControl) -section of the Microsoft Visual Studio solution file. -This is used only -if the -MSVS_SCC_PROVIDER -construction variable is also set. -The default value is the current working directory. - - - - - - - -The project name -placed in a generated Microsoft Visual Studio project file -as the value of the -SccProjectName -attribute -if the -MSVS_SCC_PROVIDER -construction variable is also set. -In this case the string is also placed in the -SccProjectName0 -attribute of the -GlobalSection(SourceCodeControl) -section of the Microsoft Visual Studio solution file. -There is no default value. - - - - - - - -The string -placed in a generated Microsoft Visual Studio project file -as the value of the -SccProvider -attribute. -The string is also placed in the -SccProvider0 -attribute of the -GlobalSection(SourceCodeControl) -section of the Microsoft Visual Studio solution file. -There is no default value. - - - - - - - -Sets the preferred version of Microsoft Visual Studio to use. - - - -If &cv-MSVS_VERSION; is not set, -&SCons; will (by default) select the latest version -of Visual Studio installed on your system. -So, if you have version 6 and version 7 (MSVS .NET) installed, -it will prefer version 7. -You can override this by -specifying the -MSVS_VERSION -variable in the Environment initialization, setting it to the -appropriate version ('6.0' or '7.0', for example). -If the specified version isn't installed, -tool initialization will fail. - - - -This is obsolete: use &cv-MSVC_VERSION; instead. If &cv-MSVS_VERSION; is set and -&cv-MSVC_VERSION; is not, &cv-MSVC_VERSION; will be set automatically to &cv-MSVS_VERSION;. -If both are set to different values, scons will raise an error. - - - - - - - -The build command line placed in -a generated Microsoft Visual Studio project file. -The default is to have Visual Studio invoke SCons with any specified -build targets. - - - - - - - -The clean command line placed in -a generated Microsoft Visual Studio project file. -The default is to have Visual Studio invoke SCons with the -c option -to remove any specified targets. - - - - - - - -The encoding string placed in -a generated Microsoft Visual Studio project file. -The default is encoding -Windows-1252. - - - - - - - -The action used to generate Microsoft Visual Studio project files. - - - - - - - -The suffix used for Microsoft Visual Studio project (DSP) files. -The default value is -.vcproj -when using Visual Studio version 7.x (.NET) -or later version, -and -.dsp -when using earlier versions of Visual Studio. - - - - - - - -The rebuild command line placed in -a generated Microsoft Visual Studio project file. -The default is to have Visual Studio invoke SCons with any specified -rebuild targets. - - - - - - - -The SCons used in generated Microsoft Visual Studio project files. -The default is the version of SCons being -used to generate the project file. - - - - - - - -The SCons flags used in generated Microsoft Visual Studio -project files. - - - - - - - -The default SCons command used in generated Microsoft Visual Studio -project files. - - - - - - - -The sconscript file -(that is, -&SConstruct; -or -&SConscript; -file) -that will be invoked by Visual Studio -project files -(through the -&cv-link-MSVSSCONSCOM; -variable). -The default is the same sconscript file -that contains the call to -&b-MSVSProject; -to build the project file. - - - - - - - -The action used to generate Microsoft Visual Studio solution files. - - - - - - - -The suffix used for Microsoft Visual Studio solution (DSW) files. -The default value is -.sln -when using Visual Studio version 7.x (.NET), -and -.dsw -when using earlier versions of Visual Studio. - - - - - - - -The (optional) path to the SCons library directory, -initialized from the external environment. -If set, this is used to construct a shorter and more -efficient search path in the -&cv-link-MSVSSCONS; -command line executed -from Microsoft Visual Studio project files. - - - - - +Starting with version 2.4 of +SCons it's also possible to specify the optional argument +DebugSettings, which creates files for debugging under +Visual Studio: + + DebugSettings + + + A dictionary of debug settings that get written to the + .vcproj.user or the + .vcxproj.user file, depending on the version + installed. As it is done for cmdargs (see above), you can specify a + DebugSettings dictionary per variant. If you + give only one, it will be propagated to all variants. + + + Currently, only Visual Studio v9.0 and Visual Studio +version v11 are implemented, for other versions no file is generated. To +generate the user file, you just need to add a +DebugSettings dictionary to the environment with the +right parameters for your MSVS version. If the dictionary is empty, or does +not contain any good value, no file will be generated.Following +is a more contrived example, involving the setup of a project for variants and +DebugSettings:# Assuming you store your defaults in a file +vars = Variables('variables.py') +msvcver = vars.args.get('vc', '9') + +# Check command args to force one Microsoft Visual Studio version +if msvcver == '9' or msvcver == '11': + env = Environment(MSVC_VERSION=msvcver+'.0', MSVC_BATCH=False) +else: + env = Environment() + +AddOption('--userfile', action='store_true', dest='userfile', default=False, + help="Create Visual Studio Project user file") + +# +# 1. Configure your Debug Setting dictionary with options you want in the list +# of allowed options, for instance if you want to create a user file to launch +# a specific application for testing your dll with Microsoft Visual Studio 2008 (v9): +# +V9DebugSettings = { + 'Command':'c:\\myapp\\using\\thisdll.exe', + 'WorkingDirectory': 'c:\\myapp\\using\\', + 'CommandArguments': '-p password', +# 'Attach':'false', +# 'DebuggerType':'3', +# 'Remote':'1', +# 'RemoteMachine': None, +# 'RemoteCommand': None, +# 'HttpUrl': None, +# 'PDBPath': None, +# 'SQLDebugging': None, +# 'Environment': '', +# 'EnvironmentMerge':'true', +# 'DebuggerFlavor': None, +# 'MPIRunCommand': None, +# 'MPIRunArguments': None, +# 'MPIRunWorkingDirectory': None, +# 'ApplicationCommand': None, +# 'ApplicationArguments': None, +# 'ShimCommand': None, +# 'MPIAcceptMode': None, +# 'MPIAcceptFilter': None, +} + +# +# 2. Because there are a lot of different options depending on the Microsoft +# Visual Studio version, if you use more than one version you have to +# define a dictionary per version, for instance if you want to create a user +# file to launch a specific application for testing your dll with Microsoft +# Visual Studio 2012 (v11): +# +V10DebugSettings = { + 'LocalDebuggerCommand': 'c:\\myapp\\using\\thisdll.exe', + 'LocalDebuggerWorkingDirectory': 'c:\\myapp\\using\\', + 'LocalDebuggerCommandArguments': '-p password', +# 'LocalDebuggerEnvironment': None, +# 'DebuggerFlavor': 'WindowsLocalDebugger', +# 'LocalDebuggerAttach': None, +# 'LocalDebuggerDebuggerType': None, +# 'LocalDebuggerMergeEnvironment': None, +# 'LocalDebuggerSQLDebugging': None, +# 'RemoteDebuggerCommand': None, +# 'RemoteDebuggerCommandArguments': None, +# 'RemoteDebuggerWorkingDirectory': None, +# 'RemoteDebuggerServerName': None, +# 'RemoteDebuggerConnection': None, +# 'RemoteDebuggerDebuggerType': None, +# 'RemoteDebuggerAttach': None, +# 'RemoteDebuggerSQLDebugging': None, +# 'DeploymentDirectory': None, +# 'AdditionalFiles': None, +# 'RemoteDebuggerDeployDebugCppRuntime': None, +# 'WebBrowserDebuggerHttpUrl': None, +# 'WebBrowserDebuggerDebuggerType': None, +# 'WebServiceDebuggerHttpUrl': None, +# 'WebServiceDebuggerDebuggerType': None, +# 'WebServiceDebuggerSQLDebugging': None, +} + +# +# 3. Select the dictionary you want depending on the version of visual Studio +# Files you want to generate. +# +if not env.GetOption('userfile'): + dbgSettings = None +elif env.get('MSVC_VERSION', None) == '9.0': + dbgSettings = V9DebugSettings +elif env.get('MSVC_VERSION', None) == '11.0': + dbgSettings = V10DebugSettings +else: + dbgSettings = None + +# +# 4. Add the dictionary to the DebugSettings keyword. +# +barsrcs = ['bar.cpp', 'dllmain.cpp', 'stdafx.cpp'] +barincs = ['targetver.h'] +barlocalincs = ['StdAfx.h'] +barresources = ['bar.rc','resource.h'] +barmisc = ['ReadMe.txt'] + +dll = env.SharedLibrary(target = 'bar.dll', + source = barsrcs) + +env.MSVSProject(target = 'Bar' + env['MSVSPROJECTSUFFIX'], + srcs = barsrcs, + incs = barincs, + localincs = barlocalincs, + resources = barresources, + misc = barmisc, + buildtarget = [dll[0]] * 2, + variant = ('Debug|Win32', 'Release|Win32'), + cmdargs = 'vc=%s' % msvcver, + DebugSettings = (dbgSettings, {})) + Builds a Microsoft Visual Studio solution +file. This builds a Visual Studio solution file, based on the +version of Visual Studio that is configured (either the latest installed +version, or the version specified by &cv-link-MSVS_VERSION; in the +construction environment). For Visual Studio 6, it will generate a +.dsw file. For Visual Studio 7 (.NET), it will generate a +.sln file. The following values must be +specified: + + target + + + The name of the target .dsw or .sln file. The correct + suffix for the version of Visual Studio must be used, but the value + &cv-link-MSVSSOLUTIONSUFFIX; will be defined to the correct value (see + example below). + + + + + variant + + + The name of this particular variant, or a list of variant + names (the latter is only supported for MSVS 7 solutions). These are + typically things like "Debug" or "Release", but really can be anything + you want. For MSVS 7 they may also specify target platform, like this + "Debug|Xbox". Default platform is Win32. + + + + + projects + + + A list of project file names, or Project nodes returned by + calls to the &b-MSVSProject; Builder, to be placed into the solution + file. It should be noted that these file names are NOT added to the + $SOURCES environment variable in form of files, but rather as strings. + This is because they represent file names to be added to the solution + file, not the source files used to build the solution + file. + + + Example Usage: +env.MSVSSolution(target = 'Bar' + env['MSVSSOLUTIONSUFFIX'], projects = ['bar' ++ env['MSVSPROJECTSUFFIX']], variant = 'Release') + +When the Microsoft Visual Studio tools are initialized, they set up this +dictionary with the following keys: + + VERSION + + + the version of MSVS being used (can be set via + &cv-link-MSVS_VERSION;) + + + + + VERSIONS + + + the available versions of MSVS installed + + + + + VCINSTALLDIR + + + installed directory of Visual C++ + + + + + VSINSTALLDIR + + + installed directory of Visual Studio + + + + + FRAMEWORKDIR + + + installed directory of the .NET framework + + + + + FRAMEWORKVERSIONS + + + list of installed versions of the .NET framework, sorted + latest to oldest. + + + + + FRAMEWORKVERSION + + + latest installed version of the .NET + framework + + + + + FRAMEWORKSDKDIR + + + installed location of the .NET SDK. + + + + + PLATFORMSDKDIR + + + installed location of the Platform SDK. + + + + + PLATFORMSDK_MODULES + + + dictionary of installed Platform SDK modules, where the + dictionary keys are keywords for the various modules, and the values + are 2-tuples where the first is the release date, and the second is + the version number. + + + If a value isn't set, it wasn't available in the +registry. Sets +the architecture for which the generated project(s) should build. +The default value is x86. amd64 is +also supported by &SCons; for some Visual Studio versions. Trying to set +&cv-MSVS_ARCH; to an architecture that's not supported for a given Visual +Studio version will generate an error. The string placed in a generated +Microsoft Visual Studio project file as the value of the +ProjectGUID attribute. There is no default value. If not +defined, a new GUID is generated. The path name placed in a generated +Microsoft Visual Studio project file as the value of the +SccAuxPath attribute if the +MSVS_SCC_PROVIDER construction variable is also set. There is +no default value. The root path of projects in +your SCC workspace, i.e the path under which all project and solution files +will be generated. It is used as a reference path from which the relative +paths of the generated Microsoft Visual Studio project and solution files are +computed. The relative project file path is placed as the value of the +SccLocalPath attribute of the project file and as the +values of the +SccProjectFilePathRelativizedFromConnection[i] (where [i] +ranges from 0 to the number of projects in the solution) attributes of the +GlobalSection(SourceCodeControl) section of the Microsoft +Visual Studio solution file. Similarly the relative solution file path is +placed as the values of the SccLocalPath[i] (where [i] +ranges from 0 to the number of projects in the solution) attributes of the +GlobalSection(SourceCodeControl) section of the Microsoft +Visual Studio solution file. This is used only if the +MSVS_SCC_PROVIDER construction variable is also set. The +default value is the current working directory. + The project name placed in +a generated Microsoft Visual Studio project file as the value of the +SccProjectName attribute if the +MSVS_SCC_PROVIDER construction variable is also set. In this +case the string is also placed in the SccProjectName0 +attribute of the GlobalSection(SourceCodeControl) section +of the Microsoft Visual Studio solution file. There is no default value. + The +string placed in a generated Microsoft Visual Studio project file as the value +of the SccProvider attribute. The string is also placed in +the SccProvider0 attribute of the +GlobalSection(SourceCodeControl) section of the Microsoft +Visual Studio solution file. There is no default value. + Sets the preferred version +of Microsoft Visual Studio to use. If &cv-MSVS_VERSION; is not +set, &SCons; will (by default) select the latest version of Visual Studio +installed on your system. So, if you have version 6 and version 7 (MSVS .NET) +installed, it will prefer version 7. You can override this by specifying the +MSVS_VERSION variable in the Environment initialization, +setting it to the appropriate version ('6.0' or '7.0', for example). If the +specified version isn't installed, tool initialization will fail. +This is obsolete: use &cv-MSVC_VERSION; instead. If &cv-MSVS_VERSION; is +set and &cv-MSVC_VERSION; is not, &cv-MSVC_VERSION; will be set automatically +to &cv-MSVS_VERSION;. If both are set to different values, scons will raise an +error. +The build command line placed in a generated Microsoft Visual Studio +project file. The default is to have Visual Studio invoke SCons with any +specified build targets. + The clean command line placed in a generated Microsoft Visual +Studio project file. The default is to have Visual Studio invoke SCons with +the -c option to remove any specified targets. + The encoding string placed in a +generated Microsoft Visual Studio project file. The default is encoding +Windows-1252. The action used to generate Microsoft +Visual Studio project files. The suffix used for Microsoft Visual +Studio project (DSP) files. The default value is .vcproj +when using Visual Studio version 7.x (.NET) or later version, and +.dsp when using earlier versions of Visual Studio. + The +rebuild command line placed in a generated Microsoft Visual Studio project +file. The default is to have Visual Studio invoke SCons with any specified +rebuild targets. +The SCons used in generated Microsoft Visual Studio project files. The +default is the version of SCons being used to generate the project file. + The +SCons flags used in generated Microsoft Visual Studio project files. + The default +SCons command used in generated Microsoft Visual Studio project files. + The sconscript +file (that is, &SConstruct; or &SConscript; file) that will be invoked by +Visual Studio project files (through the &cv-link-MSVSSCONSCOM; variable). The +default is the same sconscript file that contains the call to &b-MSVSProject; +to build the project file. The action used to generate Microsoft +Visual Studio solution files. The suffix used for Microsoft +Visual Studio solution (DSW) files. The default value is +.sln when using Visual Studio version 7.x (.NET), and +.dsw when using earlier versions of Visual Studio. + The +(optional) path to the SCons library directory, initialized from the external +environment. If set, this is used to construct a shorter and more efficient +search path in the &cv-link-MSVSSCONS; command line executed from Microsoft +Visual Studio project files. diff --git a/src/engine/SCons/Tool/msvsTests.py b/src/engine/SCons/Tool/msvsTests.py index 600085f..3454c6c 100644 --- a/src/engine/SCons/Tool/msvsTests.py +++ b/src/engine/SCons/Tool/msvsTests.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2001 - 2014 The SCons Foundation +# Copyright (c) 2001 - 2015 The SCons Foundation # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the @@ -21,7 +21,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/msvsTests.py 2014/09/27 12:51:43 garyo" +__revision__ = "src/engine/SCons/Tool/msvsTests.py pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog" import os import sys @@ -40,6 +40,7 @@ from SCons.Tool.MSCommon.common import debug from SCons.Tool.MSCommon import get_default_version, \ query_versions +from SCons.Tool.msvs import _GenerateV6DSP, _GenerateV7DSP, _GenerateV10DSP regdata_6a = r'''[HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio] [HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\6.0] @@ -591,6 +592,84 @@ class msvsTestCase(unittest.TestCase): assert not v1 or str(v1[0]) == self.highest_version, \ (v1, self.highest_version) assert len(v1) == self.number_of_versions, v1 + + def test_config_generation(self): + """Test _DSPGenerator.__init__(...)""" + if not self.highest_version : + return + + # Initialize 'static' variables + version_num, suite = msvs_parse_version(self.highest_version) + if version_num >= 10.0: + function_test = _GenerateV10DSP + elif version_num >= 7.0: + function_test = _GenerateV7DSP + else: + function_test = _GenerateV6DSP + + str_function_test = str(function_test.__init__) + dspfile = 'test.dsp' + source = 'test.cpp' + + # Create the cmdargs test list + list_variant = ['Debug|Win32','Release|Win32', + 'Debug|x64', 'Release|x64'] + list_cmdargs = ['debug=True target_arch=32', + 'debug=False target_arch=32', + 'debug=True target_arch=x64', + 'debug=False target_arch=x64'] + + # Tuple list : (parameter, dictionary of expected result per variant) + tests_cmdargs = [(None, dict.fromkeys(list_variant, '')), + ('', dict.fromkeys(list_variant, '')), + (list_cmdargs[0], dict.fromkeys(list_variant, list_cmdargs[0])), + (list_cmdargs, dict(zip(list_variant, list_cmdargs)))] + + # Run the test for each test case + for param_cmdargs, expected_cmdargs in tests_cmdargs: + debug('Testing %s. with :\n variant = %s \n cmdargs = "%s"' % \ + (str_function_test, list_variant, param_cmdargs)) + param_configs = [] + expected_configs = {} + for platform in ['Win32', 'x64']: + for variant in ['Debug', 'Release']: + variant_platform = '%s|%s' % (variant, platform) + runfile = '%s\\%s\\test.exe' % (platform, variant) + buildtarget = '%s\\%s\\test.exe' % (platform, variant) + outdir = '%s\\%s' % (platform, variant) + + # Create parameter list for this variant_platform + param_configs.append([variant_platform, runfile, buildtarget, outdir]) + + # Create expected dictionary result for this variant_platform + expected_configs[variant_platform] = \ + {'variant': variant, 'platform': platform, + 'runfile': runfile, + 'buildtarget': buildtarget, + 'outdir': outdir, + 'cmdargs': expected_cmdargs[variant_platform]} + + # Create parameter environment with final parameter dictionary + param_dict = dict(zip(('variant', 'runfile', 'buildtarget', 'outdir'), + [list(l) for l in zip(*param_configs)])) + param_dict['cmdargs'] = param_cmdargs + + # Hack to be able to run the test with a 'DummyEnv' + class _DummyEnv(DummyEnv): + def subst(self, string) : + return string + + env = _DummyEnv(param_dict) + env['MSVSSCONSCRIPT'] = '' + env['MSVS_VERSION'] = self.highest_version + + # Call function to test + genDSP = function_test(dspfile, source, env) + + # Check expected result + self.assertListEqual(genDSP.configs.keys(), expected_configs.keys()) + for key in genDSP.configs.keys(): + self.assertDictEqual(genDSP.configs[key].__dict__, expected_configs[key]) class msvs6aTestCase(msvsTestCase): """Test MSVS 6 Registry""" diff --git a/src/engine/SCons/Tool/mwcc.py b/src/engine/SCons/Tool/mwcc.py index ae0d030..8e69a2a 100644 --- a/src/engine/SCons/Tool/mwcc.py +++ b/src/engine/SCons/Tool/mwcc.py @@ -8,7 +8,7 @@ selection method. """ # -# Copyright (c) 2001 - 2014 The SCons Foundation +# Copyright (c) 2001 - 2015 The SCons Foundation # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the @@ -30,7 +30,7 @@ selection method. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # -__revision__ = "src/engine/SCons/Tool/mwcc.py 2014/09/27 12:51:43 garyo" +__revision__ = "src/engine/SCons/Tool/mwcc.py pchdll:3325:cd517fae59a4 2015/06/18 06:53:27 bdbaddog" import os import os.path diff --git a/src/engine/SCons/Tool/mwcc.xml b/src/engine/SCons/Tool/mwcc.xml index 8f90ec3..a9432dd 100644 --- a/src/engine/SCons/Tool/mwcc.xml +++ b/src/engine/SCons/Tool/mwcc.xml @@ -1,6 +1,6 @@