Commit Graph

13465 Commits

Author SHA1 Message Date
Philip Lowman d5dd8f126d Resolve #9685: Fix include dir to be correct path
Also refrain from setting _LIBRARIES & _INCLUDE_DIRS if lib not found (seems to be mostly standard practice).
2009-10-08 22:50:13 -04:00
Brad King 9a77f65da7 Remove CMake Policy CMP0015 until it is revised
We revert commit "Create CMake Policy CMP0015 to fix set(CACHE)" because
the NEW behavior of the policy breaks a valid use case:

  # CMakeLists.txt
  option(BUILD_SHARED_LIBS "..." ON)
  add_library(mylib ...)
  set(BUILD_SHARED_LIBS OFF) # we want only mylib to be shared
  add_subdirectory(ThirdParty)

  # ThirdParty/CMakeLists.txt
  option(BUILD_SHARED_LIBS "..." ON)
  # uh, oh, with NEW behavior this dir uses shared libs!!!

We'll re-introduce the policy later with a different change in behavior
to resolve the motivating case, which was more subtle but less common.

See issue #9008.
2009-10-08 14:56:15 -04:00
Brad King 24bf97440f REALLY fix color check for dependency scanning
The commit "Really fix color check for dependency scanning" disabled
color unless "make COLOR=ON" is specified.  This restores the previous
default behavior when CMAKE_COLOR_MAKEFILE is ON while retaining the
previous commit's fix.  See issue #9680.
2009-10-08 14:54:19 -04:00
Brad King dfa3b4f145 Really fix color check for dependency scanning
The commit "Fix color check for dependency scanning" was meant to
disable color if CMAKE_COLOR_MAKEFILE was off.  It did remove use of the
activation option '--color' but it failed to make the default false when
the option was missing.  This commit corrects that.  See issue #9680.
2009-10-08 14:45:25 -04:00
David Cole c16ac1a31d Reduce duration of ctest_sleep arguments. Add SmallAndFast project. Replace kwsys with SmallAndFast to make CTestTest faster. (I will keep an eye on coverage results after this commit and make sure we still have equivalent ctest coverage.) 2009-10-08 12:17:03 -04:00
Brad King 65b6a8f54a Do not use -fPIC to link executables
The commit "add support for borland run time flag for shared builds"
started using the value of CMAKE_SHARED_LIBRARY_CXX_FLAGS to link
executables because Borland requires some flags both at compile and link
time.  This change ended up propagating all the way to the current
Makefile generators and the behavior applies on all platforms.

In general it is incorrect to use these flags to link executables.  The
commit "Split Borland compiler information files" re-wrote Borland
support to work without this behavior, so we remove it in this commit.

Patch from Ben Hutchings.  See issue #9659.
2009-10-08 11:56:30 -04:00
Brad King 0653286dc6 Split Borland compiler information files
This commit re-writes Borland compiler build rules.  We split the rules
into modern <os>-<id>-<lang> information modules but share a common
macro between languages to avoid duplication.

We also address a bug in the previous rules that would build some target
types against the static Borland runtime and others against the shared
Borland runtime in one build tree.  Now we always use the shared runtime
as is the default in the rules for MS tools.
2009-10-08 11:56:07 -04:00
Zach Mullen 2af045dfc5 Trimmed off the newline from sw_vers output on mac, it could cause xml parsing errors if left in 2009-10-08 10:56:55 -04:00
KWSys Robot f3a0fba75e KWSys Nightly Date Stamp 2009-10-08 00:01:02 -04:00
Clinton Stimpson cff3a4420b Check for openssl-linked option with Qt 4.4+ before making ssl a dependency. 2009-10-07 18:51:39 -04:00
Brad King 7dcfc8d23a Make Complex test of CMakeLib more optional
Previously we passed inputs to the decision to each Complex test and let
the test source decide.  This commit moves the decision out of the tests
and makes it an option() in their source.  This makes it possible to
build the Complex tests from outside the CMake test tree.
2009-10-07 16:11:52 -04:00
Brad King 2c1a01dc6d Modernize FindVTK module
This teaches the FindVTK module to use the Config mode of find_package()
to search for VTKConfig in the common case.  The old search method based
on find_path() and UseVTK is now used only to search for VTK 4.0.

This approach avoids the need to update the module for each new VTK
version because find_package(VTK) automatically searches "lib/vtk*".  It
also addresses issue #9105 since find_package searches lib64 paths too.
2009-10-07 14:48:22 -04:00
Brad King 71910b3fd4 Fix find_package() when <pkg>_DIR is wrong
When <pkg>_DIR is set to an incorrect version we search again and store
the result in the variable, even if it is <pkg>_DIR-NOTFOUND.

