CMake/Tests
Stephen Kelly bd34963002 Refactor generation of shared library flags
CMAKE_SHARED_LIBRARY_<lang>_FLAGS has flags on various platforms for a
variety of purposes that are correlated with shared libraries but not
exclusive to them.  Refactor generation of these flags to use new
purpose-specific platform variables

  CMAKE_<lang>_COMPILE_OPTIONS_DLL
  CMAKE_<lang>_COMPILE_OPTIONS_PIC
  CMAKE_<lang>_COMPILE_OPTIONS_PIE

Activate the DLL flags specifically for shared libraries.  Add a new
POSITION_INDEPENDENT_CODE target property to activate PIC/PIE flags, and
default to true for shared libraries to preserve default behavior.
Initialize the new property from CMAKE_POSITION_INDEPENDENT_CODE to
allow easy global configuration in projects.

Although the default behavior is unchanged by this refactoring, the new
approach ignores CMAKE_SHARED_LIBRARY_<lang>_FLAGS completely.  We must
leave it set in case projects reference the value.  Furthermore, if a
project modifies CMAKE_SHARED_LIBRARY_<lang>_FLAGS it expects the new
value to be used.  Add policy CMP0018 to handle compatibility with
projects that modify this platform variable.

Add a PositionIndependentCode test on platforms where we can get
meaningful results.
2012-06-12 15:38:48 -04:00
..
Architecture Use correct default multiple architecture values in test 2011-07-19 11:53:31 -04:00
ArgumentExpansion Fix ArgumentExpansion test expected results 2011-01-11 17:10:28 -05:00
Assembler Do not bother enabling C++ in Assembler test 2011-03-04 09:17:30 -05:00
BuildDepends Provide dependency file flags to generator 2012-02-02 23:36:49 +00:00
BundleGeneratorTest BUG: Fix issue #7523: Analyze output of 'hdiutil attach' to get the name of the volume that was mounted. Eliminates the need to use the -mountpoint arg of hdiutil which has a silly 90 character limit on the name of the mount point. Also add a custom volume icon to the BundleGeneratorTest to cover this code. 2009-01-21 13:39:22 -05:00
BundleTest Removed most usage of Carbon in favour of CoreFoundation 2011-01-31 18:21:20 -05:00
BundleUtilities Fix BundleUtilities test failure with space in build path. 2012-01-20 22:02:01 -07:00
CFBundleTest Fix XCode -> Xcode typos, notably in man page (#12231) 2011-05-31 09:13:00 -04:00
CMakeCommands/target_link_libraries Use generalized RunCMake test infrastrucure for build_command test 2012-03-12 09:33:21 -04:00
CMakeLib complex: Move cmSystemTools::UpperCase test to CMakeLibTests 2011-12-23 16:16:54 -05:00
CMakeOnly FindPkgConfig.cmake: fix documented output variable not set (#13125,#13132) 2012-04-15 08:39:51 +02:00
CMakeTestAllGenerators Ensure libgmp-10.dll is in the PATH for CMakeTestAllGenerators 2011-07-29 11:13:33 -04:00
CMakeTestBadCommandLines Add test CMakeTestBadCommandLines. Also add --graphviz arg to cmake invoked during the CPackComponents test. The purpose of each is to increase coverage of cmake.cxx. 2009-10-27 12:18:41 -04:00
CMakeTestMultipleConfigures Add test to enable detecting differences between generation N and N+1 of a cmake generated build tree. Theoretically, each generation run with exactly the same arguments should be identical to the previous generation... Practically, there are differences. This is a tool to help us measure those differences. For now, the test always succeeds. Eventually, we may add the code to make it fail when there are differences. 2009-10-26 16:09:27 -04:00
CMakeTests Merge topic 'test-getpropery' 2012-03-06 15:27:28 -05:00
COnly Fix CXX/Fortran MODULE flags when enabled before C (#12929) 2012-02-03 15:45:13 -05:00
CPackComponents CPack: Add CPACK_NSIS_INSTALL_ROOT variable (#9148) 2011-01-11 15:42:42 -05:00
CPackComponentsForAll CPackRPM support component specific variables for spec files 2011-10-30 20:13:20 +01:00
CPackTestAllGenerators Fix failing test. Forgot to double quote last arg to STRING. 2009-10-20 15:18:45 -04:00
CTestConfig Fix issue #2336 - honor the -C arg to ctest. Honor it for all stages of running -D dashboards from the command line and running ctest_configure, ctest_build and ctest_test commands in -S scripts. Also, allow a script to change it by setting the CTEST_CONFIGURATION_TYPE variable: allows for multiple configuration build/test cycles within one script. Add a new signature for the cmake command build_command that accepts CONFIGURATION as one argument. The original build_command signature is still there, but now marked as deprecated in the documentation. Of course... also add CTestConfig tests to verify that -C is honored for -D dashboards and -S scripts. 2009-12-04 12:09:01 -05:00
CTestScriptMode STYLE: don't load CMakeDetermineSystem and CMakeSystemSpecific directly from 2009-07-12 04:51:51 -04:00
CTestTest Remove unused code from CTest test suite 2009-12-02 09:16:29 -05:00
CTestTest2 CTestTest2: Avoid running purify unless requested 2011-01-27 14:36:14 -05:00
CTestTestBadExe Tests: Eliminate unnecessary files and variables. 2011-01-28 14:58:04 -05:00
CTestTestChecksum Tests: Eliminate unnecessary files and variables. 2011-01-28 14:58:04 -05:00
CTestTestConfigFileInBuildDir CTest: Look for CTestConfig.cmake in build dir first, then source dir 2011-10-26 23:23:03 -04:00
CTestTestCostSerial Tests: Eliminate unnecessary files and variables. 2011-01-28 14:58:04 -05:00
CTestTestCrash Tests: Eliminate unnecessary files and variables. 2011-01-28 14:58:04 -05:00
CTestTestCycle Tests: Eliminate unnecessary files and variables. 2011-01-28 14:58:04 -05:00
CTestTestDepends Tests: Eliminate unnecessary files and variables. 2011-01-28 14:58:04 -05:00
CTestTestFailedSubmits Tests: Eliminate unnecessary files and variables. 2011-01-28 14:58:04 -05:00
CTestTestFailure Tests: Eliminate unnecessary files and variables. 2011-01-28 14:58:04 -05:00
CTestTestParallel Tests: Eliminate unnecessary files and variables. 2011-01-28 14:58:04 -05:00
CTestTestResourceLock Tests: Eliminate unnecessary files and variables. 2011-01-28 14:58:04 -05:00
CTestTestRunScript Increase ctest RunScript line coverage. (Note: NEW_PROCESS argument is currently causing the test to fail, still investigating the reason for this, will add coverage for it later) 2009-10-30 17:43:55 -04:00
CTestTestScheduler Tests: Eliminate unnecessary files and variables. 2011-01-28 14:58:04 -05:00
CTestTestStopTime Tests: Eliminate unnecessary files and variables. 2011-01-28 14:58:04 -05:00
CTestTestSubdir Tests: Eliminate unnecessary files and variables. 2011-01-28 14:58:04 -05:00
CTestTestTimeout Tests: Eliminate unnecessary files and variables. 2011-01-28 14:58:04 -05:00
CTestTestUpload Add the FILES keyword to ctest_upload command 2011-03-15 15:07:37 -04:00
CTestTestZeroTimeout Tests: Eliminate unnecessary files and variables. 2011-01-28 14:58:04 -05:00
CheckCompilerRelatedVariables Teach our tests about special cases for VS 11 2011-09-23 11:07:24 -04:00
CommandLineTest Remove unused DumpDocumentation code 2009-12-08 09:38:36 -05:00
CompileCommandOutput Fix CompileCommandOutput test build on Windows 2011-05-20 08:06:35 -04:00
Complex Find_library(): allow searching for versioned shared objects 2012-02-18 16:19:29 +01:00
ComplexOneConfig complex: Remove unused option to test CMakeLib 2011-12-23 16:16:57 -05:00
Contracts Tests: Update drop site value for the Trilinos contract test 2012-02-03 11:52:54 -05:00
CrossCompile Fix TRY_RUN cross compile test to pass consistently 2009-11-09 12:05:49 -05:00
CustComDepend ENH: preclean some warnings 2008-03-25 11:27:18 -04:00
CustomCommand Normalize slashes of add_custom_(command|target) DEPENDS (#11973) 2011-03-30 09:52:07 -04:00
CustomCommandWorkingDirectory Handle relative WORKING_DIRECTORY in add_custom_(command|target) 2011-01-26 18:02:02 -05:00
CxxOnly Fix CXX/Fortran MODULE flags when enabled before C (#12929) 2012-02-03 15:45:13 -05:00
Dependency Honor strong intra-component target dependencies 2010-08-25 17:14:13 -04:00
DocTest ENH: preclean some warnings 2008-03-25 11:27:18 -04:00
DoubleProject Fix the case where cmake --build failed with two project cmds in one file. 2011-12-20 14:16:25 -05:00
EmptyLibrary Add test that CMake errors with empty libs 2010-09-30 11:01:35 -04:00
Environment ENH: Implement feature request from issue 7885. Allow setting environment variables on a per-test basis for ctest using set_test_properties ENVIRONMENT. 2008-11-26 14:38:43 -05:00
ExportImport Check*.cmake: Expand imported targets in CMAKE_REQUIRED_LIBRARIES 2012-02-21 15:38:15 -05:00
ExternalOBJ VS10: Fix external objects generated outside target (#13047) 2012-03-20 09:01:02 -04:00
ExternalProject Fix MSYS CVS local test repo path format (#13001) 2012-03-02 14:23:01 -05:00
FindModulesExecuteAll ENH: add a project name 2008-06-16 20:05:46 -04:00
FindPackageModeMakefileTest Silence make on OpenBSD in FindPackageModeTest(#12508) 2011-10-12 22:20:18 +02:00
FindPackageTest add test for #13241: empty SIZEOF_VOIDP in write_basic_package_version_file 2012-05-23 20:48:47 +02:00
ForceInclude Map multiple /FI flags for VS < 10 (#11649) 2011-01-03 10:02:16 -05:00
Fortran Fix and simplify Fortran test compiler compatibility check 2011-12-15 09:25:49 -05:00
FortranC Honor real language flags in FortranC.Flags test 2009-12-15 14:03:03 -05:00
FortranOnly Fortran: Add support for free- and fixed-form flags 2011-08-31 10:24:43 -04:00
Framework BUG: Fix issue #7046 - make sure extensionless headers and resource files work with the Xcode generator. Also fix incorrect mappings in the lastKnownFileType code. Add some extensionless files to the Framework test. 2008-09-05 15:51:19 -04:00
FunctionTest VS2010: Honor PROJECT_LABEL target property (#10611) 2010-09-09 16:44:30 -04:00
IPO Test INTERPROCEDURAL_OPTIMIZATION build feature 2009-10-02 13:52:29 -04:00
IncludeDirectories Extract and use the INCLUDE_DIRECTORIES target properties. 2012-02-22 06:31:50 -05:00
JCTest ENH: make it take longer 2008-12-29 18:11:02 -05:00
Java Tests: Java tests should test UseJava.cmake 2011-03-29 11:54:42 +02:00
Jump Cygwin: Fix tests to check CYGWIN instead of WIN32 2010-12-17 09:46:24 -05:00
KDE4StableBranchTest add a test which checks that cmake can build the latest stable KDE4 (kdelibs) release 2009-10-15 18:18:23 -04:00
LibName BUG: better fix for .dll.lib problem 2006-11-30 17:32:46 -05:00
LinkDirectory Test CMP0015 OLD and NEW link_directories behavior 2009-11-24 11:17:16 -05:00
LinkFlags Intel-specific workaround for LinkFlags tests 2010-06-03 09:47:23 -04:00
LinkLanguage Test target link information invalidation 2009-10-05 09:07:09 -04:00
LinkLine ENH: some cleanup, condensing some tests, removing arguments that were not needed but rather were cut and paste copies etc 2007-05-18 15:11:20 -04:00
LinkLineOrder ENH: remove warnings in tests 2004-05-02 11:50:14 -04:00
LinkStatic Test static linking with LINK_SEARCH_START_STATIC 2011-03-04 08:37:57 -05:00
LoadCommand LoadCommand test: cleanup 2012-01-20 18:31:32 +01:00
LoadCommandOneConfig ENH: Remove CMAKE_ANSI_CFLAGS from tests 2009-07-08 11:41:48 -04:00
MFC Tests: Only really run MFC test if we can build MFC apps (#11213) 2011-12-16 16:30:10 -05:00
MacroTest ENH: Remove CMAKE_ANSI_CFLAGS from tests 2009-07-08 11:41:48 -04:00
MakeClean ENH: Remove CMAKE_ANSI_CFLAGS from tests 2009-07-08 11:41:48 -04:00
MathTest ENH: preclean some warnings 2008-03-25 11:27:18 -04:00
MissingSourceFile Test that missing source mentions directory (#11677) 2011-01-15 08:16:50 -05:00
Module CheckCXXCompilerFlag test: make it a CMakeOnly test 2012-01-30 19:42:51 +01:00
ModuleDefinition Test generated module .def files 2012-04-02 10:54:25 -04:00
MumpsCoverage Update test data to match new coverage format. 2012-05-07 15:46:29 -04:00
NewlineArgs ENH: preclean some warnings 2008-03-25 11:27:18 -04:00
ObjC++ ENH: some more CMakeList cleanups 2007-05-11 10:22:20 -04:00
ObjectLibrary Fix ObjectLibrary test on Watcom 2012-03-20 15:09:57 -04:00
OutDir Fix OutDir test on HP, MinGW, and Cygwin 2009-10-29 09:26:17 -04:00
OutOfBinary BUG: Fixed out-of-source subdirectories to work when they are also out-of-binary. Updated the OutOfSource test to test this feature. 2006-10-09 21:25:58 -04:00
OutOfSource Ninja: Add the Ninja generator 2012-02-02 23:40:21 +00:00
PerConfig Merge topic 'resolve/tests-if-CYGWIN' 2010-12-21 14:05:53 -05:00
Plugin Test NO_SONAME property (#13155) 2012-04-30 11:53:27 -04:00
Policy0002 Test support for OLD behavior of policy CMP0002 2009-09-28 17:34:34 -04:00
PolicyScope Allow users to specify defaults for unset policies 2011-01-04 07:46:10 -05:00
PositionIndependentTargets Refactor generation of shared library flags 2012-06-12 15:38:48 -04:00
PreOrder ENH: some more CMakeList cleanups 2007-05-11 10:22:20 -04:00
PrecompiledHeader Ninja: add support for OBJECT_OUTPUTS, fix PrecompiledHeader test case 2012-03-17 23:16:40 +00:00
Preprocess Teach our tests about special cases for VS 11 2011-09-23 11:07:24 -04:00
Properties Fix #12342: Add APPEND_STRING option to set_property() 2011-07-15 20:57:33 +02:00
Qt4Deploy Remove QtGui dependency in Qt4Deploy test and verify QtSql existance. 2012-02-29 07:55:31 -07:00
QtAutomoc automoc: add define to test which caused bug #13018 2012-03-26 22:11:46 +02:00
ReturnTest ENH: Remove CMAKE_ANSI_CFLAGS from tests 2009-07-08 11:41:48 -04:00
RunCMake Merge topic 'list-empty-error' 2012-04-25 14:03:53 -04:00
RuntimePath ENH: Remove CMAKE_ANSI_CFLAGS from tests 2009-07-08 11:41:48 -04:00
SBCS Visual Studio: Allow setting Single Byte Character Set (#12189) 2012-02-17 11:30:23 -05:00
SameName ENH: preclean some warnings 2008-03-25 11:27:18 -04:00
SetLang ENH: preclean some warnings 2008-03-25 11:27:18 -04:00
Simple ENH: some more CMakeList cleanups 2007-05-11 10:22:20 -04:00
SimpleCOnly ENH: add a SimpleCOnly test, this is needed e.g. for testing sdcc since this 2007-06-26 15:30:02 -04:00
SimpleExclude ENH: preclean some warnings 2008-03-25 11:27:18 -04:00
SimpleInstall export(): Document undefined behavior of location properties 2011-12-01 16:00:12 -05:00
SimpleInstallS2 export(): Document undefined behavior of location properties 2011-12-01 16:00:12 -05:00
SourceGroups Fix XCode -> Xcode typos, notably in man page (#12231) 2011-05-31 09:13:00 -04:00
StringFileTest allow STRING(SUBSTRING) work with length -1 as "rest of the string" 2010-12-08 16:38:30 -05:00
SubDir ENH: preclean some warnings 2008-03-25 11:27:18 -04:00
SubDirSpaces Disable SubDirSpaces parens with GNU Make 3.82 (#11654) 2011-01-11 10:01:30 -05:00
SubProject ENH: preclean some warnings 2008-03-25 11:27:18 -04:00
SwigTest ENH: preclean some warnings 2008-03-25 11:27:18 -04:00
SystemInformation Add platform variable for flags specific to shared libraries 2012-06-12 15:38:48 -04:00
TarTest Allow test to work on machines with umasks that do not allow files to be overwritten. 2009-11-09 12:48:31 -05:00
TargetName ENH: preclean some warnings 2008-03-25 11:27:18 -04:00
TestDriver ENH: preclean some warnings 2008-03-25 11:27:18 -04:00
Testing Merge topic 'custom-command-generator-expressions' 2010-12-21 14:03:24 -05:00
TestsWorkingDirectory Fix XCode -> Xcode typos, notably in man page (#12231) 2011-05-31 09:13:00 -04:00
TryCompile Tests: Added test for check_prototype_definition. 2011-03-18 14:03:37 -04:00
Tutorial Use new style header generation and get rid of OBJECT_DEPENDS in tutorial 2009-10-04 22:55:02 -04:00
Unset ENH: Create $CACHE{VAR} syntax 2008-09-25 10:21:15 -04:00
VSExternalInclude Teach our tests about special cases for VS 11 2011-09-23 11:07:24 -04:00
VSGNUFortran CMakeAddFortranSubdirectory: Add NO_EXTERNAL_INSTALL option 2012-02-09 08:38:56 -05:00
VSMidl VSMidl Test: Use correct include_directories with VS6 (#11461) 2011-01-06 09:12:20 -05:00
VSResource Add support for Visual Studio project-specific globals (#8707) 2011-07-29 10:04:36 -04:00
VariableUnusedViaSet Add test for unused detection via setting it 2010-09-16 13:52:54 -04:00
VariableUnusedViaUnset Fix typo in VariableUnusedViaUnset test 2010-09-17 10:04:18 -04:00
VariableUsage Add tests for unused command line variables 2010-09-02 11:33:57 -04:00
Wrapping ENH: preclean some warnings 2008-03-25 11:27:18 -04:00
X11 ENH: make sure tests for cpack are run correctly 2009-04-21 17:15:42 -04:00
iOSNavApp Xcode: Add test to demonstrate iOS project in Xcode 2011-09-12 15:46:24 -04:00
.NoDartCoverage clean up coverage some 2002-12-03 11:21:12 -05:00
CMakeBuildTest.cmake.in Fix the case where cmake --build failed with two project cmds in one file. 2011-12-20 14:16:25 -05:00
CMakeInstall.cmake Avoid running CMake.Install test simultaneously with other tests 2010-12-31 09:18:52 -05:00
CMakeLists.txt Refactor generation of shared library flags 2012-06-12 15:38:48 -04:00
CMakeWizardTest.cmake Increase coverage. Add test of class cmakewizard. (cmake -i 'mode') 2009-10-06 13:27:13 -04:00
CTestUpdateBZR.cmake.in Generalize CTest.Update* test dashboard script helpers 2010-06-08 15:58:39 -04:00
CTestUpdateCVS.cmake.in Fix MSYS CVS local test repo path format (#13001) 2012-03-02 14:23:01 -05:00
CTestUpdateCommon.cmake Fix machine-specific UpdateGIT test failures 2011-07-29 10:24:06 -04:00
CTestUpdateGIT.cmake.in Merge topic 'ctest-git-flexibility' 2010-08-03 16:07:31 -04:00
CTestUpdateGIT.sh.in ctest_update: Support Git upstream branch rewrites 2010-06-08 16:50:17 -04:00
CTestUpdateHG.cmake.in CTest.UpdateHG: Fix repo URL for leading slash 2012-03-22 11:57:38 -04:00
CTestUpdateSVN.cmake.in Teach CTest.UpdateSVN to detect svn add --depth before using it 2011-10-24 17:34:55 -04:00
CheckFortran.cmake Modules: Fix spelling 'To distributed' -> 'To distribute' 2010-08-09 08:48:31 -04:00
EnforceConfig.cmake.in Always use a configuration for CMake tests 2009-12-10 11:19:23 -05:00
README Add stronger infrastructure for CMake-only tests 2012-03-12 09:33:21 -04:00
TestInstall.sh.in ENH: Added Install test. It is enabled when the CMAKE_INSTALL_PREFIX is CMake_BINARY_DIR/InstallTest. 2003-08-06 10:39:05 -04:00
bootstrap.bat.in Enable BootstrapTest on MSYS 2010-06-11 14:30:44 -04:00
test_clean.cmake.in ENH: Add test_clean target to wipe out tests 2008-08-19 11:43:57 -04:00

README

If you think about adding a new testcase then here is a small checklist you
can run through to find a proper place for it. Go through the list from the
beginning and stop once you find something that matches your tests needs,
i.e. if you will test a module and only need the configure mode use the
instructions from section 2, not 3.

1. Your testcase can run in CMake script mode, i.e. "cmake -P something"

Put your test in Tests/CMakeTests/ directory as a .cmake.in file. It will be
put into the test binary directory by configure_file(... @ONLY) and run from
there. Use the AddCMakeTest() macro in Tests/CMakeTests/CMakeLists.txt to add
your test to the test runs.

2. Your test needs CMake to run in configure mode, but will not build anything

This includes tests that will build something using try_compile() and friends,
but nothing that expects add_executable(), add_library(), or add_test() to run.

If the test configures the project only once and it must succeed then put it
into the Tests/CMakeOnly/ directory.  Create a subdirectory named like your
test and write the CMakeLists.txt you need into that subdirectory. Use the
add_CMakeOnly_test() macro from Tests/CMakeOnly/CMakeLists.txt to add your
test to the test runs.

If the test configures the project with multiple variations and verifies
success or failure each time then put it into the Tests/RunCMake/ directory.
Read the instructions in Tests/RunCMake/CMakeLists.txt to add a test.

3. If you are testing something from the Modules directory

Put your test in the Tests/Modules/ directory. Create a subdirectory there
named after your test. Use the ADD_TEST_MACRO macro from Tests/CMakeLists.txt
to add your test to the test run. If you have put your stuff in
Tests/Modules/Foo then you call it using ADD_TEST_MACRO(Module.Foo Foo).

4. You are doing other stuff.

Find a good place ;) In doubt mail to cmake-developers@cmake.org and ask for
advise.