Commit Graph

16206 Commits

Author SHA1 Message Date
Bill Hoffman f578381e66 Fix vs2010 project generation error when HEADER_FILE_ONLY is set.
In vs2010 a bad project file could be generated if a .c or .cxx file
was marked with HEADER_FILE_ONLY, if it was in a library that contained
both c and c++ code.  This fixes the error in the code, and adds a test
for this case.
2010-12-20 15:25:16 -05:00
Brad King 4499d50ad2 Mark CustomCommand test perconfig.out as SYMBOLIC
The custom command with this output does not actually create the file,
so mark it as SYMBOLIC.
2010-12-20 12:09:23 -05:00
Brad King e1442ac9c1 Avoid msbuild ".\" idiosyncrasy that builds multiple configs (#11594)
If a .sln file refers to a project file with a leading ".\", as in
".\foo.vcxproj" instead of just "foo.vcxproj" or a full path then
msbuild behaves strangely.  Whenever target foo is built as a dependency
of another target, msbuild brings multiple configurations up to date
instead of just the requested configuration!

Avoid a leading ".\" in project file references to avoid this behavior.
This alternative fix to that attempted by commit 57e71533 (Avoid msbuild
idiosyncrasy that builds multiple configs, 2010-12-10) avoids use of
full path project file references which vcbuild does not support.
2010-12-20 11:56:18 -05:00
Brad King 42a2e9d91a Revert "Avoid msbuild idiosyncrasy that builds multiple configs" (#11633)
This reverts commit 57e71533f4.

While "msbuild" can handle full paths to project files in solutions,
the old "vcbuild" used for VS < 10 cannot.  We will need another
way to fix issue #11594.
2010-12-20 11:32:14 -05:00
Brad King 2c2eee61c1 Revert "Remove unused parameter "root" in some VS generator methods"
This reverts commit 10f01ae962.
2010-12-20 11:15:55 -05:00
KWSys Robot 34a2dee75d KWSys Nightly Date Stamp 2010-12-20 00:10:56 -05:00
KWSys Robot b8c8fe49da KWSys Nightly Date Stamp 2010-12-19 00:10:08 -05:00
KWSys Robot 5ae9ccd2c6 KWSys Nightly Date Stamp 2010-12-18 00:10:03 -05:00
Clinton Stimpson 3f158c6dfa cmake-gui: always enable generate button. 2010-12-17 19:04:57 -07:00
Clinton Stimpson 744366fc0b CTest: multiple ctest_test calls w/LABEL regexs (#11487)
The Initialize method was not re-initializing everything
that it should have been. This commit fixes that.
2010-12-17 17:30:13 -05:00
David Cole 984acc884b VS10: avoid warning, no nologo when verbose (#10587)
For prior versions of Visual Studio we would intentionally pass
"/nologo-" for "verbose makefiles" (CMAKE_VERBOSE_MAKEFILE ON)
when the caller did not already explicitly specify either /nologo
or /nologo-. And we still do. For the prior versions.

This had the side effect of always passing /nologo- for try_compile
operations because try_compile generates projects that have verbose
makefiles on.

However, starting with Visual Studio 10, the compiler emits
"cl ... warning D9035: option 'nologo-' has been deprecated"
when passed "/nologo-".

Therefore, this commit removes setting "/nologo-" for verbose
makefiles in the Visual Studio 10 case to avoid emitting a
warning for every single invocation of the compiler in a given
build.

With Visual Studio 10, we do not set this flag either way
and therefore, the generated project has no value for this
setting and gets Visual Studio's default value, which is
of course "/nologo", which does not produce a warning.

With Visual Studio 10, a caller can still force "/nologo-"
if desired by adding it explicitly to CMAKE_C_FLAGS or
CMAKE_CXX_FLAGS.
2010-12-17 16:01:19 -05:00
Brad King 85c0a69a92 Cygwin: Do not define 'WIN32' (#10122)
One of Cygwin's goals is to build projects using the POSIX API with no
Windows awareness.  Many CMake-built projects have been written to test
for UNIX and WIN32 but not CYGWIN.  The preferred behavior under Cygwin
in such projects is to take the UNIX path but not the WIN32 path.

Unfortunately this change is BACKWARDS INCOMPATIBLE for Cygwin-aware
CMake projects!  Some projects that previously built under Cygwin and
are Cygwin-aware when they test for WIN32 may now behave differently.
Eventually these projects will need to be updated, but to help users
build them in the meantime we print a warning about the change in
behavior.  Furthermore, one may set CMAKE_LEGACY_CYGWIN_WIN32 to request
old behavior during the transition.

Normally we avoid backwards incompatible changes, but we make an
exception in this case for a few reasons:

(1) This behavior is preferred by Cygwin's design goals.

(2) A warning provides a clear path forward for everyone who may see
incompatible behavior, and CMAKE_LEGACY_CYGWIN_WIN32 provides a
compatibility option.  The warning and compatibility option both
disappear when the minimum required version of CMake in a project is
sufficiently new, so this issue will simply go away over time as
projects are updated to account for the change.

(3) The fixes required to update projects are fairly insignificant.
Furthermore, the Cygwin distribution has no releases itself so project
versions that predate said fixes tend to be difficult to build anyway.

(4) This change enables many CMake-built projects that did not
previously build under Cygwin to work out-of-the-box.  From bug #10122:

  "I have built over 120 different source packages with (my patched)
   CMake, including most of KDE4, and have found that NOT defining
   WIN32 on Cygwin is much more accurate." -- Yaakov Selkowitz

A fully compatible change would require patches on top of these project
releases for Cygwin even though they otherwise need not be aware of it.

(5) Yaakov has been maintaining a fork of CMake with this change for the
Cygwin Ports distribution.  It works well in practice.  By accepting the
change in upstream CMake we avoid confusion between the versions.

CMake itself builds without WIN32 defined on Cygwin.  Simply disable
CMAKE_LEGACY_CYGWIN_WIN32 explicitly in our own CMakeLists.txt file.
2010-12-17 14:19:58 -05:00
David Cole cd9aa73f3a CPack: look for makensis in the PATH (#8210)
Previously, we would search in the Windows registry for the path
to makensis, and fail immediately if we could not read the registry
value, assuming that it was simply not installed.

This change looks for makensis in the PATH even if the registry value
is not there, enabling the scenario where makensis is installed without
admin privileges and never even touches HKEY_LOCAL_MACHINE during the
non-admin install.
2010-12-17 13:29:10 -05:00
Ben Boeckel 96309fc6e2 Make TestsWorkingDirectory test a C file 2010-12-17 12:34:20 -05:00
Ben Boeckel 7e0b001466 Fix missed _POLL_EMUL_H_ and HAVE_POLL combo 2010-12-17 11:41:30 -05:00
Ben Boeckel 8a61950e42 Toss out strerror_r macros 2010-12-17 11:31:15 -05:00
Ben Boeckel 44fca8b51a Check for poll when looking for _POLL_EMUL_H_ 2010-12-17 11:18:49 -05:00
David Cole 66e7917532 VS10: stop build on custom command error (#11533)
In VS9 and previous versions, :VCReportError is the goto label
to jump to after a failed custom command. It stops the build
before it tries to go any further.

In VS10, :VCEnd is the correct label to use.

Create a method in the VS generators to provide the correct
line of script to use for each version of Visual Studio.

For more internal details, search for VCEnd in the
C:\Program Files\MSBuild directory.
2010-12-17 11:11:55 -05:00
Ben Boeckel a4a5e37568 Use iostream to make Borland happy
It seems as though cstdio doesn't bring in stdio.h with the Borland
compilers.
2010-12-17 11:07:40 -05:00
Ben Boeckel cfe53cddbd Fully specify the path to old-signature add_test 2010-12-17 11:07:19 -05:00
Ben Boeckel 017d4e9d2c Group adding tests with its properties 2010-12-17 11:06:59 -05:00
Brad King ad25a968b9 Merge branch 'ImprovedDotSupport2' into dev/strict-mode
Conflicts:
	Source/cmake.cxx
2010-12-17 10:32:01 -05:00
Brad King c128abe383 Merge branch 'AddCMAKE_CURRENT_LIST_DIR' into dev/strict-mode
Conflicts:
	Source/cmMakefile.cxx
2010-12-17 10:31:41 -05:00
Brad King 9bcaff02ff Merge branch 'cmake-guiRememberAdvancedCheckbox' into dev/strict-mode
Conflicts:
	Source/QtDialog/CMakeSetupDialog.cxx
2010-12-17 10:31:19 -05:00
Ben Boeckel 561cc3359c Only test the default cwd with Makefiles
XCode and Visual Studio generators can run from
${EXECUTABLE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE} and determining this at
testing time is not feasible without adding in more
PASS_REGULAR_EXPRESSION's which may create false positives.

Since the parsing code is in cross-platform, generator-agnostic  code,
if it passes with Makefiles, it should work with other generators on
other platforms.
2010-12-17 10:24:14 -05:00
Ben Boeckel d87bae7f74 Simplify the _default_cwd derivation 2010-12-17 10:23:54 -05:00
Ben Boeckel 992c74f3e0 Use --><-- markers to denote the path 2010-12-17 10:23:24 -05:00
Brad King 62c6d2d7e7 Merge branch 'cmake_--system-information_min-version' into cygwin 2010-12-17 10:18:56 -05:00
Brad King 72db20fb25 Merge branch 'tests-if-CYGWIN' into cygwin 2010-12-17 10:18:51 -05:00
Brad King 853de2ed12 Merge branch 'custom-command-generator-expressions' into resolve/tests-if-CYGWIN
The tests-if-CYGWIN topic made a change to Tests/Testing/CMakeLists.txt
in code that the custom-command-generator-expressions topic moved to the
Tests/PerConfig/CMakeLists.txt file.  Make the same change to the same
content in the new file.  (Only a small part of the file moved so rename
detection did not do this automatically.)
2010-12-17 10:07:19 -05:00
Brad King d89e238e6c Cygwin: Fix tests to check CYGWIN instead of WIN32
Use "UNIX AND NOT CYGWIN" to detect a "soname" platform.
Use "WIN32 OR CYGWIN" to detect a "DLL" platform.
2010-12-17 09:46:24 -05:00
Ben Boeckel 5249551f9f Flip slashes around on Windows 2010-12-17 09:45:39 -05:00
Brad King a6cb1d4653 Declare min CMake version in --system-information project
The --system-information flag's project triggered a CMP0000 warning
because the CMakeLists.txt it generates needs cmake_minimum_required.
2010-12-17 09:39:30 -05:00
Ben Boeckel 0a014dab5c Add ctype.h include for toupper() 2010-12-17 09:23:59 -05:00
Ben Boeckel af12f83d80 Fix header includes for C++ and Visual Studio 2010-12-17 09:14:25 -05:00
Brad King f7d525e3a6 Xcode: Generate native 3.2 projects
Set objectVersion = 46; compatibilityVersion = "Xcode 3.2" when
Xcode 3.2 is detected.
2010-12-17 08:41:32 -05:00
KWSys Robot d11c70295b KWSys Nightly Date Stamp 2010-12-17 00:10:43 -05:00
Brad King b97760fa52 Remove call to SystemTools::GetMaximumFilePathLength
The KWSys SystemTools::GetMaximumFilePathLength method is poorly
conceived and should not be used.  The cmDepends code honors its own
MaxPath buffer size.  Just hard-code it.
2010-12-16 17:41:27 -05:00
Ben Boeckel 5597aa24f1 Rename the project to match the test 2010-12-16 17:29:19 -05:00
Ben Boeckel 9bf4165437 Add tests for WORKING_DIRECTORY arg to add_test 2010-12-16 16:50:48 -05:00
Ben Boeckel 7679f9fab0 Rename WorkingDirectory test 2010-12-16 16:50:47 -05:00
Ben Boeckel 42de5d02dd Add WORKING_DIRECTORY argument to add_test 2010-12-16 16:50:47 -05:00
Rolf Eike Beer d95f817f77 Add the WORKING_DIRECTORY property to tests 2010-12-16 16:23:18 -05:00
Brad King 26cc29a8e2 Warn in find(GLOB) docs about bad use case (#11617)
The first instinct of a lot of users is to use file(GLOB) to assemble
lists of sources.  Add a warning to the help text stating that it should
not be used for this purpose and briefly explain why.

Suggested-By: Ryan Pavlik
2010-12-16 15:49:32 -05:00
Ben Boeckel 8d36890723 Use _POLL_EMUL_H_ instead of HAVE_POLL_FINE
Headers define _POLL_EMUL_H_ if they are not in the kernel, so a try_run
check for them is not necessary.
2010-12-16 14:59:05 -05:00
Ben Boeckel c5cbb318c5 Ignore strerror_r since CMake isn't threaded 2010-12-16 14:58:05 -05:00
Brad King 72ebd4ee12 Merge topic 'try_compile-RemoveFile'
097294e Fix try_compile RemoveFile anti-virus loop (#11503)
2010-12-16 14:00:28 -05:00
Brad King 6b61c04330 Merge topic 'try-compile-min-version'
2afb820 Write full version into try_compile CMakeLists
2010-12-16 14:00:24 -05:00
Brad King 58347549e6 Merge topic 'release-cygwin-ncurses'
0f5c711 Cygwin: Fix release script libncurses search patterns (#10766)
2010-12-16 14:00:21 -05:00
Brad King ed9979f931 Merge topic 'link-depend-def-file'
3e27997 Make link rule depend on ".def" file (#11014)
2010-12-16 14:00:17 -05:00