There was a bug in the case when the new search does not find anything
and the old value came from a cache entry with UNINITALIZED type.  The
command used to try to load a package configuration file from the last
place searched, and would leave the old wrong value in the entry.  This
commit fixes the behavior to avoid trying to load a missing file and to
set the value to <pkg>_DIR-NOTFOUND as expected.
2009-10-07 14:37:30 -04:00
Brad King 1b5a986a42 Do not collapse path of NOTFOUND values
In cmMakefile::AddCacheDefinition we collapse paths specified in PATH or
FILEPATH cache entries originally specified on the command line with
UNINITALIZED type.  This commit fixes the logic to avoid collapsing
<var>-NOTFOUND and other false values.  The change allows other CMake
code to force a NOTFOUND value on an entry with UNINITALIZED type.
2009-10-07 14:37:19 -04:00
Brad King fff1c6d275 More robust implicit link line detection regex
The regex used by CMAKE_PARSE_IMPLICIT_LINK_INFO to detect link lines
should not match lines that happen to have ".../ld.../..." in them.  A
linker name should match only as the last component of a path.

See issue #9666.
2009-10-07 08:43:51 -04:00
Bill Hoffman 45d22b48ab fix Xcode 30 generator 2009-10-07 08:15:14 -04:00
David Cole a6facbcca3 Use the correct CMake (the freshly built one) to drive the CMakeWizardTest. 2009-10-07 06:33:09 -04:00
KWSys Robot d542cc01cb KWSys Nightly Date Stamp 2009-10-07 00:01:07 -04:00
James Bigler 94fff7af35 Fix Xcode build.
Move the make_directory command to the main target, so that CMAKE_CFG_INTDIR
will get expanded by the build tool.
2009-10-06 22:52:52 -04:00
Brad King ca95b339fb Use integer literal instead of character
The commit "Support more special characters in file(STRINGS)" added code
using a 'char' literal as an array index.  Some compilers warn about
this because char might be a signed type, leading to negative indices.
We replace the literal with an integer to avoid the warning.
2009-10-06 17:51:34 -04:00
Brad King c6fdff2b22 Support more special characters in file(STRINGS)
The commits "Teach Fortran compiler identification about the Portland
Group compiler" and "Fix previous change to file(STRINGS) command"
taught file(STRINGS) to recognize the form-feed '\f' character as part
of string literals.  The Portland Group Fortran compiler also puts 0x14
bytes at the end of string literals in some cases.  We generalize the
previous solution and add the new character in this commit.
2009-10-06 16:33:15 -04:00
Brad King 20e6ac320d Log implicit link line detection regex
This commit teaches the CMAKE_PARSE_IMPLICIT_LINK_INFO function to log
the regex it uses to detect the linker invocation line.  The regex is
computed from the CMAKE_LINKER if it is found, so it might change.  A
strange value might match the wrong line and cause implicit link info
extraction to fail.

See issue #9666.
2009-10-06 16:31:43 -04:00
Brad King b9850a614e Log implicit link information parsing actions
This commit teaches the CMAKE_PARSE_IMPLICIT_LINK_INFO function to log
its actions.  We store the log in CMakeFiles/CMakeOutput.log at the top
of the project build tree.  This will make diagnosis of implicit link
information parsing problems easier.
2009-10-06 15:16:12 -04:00
Zach Mullen 80533948b2 Fix bus error on mac. Was a result of not having null termination of arg list to sw_vers calls. 2009-10-06 14:55:48 -04:00
David Cole 5b74d031db Increase coverage. Intentionally trigger error conditions. Call all the else*/end* functions without proper opening or containing code structure: else, elseif, endforeach, endfunction, endif, endmacro, endwhile. 2009-10-06 14:45:19 -04:00
Alexander Neundorf 8a5ae4c15e speedup C dependency scanning even more
Scanning the dependencies for kdelibs/khtml/ (when all files are scanned) is
now down to 4.6 s from 6.3 s before this change (without the
headerLocationCache it takes about 14 s here).
It doesn't really make sense to include the complete include path as part
of the key for the map, since the include path will be the same for
all files in a project, so it doesn't add anything.

Alex
2009-10-06 13:57:41 -04:00
Brad King 9000b5a4de Avoid non-root copies of root-only targets
In cmGlobalGenerator::GetTargetSets we collect targets from all local
generators in a tree or subtree corresponding to a project() command.
Some targets, such as ALL_BUILD, are duplicated in each subdirectory
with a project() command.  For such targets we should keep only the copy
for the top-most (root) local generator.

Previously this filtering was done in each VS IDE generator, but it is
easier to do it in one place when the targets are first encountered.
This also fixes bad ALL_BUILD dependencies generated for VS 7.0 because
the cmGlobalVisualStudio7Generator::WriteTargetDepends method was not
filtering out duplicates.  Now we avoid duplicates from the start.
2009-10-06 13:30:00 -04:00
David Cole d8efcfc787 Increase coverage. Add test of class cmakewizard. (cmake -i 'mode') 2009-10-06 13:27:13 -04:00
Zach Mullen 444e581860 Added better OS information for Mac OS X 2009-10-06 11:46:16 -04:00
Brad King d0c03f804f Use work-around from bug 4772 for C++ and Fortran
The commit "fix for bug 4772" added a work-around to CMakeCInformation
for platform config files that put compiler information in the system
file (like SunOS flags for GCC).  This commit adds the same work-around
for CXX and Fortran.  It is necessary to support enabling these
languages separately from C in other subdirectories.

