Commit Graph

2022 Commits

Author SHA1 Message Date
Brad King 103d99338a Merge topic 'generator-expression-target-properties'
083de7e Process generator expressions in the COMPILE_DEFINITIONS target property.
08cb4fa Process generator expressions in the INCLUDE_DIRECTORIES property.
0ef091d Early return if there is no target.
eb250cd Add a self-reference check for target properties.
7e80747 Add API to check that dependent target properties form a DAG.
239ac84 Add a generator expression for target properties.
e028381 Extend the generator expression language with more logic.
b8e61d6 Refactor GetCompileDefinitions a bit.
2c2b25b Return a std::string from GetCompileDefinitions.
b7e48e0 Add an AppendDefines std::string overload.
9a16087 Convert paths in INCLUDE_DIRECTORIES property to Unix slashes.
4557c8d Don't prepend a path before generator expressions in include_directories.
c6abc41 Add include guard for cmGeneratorExpression.
0ff4e3f Port remaining code to GetCompileDefinitions().
f178d53 Fix indentation in the code blocks generator.
2012-09-28 17:15:03 -04:00
Stephen Kelly 083de7ed35 Process generator expressions in the COMPILE_DEFINITIONS target property. 2012-09-28 08:50:16 -04:00
Stephen Kelly 08cb4fa4c0 Process generator expressions in the INCLUDE_DIRECTORIES property.
This use of generator expressions, like all others to come which operate
on target properties, must initalize the dag checker.
2012-09-28 08:50:10 -04:00
Stephen Kelly e028381bf1 Extend the generator expression language with more logic.
Generator expressions for comparing strings, evaluating
strings as booleans, and for creating literal right-angle-brackets
and commas are added. Those may be needed in some cases
where they appear in literals.
2012-09-28 08:49:21 -04:00
David Cole 021e66a25c Merge topic 'osx-sysroot-cleanup'
df92864 OS X: Ignore MACOSX_DEPLOYMENT_TARGET during Xcode compiler id
e7e613e OS X: Teach deployment target sanity check about SDK names
43b7479 OS X: Further improve default CMAKE_OSX_SYSROOT selection
2690738 OS X: If CMAKE_OSX_SYSROOT is already set do not compute default
7995722 OS X: Simplify selection of CMAKE_OSX_ARCHITECTURES
1786b12 OS X: Allow CMAKE_OSX_SYSROOT to be a logical SDK name
242f673 Tests/Assembler: Use CMAKE_OSX_SYSROOT to generate .s file
a1c032b bootstrap: Suppress CMAKE_OSX_SYSROOT if CFLAGS have -isysroot
230ea21 OS X: Improve default CMAKE_OSX_SYSROOT selection
a0a0877 OS X: Always generate -isysroot if any SDK is in use
33a60e6 Xcode: Remove unused code reading CMAKE_OSX_SYSROOT_DEFAULT
2012-09-25 15:18:24 -04:00
Brad King 242f673829 Tests/Assembler: Use CMAKE_OSX_SYSROOT to generate .s file
On OS X if the user-provided flags do not include -isysroot and
CMAKE_OSX_SYSROOT is defined then add the proper -isysroot flag to the C
compiler invocation we use to generate the .s file.
2012-09-21 11:15:23 -04:00
Brad King 95a0011604 file(DOWNLOAD): Change EXPECTED_HASH to take ALGO=value
Make the EXPECTED_HASH option take only a single value instead of two to
avoid handling sub-keyword arguments.  This is also consistent with
URL_HASH in ExternalProject.
2012-09-19 11:31:36 -04:00
Brad King d407dcdbc8 Merge topic 'generator-expression-refactor'
91011bd cmGeneratorExpression: Port users to two-stage processing
f1eacf0 cmGeneratorExpression: Re-write for multi-stage evaluation
2012-09-19 08:28:16 -04:00
Stephen Kelly f1eacf0e07 cmGeneratorExpression: Re-write for multi-stage evaluation
The expressions may be parsed and then cached and evaluated multiple
times.  They are evaluated lazily so that literals such as ',' can be
treated as universal parameter separators, and can be processed from
results without appearing literally, and without interfering with the
parsing/evaluation of the entire expression.
2012-09-18 17:02:23 -04:00
David Cole 893d84b221 Merge topic 'ExternalProject-check-hashes'
c266461 Add SSL_VERIFYPEER and CAINFO file options to ExternalProject_Add.
beb8a83 ExternalProject: Generalize URL_MD5 option to URL_HASH
2012-09-18 16:42:39 -04:00
David Cole 3e7fe5a7a0 Merge topic 'if-version-depth'
dfa0ebd if: Compare up to 8 components in VERSION tests
2012-09-18 16:41:59 -04:00
Brad King beb8a8309b ExternalProject: Generalize URL_MD5 option to URL_HASH
Add support for SHA algorithms.
2012-09-11 16:00:57 -04:00
Brad King dfa0ebd646 if: Compare up to 8 components in VERSION tests
Extend the number of components tested by

  if(... VERSION_LESS ...)
  if(... VERSION_EQUAL ...)
  if(... VERSION_GREATER ...)

from 4 to 8.  The latter is a more extreme maximum.
2012-09-11 15:59:16 -04:00
Bill Hoffman 34567dfc0d file(DOWNLOAD): Generalize EXPECTED_MD5 to EXPECTED_HASH
Add support for SHA algorithms.
2012-09-11 08:58:29 -04:00
Brad King 25b0d94678 Merge topic 'msvc-compiler-info'
16fa7b7 VS: Fix MSVC_IDE definition recently broken by refactoring
2012-08-31 07:24:53 -04:00
Brad King 16fa7b7395 VS: Fix MSVC_IDE definition recently broken by refactoring
In commit 485a940e (VS: Simplify MSVC version reporting, 2012-08-23) we
accidentally flipped the 0/1 values of MSVC_IDE.  Flip them back and
teach the CheckCompilerRelatedVariables test to check the variable.
2012-08-30 16:18:05 -04:00
Brad King 4f3436dd11 Merge topic 'fix-Qt-casing'
3252149 Fix casing of 'Qt' in docs, comments and user-visible strings.
2012-08-30 11:55:36 -04:00
Brad King a4c47fe0c7 Merge topic 'cmake-platform-info-version'
e5fee8a Store ABI detection results in compiler information files
3df81b4 Move CMAKE_<LANG>_COMPILER_WORKS to compiler information files
7195aca Make platform information files specific to the CMake version
2012-08-30 11:06:15 -04:00
Brad King 32b7c72623 Merge branch 'cmake-platform-info-version' into msvc-compiler-info
Conflicts:
	Modules/CMakeTestCCompiler.cmake
	Modules/CMakeTestCXXCompiler.cmake
	Modules/Platform/Windows-cl.cmake
2012-08-30 09:45:17 -04:00
Stephen Kelly 325214900b Fix casing of 'Qt' in docs, comments and user-visible strings.
QT (cue-tea) is Apple QuickTime.
Qt (cute) is the C++ framework.
2012-08-28 11:24:55 +02:00
David Cole 34a0284603 Merge topic 'ide-compiler-id'
403ead6 Document CMAKE_<LANG>_COMPILER_(ID|VERSION) values
8be51f6 Test variables CMAKE_(C|CXX|Fortran)_COMPILER(|_ID|_VERSION)
ec22a9b Cleanly enable a language in multiple subdirectories
66cb335 VS: Detect the compiler id and tool location
89595d6 VS10: Define CMAKE_VS_PLATFORM_TOOLSET variable
965a69d Xcode: Detect the compiler id and tool location
9a9e1ee CMakeDetermineCompilerId: Prepare to detect IDE compiler id
b8b5c83 Re-order C/C++/Fortran compiler determination logic
2012-08-24 14:25:40 -04:00
David Cole 05784dadc5 Merge topic 'compile-definitions-unique'
f0a1065 Rename files from main.cpp to more meaningful names.
ca7fb14 Fix the test setting COMPILE_DEFINITIONS target property
733deb6 Fix CompileDefinitions test on Visual Studio.
3dae652 Don't duplicate -D defines sent to the compiler.
2012-08-24 14:24:24 -04:00
David Cole bc147d99ca Merge topic 'test-ObjectLibrary-lang'
94c08b3 Tests/ObjectLibrary: Do not enable CXX in subdirectories
2012-08-24 14:23:33 -04:00
Brad King 7195aca54f Make platform information files specific to the CMake version
At the top of a build tree we configure inside the CMakeFiles directory
files such as "CMakeSystem.cmake" and "CMake<lang>Compiler.cmake" to
save information detected about the system and compilers in use.  The
method of detection and the exact results store varies across CMake
versions as things improve.  This leads to problems when loading files
configured by a different version of CMake.  Previously we ignored such
existing files only if the major.minor part of the CMake version
component changed, and depended on the CMakeCache.txt to tell us the
last version of CMake that wrote the files.  This led to problems if the
user deletes the CMakeCache.txt or we add required information to the
files in a patch-level release of CMake (still a "feature point" release
by modern CMake versioning convention).