The commit "Avoid (Unix|Windows)Paths.cmake multiple include" added
include blockers that prevent the files from multiple inclusion, so it
is safe to include the system information files from every language.

See issue #4772 and issue #9656.
2009-10-06 11:06:38 -04:00
Brad King d8f6d3a274 Target copy ctor should initialize internal state
The commit "Target copy ctor should copy internal state" created a new
cmTargetInternals constructor but failed to initialize a POD member that
the original constructor initializes.  This commit fixes it.
2009-10-06 09:59:05 -04:00
Brad King d4ef3bcf59 Use explicit conversion to avoid warnings in cmELF 2009-10-06 08:33:05 -04:00
KWSys Robot 6b14c1d273 KWSys Nightly Date Stamp 2009-10-06 00:01:05 -04:00
James Bigler 7112227c18 Updated copyright notice to conform to NVIDIA guidelines. 2009-10-05 17:14:33 -04:00
Brad King d4342e8ae7 Fortran test: Match config for external project
In the Fortran test we use a custom command to build another Fortran
project internally.  The project provides a Fortran module and library
to which to link.  This commit teaches the test to build the extra
project using the same build configuration as the main project.
2009-10-05 16:51:11 -04:00
David Cole b3611f70ae Add tests for uncovered bits of the math and cmake_minimum_required cmake functions. 2009-10-05 16:50:21 -04:00
Brad King f7cfd5c99f FortranCInterface: Mangling for Intel on Windows
The Intel Fortran compiler for Windows uses upper-case symbol names with
no trailing underscore.
2009-10-05 16:30:58 -04:00
Brad King 02f85f98c6 Target copy ctor should copy internal state
Ideally we should never copy cmTarget instances, but it is a pain to
remove current uses of it.  The pimplized portion of cmTarget has mostly
members that cache results, but some are part of the object state.
These should be copied in the copy ctor instead of re-initialized.
2009-10-05 16:14:17 -04:00
Clinton Stimpson 08583fc58e don't allow consecutive generates without a configure. 2009-10-05 16:05:40 -04:00
Brad King 58a616dea3 Fix Preprocess test for Intel on Windows
We need to leave out the '%' character from tests with the Intel
compiler.  Since '%' needs to be written '%%' in NMake when not using a
response file but just '%' when using a response file, we just skip the
character for now.  It works with MSVC in NMake only because that
compiler expects '%%' inside response files, which do get used.
2009-10-05 14:39:28 -04:00
Brad King f1b7e620f7 Fix ModuleDefinition test for Intel on Windows
CMake defines MSVC only for a VS compiler, but the Intel compiler adds
the preprocessor definition _MSC_VER.  Instead of relying on separate
tests to decide whether to use example_dll_2, we do one test in CMake
and then add our own preprocessor definition.
2009-10-05 14:39:23 -04:00
Brad King 667f0724a8 Fix PrecompiledHeader test for Intel on Windows
This commit updates the test's sanity check to allow Intel too.
Previously it refused to run on non-MSVC compilers.
2009-10-05 14:39:14 -04:00
Bill Hoffman 0556075034 Teach intel compiler on windows to place .lib files and .pdb files. 2009-10-05 13:17:53 -04:00
Brad King b133467567 CPack: Fix bash-isms in launch script
Patch from Raphael Geissert and Modestas Vainius.  See issue #9659.
2009-10-05 13:14:30 -04:00
Bill Hoffman 57ece74730 Teach intel compiler on windows to place .lib files and .pdb files. 2009-10-05 12:49:51 -04:00
Zach Mullen 7fd3d7cf80 BUG: #0009648 Change "The following tests FAILED" message to print on stdout rather than stderr 2009-10-05 12:47:09 -04:00
Brad King f98a4e63fd Avoid (Unix|Windows)Paths.cmake multiple include
Block multiple inclusion because "Modules/CMakeCInformation.cmake"
includes "Platform/${CMAKE_SYSTEM_NAME}" even though the generic
module "CMakeSystemSpecificInformation.cmake" already included it.

The extra inclusion is a work-around to address issue #4772 without
intrusive platform file changes.  Once those changes are made the
work-around and these include blockers can be removed.  See issue #9656.
2009-10-05 11:47:25 -04:00
Brad King 3dc80f8d8c Add copyright notice to (Unix|Windows)Paths.cmake
This commit adds our copyright notice to these non-trivial platform
modules.
2009-10-05 11:47:05 -04:00
Clinton Stimpson bca63bb738 When getting include dirs for moc, also watch for framework includes and use -F instead of -I. 2009-10-05 11:21:30 -04:00
Brad King c118fd4c55 Find locally installed software first
This commit re-orders the search path prefix list from

  /
  /usr
  /usr/local

to

  /usr/local
  /
  /usr

so that locally-installed software is preferred.

This makes the search consistent with the Filesystem Hierarchy Standard:

  http://www.pathname.com/fhs/

See issue #9657.
2009-10-05 11:09:15 -04:00