Ensure that we always have version-consistent platform information files
by storing them in a subdirectory named with the CMake version.  Every
version of CMake will do its own system and compiler identification
checks even when a build tree has already been configured by another
version of CMake.  Stored results will not clobber those from other
versions of CMake which may be run again on the same tree in the future.
Loaded results will match what the system and language modules expect.

Rename the undocumented variable CMAKE_PLATFORM_ROOT_BIN to
CMAKE_PLATFORM_INFO_DIR to clarify its purpose.  The new variable points
at the version-specific directory while the old variable did not.
2012-08-24 10:52:23 -04:00
Brad King 8be51f6694 Test variables CMAKE_(C|CXX|Fortran)_COMPILER(|_ID|_VERSION)
Add tests CMakeOnly.CompilerId(C|CXX|Fortran) to check that the basic
compiler tool path, vendor, and version variables have been set as
expected.
2012-08-22 16:35:54 -04:00
Stephen Kelly f0a1065393 Rename files from main.cpp to more meaningful names.
Because the main file for the dummy-executable and the actual compile
test were both called main.cpp, they were overwriting each other during
in-source builds.
2012-08-22 13:05:07 +02:00
Stephen Kelly ca7fb14f9b Fix the test setting COMPILE_DEFINITIONS target property 2012-08-21 11:05:07 +02:00
Stephen Kelly 733deb66c6 Fix CompileDefinitions test on Visual Studio.
Avoid testing unsupported spaces in define values.
2012-08-21 11:04:09 +02:00
Stephen Kelly 3dae652b4e Don't duplicate -D defines sent to the compiler.
There is no need to do so. Be consistent with include directories and
ensure uniqueness.

This requires changing the API of the cmLocalGenerator::AppendDefines
method, and changing the generators to match.

The test unfortunately can't test for uniqueness, but it at least verifies
that nothing gets lost.
2012-08-20 22:30:11 +02:00
David Cole 407ccb4957 Merge topic 'RemoveNonworkingKDE4Test'
11f23fe remove non-working KDE4 test
2012-08-20 15:41:06 -04:00
David Cole e11e719796 Merge topic 'hg-modules'
91053cd ExternalProject: Add Mercurial (hg) repository support
ea5bfb1 Add FindHg module to find Mercurial
2012-08-20 15:40:19 -04:00
David Cole 9f555e805d Merge topic 'list-command-argument-fixes'
08c71ac CMake.List test: explicitely test with lists containing only an empty string
52d9c38 list command: error on too many arguments
2012-08-20 15:39:35 -04:00
David Cole 14c8096ba8 Merge topic 'more-endif-closing-style-cleanups'
84b49be Remove CMake multiline block-end command arguments
2012-08-20 15:39:26 -04:00
David Cole b7f3cc22c3 Merge topic 'xcode-asm'
97140d3 Tests/Assembler: Do not use assembler in universal binaries
f3477ed Xcode: Set ASM source language in project file (#13472)
2012-08-20 15:39:09 -04:00
David Cole 2582994e57 Merge topic 'clang-asm'
7e8471c Recognize Clang ASM support (#13473)
2012-08-20 15:38:51 -04:00
David Cole 3574bb4842 Merge topic 'generator-expression-conditions'
9d9f616 Add $<CONFIG:...> boolean query generator expression
ebf05ab Add boolean generator expressions
2012-08-20 15:38:42 -04:00
Brad King 94c08b368c Tests/ObjectLibrary: Do not enable CXX in subdirectories
In commit b237dbd8 (Xcode: Fix object library references in
multi-project trees, 2012-08-03) we accidentally enabled CXX in the
subdiretories of this test by invoking project() with only one argument.
The top-level directory of the test enables only C, so do this in the
subdirectories too.
2012-08-20 14:47:33 -04:00
Alex Neundorf 11f23fee52 remove non-working KDE4 test
Alex
2012-08-16 23:28:52 +02:00
Brad King 91053cdf7b ExternalProject: Add Mercurial (hg) repository support
Add options HG_REPOSITORY and HG_TAG to specify an external project
hosted in a Mercurial repository.  Teach ExternalProject to clone the
repository and update from it.  Extend the ExternalProject test to try a
Mercurial repository when hg is available.
2012-08-16 09:02:34 -04:00
Rolf Eike Beer 08c71acc87 CMake.List test: explicitely test with lists containing only an empty string 2012-08-15 23:05:05 +02:00
Marcin Wojdyr 84b49be8f0 Remove CMake multiline block-end command arguments
removing arguments omitted in 9db3116226
2012-08-15 16:50:29 -04:00
Brad King 97140d3986 Tests/Assembler: Do not use assembler in universal binaries
If CMAKE_OSX_ARCHITECTURES is set then the computed assembler .s source
file may not work for all architectures.  Skip it in that case.
2012-08-15 12:55:03 -04:00
Brad King 9d9f616792 Add $<CONFIG:...> boolean query generator expression
This expression evaluates to '1' or '0' to indicate whether the build
configuration for which the expression is evaluated matches tha named
configuration.  In combination with the "$<0:...>" and "$<1:...>"
expressions this allows per-configuration content to be generated.
2012-08-15 11:44:49 -04:00
Brad King ebf05abda1 Add boolean generator expressions
Add generator expressions that combine and use boolean test results:

 $<0:...>         = empty string (ignores "...")
 $<1:...>         = content of "..."
 $<AND:?[,?]...>  = '1' if all '?' are '1', else '0'
 $<OR:?[,?]...>   = '0' if all '?' are '0', else '1'
 $<NOT:?>         = '0' if '?' is '1', else '1'

These will be useful to evaluate (future) boolean query expressions and
condition content on the results.  Include tests and documentation.
2012-08-15 11:44:49 -04:00
Brad King f3477ed88c Xcode: Set ASM source language in project file (#13472)
Also teach the Assembler test to build under Xcode.

Suggested-by: Tobias Pape <tobiaspape@gmail.com>
2012-08-15 11:03:57 -04:00
Brad King 7e8471ce7b Recognize Clang ASM support (#13473)
Since commit 571dc748 (Recognize Clang C and C++ compilers, 2010-05-17)
we recognize Clang C and C++ support.  Add Compiler/Clang-ASM.cmake to
enable use of Clang for ASM too.  Also teach Assembler test to try Clang
as an assembler.

Suggested-by: Tobias Pape <tobiaspape@gmail.com>
2012-08-15 09:40:20 -04:00
Rolf Eike Beer c6fed68ef8 CheckTypeSize: add a test for size of struct members 2012-08-14 21:14:33 +02:00
Brad King ea5bfb1d25 Add FindHg module to find Mercurial
Also teach the CMakeOnly.AllFindModules to verify Hg version detection.
2012-08-14 10:41:17 -04:00
Brad King 3c0488d7d3 Fix WarnUnusedUnusedViaUnset test pass/fail regex
After conversion of Modules .cmake files to lower case the
FAIL_REGULAR_EXPRESSION for this test matched warnings in modules other
than the test line itself.  Make the pass and fail regular expressions
specific to the file containing the lines they are testing.
2012-08-14 08:06:19 -04:00
Kitware Robot 9db3116226 Remove CMake-language block-end command arguments
Ancient versions of CMake required else(), endif(), and similar block
termination commands to have arguments matching the command starting the
block.  This is no longer the preferred style.

Run the following shell code:

for c in else endif endforeach endfunction endmacro endwhile; do
    echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/'
done >convert.sed &&
git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' |
egrep -z -v '^(Utilities/cm|Source/kwsys/)' |
egrep -z -v 'Tests/CMakeTests/While-Endwhile-' |
xargs -0 sed -i -f convert.sed &&
rm convert.sed
2012-08-13 14:19:16 -04:00