CMakeLists.txt 140 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515
  1. # a macro for tests that have a simple format where the name matches the
  2. # directory and project
  3. macro(ADD_TEST_MACRO NAME)
  4. if(${ARGC} GREATER 1)
  5. set(_test_command --test-command ${ARGN})
  6. endif()
  7. string(REPLACE "." "/" dir "${NAME}")
  8. string(REGEX REPLACE "[^.]*\\." "" proj "${NAME}")
  9. add_test(NAME "${NAME}" COMMAND "${CMAKE_CTEST_COMMAND}"
  10. --build-and-test
  11. "${CMake_SOURCE_DIR}/Tests/${dir}"
  12. "${CMake_BINARY_DIR}/Tests/${dir}"
  13. --build-two-config
  14. ${build_generator_args}
  15. --build-project ${proj}
  16. ${${NAME}_CTEST_OPTIONS}
  17. --build-options
  18. ${${NAME}_BUILD_OPTIONS}
  19. ${_test_command})
  20. unset(_test_command)
  21. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${dir}")
  22. endmacro()
  23. include(${CMAKE_CURRENT_SOURCE_DIR}/CheckFortran.cmake)
  24. include(${CMAKE_CURRENT_SOURCE_DIR}/CheckSwift.cmake)
  25. # Fake a user home directory to avoid polluting the real one.
  26. if(DEFINED ENV{HOME} AND NOT CTEST_NO_TEST_HOME)
  27. set(TEST_HOME "${CMake_BINARY_DIR}/Tests/CMakeFiles/TestHome")
  28. file(MAKE_DIRECTORY "${TEST_HOME}")
  29. file(WRITE "${TEST_HOME}/.cvspass" ":pserver:[email protected]:/cvsroot/KWSys A\n")
  30. set(TEST_HOME_ENV_CODE "# Fake a user home directory to avoid polluting the real one.
  31. # But provide original ENV{HOME} value in ENV{CTEST_REAL_HOME} for tests that
  32. # need access to the real HOME directory.
  33. if(NOT DEFINED ENV{CTEST_REAL_HOME})
  34. set(ENV{CTEST_REAL_HOME} \"\$ENV{HOME}\")
  35. endif()
  36. set(ENV{HOME} \"${TEST_HOME}\")
  37. ")
  38. endif()
  39. # 3.9 or later provides a definitive answer to whether we are multi-config
  40. # through a global property. Prior to 3.9, CMAKE_CONFIGURATION_TYPES being set
  41. # is assumed to mean multi-config, but developers might modify it so it is
  42. # technically not as reliable.
  43. if(NOT CMAKE_VERSION VERSION_LESS 3.9)
  44. get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
  45. elseif(CMAKE_CONFIGURATION_TYPES)
  46. set(_isMultiConfig True)
  47. else()
  48. set(_isMultiConfig False)
  49. endif()
  50. # Choose a default configuration for CTest tests.
  51. set(CTestTest_CONFIG Debug)
  52. if(NOT _isMultiConfig AND CMAKE_BUILD_TYPE)
  53. set(CTestTest_CONFIG ${CMAKE_BUILD_TYPE})
  54. endif()
  55. configure_file(${CMake_SOURCE_DIR}/Tests/EnforceConfig.cmake.in
  56. ${CMake_BINARY_DIR}/Tests/EnforceConfig.cmake @ONLY)
  57. # Testing
  58. if(BUILD_TESTING)
  59. set(CMake_TEST_DEVENV "")
  60. if(CMAKE_VS_DEVENV_COMMAND)
  61. set(CMake_TEST_DEVENV "${CMAKE_VS_DEVENV_COMMAND}")
  62. elseif(CMAKE_GENERATOR MATCHES "Visual Studio 9 " AND
  63. NOT CMAKE_MAKE_PROGRAM MATCHES "[mM][sS][bB][uU][iI][lL][dD]\\.[eE][xX][eE]")
  64. set(CMake_TEST_DEVENV "${CMAKE_MAKE_PROGRAM}")
  65. endif()
  66. if(CMAKE_GENERATOR MATCHES "Visual Studio|Xcode")
  67. set(CMake_TEST_EXPLICIT_MAKE_PROGRAM "")
  68. else()
  69. set(CMake_TEST_EXPLICIT_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM}")
  70. endif()
  71. if(NOT CMake_TEST_EXTERNAL_CMAKE)
  72. if("${CMAKE_GENERATOR}" MATCHES "Unix Makefiles" OR ("${CMAKE_GENERATOR}" MATCHES Ninja AND NOT WIN32))
  73. set(TEST_CompileCommandOutput 1)
  74. endif()
  75. endif()
  76. set(MAKE_IS_GNU )
  77. if(CMAKE_MAKE_PROGRAM MATCHES make)
  78. execute_process(COMMAND ${CMAKE_MAKE_PROGRAM} no_such_target --version
  79. RESULT_VARIABLE res OUTPUT_VARIABLE out ERROR_VARIABLE out)
  80. if("${res}" STREQUAL "0")
  81. if("${out}" MATCHES "GNU")
  82. set(MAKE_IS_GNU 1)
  83. endif()
  84. endif()
  85. endif()
  86. # some old versions of make simply cannot handle spaces in paths
  87. if (MAKE_IS_GNU OR
  88. CMAKE_MAKE_PROGRAM MATCHES "nmake|gmake|wmake" OR
  89. CMAKE_GENERATOR MATCHES "Visual Studio|Xcode|Borland")
  90. set(MAKE_SUPPORTS_SPACES 1)
  91. else()
  92. set(MAKE_SUPPORTS_SPACES 0)
  93. endif()
  94. # assume no resources building to test
  95. set(CMake_TEST_RESOURCES FALSE)
  96. # for windows and cygwin assume we have resources
  97. if(WIN32 OR CYGWIN)
  98. set(CMake_TEST_RESOURCES TRUE)
  99. endif()
  100. # for borland and watcom there is no resource support
  101. if(WATCOM OR BORLAND)
  102. set(CMake_TEST_RESOURCES FALSE)
  103. endif()
  104. set(build_generator_args
  105. --build-generator ${CMAKE_GENERATOR}
  106. )
  107. if(CMAKE_GENERATOR_PLATFORM)
  108. list(APPEND build_generator_args
  109. --build-generator-platform ${CMAKE_GENERATOR_PLATFORM}
  110. )
  111. endif()
  112. if(CMAKE_GENERATOR_TOOLSET)
  113. list(APPEND build_generator_args
  114. --build-generator-toolset ${CMAKE_GENERATOR_TOOLSET}
  115. )
  116. endif()
  117. if(CMake_TEST_EXPLICIT_MAKE_PROGRAM)
  118. list(APPEND build_generator_args
  119. --build-makeprogram ${CMake_TEST_EXPLICIT_MAKE_PROGRAM}
  120. )
  121. endif()
  122. # Look for rpmbuild to use for tests.
  123. # The tool does not work with spaces in the path.
  124. if(NOT CMAKE_CURRENT_BINARY_DIR MATCHES " ")
  125. find_program(RPMBUILD_EXECUTABLE NAMES rpmbuild)
  126. else()
  127. set(RPMBUILD_EXECUTABLE "RPMBUILD_EXECUTABLE-NOTFOUND")
  128. endif()
  129. if(RPMBUILD_EXECUTABLE)
  130. set(CPACK_BINARY_RPM ON)
  131. else()
  132. set(CPACK_BINARY_RPM OFF)
  133. endif()
  134. # Look for dpkg to use for tests.
  135. find_program(DPKG_EXECUTABLE NAMES dpkg)
  136. if(DPKG_EXECUTABLE)
  137. set(CPACK_BINARY_DEB ON)
  138. else()
  139. set(CPACK_BINARY_DEB OFF)
  140. endif()
  141. # Look for NuGet to use for tests.
  142. find_program(NUGET_EXECUTABLE NAMES NuGet nuget)
  143. if(NUGET_EXECUTABLE)
  144. set(CPACK_BINARY_NUGET ON)
  145. else()
  146. set(CPACK_BINARY_NUGET OFF)
  147. endif()
  148. if(WIN32)
  149. # Macro to search for available Windows CE SDKs in the windows Registry
  150. macro(select_wince_sdk selected_reg selected_sdk)
  151. if(CMAKE_HOST_WIN32)
  152. execute_process(COMMAND reg QUERY "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows CE Tools\\SDKs"
  153. OUTPUT_VARIABLE sdk_reg
  154. ERROR_VARIABLE my_err)
  155. string(REGEX REPLACE "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Wow6432Node\\\\Microsoft\\\\Windows CE Tools\\\\SDKs\\\\" ";" sdk_list "${sdk_reg}")
  156. list(LENGTH sdk_list sdk_list_len)
  157. if (${sdk_list_len} GREATER 1)
  158. list(GET sdk_list 1 _sdk) # The first entry is always empty due to the regex replace above
  159. string(STRIP ${_sdk} _sdk) # Make sure there is no newline in the SDK name
  160. endif()
  161. # Build a key to be used by get_filename_component that is pointing to the SDK directory
  162. set(_reg "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows CE Tools\\SDKs\\${_sdk}]")
  163. # Set return values
  164. set(${selected_reg} ${_reg})
  165. set(${selected_sdk} ${_sdk})
  166. endif(CMAKE_HOST_WIN32)
  167. endmacro(select_wince_sdk)
  168. set(reg_vs10 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0;InstallDir]")
  169. set(reg_vs11 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0;InstallDir]")
  170. set(reg_vs12 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\12.0;InstallDir]")
  171. set(reg_vs14 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\14.0;InstallDir]")
  172. set(reg_ws80 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v8.0;InstallationFolder]")
  173. set(reg_ws81 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v8.1;InstallationFolder]")
  174. set(reg_ws10_0 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\14.0\\Setup\\Build Tools for Windows 10;srcPath]")
  175. set(reg_wp80 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\WindowsPhone\\v8.0;InstallationFolder]")
  176. set(reg_wp81 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\WindowsPhone\\v8.1;InstallationFolder]")
  177. select_wince_sdk(reg_wince wince_sdk)
  178. set(reg_tegra "[HKEY_LOCAL_MACHINE\\SOFTWARE\\NVIDIA Corporation\\Nsight Tegra;sdkRoot]")
  179. set(reg_nasm "[HKEY_CURRENT_USER\\SOFTWARE\\nasm]")
  180. foreach(reg vs10 vs11 vs12 vs14 ws80 ws81 ws10_0 wp80 wp81 wince tegra nasm)
  181. get_filename_component(r "${reg_${reg}}" ABSOLUTE)
  182. if(IS_DIRECTORY "${r}" AND NOT "${r}" STREQUAL "/registry")
  183. set(${reg} 1)
  184. else()
  185. set(${reg} 0)
  186. endif()
  187. endforeach()
  188. endif()
  189. #---------------------------------------------------------------------------
  190. # Add tests below here.
  191. if(NOT CMake_TEST_EXTERNAL_CMAKE)
  192. add_subdirectory(CMakeLib)
  193. add_subdirectory(CMakeServerLib)
  194. endif()
  195. add_subdirectory(CMakeOnly)
  196. add_subdirectory(RunCMake)
  197. add_subdirectory(FindPackageModeMakefileTest)
  198. # Collect a list of all test build directories.
  199. set(TEST_BUILD_DIRS)
  200. # Should the long tests be run?
  201. option(CMAKE_RUN_LONG_TESTS
  202. "Should the long tests be run (such as Bootstrap)." ON)
  203. mark_as_advanced(CMAKE_RUN_LONG_TESTS)
  204. if (CMAKE_RUN_LONG_TESTS)
  205. option(CTEST_TEST_CTEST
  206. "Should the tests that run a full sub ctest process be run?"
  207. OFF)
  208. mark_as_advanced(CTEST_TEST_CTEST)
  209. endif ()
  210. # Should tests that use CVS be run?
  211. #
  212. set(do_cvs_tests 0)
  213. if(EXISTS ${CMAKE_ROOT}/Modules/FindCVS.cmake)
  214. find_package(CVS QUIET)
  215. else()
  216. find_program(CVS_EXECUTABLE NAMES cvs)
  217. endif()
  218. if(CVS_EXECUTABLE)
  219. set(do_cvs_tests 1)
  220. endif()
  221. if(do_cvs_tests AND NOT UNIX)
  222. if("${CVS_EXECUTABLE}" MATCHES "cygwin")
  223. set(do_cvs_tests 0)
  224. endif()
  225. endif()
  226. # Should CPack tests be run? By default, yes, but...
  227. #
  228. # Disable packaging test on Apple 10.3 and below. PackageMaker starts
  229. # DiskManagementTool as root and disowns it
  230. # (http://lists.apple.com/archives/installer-dev/2005/Jul/msg00005.html).
  231. # It is left holding open pipe handles and preventing ProcessUNIX from
  232. # detecting end-of-data even after its immediate child exits. Then
  233. # the test hangs until it times out and is killed. This is a
  234. # well-known bug in kwsys process execution that I would love to get
  235. # time to fix.
  236. #
  237. option(CTEST_TEST_CPACK
  238. "Should the tests that use '--build-target package' be run?"
  239. ON)
  240. mark_as_advanced(CTEST_TEST_CPACK)
  241. set(CTEST_TEST_OSX_ARCH 0)
  242. set(CMake_TEST_XCODE_VERSION 0)
  243. if(APPLE)
  244. execute_process(
  245. COMMAND sw_vers -productVersion
  246. OUTPUT_VARIABLE OSX_VERSION
  247. OUTPUT_STRIP_TRAILING_WHITESPACE
  248. )
  249. if(OSX_VERSION VERSION_LESS 10.4)
  250. message(STATUS "Forcing CTEST_TEST_CPACK=OFF on OSX < 10.4")
  251. message(STATUS "OSX_VERSION='${OSX_VERSION}'")
  252. set(CTEST_TEST_CPACK OFF)
  253. else()
  254. set(CTEST_TEST_OSX_ARCH 1)
  255. endif()
  256. if(XCODE_VERSION)
  257. set(CMake_TEST_XCODE_VERSION "${XCODE_VERSION}")
  258. else()
  259. execute_process(
  260. COMMAND xcodebuild -version
  261. OUTPUT_VARIABLE _version ERROR_VARIABLE _version
  262. )
  263. if(_version MATCHES "^Xcode ([0-9]+(\\.[0-9]+)*)")
  264. set(CMake_TEST_XCODE_VERSION "${CMAKE_MATCH_1}")
  265. endif()
  266. endif()
  267. if(NOT CMake_TEST_XCODE_VERSION VERSION_LESS 10)
  268. # Since Xcode 10 we do not have two supported architectures for the host.
  269. set(CTEST_TEST_OSX_ARCH 0)
  270. endif()
  271. if(CMAKE_OSX_SYSROOT)
  272. execute_process(
  273. COMMAND xcodebuild -sdk ${CMAKE_OSX_SYSROOT} -version ProductName
  274. OUTPUT_VARIABLE _stdout
  275. OUTPUT_STRIP_TRAILING_WHITESPACE
  276. ERROR_VARIABLE _stderr
  277. RESULT_VARIABLE _failed
  278. )
  279. if(NOT _failed)
  280. set(CMAKE_OSX_SDKPRODUCT "${_stdout}")
  281. endif()
  282. execute_process(
  283. COMMAND xcodebuild -sdk ${CMAKE_OSX_SYSROOT} -version SDKVersion
  284. OUTPUT_VARIABLE _stdout
  285. OUTPUT_STRIP_TRAILING_WHITESPACE
  286. ERROR_VARIABLE _stderr
  287. RESULT_VARIABLE _failed
  288. )
  289. if(NOT _failed)
  290. set(CMAKE_OSX_SDKVERSION "${_stdout}")
  291. endif()
  292. endif()
  293. endif()
  294. # Use 1500 or CTEST_TEST_TIMEOUT for long test timeout value,
  295. # whichever is greater.
  296. set(CMAKE_LONG_TEST_TIMEOUT 1500)
  297. if(CTEST_TEST_TIMEOUT)
  298. set(CMAKE_LONG_TEST_TIMEOUT ${CTEST_TEST_TIMEOUT})
  299. endif()
  300. if(CMAKE_LONG_TEST_TIMEOUT LESS 1500)
  301. set(CMAKE_LONG_TEST_TIMEOUT 1500)
  302. endif()
  303. add_test(NAME CMake.Copyright
  304. COMMAND ${CMAKE_CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/CMakeCopyright.cmake)
  305. # add a bunch of standard build-and-test style tests
  306. ADD_TEST_MACRO(CommandLineTest CommandLineTest)
  307. ADD_TEST_MACRO(FindPackageTest FindPackageTest)
  308. ADD_TEST_MACRO(FindModulesExecuteAll FindModulesExecuteAll)
  309. ADD_TEST_MACRO(StringFileTest StringFileTest)
  310. ADD_TEST_MACRO(TryCompile TryCompile)
  311. ADD_TEST_MACRO(SystemInformation SystemInformation)
  312. ADD_TEST_MACRO(MathTest MathTest)
  313. ADD_TEST_MACRO(CompileFeatures CompileFeatures)
  314. ADD_TEST_MACRO(CMakeCommands.target_compile_features)
  315. if(CMake_TEST_RESOURCES)
  316. ADD_TEST_MACRO(VSResource VSResource)
  317. if (CMAKE_GENERATOR MATCHES "Ninja")
  318. add_test_macro(VSResourceNinjaForceRSP VSResourceNinjaForceRSP)
  319. endif ()
  320. endif()
  321. ADD_TEST_MACRO(MSManifest MSManifest)
  322. ADD_TEST_MACRO(Simple Simple)
  323. ADD_TEST_MACRO(PreOrder PreOrder)
  324. ADD_TEST_MACRO(MissingSourceFile MissingSourceFile)
  325. set_tests_properties(MissingSourceFile PROPERTIES
  326. PASS_REGULAR_EXPRESSION "CMake Error at CMakeLists.txt:3 \\(add_executable\\):[ \r\n]*Cannot find source file:[ \r\n]*DoesNotExist/MissingSourceFile.c")
  327. if(CMake_TEST_XCODE_VERSION AND CMAKE_OSX_SDKVERSION AND CMAKE_OSX_SDKPRODUCT)
  328. if((NOT CMake_TEST_XCODE_VERSION VERSION_LESS 6.1) AND
  329. ((NOT CMAKE_OSX_SDKPRODUCT STREQUAL "Mac OS X") OR
  330. (NOT CMAKE_OSX_SDKVERSION VERSION_LESS 10.10)))
  331. if(CMAKE_GENERATOR STREQUAL "Xcode")
  332. set(CMake_TEST_XCODE_SWIFT 1)
  333. endif()
  334. endif()
  335. endif()
  336. if(CMAKE_Swift_COMPILER OR CMake_TEST_XCODE_SWIFT)
  337. ADD_TEST_MACRO(SwiftOnly SwiftOnly)
  338. if(CMake_TEST_XCODE_SWIFT)
  339. ADD_TEST_MACRO(SwiftMix SwiftMix)
  340. endif()
  341. endif()
  342. if(CMAKE_Fortran_COMPILER)
  343. ADD_TEST_MACRO(FortranOnly FortranOnly)
  344. endif()
  345. # test Visual Studio GNU Fortran mixing with cmake_add_fortran_subdirectory
  346. # run this project if we have a working fortran compiler or
  347. # the test is enabled with CMAKE_TEST_CMAKE_ADD_FORTRAN cache variable.
  348. # If you enable the test, CMake should find the MinGW fortran install,
  349. # or in some cases you might need to set the PATH so that cmake can find
  350. # the gfortran from mingw.
  351. if(CMAKE_Fortran_COMPILER OR CMAKE_TEST_CMAKE_ADD_FORTRAN)
  352. set(CMAKE_SKIP_VSGNUFortran FALSE)
  353. # disable test for apple builds using ifort if they are building
  354. # more than one architecture, as ifort does not support that.
  355. if(APPLE AND (CMAKE_Fortran_COMPILER MATCHES ifort))
  356. list(LENGTH CMAKE_OSX_ARCHITECTURES len)
  357. if("${len}" GREATER 1)
  358. message(STATUS "Skip VSGNUFortran for ifort dual cpu mac build")
  359. set(CMAKE_SKIP_VSGNUFortran TRUE)
  360. endif()
  361. endif()
  362. if((CMAKE_C_COMPILER MATCHES lsb)
  363. AND (CMAKE_Fortran_COMPILER MATCHES ifort))
  364. message(STATUS "Skip VSGNUFortran for ifort and lsb compilers")
  365. set(CMAKE_SKIP_VSGNUFortran TRUE)
  366. endif()
  367. if(NOT CMAKE_SKIP_VSGNUFortran)
  368. ADD_TEST_MACRO(VSGNUFortran ${CMAKE_CMAKE_COMMAND} -P runtest.cmake)
  369. endif()
  370. endif()
  371. if(${CMAKE_GENERATOR} MATCHES "Visual Studio ([^9]|[9][0-9])")
  372. ADD_TEST_MACRO(CSharpOnly CSharpOnly)
  373. ADD_TEST_MACRO(CSharpLinkToCxx CSharpLinkToCxx)
  374. ADD_TEST_MACRO(CSharpLinkFromCxx CSharpLinkFromCxx)
  375. endif()
  376. ADD_TEST_MACRO(COnly COnly)
  377. ADD_TEST_MACRO(CxxOnly CxxOnly)
  378. ADD_TEST_MACRO(CxxSubdirC CxxSubdirC)
  379. ADD_TEST_MACRO(OutDir runtime/OutDir)
  380. ADD_TEST_MACRO(OutName exe.OutName.exe)
  381. ADD_TEST_MACRO(ObjectLibrary UseCshared)
  382. ADD_TEST_MACRO(NewlineArgs NewlineArgs)
  383. ADD_TEST_MACRO(SetLang SetLang)
  384. ADD_TEST_MACRO(EmptyProperty EmptyProperty)
  385. ADD_TEST_MACRO(ExternalOBJ ExternalOBJ)
  386. if(NOT CMake_TEST_EXTERNAL_CMAKE)
  387. ADD_TEST_MACRO(LoadCommand LoadedCommand)
  388. endif()
  389. ADD_TEST_MACRO(LinkDirectory bin/LinkDirectory)
  390. ADD_TEST_MACRO(LinkLanguage LinkLanguage)
  391. ADD_TEST_MACRO(LinkLine LinkLine)
  392. ADD_TEST_MACRO(MacroTest miniMacroTest)
  393. ADD_TEST_MACRO(FunctionTest miniFunctionTest)
  394. ADD_TEST_MACRO(ReturnTest ReturnTest)
  395. ADD_TEST_MACRO(Properties Properties)
  396. ADD_TEST_MACRO(Assembler HelloAsm)
  397. ADD_TEST_MACRO(SourceGroups SourceGroups)
  398. ADD_TEST_MACRO(Preprocess Preprocess)
  399. set(ExportImport_BUILD_OPTIONS -DCMake_TEST_NESTED_MAKE_PROGRAM:FILEPATH=${CMake_TEST_EXPLICIT_MAKE_PROGRAM})
  400. ADD_TEST_MACRO(ExportImport ExportImport)
  401. ADD_TEST_MACRO(Unset Unset)
  402. ADD_TEST_MACRO(PolicyScope PolicyScope)
  403. ADD_TEST_MACRO(EmptyLibrary EmptyLibrary)
  404. ADD_TEST_MACRO(CompileDefinitions CompileDefinitions)
  405. if(CMAKE_Fortran_COMPILER)
  406. set(CompileOptions_BUILD_OPTIONS -DTEST_FORTRAN=1)
  407. endif()
  408. ADD_TEST_MACRO(CompileOptions CompileOptions)
  409. ADD_TEST_MACRO(CompatibleInterface CompatibleInterface)
  410. ADD_TEST_MACRO(AliasTarget AliasTarget)
  411. ADD_TEST_MACRO(StagingPrefix StagingPrefix)
  412. ADD_TEST_MACRO(ImportedSameName ImportedSameName)
  413. ADD_TEST_MACRO(InterfaceLibrary InterfaceLibrary)
  414. if (CMAKE_BUILD_TYPE MATCHES "[Dd][Ee][Bb][Uu][Gg]")
  415. set(ConfigSources_BUILD_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
  416. ADD_TEST_MACRO(ConfigSources ConfigSources)
  417. endif()
  418. ADD_TEST_MACRO(SourcesProperty SourcesProperty)
  419. ADD_TEST_MACRO(SourceFileProperty SourceFileProperty)
  420. if (NOT CMAKE_GENERATOR STREQUAL "Xcode")
  421. ADD_TEST_MACRO(SourceFileIncludeDirProperty SourceFileIncludeDirProperty)
  422. endif()
  423. if(CMAKE_CXX_COMPILER_ID STREQUAL GNU
  424. AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
  425. set(runCxxDialectTest 1)
  426. endif()
  427. if(CMAKE_CXX_COMPILER_ID STREQUAL Clang
  428. AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4 AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
  429. if(NOT APPLE OR POLICY CMP0025)
  430. set(runCxxDialectTest 1)
  431. endif()
  432. endif()
  433. if(runCxxDialectTest)
  434. ADD_TEST_MACRO(CxxDialect CxxDialect)
  435. endif()
  436. set_tests_properties(EmptyLibrary PROPERTIES
  437. PASS_REGULAR_EXPRESSION "CMake Error: CMake can not determine linker language for target: test")
  438. ADD_TEST_MACRO(CrossCompile CrossCompile)
  439. set_tests_properties(CrossCompile PROPERTIES
  440. PASS_REGULAR_EXPRESSION "TRY_RUN.. invoked in cross-compiling mode")
  441. if("${CMAKE_GENERATOR}" MATCHES "Make")
  442. ADD_TEST_MACRO(Policy0002 Policy0002)
  443. endif()
  444. if(CTEST_TEST_OSX_ARCH)
  445. ADD_TEST_MACRO(Architecture Architecture)
  446. set_tests_properties(Architecture PROPERTIES
  447. PASS_REGULAR_EXPRESSION "(file is not of required architecture|does not match cputype|not the architecture being linked)")
  448. endif()
  449. list(APPEND TEST_BUILD_DIRS ${CMake_TEST_INSTALL_PREFIX})
  450. if(NOT DEFINED CMake_TEST_Qt4)
  451. set(CMake_TEST_Qt4 1)
  452. endif()
  453. if(CMake_TEST_Qt4 AND NOT QT4_FOUND)
  454. find_package(Qt4 QUIET)
  455. endif()
  456. if(CMake_TEST_Qt4 AND QT4_FOUND)
  457. # test whether the Qt4 which has been found works, on some machines
  458. # which run nightly builds there were errors like "wrong file format"
  459. # for libQtCore.so. So first check it works, and only if it does add
  460. # the automoc test.
  461. include(CheckCXXSourceCompiles)
  462. set(_save_CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES}")
  463. set(_save_CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}")
  464. set(CMAKE_REQUIRED_INCLUDES ${QT_INCLUDES})
  465. set(CMAKE_REQUIRED_LIBRARIES ${QT_QTCORE_LIBRARIES})
  466. CHECK_CXX_SOURCE_COMPILES("#include <QCoreApplication>\n int main() {return (qApp == 0 ? 0 : 1); }\n"
  467. QT4_WORKS)
  468. set(CMAKE_REQUIRED_INCLUDES "${_save_CMAKE_REQUIRED_INCLUDES}")
  469. set(CMAKE_REQUIRED_LIBRARIES "${_save_CMAKE_REQUIRED_LIBRARIES}")
  470. endif()
  471. # run test for BundleUtilities on supported platforms/compilers
  472. if(MSVC OR
  473. MINGW OR
  474. CMAKE_SYSTEM_NAME MATCHES "Linux" OR
  475. CMAKE_SYSTEM_NAME MATCHES "Darwin")
  476. if(NOT "${CMAKE_GENERATOR}" STREQUAL "Watcom WMake")
  477. add_test(BundleUtilities ${CMAKE_CTEST_COMMAND}
  478. --build-and-test
  479. "${CMake_SOURCE_DIR}/Tests/BundleUtilities"
  480. "${CMake_BINARY_DIR}/Tests/BundleUtilities"
  481. ${build_generator_args}
  482. --build-project BundleUtilities
  483. )
  484. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/BundleUtilities")
  485. # run test for DeployQt4 on supported platforms/compilers (which depends on BundleUtilities)
  486. # this test also depends on the existence of the standard qtiff plugin
  487. if(QT4_WORKS AND QT_QTSQL_FOUND)
  488. add_test(Qt4Deploy ${CMAKE_CTEST_COMMAND}
  489. --build-and-test
  490. "${CMake_SOURCE_DIR}/Tests/Qt4Deploy"
  491. "${CMake_BINARY_DIR}/Tests/Qt4Deploy"
  492. ${build_generator_args}
  493. --build-project Qt4Deploy
  494. --build-options
  495. -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
  496. -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}
  497. )
  498. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Qt4Deploy")
  499. endif()
  500. endif()
  501. endif()
  502. set(CMAKE_BUILD_TEST_SOURCE_DIR "${CMake_SOURCE_DIR}/Tests/COnly")
  503. set(CMAKE_BUILD_TEST_BINARY_DIR "${CMake_BINARY_DIR}/Tests/CMakeBuildCOnly")
  504. set(CMAKE_BUILD_TEST_EXE COnly)
  505. configure_file("${CMake_SOURCE_DIR}/Tests/CMakeBuildTest.cmake.in"
  506. "${CMake_BINARY_DIR}/Tests/CMakeBuildTest.cmake" @ONLY)
  507. add_test(CMakeBuildTest ${CMAKE_CMAKE_COMMAND} -P
  508. "${CMake_BINARY_DIR}/Tests/CMakeBuildTest.cmake")
  509. list(APPEND TEST_BUILD_DIRS ${CMAKE_BUILD_TEST_BINARY_DIR})
  510. # now do it again for a project that has two project commands
  511. set(CMAKE_BUILD_TEST_SOURCE_DIR "${CMake_SOURCE_DIR}/Tests/DoubleProject")
  512. set(CMAKE_BUILD_TEST_BINARY_DIR "${CMake_BINARY_DIR}/Tests/DoubleProject")
  513. set(CMAKE_BUILD_TEST_EXE just_silly)
  514. configure_file("${CMake_SOURCE_DIR}/Tests/CMakeBuildTest.cmake.in"
  515. "${CMake_BINARY_DIR}/Tests/CMakeBuildDoubleProjectTest.cmake" @ONLY)
  516. add_test(CMakeDoubleProject ${CMAKE_CMAKE_COMMAND} -P
  517. "${CMake_BINARY_DIR}/Tests/CMakeBuildDoubleProjectTest.cmake")
  518. list(APPEND TEST_BUILD_DIRS ${CMAKE_BUILD_TEST_BINARY_DIR})
  519. ADD_TEST_MACRO(Module.CheckTypeSize CheckTypeSize)
  520. set(Module.CheckIPOSupported-C_BUILD_OPTIONS -DCMake_TEST_IPO_WORKS_C=${CMake_TEST_IPO_WORKS_C})
  521. ADD_TEST_MACRO(Module.CheckIPOSupported-C CheckIPOSupported-C)
  522. set(Module.CheckIPOSupported-CXX_BUILD_OPTIONS -DCMake_TEST_IPO_WORKS_CXX=${CMake_TEST_IPO_WORKS_CXX})
  523. ADD_TEST_MACRO(Module.CheckIPOSupported-CXX CheckIPOSupported-CXX)
  524. if(CMAKE_Fortran_COMPILER)
  525. set(Module.CheckIPOSupported-Fortran_BUILD_OPTIONS -DCMake_TEST_IPO_WORKS_Fortran=${CMake_TEST_IPO_WORKS_Fortran})
  526. ADD_TEST_MACRO(Module.CheckIPOSupported-Fortran CheckIPOSupported-Fortran)
  527. endif()
  528. add_test(Module.ExternalData ${CMAKE_CTEST_COMMAND}
  529. --build-and-test
  530. "${CMake_SOURCE_DIR}/Tests/Module/ExternalData"
  531. "${CMake_BINARY_DIR}/Tests/Module/ExternalData"
  532. ${build_generator_args}
  533. --build-project ExternalDataTest
  534. --build-noclean
  535. --force-new-ctest-process
  536. --build-options
  537. -DMAKE_SUPPORTS_SPACES=${MAKE_SUPPORTS_SPACES}
  538. --test-command ${CMAKE_CTEST_COMMAND} -C \${CTEST_CONFIGURATION_TYPE} -V
  539. )
  540. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Module/ExternalData")
  541. ADD_TEST_MACRO(Module.FindDependency FindDependency)
  542. ADD_TEST_MACRO(Module.WriteCompilerDetectionHeader WriteCompilerDetectionHeader)
  543. if (APPLE OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")
  544. include(CheckCXXCompilerFlag)
  545. check_cxx_compiler_flag(-fPIE run_pic_test)
  546. else()
  547. if (CMAKE_CXX_COMPILER_ID MATCHES "PGI"
  548. OR CMAKE_CXX_COMPILER_ID MATCHES "PathScale"
  549. OR CMAKE_CXX_COMPILER_ID MATCHES "Intel")
  550. set(run_pic_test 0)
  551. else()
  552. set(run_pic_test 1)
  553. endif()
  554. endif()
  555. if (run_pic_test)
  556. ADD_TEST_MACRO(PositionIndependentTargets PositionIndependentTargets)
  557. endif()
  558. if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") AND
  559. (NOT "${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS 4.2) AND
  560. (CMAKE_SYSTEM_NAME MATCHES "Linux"))
  561. include(CheckCXXCompilerFlag)
  562. check_cxx_compiler_flag(
  563. -fvisibility-inlines-hidden run_inlines_hidden_test)
  564. endif()
  565. if(run_inlines_hidden_test)
  566. add_test(Visibility ${CMAKE_CTEST_COMMAND}
  567. --build-and-test
  568. "${CMake_SOURCE_DIR}/Tests/Visibility"
  569. "${CMake_BINARY_DIR}/Tests/Visibility"
  570. ${build_generator_args}
  571. --build-project Visibility
  572. )
  573. list(APPEND TEST_BUILD_DIRS
  574. "${CMake_BINARY_DIR}/Tests/Visibility"
  575. )
  576. endif()
  577. add_test(LinkFlags-prepare
  578. ${CMAKE_CTEST_COMMAND} -C \${CTEST_CONFIGURATION_TYPE}
  579. --build-and-test
  580. "${CMake_SOURCE_DIR}/Tests/LinkFlags"
  581. "${CMake_BINARY_DIR}/Tests/LinkFlags"
  582. ${build_generator_args}
  583. --build-project LinkFlags
  584. --build-target LinkFlags
  585. --build-options
  586. -DTEST_CONFIG=\${CTEST_CONFIGURATION_TYPE}
  587. )
  588. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/LinkFlags")
  589. macro(ADD_LINK_FLAGS_TEST name depends)
  590. add_test(LinkFlags-${name}
  591. ${CMAKE_CMAKE_COMMAND} --build "${CMake_BINARY_DIR}/Tests/LinkFlags"
  592. --target LinkFlags_${name} --config \${CTEST_CONFIGURATION_TYPE}
  593. )
  594. set_tests_properties(LinkFlags-${name} PROPERTIES
  595. PASS_REGULAR_EXPRESSION "BADFLAG" DEPENDS LinkFlags-${depends})
  596. endmacro()
  597. ADD_LINK_FLAGS_TEST(lib prepare)
  598. ADD_LINK_FLAGS_TEST(dll lib)
  599. ADD_LINK_FLAGS_TEST(mod dll)
  600. ADD_LINK_FLAGS_TEST(exe mod)
  601. ADD_LINK_FLAGS_TEST(lib_config exe)
  602. ADD_LINK_FLAGS_TEST(dll_config lib_config)
  603. ADD_LINK_FLAGS_TEST(mod_config dll_config)
  604. ADD_LINK_FLAGS_TEST(exe_config mod_config)
  605. ADD_LINK_FLAGS_TEST(lib_flags exe_config)
  606. ADD_LINK_FLAGS_TEST(dll_flags lib_flags)
  607. ADD_LINK_FLAGS_TEST(mod_flags dll_flags)
  608. ADD_LINK_FLAGS_TEST(exe_flags mod_flags)
  609. ADD_LINK_FLAGS_TEST(lib_flags_config exe_flags)
  610. ADD_LINK_FLAGS_TEST(dll_flags_config lib_flags_config)
  611. ADD_LINK_FLAGS_TEST(mod_flags_config dll_flags_config)
  612. ADD_LINK_FLAGS_TEST(exe_flags_config mod_flags_config)
  613. # If we are running right now with a Unix Makefiles or Ninja based generator,
  614. # build the "Simple" test with the ExtraGenerators, if available
  615. # This doesn't test whether the generated project files work (unfortunately),
  616. # mainly it tests that cmake doesn't crash when generating these project files.
  617. if(${CMAKE_GENERATOR} MATCHES "Unix Makefiles" OR ${CMAKE_GENERATOR} MATCHES "Ninja")
  618. # check which generators we have
  619. execute_process(COMMAND ${CMAKE_CMAKE_COMMAND} --help
  620. OUTPUT_VARIABLE cmakeOutput ERROR_VARIABLE cmakeOutput)
  621. set(extraGenerators
  622. "CodeBlocks"
  623. "CodeLite"
  624. "Eclipse CDT4"
  625. "Kate"
  626. "Sublime Text 2")
  627. foreach(extraGenerator ${extraGenerators})
  628. if ("${cmakeOutput}" MATCHES "${extraGenerator} - ${CMAKE_GENERATOR}")
  629. set(extraGeneratorTestName "Simple_${extraGenerator}Generator")
  630. string(REPLACE " " "" extraGeneratorTestName ${extraGeneratorTestName})
  631. add_test(${extraGeneratorTestName} ${CMAKE_CTEST_COMMAND}
  632. --build-and-test
  633. "${CMake_SOURCE_DIR}/Tests/Simple"
  634. "${CMake_BINARY_DIR}/Tests/${extraGeneratorTestName}"
  635. --build-two-config
  636. --build-generator "${extraGenerator} - ${CMAKE_GENERATOR}"
  637. --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
  638. --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
  639. --build-project Simple
  640. --test-command Simple)
  641. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${extraGeneratorTestName}")
  642. endif ()
  643. endforeach(extraGenerator)
  644. endif()
  645. # test for correct sub-project generation
  646. # not implemented in Xcode or Ninja
  647. if(NOT CMAKE_GENERATOR MATCHES "Xcode|Ninja")
  648. # run cmake and configure all of SubProject
  649. # but only build the independent executable car
  650. add_test(SubProject ${CMAKE_CTEST_COMMAND}
  651. --build-and-test
  652. "${CMake_SOURCE_DIR}/Tests/SubProject"
  653. "${CMake_BINARY_DIR}/Tests/SubProject"
  654. --build-project SubProject
  655. ${build_generator_args}
  656. --build-target car
  657. --test-command car
  658. )
  659. # For stage 2, do not run cmake again.
  660. # Then build the foo sub project which should build
  661. # the bar library which should be referenced because
  662. # foo links to the static library bar, but bar is not
  663. # directly in the foo sub project
  664. if(CMake_TEST_EXPLICIT_MAKE_PROGRAM)
  665. set(SubProject-Stage2_BUILD_MAKEPROGRAM
  666. --build-makeprogram ${CMake_TEST_EXPLICIT_MAKE_PROGRAM}
  667. )
  668. endif()
  669. add_test(SubProject-Stage2 ${CMAKE_CTEST_COMMAND}
  670. --build-and-test
  671. "${CMake_SOURCE_DIR}/Tests/SubProject/foo"
  672. "${CMake_BINARY_DIR}/Tests/SubProject/foo"
  673. --build-generator ${CMAKE_GENERATOR}
  674. --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
  675. --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
  676. ${SubProject-Stage2_BUILD_MAKEPROGRAM}
  677. --build-nocmake
  678. --build-project foo
  679. --build-target foo
  680. --build-exe-dir "${CMake_BINARY_DIR}/Tests/SubProject/foo"
  681. --test-command foo
  682. )
  683. set_tests_properties ( SubProject-Stage2 PROPERTIES DEPENDS SubProject)
  684. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/SubProject")
  685. endif()
  686. # macro to add a test that will build a nightly release
  687. # of CMake for given platform using the release scripts
  688. macro(ADD_NIGHTLY_BUILD_TEST name script)
  689. set(_TEST_DIR "${CMake_BINARY_DIR}/Tests/${name}")
  690. file(MAKE_DIRECTORY "${_TEST_DIR}")
  691. file(WRITE "${_TEST_DIR}/nightly-cmake.sh"
  692. "set -e
  693. cd ${_TEST_DIR}
  694. ${CMake_BINARY_DIR}/bin/cmake -DCMAKE_CREATE_VERSION=nightly -P ${CMake_SOURCE_DIR}/Utilities/Release/${script}
  695. ${CMake_SOURCE_DIR}/Utilities/Release/push.bash --dir dev -- '${CMake_BUILD_NIGHTLY_RELEASES}'
  696. ")
  697. add_test(${name} /bin/sh ${_TEST_DIR}/nightly-cmake.sh)
  698. if(COMMAND SET_TESTS_PROPERTIES AND COMMAND GET_TEST_PROPERTY)
  699. set_tests_properties (${name} PROPERTIES TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT})
  700. endif()
  701. endmacro()
  702. if(CMake_BUILD_NIGHTLY_RELEASES)
  703. ADD_NIGHTLY_BUILD_TEST(CMakeNightlyWin32
  704. win32_release.cmake)
  705. ADD_NIGHTLY_BUILD_TEST(CMakeNightlyWin64
  706. win64_release.cmake)
  707. ADD_NIGHTLY_BUILD_TEST(CMakeNightlyOSX
  708. osx_release.cmake)
  709. set_property(TEST CMakeNightlyWin64 PROPERTY DEPENDS CMakeNightlyWin32)
  710. endif()
  711. # add tests with more complex invocations
  712. add_test(Framework ${CMAKE_CTEST_COMMAND}
  713. --build-and-test
  714. "${CMake_SOURCE_DIR}/Tests/Framework"
  715. "${CMake_BINARY_DIR}/Tests/Framework"
  716. --build-two-config
  717. ${build_generator_args}
  718. --build-project Framework
  719. --build-options
  720. "-DCMAKE_INSTALL_PREFIX:PATH=${CMake_BINARY_DIR}/Tests/Framework/Install"
  721. --test-command bar)
  722. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Framework")
  723. add_test(TargetName ${CMAKE_CTEST_COMMAND}
  724. --build-and-test
  725. "${CMake_SOURCE_DIR}/Tests/TargetName"
  726. "${CMake_BINARY_DIR}/Tests/TargetName"
  727. --build-two-config
  728. ${build_generator_args}
  729. --build-project TargetName
  730. --test-command ${CMAKE_CMAKE_COMMAND} -E compare_files
  731. ${CMake_SOURCE_DIR}/Tests/TargetName/scripts/hello_world
  732. ${CMake_BINARY_DIR}/Tests/TargetName/scripts/hello_world)
  733. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/TargetName")
  734. add_test(LibName ${CMAKE_CTEST_COMMAND}
  735. --build-and-test
  736. "${CMake_SOURCE_DIR}/Tests/LibName"
  737. "${CMake_BINARY_DIR}/Tests/LibName"
  738. --build-two-config
  739. ${build_generator_args}
  740. --build-project LibName
  741. --build-exe-dir "${CMake_BINARY_DIR}/Tests/LibName/lib"
  742. --test-command foobar
  743. )
  744. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/LibName")
  745. add_test(CustComDepend ${CMAKE_CTEST_COMMAND}
  746. --build-and-test
  747. "${CMake_SOURCE_DIR}/Tests/CustComDepend"
  748. "${CMake_BINARY_DIR}/Tests/CustComDepend"
  749. --build-two-config
  750. ${build_generator_args}
  751. --build-project CustComDepend
  752. --build-exe-dir "${CMake_BINARY_DIR}/Tests/CustComDepend/bin"
  753. --test-command foo bar.c
  754. )
  755. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CustComDepend")
  756. add_test(ArgumentExpansion ${CMAKE_CTEST_COMMAND}
  757. --build-and-test
  758. "${CMake_SOURCE_DIR}/Tests/ArgumentExpansion"
  759. "${CMake_BINARY_DIR}/Tests/ArgumentExpansion"
  760. ${build_generator_args}
  761. --build-project ArgumentExpansion
  762. --build-exe-dir "${CMake_BINARY_DIR}/Tests/ArgumentExpansion/bin"
  763. )
  764. set_tests_properties(ArgumentExpansion PROPERTIES
  765. FAIL_REGULAR_EXPRESSION "Unexpected: ")
  766. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ArgumentExpansion")
  767. add_test(GeneratorExpression
  768. ${CMAKE_CTEST_COMMAND} -C \${CTEST_CONFIGURATION_TYPE}
  769. --build-and-test
  770. "${CMake_SOURCE_DIR}/Tests/GeneratorExpression"
  771. "${CMake_BINARY_DIR}/Tests/GeneratorExpression"
  772. ${build_generator_args}
  773. --build-project GeneratorExpression
  774. --build-options
  775. -DCMAKE_BUILD_TYPE=\${CTEST_CONFIGURATION_TYPE}
  776. --test-command ${CMAKE_CTEST_COMMAND} -C \${CTEST_CONFIGURATION_TYPE} -V
  777. )
  778. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/GeneratorExpression")
  779. add_test(CustomCommand ${CMAKE_CTEST_COMMAND}
  780. --build-and-test
  781. "${CMake_SOURCE_DIR}/Tests/CustomCommand"
  782. "${CMake_BINARY_DIR}/Tests/CustomCommand"
  783. --build-two-config
  784. ${build_generator_args}
  785. --build-project CustomCommand
  786. --build-exe-dir "${CMake_BINARY_DIR}/Tests/CustomCommand/bin"
  787. --build-options
  788. --test-command CustomCommand
  789. )
  790. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CustomCommand")
  791. ADD_TEST_MACRO(CustomCommandByproducts CustomCommandByproducts)
  792. ADD_TEST_MACRO(CommandLength CommandLength)
  793. ADD_TEST_MACRO(EmptyDepends ${CMAKE_CTEST_COMMAND})
  794. add_test(CustomCommandWorkingDirectory ${CMAKE_CTEST_COMMAND}
  795. --build-and-test
  796. "${CMake_SOURCE_DIR}/Tests/CustomCommandWorkingDirectory"
  797. "${CMake_BINARY_DIR}/Tests/CustomCommandWorkingDirectory"
  798. --build-two-config
  799. ${build_generator_args}
  800. --build-project TestWorkingDir
  801. --test-command working
  802. )
  803. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CustomCommandWorkingDirectory")
  804. add_test(OutOfSource ${CMAKE_CTEST_COMMAND}
  805. --build-and-test
  806. "${CMake_SOURCE_DIR}/Tests/OutOfSource"
  807. "${CMake_BINARY_DIR}/Tests/OutOfSource"
  808. ${build_generator_args}
  809. --build-project OutOfSource
  810. --build-two-config
  811. --test-command
  812. "${CMake_BINARY_DIR}/Tests/OutOfSource/SubDir/OutOfSourceSubdir/simple")
  813. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/OutOfSource")
  814. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/OutOfSourceDeep")
  815. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/OutOfBinary")
  816. add_test(BuildDepends ${CMAKE_CTEST_COMMAND}
  817. --build-and-test
  818. "${CMake_SOURCE_DIR}/Tests/BuildDepends"
  819. "${CMake_BINARY_DIR}/Tests/BuildDepends"
  820. ${build_generator_args}
  821. --build-project BuildDepends
  822. )
  823. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/BuildDepends")
  824. set(MissingInstallInstallDir
  825. "${CMake_BINARY_DIR}/Tests/MissingInstall/InstallDirectory")
  826. add_test(MissingInstall ${CMAKE_CTEST_COMMAND}
  827. --build-and-test
  828. "${CMake_SOURCE_DIR}/Tests/MissingInstall"
  829. "${CMake_BINARY_DIR}/Tests/MissingInstall"
  830. ${build_generator_args}
  831. --build-project TestMissingInstall
  832. --build-two-config
  833. --build-options
  834. "-DCMAKE_INSTALL_PREFIX:PATH=${MissingInstallInstallDir}")
  835. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/MissingInstall")
  836. # By default, run the CPackComponents test if the CTEST_TEST_CPACK
  837. # option is ON:
  838. #
  839. set(CTEST_RUN_CPackComponents ${CTEST_TEST_CPACK})
  840. set(CTEST_package_X11_TEST ${CTEST_TEST_CPACK})
  841. set(CTEST_RUN_CPackComponentsForAll ${CTEST_TEST_CPACK})
  842. set(CTEST_RUN_CPackComponentsPrefix ${CTEST_TEST_CPACK})
  843. find_program(NSIS_MAKENSIS_EXECUTABLE NAMES makensis
  844. PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS]
  845. DOC "makensis program location"
  846. )
  847. # But on Windows, only run the CPackComponents test if the NSIS
  848. # installer builder is available:
  849. #
  850. if(WIN32)
  851. if(NSIS_MAKENSIS_EXECUTABLE)
  852. set(CTEST_RUN_CPackComponents ON)
  853. else()
  854. set(CTEST_RUN_CPackComponents OFF)
  855. set(CTEST_package_X11_TEST OFF)
  856. endif()
  857. endif()
  858. # On Windows run the CPackWiXGenerator test
  859. # if the WiX Toolset seems to be available
  860. if(WIN32)
  861. file(TO_CMAKE_PATH "$ENV{WIX}" WIX_ROOT)
  862. find_program(WIX_LIGHT_EXECUTABLE light
  863. PATHS "${WIX_ROOT}/bin"
  864. DOC "WiX Toolset light.exe location")
  865. if(WIX_LIGHT_EXECUTABLE)
  866. add_test(CPackWiXGenerator ${CMAKE_CTEST_COMMAND}
  867. -C \${CTEST_CONFIGURATION_TYPE}
  868. --build-and-test
  869. "${CMake_SOURCE_DIR}/Tests/CPackWiXGenerator"
  870. "${CMake_BINARY_DIR}/Tests/CPackWiXGenerator"
  871. ${build_generator_args}
  872. --build-project CPackWiXGenerator
  873. --build-options
  874. --test-command ${CMAKE_CMAKE_COMMAND}
  875. "-DCPackWiXGenerator_BINARY_DIR:PATH=${CMake_BINARY_DIR}/Tests/CPackWiXGenerator"
  876. "-Dconfig=\${CTEST_CONFIGURATION_TYPE}"
  877. -P "${CMake_SOURCE_DIR}/Tests/CPackWiXGenerator/RunCPackVerifyResult.cmake")
  878. set_property(TEST CPackWiXGenerator PROPERTY
  879. ATTACHED_FILES_ON_FAIL
  880. "${CMake_BINARY_DIR}/Tests/CPackWiXGenerator/_CPack_Packages/win32/WIX/wix.log")
  881. endif()
  882. endif()
  883. if(CTEST_TEST_CPACK)
  884. add_test(CPackUseDefaultVersion ${CMAKE_CTEST_COMMAND}
  885. --build-and-test
  886. "${CMake_SOURCE_DIR}/Tests/CPackUseDefaultVersion"
  887. "${CMake_BINARY_DIR}/Tests/CPackUseDefaultVersion"
  888. ${build_generator_args}
  889. --build-project CPackUseDefaultVersion
  890. --build-two-config
  891. --build-options
  892. ${CPackUseDefaultVersion_BUILD_OPTIONS})
  893. set_tests_properties(CPackUseDefaultVersion PROPERTIES PASS_REGULAR_EXPRESSION "CPACK_PACKAGE_VERSION=0\\.1\\.1")
  894. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CPackUseDefaultVersion")
  895. add_test(CPackUseProjectVersion ${CMAKE_CTEST_COMMAND}
  896. --build-and-test
  897. "${CMake_SOURCE_DIR}/Tests/CPackUseProjectVersion"
  898. "${CMake_BINARY_DIR}/Tests/CPackUseProjectVersion"
  899. ${build_generator_args}
  900. --build-project CPackUseProjectVersion
  901. --build-two-config
  902. --build-options
  903. ${CPackUseProjectVersion_BUILD_OPTIONS})
  904. set_tests_properties(CPackUseProjectVersion PROPERTIES PASS_REGULAR_EXPRESSION "CPACK_PACKAGE_VERSION=1\\.2\\.3")
  905. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CPackUseProjectVersion")
  906. add_test(CPackUseShortProjectVersion ${CMAKE_CTEST_COMMAND}
  907. --build-and-test
  908. "${CMake_SOURCE_DIR}/Tests/CPackUseShortProjectVersion"
  909. "${CMake_BINARY_DIR}/Tests/CPackUseShortProjectVersion"
  910. ${build_generator_args}
  911. --build-project CPackUseShortProjectVersion
  912. --build-two-config
  913. --build-options
  914. ${CPackUseProjectVersion_BUILD_OPTIONS})
  915. set_tests_properties(CPackUseShortProjectVersion PROPERTIES PASS_REGULAR_EXPRESSION "CPACK_PACKAGE_VERSION=2")
  916. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CPackUseShortProjectVersion")
  917. endif()
  918. if(CTEST_RUN_CPackComponents)
  919. set(CPackComponents_BUILD_OPTIONS)
  920. if(APPLE)
  921. set(CPackComponents_BUILD_OPTIONS -DCPACK_BINARY_DRAGNDROP:BOOL=ON)
  922. if(CMake_TEST_XCODE_VERSION VERSION_GREATER "4.6")
  923. set(CPackComponents_BUILD_OPTIONS ${CPackComponents_BUILD_OPTIONS}
  924. -DCPACK_BINARY_PRODUCTBUILD:BOOL=ON)
  925. endif()
  926. endif()
  927. if(NSIS_MAKENSIS_EXECUTABLE)
  928. set(CPackComponents_BUILD_OPTIONS ${CPackComponents_BUILD_OPTIONS}
  929. -DCPACK_BINARY_NSIS:BOOL=ON)
  930. endif()
  931. add_test(CPackComponents ${CMAKE_CTEST_COMMAND}
  932. --build-and-test
  933. "${CMake_SOURCE_DIR}/Tests/CPackComponents"
  934. "${CMake_BINARY_DIR}/Tests/CPackComponents"
  935. ${build_generator_args}
  936. --build-project CPackComponents
  937. --build-two-config
  938. --build-target package
  939. --build-options
  940. -DCPACK_BINARY_DEB:BOOL=${CPACK_BINARY_DEB}
  941. -DCPACK_BINARY_RPM:BOOL=${CPACK_BINARY_RPM}
  942. ${CPackComponents_BUILD_OPTIONS}
  943. --graphviz=CPackComponents.dot
  944. --test-command ${CMAKE_CMAKE_COMMAND}
  945. "-DCPackComponents_BINARY_DIR:PATH=${CMake_BINARY_DIR}/Tests/CPackComponents"
  946. -P "${CMake_SOURCE_DIR}/Tests/CPackComponents/VerifyResult.cmake")
  947. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CPackComponents")
  948. endif()
  949. if(CTEST_RUN_CPackComponentsForAll)
  950. # Check whether if rpmbuild command is found
  951. # before adding RPM tests
  952. if(CPACK_BINARY_RPM)
  953. list(APPEND ACTIVE_CPACK_GENERATORS RPM)
  954. endif()
  955. # Check whether if dpkg command is found
  956. # before adding DEB tests
  957. if(CPACK_BINARY_DEB)
  958. list(APPEND ACTIVE_CPACK_GENERATORS DEB)
  959. endif()
  960. # Check whether if NuGet command is found
  961. # before adding NuGet tests
  962. if(CPACK_BINARY_NUGET)
  963. list(APPEND ACTIVE_CPACK_GENERATORS NUGET)
  964. set(CPACK_GENERATOR_STRING_NUGET NuGet)
  965. endif()
  966. # ACTIVE_CPACK_GENERATORS variable
  967. # now contains the list of 'active generators'
  968. set(CPackComponentsForAll_BUILD_OPTIONS)
  969. # set up list of CPack generators
  970. list(APPEND ACTIVE_CPACK_GENERATORS "ZIP")
  971. if(APPLE)
  972. list(APPEND ACTIVE_CPACK_GENERATORS "DragNDrop")
  973. if(CMake_TEST_XCODE_VERSION VERSION_GREATER "4.6")
  974. list(APPEND ACTIVE_CPACK_GENERATORS "productbuild")
  975. endif()
  976. endif()
  977. # set up list of component packaging ways
  978. list(APPEND CWAYLST "default")
  979. list(APPEND CWAYLST "OnePackPerGroup")
  980. list(APPEND CWAYLST "IgnoreGroup")
  981. list(APPEND CWAYLST "AllInOne")
  982. foreach(CPackGen IN LISTS ACTIVE_CPACK_GENERATORS)
  983. if(NOT DEFINED CPACK_GENERATOR_STRING_${CPackGen})
  984. set(CPACK_GENERATOR_STRING_${CPackGen} ${CPackGen})
  985. endif()
  986. set(CPackRun_CPackGen "-DCPackGen=${CPACK_GENERATOR_STRING_${CPackGen}}")
  987. foreach(CPackComponentWay ${CWAYLST})
  988. set(CPackRun_CPackComponentWay "-DCPackComponentWay=${CPackComponentWay}")
  989. add_test(CPackComponentsForAll-${CPackGen}-${CPackComponentWay}
  990. ${CMAKE_CTEST_COMMAND} -C \${CTEST_CONFIGURATION_TYPE}
  991. --build-and-test
  992. "${CMake_SOURCE_DIR}/Tests/CPackComponentsForAll"
  993. "${CMake_BINARY_DIR}/Tests/CPackComponentsForAll/build${CPackGen}-${CPackComponentWay}"
  994. ${build_generator_args}
  995. --build-project CPackComponentsForAll
  996. --build-options
  997. -DCPACK_GENERATOR:STRING=${CPACK_GENERATOR_STRING_${CPackGen}}
  998. -DCPACK_BINARY_${CPackGen}:BOOL=ON
  999. ${CPackRun_CPackComponentWay}
  1000. ${CPackComponentsForAll_BUILD_OPTIONS}
  1001. --graphviz=CPackComponentsForAll.dot
  1002. --test-command ${CMAKE_CMAKE_COMMAND}
  1003. "-DCPackComponentsForAll_BINARY_DIR:PATH=${CMake_BINARY_DIR}/Tests/CPackComponentsForAll/build${CPackGen}-${CPackComponentWay}"
  1004. "${CPackRun_CPackGen}"
  1005. "${CPackRun_CPackComponentWay}"
  1006. -P "${CMake_SOURCE_DIR}/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake")
  1007. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CPackComponentsForAll/build${CPackGen}-${CPackComponentWay}")
  1008. endforeach()
  1009. endforeach()
  1010. # debian specific
  1011. if(DPKG_EXECUTABLE)
  1012. unset(CPackRun_CPackDEBConfiguration_ALL_CONFIGS)
  1013. set(DEB_TEST_NAMES "CPackComponentsDEB")
  1014. set(DEB_CONFIGURATIONS_TO_TEST "components-lintian-dpkgdeb-checks"
  1015. "components-description1"
  1016. "components-description2"
  1017. "components-source"
  1018. "components-shlibdeps1"
  1019. "components-depend1"
  1020. "components-depend2"
  1021. "compression")
  1022. set(CPackGen "DEB")
  1023. set(CPackRun_CPackGen "-DCPackGen=${CPackGen}")
  1024. foreach(CPackDEBConfiguration IN LISTS DEB_CONFIGURATIONS_TO_TEST)
  1025. set(CPackRun_CPackDEBConfiguration "-DCPackDEBConfiguration=${CPackDEBConfiguration}")
  1026. add_test(${DEB_TEST_NAMES}-${CPackDEBConfiguration}
  1027. ${CMAKE_CTEST_COMMAND} -C \${CTEST_CONFIGURATION_TYPE}
  1028. --build-and-test
  1029. "${CMake_SOURCE_DIR}/Tests/${DEB_TEST_NAMES}"
  1030. "${CMake_BINARY_DIR}/Tests/${DEB_TEST_NAMES}/build${CPackGen}-${CPackDEBConfiguration}"
  1031. ${build_generator_args}
  1032. --build-project CPackComponentsDEB
  1033. --build-options
  1034. -DCPACK_GENERATOR:STRING=${CPackGen}
  1035. -DCPACK_BINARY_${CPackGen}:BOOL=ON
  1036. ${CPackRun_CPackDEBConfiguration}
  1037. ${CPackRun_CPackDEBConfiguration_ALL_CONFIGS}
  1038. --graphviz=${DEB_TEST_NAMES}.dot
  1039. --test-command ${CMAKE_CMAKE_COMMAND}
  1040. "-D${DEB_TEST_NAMES}_SOURCE_DIR:PATH=${CMake_SOURCE_DIR}/Tests/${DEB_TEST_NAMES}"
  1041. "-D${DEB_TEST_NAMES}_BINARY_DIR:PATH=${CMake_BINARY_DIR}/Tests/${DEB_TEST_NAMES}/build${CPackGen}-${CPackDEBConfiguration}"
  1042. "${CPackRun_CPackGen}"
  1043. "${CPackRun_CPackDEBConfiguration}"
  1044. -P "${CMake_SOURCE_DIR}/Tests/${DEB_TEST_NAMES}/RunCPackVerifyResult-${CPackDEBConfiguration}.cmake")
  1045. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${DEB_TEST_NAMES}/build${CPackGen}-${CPackDEBConfiguration}")
  1046. endforeach()
  1047. endif()
  1048. endif()
  1049. # By default, turn this test off (because it takes a long time...)
  1050. #
  1051. if(NOT DEFINED CTEST_RUN_CPackTestAllGenerators)
  1052. set(CTEST_RUN_CPackTestAllGenerators OFF)
  1053. # ...but: if it appears to be a coverage dashboard, or long tests are
  1054. # on, then set it to the generic CTEST_TEST_CPACK setting.
  1055. #
  1056. if(CMAKE_CXX_FLAGS MATCHES "-ftest-coverage" OR
  1057. NOT "$ENV{COVFILE}" STREQUAL "" OR
  1058. CMAKE_RUN_LONG_TESTS)
  1059. set(CTEST_RUN_CPackTestAllGenerators ${CTEST_TEST_CPACK})
  1060. endif()
  1061. endif()
  1062. if(CTEST_RUN_CPackTestAllGenerators)
  1063. add_test(CPackTestAllGenerators ${CMAKE_CTEST_COMMAND}
  1064. --build-and-test
  1065. "${CMake_SOURCE_DIR}/Tests/CPackTestAllGenerators"
  1066. "${CMake_BINARY_DIR}/Tests/CPackTestAllGenerators"
  1067. ${build_generator_args}
  1068. --build-project CPackTestAllGenerators
  1069. --test-command
  1070. ${CMAKE_CMAKE_COMMAND}
  1071. -D dir=${CMake_BINARY_DIR}/Tests/CPackTestAllGenerators
  1072. -P ${CMake_SOURCE_DIR}/Tests/CPackTestAllGenerators/RunCPack.cmake
  1073. )
  1074. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CPackTestAllGenerators")
  1075. endif()
  1076. if(CTEST_RUN_CPackComponentsPrefix)
  1077. set(CPackComponents_BUILD_OPTIONS)
  1078. if(APPLE)
  1079. set(CPackComponents_BUILD_OPTIONS -DCPACK_BINARY_DRAGNDROP:BOOL=ON)
  1080. if(CMake_TEST_XCODE_VERSION VERSION_GREATER "4.6")
  1081. set(CPackComponents_BUILD_OPTIONS ${CPackComponents_BUILD_OPTIONS}
  1082. -DCPACK_BINARY_PRODUCTBUILD:BOOL=ON)
  1083. endif()
  1084. endif()
  1085. if(NOT NSIS_MAKENSIS_EXECUTABLE)
  1086. set(CPackComponents_BUILD_OPTIONS ${CPackComponents_BUILD_OPTIONS}
  1087. -DCPACK_BINARY_NSIS:BOOL=OFF)
  1088. endif()
  1089. add_test(CPackComponentsPrefix ${CMAKE_CTEST_COMMAND}
  1090. --build-and-test
  1091. "${CMake_SOURCE_DIR}/Tests/CPackComponentsPrefix"
  1092. "${CMake_BINARY_DIR}/Tests/CPackComponentsPrefix"
  1093. ${build_generator_args}
  1094. --build-project CPackComponentsPrefix
  1095. --build-two-config
  1096. --build-target package
  1097. --build-options
  1098. -DCPACK_BINARY_DEB:BOOL=${CPACK_BINARY_DEB}
  1099. -DCPACK_BINARY_RPM:BOOL=${CPACK_BINARY_RPM}
  1100. -DCPACK_BINARY_ZIP:BOOL=ON
  1101. ${CPackComponents_BUILD_OPTIONS}
  1102. )
  1103. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CPackComponentsPrefix")
  1104. endif()
  1105. if(CTEST_package_X11_TEST)
  1106. set(X11_build_target_arg --build-target package)
  1107. else()
  1108. set(X11_build_target_arg)
  1109. endif()
  1110. add_test(X11 ${CMAKE_CTEST_COMMAND}
  1111. --build-and-test
  1112. "${CMake_SOURCE_DIR}/Tests/X11"
  1113. "${CMake_BINARY_DIR}/Tests/X11"
  1114. ${build_generator_args}
  1115. --build-project UseX11
  1116. --build-two-config
  1117. ${X11_build_target_arg}
  1118. --test-command UseX11)
  1119. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/X11")
  1120. if(NOT DEFINED CTEST_RUN_CMakeTestAllGenerators)
  1121. set(CTEST_RUN_CMakeTestAllGenerators ON)
  1122. endif()
  1123. if(CTEST_RUN_CMakeTestAllGenerators)
  1124. add_test(CMakeTestAllGenerators ${CMAKE_CMAKE_COMMAND}
  1125. -D dir=${CMake_BINARY_DIR}/Tests/CMakeTestAllGenerators
  1126. -D CMake_SOURCE_DIR=${CMake_SOURCE_DIR}
  1127. -P ${CMake_SOURCE_DIR}/Tests/CMakeTestAllGenerators/RunCMake.cmake
  1128. )
  1129. list(APPEND TEST_BUILD_DIRS
  1130. "${CMake_BINARY_DIR}/Tests/CMakeTestAllGenerators")
  1131. # This test runs a lot of processes. Do not make them compete
  1132. # for resources with other tests.
  1133. set_property(TEST CMakeTestAllGenerators PROPERTY RUN_SERIAL 1)
  1134. endif()
  1135. if(NOT DEFINED CTEST_RUN_CMakeTestMultipleConfigures)
  1136. set(CTEST_RUN_CMakeTestMultipleConfigures ON)
  1137. endif()
  1138. if(CTEST_RUN_CMakeTestMultipleConfigures)
  1139. add_test(CMakeTestMultipleConfigures ${CMAKE_CMAKE_COMMAND}
  1140. -D dir=${CMake_BINARY_DIR}/Tests/CMakeTestMultipleConfigures
  1141. -D gen=${CMAKE_GENERATOR}
  1142. -D CMake_SOURCE_DIR=${CMake_SOURCE_DIR}
  1143. -P ${CMake_SOURCE_DIR}/Tests/CMakeTestMultipleConfigures/RunCMake.cmake
  1144. )
  1145. list(APPEND TEST_BUILD_DIRS
  1146. "${CMake_BINARY_DIR}/Tests/CMakeTestMultipleConfigures")
  1147. endif()
  1148. if(NOT CMake_TEST_EXTERNAL_CMAKE)
  1149. add_test(LoadedCommandOneConfig ${CMAKE_CTEST_COMMAND}
  1150. --build-and-test
  1151. "${CMake_SOURCE_DIR}/Tests/LoadCommandOneConfig"
  1152. "${CMake_BINARY_DIR}/Tests/LoadCommandOneConfig"
  1153. ${build_generator_args}
  1154. --build-project LoadCommand
  1155. --test-command LoadedCommand
  1156. )
  1157. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/LoadCommandOneConfig")
  1158. endif()
  1159. add_test(complex ${CMAKE_CTEST_COMMAND}
  1160. --build-and-test
  1161. "${CMake_SOURCE_DIR}/Tests/Complex"
  1162. "${CMake_BINARY_DIR}/Tests/Complex"
  1163. --build-two-config
  1164. --build-config-sample "${CMAKE_CTEST_COMMAND}"
  1165. ${build_generator_args}
  1166. --build-project Complex
  1167. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Complex/bin"
  1168. -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
  1169. --test-command complex
  1170. )
  1171. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Complex")
  1172. add_test(complexOneConfig ${CMAKE_CTEST_COMMAND}
  1173. --build-and-test
  1174. "${CMake_SOURCE_DIR}/Tests/ComplexOneConfig"
  1175. "${CMake_BINARY_DIR}/Tests/ComplexOneConfig"
  1176. ${build_generator_args}
  1177. --build-project Complex
  1178. --build-exe-dir "${CMake_BINARY_DIR}/Tests/ComplexOneConfig/bin"
  1179. -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
  1180. --test-command complex)
  1181. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ComplexOneConfig")
  1182. # because of the registry write these tests depend on each other
  1183. set_tests_properties ( complex PROPERTIES DEPENDS complexOneConfig)
  1184. add_test(Environment ${CMAKE_CTEST_COMMAND}
  1185. --build-and-test
  1186. "${CMake_SOURCE_DIR}/Tests/Environment"
  1187. "${CMake_BINARY_DIR}/Tests/Environment"
  1188. ${build_generator_args}
  1189. --build-project EnvironmentProj
  1190. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Environment"
  1191. --force-new-ctest-process
  1192. --test-command ${CMAKE_CTEST_COMMAND} -V
  1193. )
  1194. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Environment")
  1195. add_test(QtAutomocNoQt ${CMAKE_CTEST_COMMAND}
  1196. --build-and-test
  1197. "${CMake_SOURCE_DIR}/Tests/QtAutomocNoQt"
  1198. "${CMake_BINARY_DIR}/Tests/QtAutomocNoQt"
  1199. ${build_generator_args}
  1200. --build-project QtAutomocNoQt
  1201. --build-options
  1202. -DCMAKE_BUILD_TYPE=\${CTEST_CONFIGURATION_TYPE}
  1203. )
  1204. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/QtAutomocNoQt")
  1205. if(NOT DEFINED CMake_TEST_Qt5)
  1206. set(CMake_TEST_Qt5 1)
  1207. endif()
  1208. if(CMake_TEST_Qt5)
  1209. find_package(Qt5Widgets QUIET NO_MODULE)
  1210. endif()
  1211. if(CMake_TEST_Qt5 AND Qt5Widgets_FOUND)
  1212. add_subdirectory(Qt5Autogen)
  1213. endif()
  1214. if(QT4_WORKS AND QT_QTGUI_FOUND)
  1215. add_subdirectory(Qt4Autogen)
  1216. add_test(Qt4Targets ${CMAKE_CTEST_COMMAND}
  1217. --build-and-test
  1218. "${CMake_SOURCE_DIR}/Tests/Qt4Targets"
  1219. "${CMake_BINARY_DIR}/Tests/Qt4Targets"
  1220. ${build_generator_args}
  1221. --build-project Qt4Targets
  1222. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Qt4Targets"
  1223. --force-new-ctest-process
  1224. --build-options
  1225. -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}
  1226. --test-command ${CMAKE_CTEST_COMMAND} -V
  1227. )
  1228. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Qt4Targets")
  1229. if(Qt5Widgets_FOUND AND NOT Qt5Widgets_VERSION VERSION_LESS 5.1.0)
  1230. add_test(Qt4And5AutomocForward ${CMAKE_CTEST_COMMAND}
  1231. --build-and-test
  1232. "${CMake_SOURCE_DIR}/Tests/Qt4And5Automoc"
  1233. "${CMake_BINARY_DIR}/Tests/Qt4And5AutomocForward"
  1234. ${build_generator_args}
  1235. --build-project Qt4And5Automoc
  1236. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Qt4And5AutomocForward"
  1237. --force-new-ctest-process
  1238. --test-command ${CMAKE_CTEST_COMMAND} -V
  1239. )
  1240. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Qt4And5AutomocForward")
  1241. add_test(Qt4And5AutomocReverse ${CMAKE_CTEST_COMMAND}
  1242. --build-and-test
  1243. "${CMake_SOURCE_DIR}/Tests/Qt4And5Automoc"
  1244. "${CMake_BINARY_DIR}/Tests/Qt4And5AutomocReverse"
  1245. ${build_generator_args}
  1246. --build-project Qt4And5Automoc
  1247. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Qt4And5AutomocReverse"
  1248. --force-new-ctest-process
  1249. --build-options -DQT_REVERSE_FIND_ORDER=1
  1250. --test-command ${CMAKE_CTEST_COMMAND} -V
  1251. )
  1252. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Qt4And5AutomocReverse")
  1253. endif()
  1254. endif()
  1255. # test for Find modules, simple cases
  1256. foreach(_mod IN ITEMS
  1257. ALSA
  1258. Boost
  1259. BZip2
  1260. CURL
  1261. Cups
  1262. Doxygen
  1263. EnvModules
  1264. EXPAT
  1265. Fontconfig
  1266. Freetype
  1267. GDAL
  1268. GIF
  1269. Git
  1270. GLEW
  1271. GnuTLS
  1272. GSL
  1273. GTK2
  1274. Iconv
  1275. ICU
  1276. JPEG
  1277. JsonCpp
  1278. LibLZMA
  1279. LibRHash
  1280. Libinput
  1281. LibUV
  1282. LibXml2
  1283. LTTngUST
  1284. ODBC
  1285. OpenACC
  1286. OpenCL
  1287. OpenGL
  1288. OpenMP
  1289. OpenSSL
  1290. MPI
  1291. PNG
  1292. Patch
  1293. PostgreSQL
  1294. Protobuf
  1295. SQLite3
  1296. TIFF
  1297. Vulkan
  1298. X11
  1299. XalanC
  1300. XercesC
  1301. )
  1302. if(CMake_TEST_Find${_mod})
  1303. add_subdirectory(Find${_mod})
  1304. endif()
  1305. endforeach()
  1306. if(CMake_TEST_CUDA)
  1307. add_subdirectory(Cuda)
  1308. add_subdirectory(CudaOnly)
  1309. endif()
  1310. if(CMake_TEST_FindGTest)
  1311. add_subdirectory(FindGTest)
  1312. add_subdirectory(GoogleTest)
  1313. endif()
  1314. if(CMake_TEST_FindPython OR CMake_TEST_FindPython_NumPy)
  1315. add_subdirectory(FindPython)
  1316. endif()
  1317. if(CMake_TEST_UseSWIG)
  1318. add_subdirectory(UseSWIG)
  1319. endif()
  1320. add_subdirectory(FindThreads)
  1321. # Matlab module
  1322. # CMake_TEST_FindMatlab: indicates to look for Matlab (from PATH for Linux)
  1323. # CMake_TEST_FindMatlab_ROOT_DIR: indicates an optional root directory for Matlab, allows to select a version.
  1324. # CMake_TEST_FindMatlab_MCR: indicates the MCR is installed
  1325. # CMake_TEST_FindMatlab_MCR_ROOT_DIR: indicates an optional root directory for the MCR, required on Linux
  1326. if(CMake_TEST_FindMatlab OR CMake_TEST_FindMatlab_ROOT_DIR OR
  1327. CMake_TEST_FindMatlab_MCR OR CMake_TEST_FindMatlab_MCR_ROOT_DIR)
  1328. set(FindMatlab_additional_test_options )
  1329. if(CMake_TEST_FindMatlab_MCR OR CMake_TEST_FindMatlab_MCR_ROOT_DIR)
  1330. set(FindMatlab_additional_test_options -DIS_MCR=TRUE)
  1331. endif()
  1332. if(CMake_TEST_FindMatlab_ROOT_DIR)
  1333. set(FindMatlab_additional_test_options ${FindMatlab_additional_test_options} "-DMatlab_ROOT_DIR=${CMake_TEST_FindMatlab_ROOT_DIR}")
  1334. endif()
  1335. if(CMake_TEST_FindMatlab_MCR_ROOT_DIR)
  1336. set(FindMatlab_additional_test_options ${FindMatlab_additional_test_options} "-DMCR_ROOT:FILEPATH=${CMake_TEST_FindMatlab_MCR_ROOT_DIR}")
  1337. endif()
  1338. set(FindMatlab.basic_checks_BUILD_OPTIONS ${FindMatlab_additional_test_options})
  1339. ADD_TEST_MACRO(FindMatlab.basic_checks ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>)
  1340. set(FindMatlab.versions_checks_BUILD_OPTIONS ${FindMatlab_additional_test_options})
  1341. ADD_TEST_MACRO(FindMatlab.versions_checks ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>)
  1342. set(FindMatlab.components_checks_BUILD_OPTIONS ${FindMatlab_additional_test_options})
  1343. ADD_TEST_MACRO(FindMatlab.components_checks ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>)
  1344. set(FindMatlab.failure_reports_BUILD_OPTIONS ${FindMatlab_additional_test_options})
  1345. ADD_TEST_MACRO(FindMatlab.failure_reports ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>)
  1346. set(FindMatlab.r2018a_check_BUILD_OPTIONS ${FindMatlab_additional_test_options})
  1347. ADD_TEST_MACRO(FindMatlab.r2018a_check ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>)
  1348. endif()
  1349. add_test(ExternalProject ${CMAKE_CTEST_COMMAND}
  1350. --build-and-test
  1351. "${CMake_SOURCE_DIR}/Tests/ExternalProject"
  1352. "${CMake_BINARY_DIR}/Tests/ExternalProject"
  1353. ${build_generator_args}
  1354. --build-project ExternalProjectTest
  1355. --build-exe-dir "${CMake_BINARY_DIR}/Tests/ExternalProject"
  1356. --force-new-ctest-process
  1357. --test-command ${CMAKE_CTEST_COMMAND} -V
  1358. )
  1359. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ExternalProject")
  1360. set_tests_properties(ExternalProject PROPERTIES
  1361. RUN_SERIAL 1
  1362. TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT})
  1363. add_test(NAME ExternalProjectSubdir
  1364. COMMAND ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
  1365. --build-and-test
  1366. "${CMake_SOURCE_DIR}/Tests/ExternalProjectSubdir"
  1367. "${CMake_BINARY_DIR}/Tests/ExternalProjectSubdir"
  1368. ${build_generator_args}
  1369. --build-project ExternalProjectSubdir
  1370. --force-new-ctest-process
  1371. )
  1372. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ExternalProjectSubdir")
  1373. add_test(NAME ExternalProjectSourceSubdir
  1374. COMMAND ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
  1375. --build-and-test
  1376. "${CMake_SOURCE_DIR}/Tests/ExternalProjectSourceSubdir"
  1377. "${CMake_BINARY_DIR}/Tests/ExternalProjectSourceSubdir"
  1378. ${build_generator_args}
  1379. --build-project ExternalProjectSourceSubdir
  1380. --force-new-ctest-process
  1381. )
  1382. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ExternalProjectSourceSubdir")
  1383. add_test(NAME ExternalProjectSourceSubdirNotCMake
  1384. COMMAND ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
  1385. --build-and-test
  1386. "${CMake_SOURCE_DIR}/Tests/ExternalProjectSourceSubdirNotCMake"
  1387. "${CMake_BINARY_DIR}/Tests/ExternalProjectSourceSubdirNotCMake"
  1388. ${build_generator_args}
  1389. --build-project ExternalProjectSourceSubdirNotCMake
  1390. --force-new-ctest-process
  1391. )
  1392. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ExternalProjectSourceSubdirNotCMake")
  1393. add_test(ExternalProjectLocal ${CMAKE_CTEST_COMMAND}
  1394. --build-and-test
  1395. "${CMake_SOURCE_DIR}/Tests/ExternalProjectLocal"
  1396. "${CMake_BINARY_DIR}/Tests/ExternalProjectLocal"
  1397. ${build_generator_args}
  1398. --build-project ExternalProjectLocalTest
  1399. --build-exe-dir "${CMake_BINARY_DIR}/Tests/ExternalProjectLocal"
  1400. --force-new-ctest-process
  1401. --test-command ${CMAKE_CTEST_COMMAND} -V
  1402. )
  1403. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ExternalProjectLocal")
  1404. set_tests_properties(ExternalProjectLocal PROPERTIES
  1405. RUN_SERIAL 1
  1406. TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT})
  1407. add_test(ExternalProjectUpdateSetup ${CMAKE_CTEST_COMMAND}
  1408. --build-and-test
  1409. "${CMake_SOURCE_DIR}/Tests/ExternalProjectUpdate"
  1410. "${CMake_BINARY_DIR}/Tests/ExternalProjectUpdate"
  1411. ${build_generator_args}
  1412. --build-project ExternalProjectUpdateTest
  1413. --build-exe-dir "${CMake_BINARY_DIR}/Tests/ExternalProjectUpdate"
  1414. --force-new-ctest-process
  1415. --test-command ${CMAKE_CTEST_COMMAND} -V
  1416. )
  1417. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ExternalProjectUpdate")
  1418. set_tests_properties(ExternalProjectUpdateSetup PROPERTIES
  1419. RUN_SERIAL 1
  1420. TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT})
  1421. add_test(NAME ExternalProjectUpdate
  1422. COMMAND ${CMAKE_CMAKE_COMMAND}
  1423. -DExternalProjectUpdate_SOURCE_DIR:PATH=${CMake_SOURCE_DIR}/Tests/ExternalProjectUpdate
  1424. -DExternalProjectUpdate_BINARY_DIR:PATH=${CMake_BINARY_DIR}/Tests/ExternalProjectUpdate
  1425. -DCMAKE_GENERATOR=${CMAKE_GENERATOR}
  1426. -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
  1427. -DCMAKE_GENERATOR_TOOLSET=${CMAKE_GENERATOR_TOOLSET}
  1428. -DCMAKE_CTEST_COMMAND=${CMAKE_CTEST_COMMAND}
  1429. -P ${CMake_SOURCE_DIR}/Tests/ExternalProjectUpdate/ExternalProjectUpdateTest.cmake
  1430. )
  1431. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ExternalProjectUpdate")
  1432. set_tests_properties(ExternalProjectUpdate PROPERTIES
  1433. RUN_SERIAL 1
  1434. TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT}
  1435. WORKING_DIRECTORY ${CMake_SOURCE_DIR}/Tests/ExternalProjectUpdate
  1436. DEPENDS ExternalProjectUpdateSetup )
  1437. # do each of the tutorial steps
  1438. function(add_tutorial_test step_name use_mymath)
  1439. set(tutorial_test_name Tutorial${step_name})
  1440. set(tutorial_build_dir "${CMake_BINARY_DIR}/Tests/Tutorial/${step_name}")
  1441. if (use_mymath)
  1442. set(tutorial_build_options "")
  1443. else()
  1444. set(tutorial_test_name ${tutorial_test_name}_MYMATH)
  1445. set(tutorial_build_dir "${tutorial_build_dir}_MYMATH")
  1446. set(tutorial_build_options -DUSE_MYMATH:BOOL=OFF)
  1447. endif()
  1448. add_test(${tutorial_test_name} ${CMAKE_CTEST_COMMAND}
  1449. --build-and-test
  1450. "${CMake_SOURCE_DIR}/Help/guide/tutorial/${step_name}"
  1451. ${tutorial_build_dir}_Build
  1452. ${build_generator_args}
  1453. --build-project Tutorial
  1454. --build-options ${tutorial_build_options}
  1455. --test-command Tutorial 25.0)
  1456. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/${tutorial_build_dir}_Build")
  1457. endfunction()
  1458. if(NOT CMake_TEST_EXTERNAL_CMAKE)
  1459. foreach(STP RANGE 2 11)
  1460. add_tutorial_test(Step${STP} TRUE)
  1461. endforeach()
  1462. add_tutorial_test(Complete TRUE)
  1463. foreach(STP RANGE 3 11)
  1464. add_tutorial_test(Step${STP} FALSE)
  1465. endforeach()
  1466. add_tutorial_test(Complete FALSE)
  1467. endif()
  1468. add_test(testing ${CMAKE_CTEST_COMMAND} -C \${CTEST_CONFIGURATION_TYPE}
  1469. --build-and-test
  1470. "${CMake_SOURCE_DIR}/Tests/Testing"
  1471. "${CMake_BINARY_DIR}/Tests/Testing"
  1472. ${build_generator_args}
  1473. --build-project Testing
  1474. --test-command ${CMAKE_CTEST_COMMAND} -C \${CTEST_CONFIGURATION_TYPE}
  1475. )
  1476. set_tests_properties(testing PROPERTIES PASS_REGULAR_EXPRESSION "Passed")
  1477. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Testing")
  1478. add_test(wrapping ${CMAKE_CTEST_COMMAND}
  1479. --build-and-test
  1480. "${CMake_SOURCE_DIR}/Tests/Wrapping"
  1481. "${CMake_BINARY_DIR}/Tests/Wrapping"
  1482. ${build_generator_args}
  1483. --build-project Wrapping
  1484. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Wrapping/bin"
  1485. --test-command wrapping
  1486. )
  1487. add_test(qtwrapping ${CMAKE_CTEST_COMMAND}
  1488. --build-and-test
  1489. "${CMake_SOURCE_DIR}/Tests/Wrapping"
  1490. "${CMake_BINARY_DIR}/Tests/Wrapping"
  1491. ${build_generator_args}
  1492. --build-project Wrapping
  1493. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Wrapping/bin"
  1494. --test-command qtwrapping
  1495. )
  1496. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Wrapping")
  1497. add_test(testdriver1 ${CMAKE_CTEST_COMMAND}
  1498. --build-and-test
  1499. "${CMake_SOURCE_DIR}/Tests/TestDriver"
  1500. "${CMake_BINARY_DIR}/Tests/TestDriver"
  1501. ${build_generator_args}
  1502. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Wrapping/bin"
  1503. --build-project TestDriverTest
  1504. --test-command TestDriverTest test1
  1505. )
  1506. add_test(testdriver2 ${CMAKE_CTEST_COMMAND}
  1507. --build-and-test
  1508. "${CMake_SOURCE_DIR}/Tests/TestDriver"
  1509. "${CMake_BINARY_DIR}/Tests/TestDriver"
  1510. ${build_generator_args}
  1511. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Wrapping/bin"
  1512. --build-project TestDriverTest
  1513. --test-command TestDriverTest test2
  1514. )
  1515. add_test(testdriver3 ${CMAKE_CTEST_COMMAND}
  1516. --build-and-test
  1517. "${CMake_SOURCE_DIR}/Tests/TestDriver"
  1518. "${CMake_BINARY_DIR}/Tests/TestDriver"
  1519. ${build_generator_args}
  1520. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Wrapping/bin"
  1521. --build-project TestDriverTest
  1522. --test-command TestDriverTest subdir/test3
  1523. )
  1524. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/TestDriver")
  1525. add_test(Dependency ${CMAKE_CTEST_COMMAND}
  1526. --build-and-test
  1527. "${CMake_SOURCE_DIR}/Tests/Dependency"
  1528. "${CMake_BINARY_DIR}/Tests/Dependency"
  1529. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Dependency/Exec"
  1530. ${build_generator_args}
  1531. --build-project Dependency
  1532. --test-command exec
  1533. )
  1534. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Dependency")
  1535. if(CMAKE_SYSTEM_NAME MATCHES syllable)
  1536. # RPATH isn't supported under Syllable, so the tests don't
  1537. # find their libraries. In order to fix that LIBRARY_OUTPUT_DIR
  1538. # in the tests would have to be adjusted to ${EXECUTABLE_OUTPUT_DIR}/lib .
  1539. # For now we just require on Syllable that the user adjusts the DLL_PATH
  1540. # environment variable, so except the two tests below all other tests will succeed.
  1541. set(_DLL_PATH "$ENV{DLL_PATH}")
  1542. if(NOT "${_DLL_PATH}" MATCHES "^(.*:)?\\@bindir\\@/\\.(:.*)?$")
  1543. message(FATAL_ERROR "In order to successfully run the CMake test suite on Syllable you need to add \"\\@bindir\\@/.\" to the DLL_PATH environment variable")
  1544. endif()
  1545. if(NOT "${_DLL_PATH}" MATCHES "^(.*:)?\\@bindir\\@/\\.\\./lib(:.*)?$")
  1546. message(FATAL_ERROR "In order to successfully run the CMake test suite on Syllable you need to add \"\\@bindir\\@/../lib\" to the DLL_PATH environment variable")
  1547. endif()
  1548. else()
  1549. add_test(JumpWithLibOut ${CMAKE_CTEST_COMMAND}
  1550. --build-and-test
  1551. "${CMake_SOURCE_DIR}/Tests/Jump"
  1552. "${CMake_BINARY_DIR}/Tests/Jump/WithLibOut"
  1553. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Jump/WithLibOut/Executable"
  1554. --build-project Jump
  1555. ${build_generator_args}
  1556. --build-options
  1557. -DLIBRARY_OUTPUT_PATH:PATH=${CMake_BINARY_DIR}/Tests/Jump/WithLibOut/Lib
  1558. --test-command jumpExecutable
  1559. )
  1560. add_test(JumpNoLibOut ${CMAKE_CTEST_COMMAND}
  1561. --build-and-test
  1562. "${CMake_SOURCE_DIR}/Tests/Jump"
  1563. "${CMake_BINARY_DIR}/Tests/Jump/NoLibOut"
  1564. --build-exe-dir "${CMake_BINARY_DIR}/Tests/Jump/NoLibOut/Executable"
  1565. --build-run-dir "${CMake_BINARY_DIR}/Tests/Jump/NoLibOut/Executable"
  1566. --build-project Jump
  1567. ${build_generator_args}
  1568. --test-command jumpExecutable
  1569. )
  1570. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Jump")
  1571. add_test(Plugin ${CMAKE_CTEST_COMMAND}
  1572. --build-and-test
  1573. "${CMake_SOURCE_DIR}/Tests/Plugin"
  1574. "${CMake_BINARY_DIR}/Tests/Plugin"
  1575. ${build_generator_args}
  1576. --build-project Plugin
  1577. --build-two-config
  1578. --test-command bin/example)
  1579. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Plugin")
  1580. if(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG)
  1581. ADD_TEST_MACRO(RuntimePath RuntimePath)
  1582. endif()
  1583. endif()
  1584. if(APPLE AND "${DARWIN_MAJOR_VERSION}" GREATER 9)
  1585. add_test(MacRuntimePath ${CMAKE_CTEST_COMMAND}
  1586. --build-and-test
  1587. "${CMake_SOURCE_DIR}/Tests/MacRuntimePath"
  1588. "${CMake_BINARY_DIR}/Tests/MacRuntimePath"
  1589. ${build_generator_args}
  1590. --build-project MacRuntimePath
  1591. --build-options
  1592. -DCMake_TEST_NESTED_MAKE_PROGRAM:FILEPATH=${CMake_TEST_EXPLICIT_MAKE_PROGRAM}
  1593. )
  1594. endif()
  1595. if(CMake_TEST_XCODE_VERSION AND NOT CMake_TEST_XCODE_VERSION VERSION_LESS 5
  1596. AND OSX_VERSION MATCHES "^([0-9]+\\.[0-9]+)")
  1597. set(XCTest_CTEST_OPTIONS --build-config $<CONFIGURATION>)
  1598. set(XCTest_BUILD_OPTIONS -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_MATCH_1} -DCMAKE_OSX_SYSROOT=macosx)
  1599. ADD_TEST_MACRO(XCTest ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> -V)
  1600. endif()
  1601. add_test(linkorder1 ${CMAKE_CTEST_COMMAND}
  1602. --build-and-test
  1603. "${CMake_SOURCE_DIR}/Tests/LinkLineOrder"
  1604. "${CMake_BINARY_DIR}/Tests/LinkLineOrder"
  1605. ${build_generator_args}
  1606. --build-project LinkLineOrder
  1607. --test-command Exec1
  1608. )
  1609. add_test(linkorder2 ${CMAKE_CTEST_COMMAND}
  1610. --build-and-test
  1611. "${CMake_SOURCE_DIR}/Tests/LinkLineOrder"
  1612. "${CMake_BINARY_DIR}/Tests/LinkLineOrder"
  1613. ${build_generator_args}
  1614. --build-project LinkLineOrder
  1615. --test-command Exec2
  1616. )
  1617. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/LinkLineOrder")
  1618. set_tests_properties ( qtwrapping PROPERTIES DEPENDS wrapping)
  1619. set_tests_properties ( testdriver1 PROPERTIES DEPENDS qtwrapping)
  1620. set_tests_properties ( testdriver2 PROPERTIES DEPENDS testdriver1)
  1621. set_tests_properties ( testdriver3 PROPERTIES DEPENDS testdriver2)
  1622. set_tests_properties ( linkorder2 PROPERTIES DEPENDS linkorder1)
  1623. # Test static linking on toolchains known to support it.
  1624. if(CMAKE_C_COMPILER_ID STREQUAL "GNU"
  1625. AND NOT APPLE AND NOT WIN32 AND NOT CYGWIN
  1626. AND EXISTS "/usr/lib/libm.a")
  1627. add_test(LinkStatic ${CMAKE_CTEST_COMMAND}
  1628. --build-and-test
  1629. "${CMake_SOURCE_DIR}/Tests/LinkStatic"
  1630. "${CMake_BINARY_DIR}/Tests/LinkStatic"
  1631. ${build_generator_args}
  1632. --build-project LinkStatic
  1633. --build-options
  1634. -DMATH_LIBRARY:FILEPATH=/usr/lib/libm.a
  1635. --test-command LinkStatic
  1636. )
  1637. endif()
  1638. if(MAKE_SUPPORTS_SPACES AND NOT CMAKE_GENERATOR STREQUAL "Xcode")
  1639. add_test(SubDirSpaces ${CMAKE_CTEST_COMMAND}
  1640. --build-and-test
  1641. "${CMake_SOURCE_DIR}/Tests/SubDirSpaces"
  1642. "${CMake_BINARY_DIR}/Tests/SubDirSpaces"
  1643. --build-exe-dir
  1644. "${CMake_BINARY_DIR}/Tests/SubDirSpaces/Executable Sources"
  1645. ${build_generator_args}
  1646. --build-project SUBDIR
  1647. --test-command test
  1648. "${CMake_BINARY_DIR}/Tests/SubDirSpaces/ShouldBeHere"
  1649. "${CMake_BINARY_DIR}/Tests/SubDirSpaces/testfromsubdir.obj"
  1650. )
  1651. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/SubDirSpaces")
  1652. endif ()
  1653. if (WIN32)
  1654. add_test(SubDir ${CMAKE_CTEST_COMMAND}
  1655. --build-and-test
  1656. "${CMake_SOURCE_DIR}/Tests/SubDir"
  1657. "${CMake_BINARY_DIR}/Tests/SubDir"
  1658. --build-exe-dir "${CMake_BINARY_DIR}/Tests/SubDir/Executable"
  1659. ${build_generator_args}
  1660. --build-project SUBDIR
  1661. --test-command test
  1662. "${CMake_BINARY_DIR}/Tests/SubDir/ShouldBeHere"
  1663. "${CMake_BINARY_DIR}/Tests/SubDir/testfromsubdir.obj"
  1664. )
  1665. else ()
  1666. add_test(SubDir ${CMAKE_CTEST_COMMAND}
  1667. --build-and-test
  1668. "${CMake_SOURCE_DIR}/Tests/SubDir"
  1669. "${CMake_BINARY_DIR}/Tests/SubDir"
  1670. --build-exe-dir "${CMake_BINARY_DIR}/Tests/SubDir/Executable"
  1671. ${build_generator_args}
  1672. --build-project SUBDIR
  1673. --test-command test
  1674. "${CMake_BINARY_DIR}/Tests/SubDir/ShouldBeHere"
  1675. "${CMake_BINARY_DIR}/Tests/SubDir/testfromsubdir.o"
  1676. )
  1677. endif ()
  1678. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/SubDir")
  1679. if(MSVC OR (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_SIMULATE_ID STREQUAL "MSVC"))
  1680. ADD_TEST_MACRO(PDBDirectoryAndName myexe)
  1681. if(NOT CMAKE_C_COMPILER_ID STREQUAL "Clang" OR NOT "x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
  1682. ADD_TEST_MACRO(ForceInclude foo)
  1683. endif()
  1684. if(NOT CMAKE_C_COMPILER_ID STREQUAL "Clang")
  1685. ADD_TEST_MACRO(PrecompiledHeader foo)
  1686. endif()
  1687. set(MSVCRuntimeLibrary_BUILD_OPTIONS -DCMake_TEST_CUDA=${CMake_TEST_CUDA})
  1688. ADD_TEST_MACRO(MSVCRuntimeLibrary)
  1689. if(CMAKE_Fortran_COMPILER)
  1690. ADD_TEST_MACRO(MSVCRuntimeLibrary.Fortran)
  1691. endif()
  1692. endif()
  1693. if(MSVC OR
  1694. "${CMAKE_GENERATOR}" MATCHES "(MSYS|MinGW) Makefiles")
  1695. ADD_TEST_MACRO(ModuleDefinition example_exe)
  1696. endif()
  1697. ADD_TEST_MACRO(CheckCompilerRelatedVariables CheckCompilerRelatedVariables)
  1698. if("${CMAKE_GENERATOR}" MATCHES "Makefile" OR
  1699. "${CMAKE_GENERATOR}" MATCHES "Ninja")
  1700. add_test(MakeClean ${CMAKE_CTEST_COMMAND}
  1701. --build-and-test
  1702. "${CMake_SOURCE_DIR}/Tests/MakeClean"
  1703. "${CMake_BINARY_DIR}/Tests/MakeClean"
  1704. ${build_generator_args}
  1705. --build-project MakeClean
  1706. --build-exe-dir "${CMake_BINARY_DIR}/MakeClean"
  1707. --test-command check_clean
  1708. )
  1709. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/MakeClean")
  1710. endif()
  1711. if(NOT DEFINED CTEST_RUN_MFC)
  1712. set(CTEST_RUN_MFC OFF)
  1713. if(MSVC)
  1714. set(CTEST_RUN_MFC ON)
  1715. # Look for evidence that this is a VCExpress build. If so, avoid
  1716. # the MFC test by default.
  1717. string(TOLOWER "${CMAKE_MAKE_PROGRAM}" mkprog)
  1718. if(mkprog MATCHES "vcexpress")
  1719. message(STATUS
  1720. "CMAKE_MAKE_PROGRAM indicates vcexpress, avoiding MFC test")
  1721. set(CTEST_RUN_MFC OFF)
  1722. endif()
  1723. # Since MSBuild might also be the "makeprogram" for a VCExpress
  1724. # build tree, use one more heuristic, too. The string representing
  1725. # the .vcproj file type contains "VCExpress" on machines where an
  1726. # express edition of VS was installed last:
  1727. if(CTEST_RUN_MFC)
  1728. execute_process(COMMAND cmd /c assoc .vcproj
  1729. OUTPUT_STRIP_TRAILING_WHITESPACE
  1730. OUTPUT_VARIABLE ov)
  1731. if(ov MATCHES "VCExpress")
  1732. message(STATUS
  1733. ".vcproj file association indicates VCExpress, avoiding MFC test")
  1734. set(CTEST_RUN_MFC OFF)
  1735. elseif( NOT ov )
  1736. message(STATUS
  1737. ".vcproj has no file association, avoiding MFC test")
  1738. set(CTEST_RUN_MFC OFF)
  1739. endif()
  1740. endif()
  1741. # For the Watcom WMake generator, avoid the MFC test by default.
  1742. if(CTEST_RUN_MFC)
  1743. if("${CMAKE_GENERATOR}" MATCHES "WMake")
  1744. message(STATUS
  1745. "using the Watcom WMake generator, avoiding MFC test")
  1746. set(CTEST_RUN_MFC OFF)
  1747. endif()
  1748. endif()
  1749. # Last resort, after quick checks are done. Do a try_compile, and avoid
  1750. # the MFC test if the simplest possible MFC app cannot be compiled.
  1751. if(CTEST_RUN_MFC AND NOT DEFINED HAVE_MFC)
  1752. configure_file(
  1753. ${CMAKE_CURRENT_SOURCE_DIR}/MFC/try_compile/CMakeLists.txt
  1754. ${CMAKE_CURRENT_BINARY_DIR}/MFC/try_compile/CMakeLists.txt
  1755. COPYONLY
  1756. )
  1757. configure_file(
  1758. ${CMAKE_CURRENT_SOURCE_DIR}/MFC/mfc1/stdafx.cpp
  1759. ${CMAKE_CURRENT_BINARY_DIR}/MFC/try_compile/stdafx.cpp
  1760. COPYONLY
  1761. )
  1762. configure_file(
  1763. ${CMAKE_CURRENT_SOURCE_DIR}/MFC/mfc1/stdafx.h
  1764. ${CMAKE_CURRENT_BINARY_DIR}/MFC/try_compile/stdafx.h
  1765. COPYONLY
  1766. )
  1767. message(STATUS "Looking for MFC")
  1768. try_compile(HAVE_MFC
  1769. ${CMAKE_CURRENT_BINARY_DIR}/MFC/try_compile/build
  1770. ${CMAKE_CURRENT_BINARY_DIR}/MFC/try_compile
  1771. try_compile_mfc
  1772. OUTPUT_VARIABLE HAVE_MFC_OUTPUT)
  1773. if(HAVE_MFC)
  1774. message(STATUS "Looking for MFC - found")
  1775. set(HAVE_MFC 1 CACHE INTERNAL "Have MFC")
  1776. file(APPEND
  1777. ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
  1778. "Determining if MFC exists passed with the following output:\n"
  1779. "${HAVE_MFC_OUTPUT}\n\n")
  1780. else()
  1781. message(STATUS "Looking for MFC - not found")
  1782. set(HAVE_MFC "" CACHE INTERNAL "Have MFC")
  1783. file(APPEND
  1784. ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
  1785. "Determining if MFC exists failed with the following output:\n"
  1786. "${HAVE_MFC_OUTPUT}\n\n")
  1787. endif()
  1788. endif()
  1789. if(CTEST_RUN_MFC AND NOT HAVE_MFC)
  1790. message(STATUS
  1791. "cannot compile simplest ever MFC app, avoiding MFC test")
  1792. set(CTEST_RUN_MFC OFF)
  1793. endif()
  1794. endif()
  1795. endif()
  1796. if(CTEST_RUN_MFC)
  1797. add_test(MFC ${CMAKE_CTEST_COMMAND}
  1798. --build-and-test
  1799. "${CMake_SOURCE_DIR}/Tests/MFC"
  1800. "${CMake_BINARY_DIR}/Tests/MFC"
  1801. --build-two-config
  1802. ${build_generator_args}
  1803. --build-project mfc_driver
  1804. --test-command ${CMAKE_CTEST_COMMAND}
  1805. -C \${CTEST_CONFIGURATION_TYPE} -VV)
  1806. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/MFC")
  1807. endif()
  1808. if(MSVC AND NOT MSVC_VERSION LESS 1310
  1809. AND (NOT CMAKE_GENERATOR MATCHES "Visual Studio 9 "
  1810. OR CMAKE_SIZEOF_VOID_P EQUAL 4)
  1811. )
  1812. ADD_TEST_MACRO(VSMASM VSMASM)
  1813. endif()
  1814. if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
  1815. if(NOT MSVC60)
  1816. ADD_TEST_MACRO(SBCS SBCS)
  1817. endif()
  1818. if(NOT "${CMAKE_GENERATOR}" MATCHES "Visual Studio 9 "
  1819. AND NOT CMAKE_GENERATOR_TOOLSET)
  1820. ADD_TEST_MACRO(VSWindowsFormsResx VSWindowsFormsResx)
  1821. endif()
  1822. add_test(VSExternalInclude ${CMAKE_CTEST_COMMAND}
  1823. --build-and-test
  1824. "${CMake_SOURCE_DIR}/Tests/VSExternalInclude"
  1825. "${CMake_BINARY_DIR}/Tests/VSExternalInclude"
  1826. --build-two-config
  1827. ${build_generator_args}
  1828. --build-project VSExternalInclude
  1829. --test-command VSExternalInclude)
  1830. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/VSExternalInclude")
  1831. add_test(VSMidl ${CMAKE_CTEST_COMMAND}
  1832. --build-and-test
  1833. "${CMake_SOURCE_DIR}/Tests/VSMidl"
  1834. "${CMake_BINARY_DIR}/Tests/VSMidl"
  1835. --build-two-config
  1836. ${build_generator_args}
  1837. --build-project VSMidl
  1838. --test-command VSMidl)
  1839. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/VSMidl")
  1840. if(CMake_TEST_DEVENV)
  1841. # The test (and tested property) works with .sln files, so it's skipped when:
  1842. # * cmake --build is set up to use MSBuild, since the MSBuild invocation does not use the .sln file
  1843. set(_last_test "")
  1844. foreach(config ${CMAKE_CONFIGURATION_TYPES})
  1845. add_test(NAME VSExcludeFromDefaultBuild-${config} COMMAND ${CMAKE_CTEST_COMMAND}
  1846. --build-and-test
  1847. "${CMake_SOURCE_DIR}/Tests/VSExcludeFromDefaultBuild"
  1848. "${CMake_BINARY_DIR}/Tests/VSExcludeFromDefaultBuild"
  1849. --build-config ${config}
  1850. --build-two-config
  1851. --build-generator ${CMAKE_GENERATOR}
  1852. --build-makeprogram ${CMake_TEST_DEVENV}
  1853. --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
  1854. --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
  1855. --build-project VSExcludeFromDefaultBuild
  1856. --build-target install
  1857. --test-command ${CMAKE_COMMAND}
  1858. -D "activeConfig=${config}"
  1859. -D "allConfigs=${CMAKE_CONFIGURATION_TYPES}"
  1860. -D "dir=${CMake_BINARY_DIR}/Tests/VSExcludeFromDefaultBuild"
  1861. -P "${CMake_SOURCE_DIR}/Tests/VSExcludeFromDefaultBuild/ResultTest.cmake")
  1862. if(_last_test)
  1863. set_property(TEST VSExcludeFromDefaultBuild-${config} PROPERTY DEPENDS ${_last_test})
  1864. endif()
  1865. set(_last_test "VSExcludeFromDefaultBuild-${config}")
  1866. endforeach()
  1867. unset(_last_test)
  1868. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/VSExcludeFromDefaultBuild")
  1869. endif()
  1870. if(CMAKE_GENERATOR MATCHES "Visual Studio ([0-5]|[6-9][0-9])")
  1871. # This is Visual Studio 10 or above, so the default build tool is MSBuild.
  1872. add_test(NAME VSProjectInSubdir COMMAND ${CMAKE_CTEST_COMMAND}
  1873. --build-and-test
  1874. "${CMake_SOURCE_DIR}/Tests/VSProjectInSubdir"
  1875. "${CMake_BINARY_DIR}/Tests/VSProjectInSubdir"
  1876. --build-two-config
  1877. --build-generator ${CMAKE_GENERATOR}
  1878. --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
  1879. --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
  1880. --build-project VSProjectInSubdir
  1881. --build-target test)
  1882. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/VSProjectInSubdir")
  1883. endif()
  1884. endif()
  1885. get_filename_component(ntver "[HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion;CurrentVersion]" NAME)
  1886. if(WIN32 AND ntver VERSION_GREATER 6.1) # Windows >= 8.0
  1887. macro(add_test_VSWinStorePhone name generator systemName systemVersion architecture)
  1888. add_test(NAME VSWinStorePhone.${name} COMMAND ${CMAKE_CTEST_COMMAND}
  1889. --build-and-test
  1890. "${CMake_SOURCE_DIR}/Tests/VSWinStorePhone"
  1891. "${CMake_BINARY_DIR}/Tests/VSWinStorePhone/${name}"
  1892. --build-generator "${generator}"
  1893. --build-generator-platform "${architecture}"
  1894. --build-project VSWinStorePhone
  1895. --build-config $<CONFIGURATION>
  1896. --build-options -DCMAKE_SYSTEM_NAME=${systemName}
  1897. -DCMAKE_SYSTEM_VERSION=${systemVersion}
  1898. --test-command
  1899. ${CMAKE_CMAKE_COMMAND} -DAPP_PACKAGE_DIR="${CMake_BINARY_DIR}/Tests/VSWinStorePhone/${name}"
  1900. -P "${CMake_SOURCE_DIR}/Tests/VSWinStorePhone/VerifyAppPackage.cmake"
  1901. )
  1902. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/VSWinStorePhone/${name}")
  1903. endmacro()
  1904. if(vs11 AND ws80)
  1905. add_test_VSWinStorePhone(vs11-store80-X86 "Visual Studio 11 2012" WindowsStore 8.0 Win32)
  1906. add_test_VSWinStorePhone(vs11-store80-ARM "Visual Studio 11 2012" WindowsStore 8.0 ARM)
  1907. add_test_VSWinStorePhone(vs11-store80-X64 "Visual Studio 11 2012" WindowsStore 8.0 x64)
  1908. endif()
  1909. if(vs12 AND ws81)
  1910. add_test_VSWinStorePhone(vs12-store81-X86 "Visual Studio 12 2013" WindowsStore 8.1 Win32)
  1911. add_test_VSWinStorePhone(vs12-store81-ARM "Visual Studio 12 2013" WindowsStore 8.1 ARM)
  1912. add_test_VSWinStorePhone(vs12-store81-X64 "Visual Studio 12 2013" WindowsStore 8.1 x64)
  1913. add_test(NAME VSXaml COMMAND ${CMAKE_CTEST_COMMAND}
  1914. --build-and-test
  1915. "${CMake_SOURCE_DIR}/Tests/VSXaml"
  1916. "${CMake_BINARY_DIR}/Tests/VSXaml"
  1917. --build-generator "Visual Studio 12 2013"
  1918. --build-project VSXaml
  1919. --build-config $<CONFIGURATION>
  1920. --build-options -DCMAKE_SYSTEM_NAME=WindowsStore
  1921. -DCMAKE_SYSTEM_VERSION=8.1
  1922. )
  1923. endif()
  1924. if(CMake_TEST_VSWinStorePhone_VS_2017 AND ws10_0)
  1925. add_test_VSWinStorePhone(vs15-store10_0-X86 "Visual Studio 15 2017" WindowsStore 10.0 Win32)
  1926. add_test_VSWinStorePhone(vs15-store10_0-ARM "Visual Studio 15 2017" WindowsStore 10.0 ARM)
  1927. add_test_VSWinStorePhone(vs15-store10_0-X64 "Visual Studio 15 2017" WindowsStore 10.0 x64)
  1928. add_test_VSWinStorePhone(vs15-store10_0-ARM64 "Visual Studio 15 2017" WindowsStore 10.0 ARM64)
  1929. endif()
  1930. if(vs14 AND ws10_0)
  1931. add_test_VSWinStorePhone(vs14-store10_0-X86 "Visual Studio 14 2015" WindowsStore 10.0 Win32)
  1932. add_test_VSWinStorePhone(vs14-store10_0-ARM "Visual Studio 14 2015" WindowsStore 10.0 ARM)
  1933. add_test_VSWinStorePhone(vs14-store10_0-X64 "Visual Studio 14 2015" WindowsStore 10.0 x64)
  1934. endif()
  1935. if(vs11 AND wp80)
  1936. add_test_VSWinStorePhone(vs11-phone80-X86 "Visual Studio 11 2012" WindowsPhone 8.0 Win32)
  1937. add_test_VSWinStorePhone(vs11-phone80-ARM "Visual Studio 11 2012" WindowsPhone 8.0 ARM)
  1938. endif()
  1939. if(vs12 AND wp81)
  1940. add_test_VSWinStorePhone(vs12-phone81-X86 "Visual Studio 12 2013" WindowsPhone 8.1 Win32)
  1941. add_test_VSWinStorePhone(vs12-phone81-ARM "Visual Studio 12 2013" WindowsPhone 8.1 ARM)
  1942. endif()
  1943. endif()
  1944. if(WIN32 AND wince)
  1945. macro(add_test_VSWinCE name generator systemName systemVersion generatorPlatform)
  1946. # TODO: Fix the tutorial to make it work in cross compile
  1947. # currently the MakeTable is build for target and can not be used on the host
  1948. # This happens in part 5 so we build only through part 4 of the tutorial.
  1949. foreach(STP RANGE 2 4)
  1950. add_test(NAME "TutorialStep${STP}.${name}" COMMAND ${CMAKE_CTEST_COMMAND}
  1951. --build-and-test
  1952. "${CMake_SOURCE_DIR}/Help/guide/tutorial/Step${STP}"
  1953. "${CMake_BINARY_DIR}/Tests/Tutorial/Step${STP}_${name}"
  1954. --build-generator "${generator}"
  1955. --build-project Tutorial
  1956. --build-config $<CONFIGURATION>
  1957. --build-options -DCMAKE_SYSTEM_NAME=${systemName}
  1958. -DCMAKE_SYSTEM_VERSION=${systemVersion}
  1959. -DCMAKE_GENERATOR_PLATFORM=${generatorPlatform})
  1960. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Tutorial/Step${STP}_${name}")
  1961. endforeach()
  1962. endmacro()
  1963. if(vs11)
  1964. add_test_VSWinCE(vs11-ce80-ARM "Visual Studio 11 2012" WindowsCE 8.0 ${wince_sdk})
  1965. endif()
  1966. if(vs12)
  1967. add_test_VSWinCE(vs12-ce80-ARM "Visual Studio 12 2013" WindowsCE 8.0 ${wince_sdk})
  1968. endif()
  1969. endif()
  1970. if(CMAKE_GENERATOR MATCHES "Visual Studio ([^9]|9[0-9])" AND nasm)
  1971. ADD_TEST_MACRO(VSNASM VSNASM)
  1972. endif()
  1973. if (CMake_TEST_GreenHillsMULTI)
  1974. macro(add_test_GhsMulti test_name test_dir bin_sub_dir build_opts)
  1975. separate_arguments(_ghs_build_opts UNIX_COMMAND ${build_opts})
  1976. separate_arguments(_ghs_toolset_extra UNIX_COMMAND ${ghs_toolset_extra})
  1977. if(${ARGC} GREATER 4)
  1978. set(_ghs_test_command --test-command ${ARGN})
  1979. endif()
  1980. if(ghs_config_name STREQUAL "__default__")
  1981. set(_ghs_test_name "${test_name}")
  1982. else()
  1983. set(_ghs_test_name "${ghs_config_name}.${test_name}")
  1984. endif()
  1985. add_test(NAME GhsMulti.${_ghs_test_name}
  1986. COMMAND ${CMAKE_CTEST_COMMAND}
  1987. --build-and-test
  1988. "${CMake_SOURCE_DIR}/Tests/GhsMulti/${test_dir}"
  1989. "${CMake_BINARY_DIR}/Tests/GhsMulti/${ghs_config_name}/${test_dir}/${bin_sub_dir}"
  1990. --build-generator "Green Hills MULTI"
  1991. --build-project test
  1992. --build-config $<CONFIGURATION>
  1993. --force-new-ctest-process
  1994. --build-options ${ghs_target_arch} ${ghs_toolset_name} ${ghs_toolset_root} ${ghs_target_platform}
  1995. ${ghs_os_root} ${ghs_os_dir} ${ghs_bsp_name} ${_ghs_build_opts} ${_ghs_toolset_extra}
  1996. ${_ghs_test_command}
  1997. )
  1998. unset(_ghs_build_opts)
  1999. unset(_ghs_toolset_extra)
  2000. unset(_ghs_test_command)
  2001. unset(_ghs_test_name)
  2002. endmacro()
  2003. macro(add_test_GhsMulti_rename_install test_name)
  2004. add_test_GhsMulti( ${test_name} GhsMultiRenameInstall ${test_name}
  2005. "-DCMAKE_INSTALL_PREFIX=. -DRUN_TEST=${test_name}" ${CMAKE_CMAKE_COMMAND} --build . --target install)
  2006. endmacro()
  2007. #unset ghs config variables
  2008. unset(ghs_config_name)
  2009. unset(ghs_target_arch)
  2010. unset(ghs_toolset_root)
  2011. unset(ghs_toolset_name)
  2012. unset(ghs_os_root)
  2013. unset(ghs_os_dir)
  2014. unset(ghs_target_platform)
  2015. unset(ghs_bsp_name)
  2016. unset(ghs_toolset_extra)
  2017. if(NOT CMake_TEST_GreenHillsMULTI_config)
  2018. #if list of config settings not defined then just run once as default
  2019. set(CMake_TEST_GreenHillsMULTI_config "__default__")
  2020. endif()
  2021. foreach(ghs_file IN LISTS CMake_TEST_GreenHillsMULTI_config)
  2022. # source GHS tools config file
  2023. if(NOT ghs_file STREQUAL "__default__")
  2024. if(IS_ABSOLUTE ${ghs_file})
  2025. include(${ghs_file})
  2026. else()
  2027. include(${CMAKE_BINARY_DIR}/${ghs_file})
  2028. endif()
  2029. endif()
  2030. if(NOT ghs_config_name)
  2031. set(ghs_config_name "__default__")
  2032. endif()
  2033. # test integrity build
  2034. if (NOT ghs_skip_integrity AND (NOT ghs_target_platform OR ghs_target_platform MATCHES "integrity"))
  2035. add_test_GhsMulti(integrityDDInt GhsMultiIntegrity/GhsMultiIntegrityDDInt "" "")
  2036. add_test_GhsMulti(integrityMonolith GhsMultiIntegrity/GhsMultiIntegrityMonolith "" "")
  2037. add_test_GhsMulti(integrityDD GhsMultiIntegrity/GhsMultiIntegrityDD "" "")
  2038. endif()
  2039. add_test_GhsMulti(duplicate_source_filenames GhsMultiDuplicateSourceFilenames "" "")
  2040. add_test_GhsMulti_rename_install(SINGLE_EXEC)
  2041. add_test_GhsMulti_rename_install(SINGLE_EXEC_RENAMED)
  2042. add_test_GhsMulti_rename_install(EXEC_AND_LIB)
  2043. add_test_GhsMulti(multiple_source_groups GhsMultiSrcGroups Default "")
  2044. add_test_GhsMulti(multiple_source_groups_folders GhsMultiSrcGroups PropFolders "-DTEST_PROP=ON")
  2045. add_test_GhsMulti(multiple_source_groups_all_folders GhsMultiSrcGroups AllFolders "-DCMAKE_GHS_NO_SOURCE_GROUP_FILE=ON")
  2046. add_test_GhsMulti(unsupported_targets GhsMultiUnsupportedTargets "" "")
  2047. add_test_GhsMulti(object_library GhsMultiObjectLibrary "" "")
  2048. add_test_GhsMulti(exclude GhsMultiExclude "" ""
  2049. ${CMAKE_CMAKE_COMMAND} -P ${CMake_SOURCE_DIR}/Tests/GhsMulti/GhsMultiExclude/verify.cmake)
  2050. add_test_GhsMulti(interface GhsMultiInterface "" "")
  2051. add_test_GhsMulti(transitive_link_test GhsMultiLinkTest TransitiveLink "-DRUN_TEST=NO_FLAGS")
  2052. add_test_GhsMulti(flags_link_test GhsMultiLinkTest FlagsCheck "-DRUN_TEST=CHECK_FLAGS")
  2053. add_test_GhsMulti(sub_link_test GhsMultiLinkTestSub "" "")
  2054. add_test_GhsMulti(multiple_projects GhsMultiMultipleProjects "" ""
  2055. ${CMAKE_CMAKE_COMMAND} -P ${CMake_SOURCE_DIR}/Tests/GhsMulti/GhsMultiMultipleProjects/verify.cmake)
  2056. add_test_GhsMulti(compiler_options_none GhsMultiCompilerOptions None "-DRUN_TEST=RELEASE_FLAGS -DRUN_TEST_BUILD_TYPE=\"\"")
  2057. add_test_GhsMulti(compiler_options_kernel GhsMultiCompilerOptions Kernel "-DRUN_TEST=KERNEL_FLAGS -DRUN_TEST_BUILD_TYPE=DEBUG")
  2058. add_test_GhsMulti(try_compile_copy GhsMultiCopyFile "" "")
  2059. add_test_GhsMulti(ghs_platform GhsMultiPlatform "" "")
  2060. add_test_GhsMulti(custom_target GhsMultiCustomTarget "" "")
  2061. add_test_GhsMulti(dep_order GhsMultiDepOrder "" "")
  2062. add_test_GhsMulti(external_project GhsMultiExternalProject "" "")
  2063. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/GhsMulti/${ghs_config_name}")
  2064. #unset ghs config variables
  2065. unset(ghs_config_name)
  2066. unset(ghs_target_arch)
  2067. unset(ghs_toolset_root)
  2068. unset(ghs_toolset_name)
  2069. unset(ghs_os_root)
  2070. unset(ghs_os_dir)
  2071. unset(ghs_target_platform)
  2072. unset(ghs_bsp_name)
  2073. unset(ghs_toolset_extra)
  2074. endforeach()
  2075. endif()
  2076. if(tegra AND NOT "${CMake_SOURCE_DIR};${CMake_BINARY_DIR}" MATCHES " ")
  2077. macro(add_test_VSNsightTegra name generator)
  2078. add_test(NAME VSNsightTegra.${name} COMMAND ${CMAKE_CTEST_COMMAND}
  2079. --build-and-test
  2080. "${CMake_SOURCE_DIR}/Tests/VSNsightTegra"
  2081. "${CMake_BINARY_DIR}/Tests/VSNsightTegra/${name}"
  2082. --build-generator "${generator}"
  2083. --build-project VSNsightTegra
  2084. --build-config $<CONFIGURATION>
  2085. --build-options -DCMAKE_SYSTEM_NAME=Android
  2086. )
  2087. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/VSNsightTegra/${name}")
  2088. endmacro()
  2089. if(vs10)
  2090. add_test_VSNsightTegra(vs10 "Visual Studio 10 2010")
  2091. endif()
  2092. if(vs11)
  2093. add_test_VSNsightTegra(vs11 "Visual Studio 11 2012")
  2094. endif()
  2095. if(vs12)
  2096. add_test_VSNsightTegra(vs12 "Visual Studio 12 2013")
  2097. endif()
  2098. if(vs14)
  2099. add_test_VSNsightTegra(vs14 "Visual Studio 14 2015")
  2100. endif()
  2101. endif()
  2102. if (APPLE)
  2103. if (CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
  2104. set(BundleTestInstallDir
  2105. "${CMake_BINARY_DIR}/Tests/BundleTest/InstallDirectory")
  2106. add_test(BundleTest ${CMAKE_CTEST_COMMAND}
  2107. --build-and-test
  2108. "${CMake_SOURCE_DIR}/Tests/BundleTest"
  2109. "${CMake_BINARY_DIR}/Tests/BundleTest"
  2110. --build-two-config
  2111. ${build_generator_args}
  2112. --build-project BundleTest
  2113. --build-target install
  2114. # --build-target package
  2115. --build-options
  2116. "-DCMAKE_INSTALL_PREFIX:PATH=${BundleTestInstallDir}"
  2117. "-DCMake_SOURCE_DIR:PATH=${CMake_SOURCE_DIR}"
  2118. --test-command
  2119. ${BundleTestInstallDir}/Applications/SecondBundleExe.app/Contents/MacOS/SecondBundleExe)
  2120. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/BundleTest")
  2121. add_test(NAME CFBundleTest COMMAND ${CMAKE_CTEST_COMMAND}
  2122. --build-and-test
  2123. "${CMake_SOURCE_DIR}/Tests/CFBundleTest"
  2124. "${CMake_BINARY_DIR}/Tests/CFBundleTest"
  2125. --build-two-config
  2126. ${build_generator_args}
  2127. --build-project CFBundleTest
  2128. --build-config $<CONFIGURATION>
  2129. --test-command
  2130. ${CMAKE_CMAKE_COMMAND} -DCTEST_CONFIGURATION_TYPE=$<CONFIGURATION>
  2131. -Ddir=${CMake_BINARY_DIR}/Tests/CFBundleTest
  2132. -Dgen=${CMAKE_GENERATOR}
  2133. -P ${CMake_SOURCE_DIR}/Tests/CFBundleTest/VerifyResult.cmake)
  2134. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CFBundleTest")
  2135. ADD_TEST_MACRO(ObjC++ ObjC++)
  2136. endif ()
  2137. endif ()
  2138. if(APPLE AND CTEST_TEST_CPACK)
  2139. add_test(BundleGeneratorTest ${CMAKE_CTEST_COMMAND}
  2140. --build-and-test
  2141. "${CMake_SOURCE_DIR}/Tests/BundleGeneratorTest"
  2142. "${CMake_BINARY_DIR}/Tests/BundleGeneratorTest"
  2143. --build-two-config
  2144. ${build_generator_args}
  2145. --build-project BundleGeneratorTest
  2146. --build-target package
  2147. --build-options
  2148. "-DCMAKE_INSTALL_PREFIX:PATH=${CMake_BINARY_DIR}/Tests/BundleGeneratorTest/InstallDirectory"
  2149. )
  2150. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/BundleGeneratorTest")
  2151. endif()
  2152. add_test(WarnUnusedUnusedViaSet ${CMAKE_CTEST_COMMAND}
  2153. --build-and-test
  2154. "${CMake_SOURCE_DIR}/Tests/VariableUnusedViaSet"
  2155. "${CMake_BINARY_DIR}/Tests/WarnUnusedUnusedViaSet"
  2156. ${build_generator_args}
  2157. --build-noclean
  2158. --build-project WarnUnusedUnusedViaSet
  2159. --build-options
  2160. "--warn-unused-vars")
  2161. set_tests_properties(WarnUnusedUnusedViaSet PROPERTIES
  2162. PASS_REGULAR_EXPRESSION "unused variable \\(changing definition\\) 'UNUSED_VARIABLE'")
  2163. set_tests_properties(WarnUnusedUnusedViaSet PROPERTIES
  2164. FAIL_REGULAR_EXPRESSION "unused variable \\(unsetting\\) 'UNUSED_VARIABLE'")
  2165. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/WarnUnusedUnusedViaSet")
  2166. add_test(WarnUnusedUnusedViaUnset ${CMAKE_CTEST_COMMAND}
  2167. --build-and-test
  2168. "${CMake_SOURCE_DIR}/Tests/VariableUnusedViaUnset"
  2169. "${CMake_BINARY_DIR}/Tests/WarnUnusedUnusedViaUnset"
  2170. ${build_generator_args}
  2171. --build-noclean
  2172. --build-project WarnUnusedUnusedViaUnset
  2173. --build-options
  2174. "--warn-unused-vars")
  2175. set_tests_properties(WarnUnusedUnusedViaUnset PROPERTIES
  2176. PASS_REGULAR_EXPRESSION "CMake Warning \\(dev\\) at CMakeLists.txt:7 \\(set\\):")
  2177. set_tests_properties(WarnUnusedUnusedViaUnset PROPERTIES
  2178. FAIL_REGULAR_EXPRESSION "CMakeLists.txt:5 \\(set\\):")
  2179. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/WarnUnusedUnusedViaUnset")
  2180. add_test(WarnUnusedCliUnused ${CMAKE_CTEST_COMMAND}
  2181. --build-and-test
  2182. "${CMake_SOURCE_DIR}/Tests/WarnUnusedCliUnused"
  2183. "${CMake_BINARY_DIR}/Tests/WarnUnusedCliUnused"
  2184. ${build_generator_args}
  2185. --build-project WarnUnusedCliUnused
  2186. --build-options
  2187. "-DUNUSED_CLI_VARIABLE=Unused")
  2188. set_tests_properties(WarnUnusedCliUnused PROPERTIES
  2189. PASS_REGULAR_EXPRESSION "CMake Warning:.*Manually-specified variables were not used by the project:.* UNUSED_CLI_VARIABLE")
  2190. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/WarnUnusedCliUnused")
  2191. add_test(WarnUnusedCliUsed ${CMAKE_CTEST_COMMAND}
  2192. --build-and-test
  2193. "${CMake_SOURCE_DIR}/Tests/VariableUsage"
  2194. "${CMake_BINARY_DIR}/Tests/WarnUnusedCliUsed"
  2195. ${build_generator_args}
  2196. --build-noclean
  2197. --build-project WarnUnusedCliUsed
  2198. --build-options
  2199. "-DUSED_VARIABLE=Usage proven")
  2200. set_tests_properties(WarnUnusedCliUsed PROPERTIES
  2201. PASS_REGULAR_EXPRESSION "Usage proven")
  2202. set_tests_properties(WarnUnusedCliUsed PROPERTIES
  2203. FAIL_REGULAR_EXPRESSION "CMake Warning: The variable, 'USED_VARIABLE'")
  2204. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/WarnUnusedCliUsed")
  2205. add_test(WarnUninitialized ${CMAKE_CTEST_COMMAND}
  2206. --build-and-test
  2207. "${CMake_SOURCE_DIR}/Tests/VariableUsage"
  2208. "${CMake_BINARY_DIR}/Tests/WarnUninitialized"
  2209. ${build_generator_args}
  2210. --build-noclean
  2211. --build-project WarnUninitialized
  2212. --build-options
  2213. "--warn-uninitialized")
  2214. set_tests_properties(WarnUninitialized PROPERTIES
  2215. PASS_REGULAR_EXPRESSION "uninitialized variable 'USED_VARIABLE'")
  2216. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/WarnUninitialized")
  2217. add_test(TestsWorkingDirectory
  2218. ${CMAKE_CTEST_COMMAND} -C \${CTEST_CONFIGURATION_TYPE}
  2219. --build-and-test
  2220. "${CMake_SOURCE_DIR}/Tests/TestsWorkingDirectory"
  2221. "${CMake_BINARY_DIR}/Tests/TestsWorkingDirectory"
  2222. ${build_generator_args}
  2223. --build-project TestsWorkingDirectoryProj
  2224. --build-exe-dir "${CMake_BINARY_DIR}/Tests/TestsWorkingDirectory"
  2225. --force-new-ctest-process
  2226. --test-command ${CMAKE_CTEST_COMMAND} -V -C \${CTEST_CONFIGURATION_TYPE}
  2227. )
  2228. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/TestsWorkingDirectory")
  2229. # Make sure CTest can handle a test with no newline in output.
  2230. add_test(CTest.NoNewline
  2231. ${CMAKE_CMAKE_COMMAND} -E echo_append "This line has no newline!")
  2232. # A simple test for ctest in script mode
  2233. configure_file("${CMake_SOURCE_DIR}/Tests/CTestScriptMode/CTestTestScriptMode.cmake.in"
  2234. "${CMake_BINARY_DIR}/Tests/CTestScriptMode/CTestTestScriptMode.cmake" @ONLY)
  2235. # add_test(CTest.ScriptMode ${CMAKE_CTEST_COMMAND}
  2236. # -S "${CMake_BINARY_DIR}/Tests/CTestScriptMode/CTestTestScriptMode.cmake"
  2237. # )
  2238. # A test for ctest_build() with targets in subdirectories
  2239. set(ctest_configure_options)
  2240. if(CMAKE_GENERATOR_PLATFORM)
  2241. list(APPEND ctest_configure_options -A ${CMAKE_GENERATOR_PLATFORM})
  2242. endif()
  2243. if(CMAKE_GENERATOR_TOOLSET)
  2244. list(APPEND ctest_configure_options -T ${CMAKE_GENERATOR_TOOLSET})
  2245. endif()
  2246. if(CMake_TEST_EXPLICIT_MAKE_PROGRAM)
  2247. list(APPEND ctest_configure_options -DCMAKE_MAKE_PROGRAM:FILEPATH=${CMake_TEST_EXPLICIT_MAKE_PROGRAM})
  2248. endif()
  2249. configure_file("${CMake_SOURCE_DIR}/Tests/CTestBuildCommandProjectInSubdir/CTestBuildCommandProjectInSubdir.cmake.in"
  2250. "${CMake_BINARY_DIR}/Tests/CTestBuildCommandProjectInSubdir/CTestBuildCommandProjectInSubdir.cmake" @ONLY)
  2251. unset(ctest_configure_options)
  2252. add_test(CTest.BuildCommand.ProjectInSubdir
  2253. ${CMAKE_CTEST_COMMAND} -S "${CMake_BINARY_DIR}/Tests/CTestBuildCommandProjectInSubdir/CTestBuildCommandProjectInSubdir.cmake")
  2254. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CTestBuildCommandProjectInSubdir/Nested")
  2255. set(CTEST_TEST_UPDATE 1)
  2256. if(CTEST_TEST_UPDATE)
  2257. # Test CTest Update with Subversion
  2258. find_package(Subversion QUIET)
  2259. if(Subversion_FOUND)
  2260. get_filename_component(_Subversion_BIN_DIR
  2261. ${Subversion_SVN_EXECUTABLE} PATH)
  2262. find_program(Subversion_SVNADMIN_EXECUTABLE svnadmin
  2263. HINTS ${_Subversion_BIN_DIR}
  2264. )
  2265. mark_as_advanced(Subversion_SVNADMIN_EXECUTABLE)
  2266. if(NOT Subversion_SVNADMIN_EXECUTABLE)
  2267. set(Subversion_FOUND FALSE)
  2268. endif()
  2269. endif()
  2270. if(Subversion_FOUND)
  2271. set(CTestUpdateSVN_DIR "CTest UpdateSVN")
  2272. configure_file("${CMake_SOURCE_DIR}/Tests/CTestUpdateSVN.cmake.in"
  2273. "${CMake_BINARY_DIR}/Tests/CTestUpdateSVN.cmake" @ONLY)
  2274. add_test(CTest.UpdateSVN ${CMAKE_CMAKE_COMMAND}
  2275. -P "${CMake_BINARY_DIR}/Tests/CTestUpdateSVN.cmake"
  2276. )
  2277. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateSVN_DIR}")
  2278. endif()
  2279. # Test CTest Update with CVS
  2280. if(EXISTS ${CMAKE_ROOT}/Modules/FindCVS.cmake)
  2281. find_package(CVS QUIET)
  2282. else()
  2283. find_program(CVS_EXECUTABLE NAMES cvs)
  2284. set(CVS_FOUND ${CVS_EXECUTABLE})
  2285. endif()
  2286. set(CTEST_TEST_UPDATE_CVS ${CVS_FOUND})
  2287. if(CTEST_TEST_UPDATE_CVS AND NOT UNIX)
  2288. if("${CVS_EXECUTABLE}" MATCHES "cygwin")
  2289. message(STATUS "No CTest.UpdateCVS test with cygwin cvs.exe outside cygwin!")
  2290. set(CTEST_TEST_UPDATE_CVS 0)
  2291. endif()
  2292. endif()
  2293. if(CTEST_TEST_UPDATE_CVS)
  2294. set(CTestUpdateCVS_DIR "CTest UpdateCVS")
  2295. configure_file("${CMake_SOURCE_DIR}/Tests/CTestUpdateCVS.cmake.in"
  2296. "${CMake_BINARY_DIR}/Tests/CTestUpdateCVS.cmake" @ONLY)
  2297. add_test(CTest.UpdateCVS ${CMAKE_CMAKE_COMMAND}
  2298. -P "${CMake_BINARY_DIR}/Tests/CTestUpdateCVS.cmake"
  2299. )
  2300. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateCVS_DIR}")
  2301. endif()
  2302. # Test CTest Update with BZR
  2303. find_program(BZR_EXECUTABLE NAMES bzr)
  2304. mark_as_advanced(BZR_EXECUTABLE)
  2305. set(CTEST_TEST_UPDATE_BZR 0)
  2306. if(BZR_EXECUTABLE)
  2307. if(NOT "${BZR_EXECUTABLE}" MATCHES "cygwin" OR UNIX)
  2308. set(CTEST_TEST_UPDATE_BZR 1)
  2309. endif()
  2310. endif()
  2311. if(CTEST_TEST_UPDATE_BZR)
  2312. # Check if xmloutput plugin is there
  2313. execute_process(COMMAND ${BZR_EXECUTABLE} xmlplugins RESULT_VARIABLE xmlplugres
  2314. OUTPUT_QUIET ERROR_QUIET)
  2315. if( NOT ${xmlplugres} )
  2316. set(CTestUpdateBZR_DIR "CTest UpdateBZR")
  2317. configure_file("${CMake_SOURCE_DIR}/Tests/CTestUpdateBZR.cmake.in"
  2318. "${CMake_BINARY_DIR}/Tests/CTestUpdateBZR.cmake" @ONLY)
  2319. add_test(CTest.UpdateBZR ${CMAKE_CMAKE_COMMAND}
  2320. -P "${CMake_BINARY_DIR}/Tests/CTestUpdateBZR.cmake"
  2321. )
  2322. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateBZR_DIR}")
  2323. set(CTestUpdateBZR_DIR "CTest UpdateBZR_CLocale")
  2324. configure_file("${CMake_SOURCE_DIR}/Tests/CTestUpdateBZR.cmake.in"
  2325. "${CMake_BINARY_DIR}/Tests/CTestUpdateBZR_CLocale.cmake" @ONLY)
  2326. add_test(CTest.UpdateBZR.CLocale ${CMAKE_CMAKE_COMMAND}
  2327. -P "${CMake_BINARY_DIR}/Tests/CTestUpdateBZR_CLocale.cmake"
  2328. )
  2329. set_tests_properties(CTest.UpdateBZR.CLocale PROPERTIES ENVIRONMENT LC_ALL=C)
  2330. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateBZR_DIR}")
  2331. endif()
  2332. endif()
  2333. # Test CTest Update with GIT
  2334. find_program(GIT_EXECUTABLE NAMES git)
  2335. mark_as_advanced(GIT_EXECUTABLE)
  2336. set(CTEST_TEST_UPDATE_GIT 0)
  2337. if(GIT_EXECUTABLE)
  2338. if(NOT "${GIT_EXECUTABLE}" MATCHES "cygwin" OR UNIX)
  2339. set(CTEST_TEST_UPDATE_GIT 1)
  2340. endif()
  2341. endif()
  2342. if(CTEST_TEST_UPDATE_GIT)
  2343. set(CTestUpdateGIT_DIR "CTest UpdateGIT")
  2344. configure_file("${CMake_SOURCE_DIR}/Tests/CTestUpdateGIT.cmake.in"
  2345. "${CMake_BINARY_DIR}/Tests/CTestUpdateGIT.cmake" @ONLY)
  2346. add_test(CTest.UpdateGIT ${CMAKE_CMAKE_COMMAND}
  2347. -P "${CMake_BINARY_DIR}/Tests/CTestUpdateGIT.cmake"
  2348. )
  2349. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateGIT_DIR}")
  2350. endif()
  2351. # Test CTest Update with HG
  2352. find_program(HG_EXECUTABLE NAMES hg)
  2353. mark_as_advanced(HG_EXECUTABLE)
  2354. set(CTEST_TEST_UPDATE_HG 0)
  2355. if(HG_EXECUTABLE)
  2356. if(NOT "${HG_EXECUTABLE}" MATCHES "cygwin" OR UNIX)
  2357. set(CTEST_TEST_UPDATE_HG 1)
  2358. endif()
  2359. endif()
  2360. if(CTEST_TEST_UPDATE_HG)
  2361. set(CTestUpdateHG_DIR "CTest UpdateHG")
  2362. configure_file("${CMake_SOURCE_DIR}/Tests/CTestUpdateHG.cmake.in"
  2363. "${CMake_BINARY_DIR}/Tests/CTestUpdateHG.cmake" @ONLY)
  2364. add_test(CTest.UpdateHG ${CMAKE_CMAKE_COMMAND}
  2365. -P "${CMake_BINARY_DIR}/Tests/CTestUpdateHG.cmake"
  2366. )
  2367. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateHG_DIR}")
  2368. endif()
  2369. # Test CTest Update with P4
  2370. find_program(P4_EXECUTABLE NAMES p4)
  2371. find_program(P4D_EXECUTABLE NAMES p4d)
  2372. mark_as_advanced(P4_EXECUTABLE P4D_EXECUTABLE)
  2373. set(CTEST_TEST_UPDATE_P4 0)
  2374. if(P4_EXECUTABLE AND P4D_EXECUTABLE)
  2375. if(NOT "${P4_EXECUTABLE};${P4D_EXECUTABLE}" MATCHES "cygwin" OR UNIX)
  2376. set(CTEST_TEST_UPDATE_P4 1)
  2377. endif()
  2378. endif()
  2379. if(CTEST_TEST_UPDATE_P4)
  2380. set(CTestUpdateP4_DIR "CTest UpdateP4")
  2381. configure_file("${CMake_SOURCE_DIR}/Tests/CTestUpdateP4.cmake.in"
  2382. "${CMake_BINARY_DIR}/Tests/CTestUpdateP4.cmake" @ONLY)
  2383. add_test(CTest.UpdateP4 ${CMAKE_CMAKE_COMMAND}
  2384. -P "${CMake_BINARY_DIR}/Tests/CTestUpdateP4.cmake"
  2385. )
  2386. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateP4_DIR}")
  2387. endif()
  2388. endif()
  2389. configure_file(
  2390. "${CMake_SOURCE_DIR}/Tests/CTestTestFailure/testNoBuild.cmake.in"
  2391. "${CMake_BINARY_DIR}/Tests/CTestTestFailure/testNoBuild.cmake"
  2392. @ONLY ESCAPE_QUOTES)
  2393. add_test(CTestTestNoBuild ${CMAKE_CTEST_COMMAND}
  2394. -S "${CMake_BINARY_DIR}/Tests/CTestTestFailure/testNoBuild.cmake" -V
  2395. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestFailure/testOut1.log"
  2396. )
  2397. set_tests_properties(CTestTestNoBuild PROPERTIES
  2398. FAIL_REGULAR_EXPRESSION "Error" WILL_FAIL true)
  2399. configure_file(
  2400. "${CMake_SOURCE_DIR}/Tests/CTestTestFailure/testNoExe.cmake.in"
  2401. "${CMake_BINARY_DIR}/Tests/CTestTestFailure/testNoExe.cmake"
  2402. @ONLY ESCAPE_QUOTES)
  2403. add_test(CTestTestNoExe ${CMAKE_CTEST_COMMAND}
  2404. -S "${CMake_BINARY_DIR}/Tests/CTestTestFailure/testNoExe.cmake" -V
  2405. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestFailure/testOut2.log"
  2406. )
  2407. set_tests_properties(CTestTestNoExe PROPERTIES DEPENDS CTestTestNoBuild
  2408. PASS_REGULAR_EXPRESSION "Could not find executable"
  2409. FAIL_REGULAR_EXPRESSION "SegFault")
  2410. if(NOT CMake_TEST_NO_NETWORK)
  2411. configure_file(
  2412. "${CMake_SOURCE_DIR}/Tests/CTestTestUpload/test.cmake.in"
  2413. "${CMake_BINARY_DIR}/Tests/CTestTestUpload/test.cmake"
  2414. @ONLY ESCAPE_QUOTES)
  2415. add_test(CTestTestUpload ${CMAKE_CTEST_COMMAND}
  2416. -S "${CMake_BINARY_DIR}/Tests/CTestTestUpload/test.cmake" -V
  2417. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestUpload/testOut.log"
  2418. )
  2419. set_tests_properties(CTestTestUpload PROPERTIES
  2420. PASS_REGULAR_EXPRESSION "Upload\\.xml")
  2421. endif()
  2422. configure_file(
  2423. "${CMake_SOURCE_DIR}/Tests/CTestCoverageCollectGCOV/test.cmake.in"
  2424. "${CMake_BINARY_DIR}/Tests/CTestCoverageCollectGCOV/test.cmake"
  2425. @ONLY ESCAPE_QUOTES)
  2426. add_test(CTestCoverageCollectGCOV ${CMAKE_CTEST_COMMAND}
  2427. -C \${CTEST_CONFIGURATION_TYPE}
  2428. -S "${CMake_BINARY_DIR}/Tests/CTestCoverageCollectGCOV/test.cmake" -VV
  2429. --output-log "${CMake_BINARY_DIR}/Tests/CTestCoverageCollectGCOV/testOut.log"
  2430. )
  2431. set_tests_properties(CTestCoverageCollectGCOV PROPERTIES
  2432. PASS_REGULAR_EXPRESSION
  2433. "PASSED with correct output.*Testing/CoverageInfo/main.cpp.gcov")
  2434. set_property(TEST CTestCoverageCollectGCOV PROPERTY ENVIRONMENT CTEST_PARALLEL_LEVEL=)
  2435. configure_file(
  2436. "${CMake_SOURCE_DIR}/Tests/CTestTestEmptyBinaryDirectory/test.cmake.in"
  2437. "${CMake_BINARY_DIR}/Tests/CTestTestEmptyBinaryDirectory/test.cmake"
  2438. @ONLY ESCAPE_QUOTES)
  2439. add_test(CTestTestEmptyBinaryDirectory ${CMAKE_CTEST_COMMAND}
  2440. -S "${CMake_BINARY_DIR}/Tests/CTestTestEmptyBinaryDirectory/test.cmake" -V
  2441. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestEmptyBinaryDirectory/testOut.log"
  2442. )
  2443. set_tests_properties(CTestTestEmptyBinaryDirectory PROPERTIES
  2444. PASS_REGULAR_EXPRESSION "TEST_SUCCESS")
  2445. # test coverage for mumps
  2446. # create a MumpsCoverage dir in the binary tree under Testing to
  2447. # avoid the .NoDartCoverage files in the cmake testing tree
  2448. configure_file(
  2449. "${CMake_SOURCE_DIR}/Tests/MumpsCoverage/DartConfiguration.tcl.in"
  2450. "${CMake_BINARY_DIR}/Testing/MumpsCoverage/DartConfiguration.tcl")
  2451. configure_file(
  2452. "${CMake_SOURCE_DIR}/Tests/MumpsCoverage/gtm_coverage.mcov.in"
  2453. "${CMake_BINARY_DIR}/Testing/MumpsCoverage/gtm_coverage.mcov")
  2454. file(REMOVE_RECURSE "${CMake_BINARY_DIR}/Testing/MumpsCoverage/VistA-FOIA")
  2455. file(COPY "${CMake_SOURCE_DIR}/Tests/MumpsCoverage/VistA-FOIA"
  2456. DESTINATION "${CMake_BINARY_DIR}/Testing/MumpsCoverage")
  2457. add_test(NAME CTestGTMCoverage
  2458. COMMAND ${CMAKE_CMAKE_COMMAND} -E chdir
  2459. ${CMake_BINARY_DIR}/Testing/MumpsCoverage
  2460. $<TARGET_FILE:ctest> -T Coverage --debug)
  2461. set_tests_properties(CTestGTMCoverage PROPERTIES
  2462. PASS_REGULAR_EXPRESSION
  2463. "Process file.*ZZCOVTST.m.*Total LOC:.*32.*Percentage Coverage: 81.25*"
  2464. ENVIRONMENT COVFILE=)
  2465. configure_file(
  2466. "${CMake_SOURCE_DIR}/Tests/MumpsCoverage/DartConfiguration.cache.tcl.in"
  2467. "${CMake_BINARY_DIR}/Testing/MumpsCacheCoverage/DartConfiguration.tcl")
  2468. configure_file(
  2469. "${CMake_SOURCE_DIR}/Tests/MumpsCoverage/cache_coverage.cmcov.in"
  2470. "${CMake_BINARY_DIR}/Testing/MumpsCacheCoverage/cache_coverage.cmcov")
  2471. file(REMOVE_RECURSE "${CMake_BINARY_DIR}/Testing/MumpsCacheCoverage/VistA-FOIA")
  2472. file(COPY "${CMake_SOURCE_DIR}/Tests/MumpsCoverage/VistA-FOIA"
  2473. DESTINATION "${CMake_BINARY_DIR}/Testing/MumpsCacheCoverage")
  2474. add_test(NAME CTestCacheCoverage
  2475. COMMAND ${CMAKE_CMAKE_COMMAND} -E chdir
  2476. ${CMake_BINARY_DIR}/Testing/MumpsCacheCoverage
  2477. $<TARGET_FILE:ctest> -T Coverage --debug)
  2478. set_tests_properties(CTestCacheCoverage PROPERTIES
  2479. PASS_REGULAR_EXPRESSION
  2480. "Process file.*ZZCOVTST.m.*Total LOC:.*32.*Percentage Coverage: 87.50.*"
  2481. ENVIRONMENT COVFILE=)
  2482. # Adding a test case for Python Coverage
  2483. configure_file(
  2484. "${CMake_SOURCE_DIR}/Tests/PythonCoverage/coverage.xml.in"
  2485. "${CMake_BINARY_DIR}/Testing/PythonCoverage/coverage.xml")
  2486. configure_file(
  2487. "${CMake_SOURCE_DIR}/Tests/PythonCoverage/DartConfiguration.tcl.in"
  2488. "${CMake_BINARY_DIR}/Testing/PythonCoverage/DartConfiguration.tcl")
  2489. file(COPY "${CMake_SOURCE_DIR}/Tests/PythonCoverage/coveragetest"
  2490. DESTINATION "${CMake_BINARY_DIR}/Testing/PythonCoverage")
  2491. add_test(NAME CTestPythonCoverage
  2492. COMMAND ${CMAKE_CMAKE_COMMAND} -E chdir
  2493. ${CMake_BINARY_DIR}/Testing/PythonCoverage
  2494. $<TARGET_FILE:ctest> -T Coverage --debug)
  2495. set_tests_properties(CTestPythonCoverage PROPERTIES
  2496. PASS_REGULAR_EXPRESSION
  2497. "Process file.*foo.py.*Total LOC:.*13.*Percentage Coverage: 84.62.*"
  2498. ENVIRONMENT COVFILE=)
  2499. # Adding a test case for non-python Cobertura Coverage
  2500. configure_file(
  2501. "${CMake_SOURCE_DIR}/Tests/CoberturaCoverage/DartConfiguration.tcl.in"
  2502. "${CMake_BINARY_DIR}/Testing/CoberturaCoverage/DartConfiguration.tcl")
  2503. configure_file(
  2504. "${CMake_SOURCE_DIR}/Tests/CoberturaCoverage/coverage.xml.in"
  2505. "${CMake_BINARY_DIR}/Testing/CoberturaCoverage/coverage.xml")
  2506. file(COPY "${CMake_SOURCE_DIR}/Tests/CoberturaCoverage/src"
  2507. DESTINATION "${CMake_BINARY_DIR}/Testing/CoberturaCoverage")
  2508. add_test(NAME CTestCoberturaCoverage
  2509. COMMAND ${CMAKE_CMAKE_COMMAND} -E chdir
  2510. ${CMake_BINARY_DIR}/Testing/CoberturaCoverage
  2511. $<TARGET_FILE:ctest> -T Coverage --debug)
  2512. set_tests_properties(CTestCoberturaCoverage PROPERTIES
  2513. PASS_REGULAR_EXPRESSION
  2514. "Process file.*CoverageTest.java.*Total LOC:.*18.*Percentage Coverage: 72.22.*"
  2515. ENVIRONMENT COBERTURADIR=${CMake_BINARY_DIR}/Testing/CoberturaCoverage
  2516. ENVIRONMENT COVFILE=)
  2517. # Adding a test case for JaCoCo Coverage
  2518. configure_file(
  2519. "${CMake_SOURCE_DIR}/Tests/JacocoCoverage/DartConfiguration.tcl.in"
  2520. "${CMake_BINARY_DIR}/Testing/JacocoCoverage/DartConfiguration.tcl")
  2521. file(COPY "${CMake_SOURCE_DIR}/Tests/JacocoCoverage/Coverage"
  2522. DESTINATION "${CMake_BINARY_DIR}/Testing/JacocoCoverage")
  2523. configure_file("${CMake_BINARY_DIR}/Testing/JacocoCoverage/Coverage/target/site/jacoco.xml.in"
  2524. "${CMake_BINARY_DIR}/Testing/JacocoCoverage/Coverage/target/site/jacoco.xml")
  2525. add_test(NAME CTestJacocoCoverage
  2526. COMMAND ${CMAKE_CMAKE_COMMAND} -E chdir
  2527. ${CMake_BINARY_DIR}/Testing/JacocoCoverage
  2528. $<TARGET_FILE:ctest> -T Coverage --debug)
  2529. set_tests_properties(CTestJacocoCoverage PROPERTIES
  2530. PASS_REGULAR_EXPRESSION
  2531. "Process file.*CoverageTest.java.*Total LOC:.*17.*Percentage Coverage: 76.47*"
  2532. ENVIRONMENT COVFILE=)
  2533. # Adding a test case for Javascript Coverage
  2534. configure_file(
  2535. "${CMake_SOURCE_DIR}/Tests/JavascriptCoverage/DartConfiguration.tcl.in"
  2536. "${CMake_BINARY_DIR}/Testing/JavascriptCoverage/DartConfiguration.tcl")
  2537. configure_file(
  2538. "${CMake_SOURCE_DIR}/Tests/JavascriptCoverage/output.json.in"
  2539. "${CMake_BINARY_DIR}/Testing/JavascriptCoverage/output.json")
  2540. file(COPY "${CMake_SOURCE_DIR}/Tests/JavascriptCoverage/"
  2541. DESTINATION "${CMake_BINARY_DIR}/Testing/JavascriptCoverage"
  2542. FILES_MATCHING PATTERN "*.js")
  2543. add_test(NAME CTestJavascriptCoverage
  2544. COMMAND ${CMAKE_CMAKE_COMMAND} -E chdir
  2545. ${CMake_BINARY_DIR}/Testing/JavascriptCoverage
  2546. $<TARGET_FILE:ctest> -T Coverage --debug)
  2547. set_tests_properties(CTestJavascriptCoverage PROPERTIES
  2548. PASS_REGULAR_EXPRESSION
  2549. "Process file.*test3.js.*Total LOC:.*49.*Percentage Coverage: 79.59*"
  2550. ENVIRONMENT COVFILE=)
  2551. # test coverage for Delphi-code-Coverage
  2552. configure_file(
  2553. "${CMake_SOURCE_DIR}/Tests/DelphiCoverage/DartConfiguration.tcl.in"
  2554. "${CMake_BINARY_DIR}/Testing/DelphiCoverage/DartConfiguration.tcl")
  2555. file(COPY "${CMake_SOURCE_DIR}/Tests/DelphiCoverage/src"
  2556. DESTINATION "${CMake_BINARY_DIR}/Testing/DelphiCoverage")
  2557. configure_file(
  2558. "${CMake_SOURCE_DIR}/Tests/DelphiCoverage/UTCovTest(UTCovTest.pas).html.in"
  2559. "${CMake_BINARY_DIR}/Testing/DelphiCoverage/UTCovTest(UTCovTest.pas).html")
  2560. add_test(NAME CTestDelphiCoverage
  2561. COMMAND ${CMAKE_CMAKE_COMMAND} -E chdir
  2562. ${CMake_BINARY_DIR}/Testing/DelphiCoverage
  2563. $<TARGET_FILE:ctest> -T Coverage --debug)
  2564. set_tests_properties(CTestDelphiCoverage PROPERTIES
  2565. PASS_REGULAR_EXPRESSION
  2566. "Process file.*UTCovTest.pas.*Total LOC:.*20.*Percentage Coverage: 95.*"
  2567. ENVIRONMENT COVFILE=)
  2568. function(add_config_tests cfg)
  2569. set(base "${CMake_BINARY_DIR}/Tests/CTestConfig")
  2570. # Test -S script with a -C config arg to ctest:
  2571. configure_file(
  2572. "${CMake_SOURCE_DIR}/Tests/CTestConfig/script.cmake.in"
  2573. "${base}/${cfg}-script.cmake"
  2574. @ONLY ESCAPE_QUOTES)
  2575. add_test(CTestConfig.Script.${cfg} ${CMAKE_CTEST_COMMAND}
  2576. -C ${cfg}
  2577. -S "${base}/${cfg}-script.cmake" -VV
  2578. --output-log "${base}/${cfg}-script.log"
  2579. )
  2580. # Test -D dashboard with a -C config arg to ctest.
  2581. # (Actual commands inside a cmake -P script because we need to be able to set
  2582. # the working directory reliably...)
  2583. configure_file(
  2584. "${CMake_SOURCE_DIR}/Tests/CTestConfig/dashboard.cmake.in"
  2585. "${base}/${cfg}-dashboard.cmake"
  2586. @ONLY ESCAPE_QUOTES)
  2587. add_test(CTestConfig.Dashboard.${cfg} ${CMAKE_CMAKE_COMMAND}
  2588. -P "${base}/${cfg}-dashboard.cmake" -VV
  2589. )
  2590. endfunction()
  2591. add_config_tests(Debug)
  2592. add_config_tests(MinSizeRel)
  2593. add_config_tests(Release)
  2594. add_config_tests(RelWithDebInfo)
  2595. # Test -S script with some -D variable definition args to ctest:
  2596. add_test(CTestConfig.ScriptWithArgs ${CMAKE_CTEST_COMMAND}
  2597. -C "Release"
  2598. -D arg1=this
  2599. -D arg2=that
  2600. -D "arg3=the other"
  2601. "-Darg4=this is the fourth"
  2602. -Darg5=the_fifth
  2603. -Darg6:STRING=value-with-type
  2604. -S "${CMake_SOURCE_DIR}/Tests/CTestConfig/ScriptWithArgs.cmake" -VV
  2605. --output-log "${CMake_BINARY_DIR}/Tests/CTestConfig/ScriptWithArgs.log"
  2606. )
  2607. ADD_TEST_MACRO(CMakeCommands.add_compile_definitions add_compile_definitions)
  2608. ADD_TEST_MACRO(CMakeCommands.add_compile_options add_compile_options)
  2609. ADD_TEST_MACRO(CMakeCommands.target_link_libraries target_link_libraries)
  2610. ADD_TEST_MACRO(CMakeCommands.target_include_directories target_include_directories)
  2611. ADD_TEST_MACRO(CMakeCommands.target_compile_definitions target_compile_definitions)
  2612. ADD_TEST_MACRO(CMakeCommands.target_compile_options target_compile_options)
  2613. ADD_TEST_MACRO(CMakeCommands.target_sources target_sources)
  2614. ADD_TEST_MACRO(CMakeCommands.add_link_options)
  2615. ADD_TEST_MACRO(CMakeCommands.target_link_options)
  2616. ADD_TEST_MACRO(CMakeCommands.link_directories)
  2617. ADD_TEST_MACRO(CMakeCommands.target_link_directories)
  2618. # The cmake server-mode test requires python for a simple client.
  2619. find_package(PythonInterp QUIET)
  2620. if(PYTHON_EXECUTABLE)
  2621. set(Server_BUILD_OPTIONS -DPYTHON_EXECUTABLE:FILEPATH=${PYTHON_EXECUTABLE})
  2622. ADD_TEST_MACRO(Server Server)
  2623. endif()
  2624. configure_file(
  2625. "${CMake_SOURCE_DIR}/Tests/CTestTestCrash/test.cmake.in"
  2626. "${CMake_BINARY_DIR}/Tests/CTestTestCrash/test.cmake"
  2627. @ONLY ESCAPE_QUOTES)
  2628. add_test(CTestTestCrash ${CMAKE_CTEST_COMMAND}
  2629. -S "${CMake_BINARY_DIR}/Tests/CTestTestCrash/test.cmake" -V
  2630. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestCrash/testOutput.log"
  2631. )
  2632. # with watcom the SEGFAULT is not found, it just fails
  2633. if(CMAKE_GENERATOR MATCHES "Watcom WMake")
  2634. set_tests_properties(CTestTestCrash PROPERTIES
  2635. PASS_REGULAR_EXPRESSION "Failed")
  2636. else()
  2637. set_tests_properties(CTestTestCrash PROPERTIES
  2638. PASS_REGULAR_EXPRESSION "(Illegal|SegFault|Child aborted)")
  2639. endif()
  2640. configure_file(
  2641. "${CMake_SOURCE_DIR}/Tests/CTestTestBadExe/test.cmake.in"
  2642. "${CMake_BINARY_DIR}/Tests/CTestTestBadExe/test.cmake"
  2643. @ONLY ESCAPE_QUOTES)
  2644. add_test(CTestTestBadExe ${CMAKE_CTEST_COMMAND}
  2645. -S "${CMake_BINARY_DIR}/Tests/CTestTestBadExe/test.cmake" -V
  2646. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestBadExe/testOutput.log"
  2647. )
  2648. set(CTestTestBadExe_REGEX "BAD_COMMAND")
  2649. # some cygwin can not be made to produce a BAD_COMMAND error
  2650. # the best we can get from it is a failed test
  2651. if(CYGWIN)
  2652. set(CTestTestBadExe_REGEX "(\\*\\*\\*Failed)|BAD_COMMAND")
  2653. endif()
  2654. set_tests_properties(CTestTestBadExe PROPERTIES
  2655. PASS_REGULAR_EXPRESSION "${CTestTestBadExe_REGEX}")
  2656. configure_file(
  2657. "${CMake_SOURCE_DIR}/Tests/CTestTestBadGenerator/test.cmake.in"
  2658. "${CMake_BINARY_DIR}/Tests/CTestTestBadGenerator/test.cmake"
  2659. @ONLY ESCAPE_QUOTES)
  2660. add_test(CTestTestBadGenerator ${CMAKE_CTEST_COMMAND}
  2661. -C "\${CTestTest_CONFIG}"
  2662. -S "${CMake_BINARY_DIR}/Tests/CTestTestBadGenerator/test.cmake" -V
  2663. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestBadGenerator/testOutput.log"
  2664. )
  2665. set_property(TEST CTestTestBadGenerator PROPERTY
  2666. PASS_REGULAR_EXPRESSION "could not create generator named \"Bad Generator\"")
  2667. configure_file(
  2668. "${CMake_SOURCE_DIR}/Tests/CTestTestParallel/test.cmake.in"
  2669. "${CMake_BINARY_DIR}/Tests/CTestTestParallel/test.cmake"
  2670. @ONLY ESCAPE_QUOTES)
  2671. add_test(CTestTestParallel ${CMAKE_CTEST_COMMAND}
  2672. -S "${CMake_BINARY_DIR}/Tests/CTestTestParallel/test.cmake" -V
  2673. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestParallel/testOutput.log"
  2674. )
  2675. configure_file("${CMake_SOURCE_DIR}/Tests/CTestTestVerboseOutput/test.cmake.in"
  2676. "${CMake_BINARY_DIR}/Tests/CTestTestVerboseOutput/test.cmake" @ONLY ESCAPE_QUOTES)
  2677. add_test(CTestTestVerboseOutput ${CMAKE_CTEST_COMMAND}
  2678. -S "${CMake_BINARY_DIR}/Tests/CTestTestVerboseOutput/test.cmake" -VV
  2679. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestVerboseOutput/testOutput.log"
  2680. -C "\${CTestTest_CONFIG}"
  2681. )
  2682. set_property(TEST CTestTestVerboseOutput PROPERTY PASS_REGULAR_EXPRESSION
  2683. "Environment variables:.*foo=bar.*this=that"
  2684. )
  2685. configure_file(
  2686. "${CMake_SOURCE_DIR}/Tests/CTestTestSkipReturnCode/test.cmake.in"
  2687. "${CMake_BINARY_DIR}/Tests/CTestTestSkipReturnCode/test.cmake"
  2688. @ONLY ESCAPE_QUOTES)
  2689. add_test(CTestTestSkipReturnCode ${CMAKE_CTEST_COMMAND}
  2690. -S "${CMake_BINARY_DIR}/Tests/CTestTestSkipReturnCode/test.cmake" -V
  2691. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestSkipReturnCode/testOutput.log"
  2692. -C \${CTEST_CONFIGURATION_TYPE}
  2693. )
  2694. set_tests_properties(CTestTestSkipReturnCode PROPERTIES
  2695. PASS_REGULAR_EXPRESSION "CMakeV1 \\.* +Passed.*CMakeV2 \\.+\\*+Skipped")
  2696. set_property(TEST CTestTestSkipReturnCode PROPERTY ENVIRONMENT CTEST_PARALLEL_LEVEL=)
  2697. ADD_TEST_MACRO(CTestTestSerialInDepends ${CMAKE_CTEST_COMMAND} -j 4
  2698. --output-on-failure -C "\${CTestTest_CONFIG}")
  2699. ADD_TEST_MACRO(CTestTestMissingDependsExe ${CMAKE_CTEST_COMMAND}
  2700. --output-on-failure -C "\${CTestTest_CONFIG}")
  2701. set_tests_properties(CTestTestMissingDependsExe PROPERTIES
  2702. PASS_REGULAR_EXPRESSION "\\*\\*\\*Not Run"
  2703. )
  2704. ADD_TEST_MACRO(CTestTestSerialOrder ${CMAKE_CTEST_COMMAND}
  2705. --output-on-failure -C "\${CTestTest_CONFIG}")
  2706. set_property(TEST CTestTestSerialOrder PROPERTY ENVIRONMENT CTEST_PARALLEL_LEVEL=)
  2707. if(NOT BORLAND)
  2708. set(CTestLimitDashJ_CTEST_OPTIONS --force-new-ctest-process)
  2709. add_test_macro(CTestLimitDashJ ${CMAKE_CTEST_COMMAND} -j 4
  2710. --output-on-failure -C "\${CTestTest_CONFIG}")
  2711. endif()
  2712. add_test(CTestTestPrintLabels ${CMAKE_CTEST_COMMAND} --print-labels)
  2713. set_tests_properties(CTestTestPrintLabels PROPERTIES LABELS "Label1;Label2")
  2714. set_tests_properties(CTestTestPrintLabels PROPERTIES PASS_REGULAR_EXPRESSION
  2715. "All Labels:.* Label1.* Label2")
  2716. configure_file(
  2717. "${CMake_SOURCE_DIR}/Tests/CTestTestLabelRegExp/test.cmake.in"
  2718. "${CMake_BINARY_DIR}/Tests/CTestTestLabelRegExp/test.cmake"
  2719. @ONLY ESCAPE_QUOTES)
  2720. add_test(NAME CTestTestLabelRegExp
  2721. COMMAND ${CMAKE_CMAKE_COMMAND}
  2722. -DSOURCE_DIR=${CMAKE_SOURCE_DIR}/Tests/CTestTestLabelRegExp
  2723. -P ${CMAKE_BINARY_DIR}/Tests/CTestTestLabelRegExp/test.cmake
  2724. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/Tests/CTestTestLabelRegExp
  2725. )
  2726. configure_file(
  2727. "${CMake_SOURCE_DIR}/Tests/CTestTestResourceLock/test.cmake.in"
  2728. "${CMake_BINARY_DIR}/Tests/CTestTestResourceLock/test.cmake"
  2729. @ONLY ESCAPE_QUOTES)
  2730. add_test(CTestTestResourceLock ${CMAKE_CTEST_COMMAND}
  2731. -S "${CMake_BINARY_DIR}/Tests/CTestTestResourceLock/test.cmake" -V
  2732. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestResourceLock/output.log"
  2733. )
  2734. configure_file(
  2735. "${CMake_SOURCE_DIR}/Tests/CTestTestScheduler/test.cmake.in"
  2736. "${CMake_BINARY_DIR}/Tests/CTestTestScheduler/test.cmake"
  2737. @ONLY ESCAPE_QUOTES)
  2738. add_test(CTestTestScheduler ${CMAKE_CTEST_COMMAND}
  2739. -S "${CMake_BINARY_DIR}/Tests/CTestTestScheduler/test.cmake" -V
  2740. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestScheduler/testOutput.log"
  2741. )
  2742. set_tests_properties(CTestTestScheduler PROPERTIES
  2743. PASS_REGULAR_EXPRESSION "Start 1.*Start 2.*Start 3.*Start 4.*Start 4.*Start 3.*Start 2.*Start 1"
  2744. RESOURCE_LOCK "CostData")
  2745. configure_file(
  2746. "${CMake_SOURCE_DIR}/Tests/CTestTestCostSerial/test.cmake.in"
  2747. "${CMake_BINARY_DIR}/Tests/CTestTestCostSerial/test.cmake"
  2748. @ONLY ESCAPE_QUOTES)
  2749. add_test(CTestTestCostSerial ${CMAKE_CTEST_COMMAND}
  2750. -S "${CMake_BINARY_DIR}/Tests/CTestTestCostSerial/test.cmake" -V
  2751. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestCostSerial/testOutput.log"
  2752. )
  2753. set_tests_properties(CTestTestCostSerial PROPERTIES
  2754. PASS_REGULAR_EXPRESSION "Start 2.*Start 3.*Start 1.*Start 2.*Start 3.*Start 1"
  2755. RESOURCE_LOCK "CostData")
  2756. configure_file(
  2757. "${CMake_SOURCE_DIR}/Tests/CTestTestStopTime/test.cmake.in"
  2758. "${CMake_BINARY_DIR}/Tests/CTestTestStopTime/test.cmake"
  2759. @ONLY ESCAPE_QUOTES)
  2760. configure_file(
  2761. "${CMake_SOURCE_DIR}/Tests/CTestTestStopTime/GetDate.cmake"
  2762. "${CMake_BINARY_DIR}/Tests/CTestTestStopTime/GetDate.cmake"
  2763. COPYONLY)
  2764. add_test(CTestTestStopTime ${CMAKE_CTEST_COMMAND}
  2765. -S "${CMake_BINARY_DIR}/Tests/CTestTestStopTime/test.cmake" -V
  2766. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestStopTime/testOutput.log"
  2767. )
  2768. set_tests_properties(CTestTestStopTime PROPERTIES
  2769. PASS_REGULAR_EXPRESSION "The stop time has been passed")
  2770. configure_file(
  2771. "${CMake_SOURCE_DIR}/Tests/CTestTestSubdir/test.cmake.in"
  2772. "${CMake_BINARY_DIR}/Tests/CTestTestSubdir/test.cmake"
  2773. @ONLY ESCAPE_QUOTES)
  2774. add_test(CTestTestSubdir ${CMAKE_CTEST_COMMAND}
  2775. -S "${CMake_BINARY_DIR}/Tests/CTestTestSubdir/test.cmake" -V
  2776. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestSubdir/testOutput.log"
  2777. )
  2778. #make sure all 3 subdirs were added
  2779. set_tests_properties(CTestTestSubdir PROPERTIES
  2780. PASS_REGULAR_EXPRESSION "0 tests failed out of 3")
  2781. configure_file(
  2782. "${CMake_SOURCE_DIR}/Tests/CTestTestTimeout/test.cmake.in"
  2783. "${CMake_BINARY_DIR}/Tests/CTestTestTimeout/test.cmake"
  2784. @ONLY ESCAPE_QUOTES)
  2785. add_test(CTestTestTimeout ${CMAKE_CTEST_COMMAND}
  2786. -C "\${CTestTest_CONFIG}"
  2787. -S "${CMake_BINARY_DIR}/Tests/CTestTestTimeout/test.cmake" -V
  2788. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestTimeout/testOutput.log"
  2789. )
  2790. set_tests_properties(CTestTestTimeout PROPERTIES
  2791. PASS_REGULAR_EXPRESSION "TestTimeout *\\.+ *\\*\\*\\*Timeout.*TestSleep *\\.+ *Passed.*timeout correctly killed child")
  2792. add_test(
  2793. NAME CTestTestRerunFailed
  2794. COMMAND ${CMAKE_CTEST_COMMAND} --rerun-failed)
  2795. set_tests_properties(CTestTestRerunFailed PROPERTIES
  2796. PASS_REGULAR_EXPRESSION "1/1 Test #1: TestTimeout" DEPENDS CTestTestTimeout
  2797. WORKING_DIRECTORY ${CMake_BINARY_DIR}/Tests/CTestTestTimeout)
  2798. configure_file(
  2799. "${CMake_SOURCE_DIR}/Tests/CTestTestZeroTimeout/test.cmake.in"
  2800. "${CMake_BINARY_DIR}/Tests/CTestTestZeroTimeout/test.cmake"
  2801. @ONLY ESCAPE_QUOTES)
  2802. add_test(CTestTestZeroTimeout ${CMAKE_CTEST_COMMAND}
  2803. -S "${CMake_BINARY_DIR}/Tests/CTestTestZeroTimeout/test.cmake" -V
  2804. --output-log
  2805. "${CMake_BINARY_DIR}/Tests/CTestTestZeroTimeout/testOutput.log")
  2806. set_tests_properties(CTestTestZeroTimeout PROPERTIES
  2807. FAIL_REGULAR_EXPRESSION "\\*\\*\\*Timeout")
  2808. configure_file(
  2809. "${CMake_SOURCE_DIR}/Tests/CTestTestDepends/test.cmake.in"
  2810. "${CMake_BINARY_DIR}/Tests/CTestTestDepends/test.cmake"
  2811. @ONLY ESCAPE_QUOTES)
  2812. add_test(CTestTestDepends ${CMAKE_CTEST_COMMAND}
  2813. -C "\${CTestTest_CONFIG}"
  2814. -S "${CMake_BINARY_DIR}/Tests/CTestTestDepends/test.cmake" -V
  2815. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestDepends/testOutput.log"
  2816. )
  2817. configure_file(
  2818. "${CMake_SOURCE_DIR}/Tests/CTestTestCycle/test.cmake.in"
  2819. "${CMake_BINARY_DIR}/Tests/CTestTestCycle/test.cmake"
  2820. @ONLY ESCAPE_QUOTES)
  2821. add_test(CTestTestCycle ${CMAKE_CTEST_COMMAND}
  2822. -C "\${CTestTest_CONFIG}"
  2823. -S "${CMake_BINARY_DIR}/Tests/CTestTestCycle/test.cmake" -V
  2824. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestCycle/testOutput.log"
  2825. )
  2826. set_tests_properties(CTestTestCycle PROPERTIES
  2827. PASS_REGULAR_EXPRESSION "a cycle exists in the test dependency graph")
  2828. configure_file(
  2829. "${CMake_SOURCE_DIR}/Tests/CTestTestRunScript/test.cmake.in"
  2830. "${CMake_BINARY_DIR}/Tests/CTestTestRunScript/test.cmake"
  2831. @ONLY ESCAPE_QUOTES)
  2832. configure_file(
  2833. "${CMake_SOURCE_DIR}/Tests/CTestTestRunScript/hello.cmake.in"
  2834. "${CMake_BINARY_DIR}/Tests/CTestTestRunScript/hello.cmake"
  2835. @ONLY ESCAPE_QUOTES)
  2836. add_test(CTestTestRunScript ${CMAKE_CTEST_COMMAND}
  2837. -S "${CMake_BINARY_DIR}/Tests/CTestTestRunScript/test.cmake" -V
  2838. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestRunScript/testOutput.log"
  2839. )
  2840. add_test(CTestTestShowOnly ${CMAKE_CTEST_COMMAND} -N)
  2841. configure_file(
  2842. "${CMake_SOURCE_DIR}/Tests/CTestTestFdSetSize/test.cmake.in"
  2843. "${CMake_BINARY_DIR}/Tests/CTestTestFdSetSize/test.cmake"
  2844. @ONLY ESCAPE_QUOTES)
  2845. add_test(CTestTestFdSetSize ${CMAKE_CTEST_COMMAND}
  2846. -S "${CMake_BINARY_DIR}/Tests/CTestTestFdSetSize/test.cmake" -j20 -V --timeout 120
  2847. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestFdSetSize/testOutput.log"
  2848. )
  2849. if (CMAKE_TESTS_CDASH_SERVER)
  2850. set(regex "^([^:]+)://([^/]+)(.*)$")
  2851. if ("${CMAKE_TESTS_CDASH_SERVER}" MATCHES "${regex}")
  2852. set(protocol "${CMAKE_MATCH_1}")
  2853. set(server "${CMAKE_MATCH_2}")
  2854. set(path "${CMAKE_MATCH_3}")
  2855. else ()
  2856. set(protocol "http")
  2857. set(server "open.cdash.org")
  2858. set(path "")
  2859. message("warning: CMAKE_TESTS_CDASH_SERVER does not match expected regex...")
  2860. message(" ...using default url='${protocol}://${server}${path}' for CTestTest[23]")
  2861. endif ()
  2862. endif ()
  2863. if (CTEST_TEST_CTEST AND CMAKE_RUN_LONG_TESTS AND CMAKE_TESTS_CDASH_SERVER)
  2864. configure_file("${CMake_SOURCE_DIR}/Tests/CTestTest/test.cmake.in"
  2865. "${CMake_BINARY_DIR}/Tests/CTestTest/test.cmake" @ONLY ESCAPE_QUOTES)
  2866. add_test(CTestTest ${CMAKE_CTEST_COMMAND}
  2867. -S "${CMake_BINARY_DIR}/Tests/CTestTest/test.cmake" -V
  2868. --output-log "${CMake_BINARY_DIR}/Tests/CTestTest/testOutput.log"
  2869. )
  2870. if(NOT CMake_TEST_EXTERNAL_CMAKE)
  2871. configure_file("${CMake_SOURCE_DIR}/Tests/CTestTest2/test.cmake.in"
  2872. "${CMake_BINARY_DIR}/Tests/CTestTest2/test.cmake" @ONLY ESCAPE_QUOTES)
  2873. add_test(CTestTest2 ${CMAKE_CTEST_COMMAND}
  2874. -S "${CMake_BINARY_DIR}/Tests/CTestTest2/test.cmake" -V
  2875. --output-log "${CMake_BINARY_DIR}/Tests/CTestTest2/testOutput.log"
  2876. )
  2877. endif()
  2878. if("${CMAKE_GENERATOR}" MATCHES "Makefiles" OR "${CMAKE_GENERATOR}" MATCHES "Ninja")
  2879. configure_file("${CMake_SOURCE_DIR}/Tests/CTestTestLaunchers/test.cmake.in"
  2880. "${CMake_BINARY_DIR}/Tests/CTestTestLaunchers/test.cmake" @ONLY ESCAPE_QUOTES)
  2881. add_test(CTestTestLaunchers ${CMAKE_CTEST_COMMAND}
  2882. -S "${CMake_BINARY_DIR}/Tests/CTestTestLaunchers/test.cmake" -V
  2883. --output-log "${CMake_BINARY_DIR}/Tests/CTestTestLaunchers/testOutput.log"
  2884. )
  2885. set_tests_properties(CTestTestLaunchers PROPERTIES
  2886. PASS_REGULAR_EXPRESSION "CTEST_TEST_LAUNCHER_SUCCESS")
  2887. endif()
  2888. configure_file("${CMake_SOURCE_DIR}/Tests/CTestTestChecksum/test.cmake.in"
  2889. "${CMake_BINARY_DIR}/Tests/CTestTestChecksum/test.cmake" @ONLY
  2890. ESCAPE_QUOTES)
  2891. add_test(CTestTestChecksum ${CMAKE_CTEST_COMMAND}
  2892. -S "${CMake_BINARY_DIR}/Tests/CTestTestChecksum/test.cmake" -V
  2893. --output-log
  2894. "${CMake_BINARY_DIR}/Tests/CTestTestChecksum/testOutput.log"
  2895. )
  2896. set_tests_properties(CTestTestChecksum PROPERTIES PASS_REGULAR_EXPRESSION
  2897. "Submission failed: Checksum failed for file")
  2898. # these tests take a long time, make sure they have it
  2899. # if timeouts have not already been set
  2900. get_test_property(CTestTest TIMEOUT PREVIOUS_TIMEOUT)
  2901. if ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
  2902. set_tests_properties ( CTestTest
  2903. PROPERTIES TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT})
  2904. endif ()
  2905. if(NOT CMake_TEST_EXTERNAL_CMAKE)
  2906. get_test_property(CTestTest2 TIMEOUT PREVIOUS_TIMEOUT)
  2907. if("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
  2908. set_tests_properties ( CTestTest2
  2909. PROPERTIES TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT})
  2910. endif()
  2911. endif()
  2912. endif ()
  2913. if(CMake_TEST_EXTERNAL_CMAKE)
  2914. set(CMAKE_SKIP_BOOTSTRAP_TEST 1)
  2915. endif()
  2916. if("${CMAKE_GENERATOR}" MATCHES Xcode)
  2917. set(CMAKE_SKIP_BOOTSTRAP_TEST 1)
  2918. endif()
  2919. if(EXISTS "${CMake_BINARY_DIR}/CMakeLists.txt")
  2920. # If there is CMakeLists.txt in the binary tree, assume in-source build
  2921. set(CMAKE_SKIP_BOOTSTRAP_TEST 1)
  2922. endif()
  2923. set(bootstrap "")
  2924. if(CMAKE_RUN_LONG_TESTS AND NOT CMAKE_SKIP_BOOTSTRAP_TEST)
  2925. if(UNIX)
  2926. set(bootstrap ${CMake_SOURCE_DIR}/bootstrap)
  2927. elseif(MSYS)
  2928. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/bootstrap.bat.in
  2929. ${CMAKE_CURRENT_BINARY_DIR}/bootstrap.bat @ONLY)
  2930. set(bootstrap ${CMAKE_CURRENT_BINARY_DIR}/bootstrap.bat)
  2931. endif()
  2932. endif()
  2933. if(bootstrap)
  2934. add_test(NAME BootstrapTest
  2935. COMMAND ${CMAKE_CMAKE_COMMAND}
  2936. -D "bootstrap=${bootstrap}"
  2937. -D "bin_dir=${CMake_BINARY_DIR}/Tests/BootstrapTest"
  2938. -P ${CMAKE_CURRENT_SOURCE_DIR}/BootstrapTest.cmake
  2939. )
  2940. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/BootstrapTest")
  2941. # This test will use all processors.
  2942. set_tests_properties(BootstrapTest PROPERTIES RUN_SERIAL 1)
  2943. # provide more time for the bootstrap test
  2944. get_test_property(BootstrapTest TIMEOUT PREVIOUS_TIMEOUT)
  2945. if ("${PREVIOUS_TIMEOUT}" MATCHES NOTFOUND)
  2946. set_tests_properties ( BootstrapTest
  2947. PROPERTIES TIMEOUT 5400)
  2948. endif ()
  2949. endif()
  2950. if(CMAKE_Fortran_COMPILER)
  2951. add_test(Fortran ${CMAKE_CTEST_COMMAND}
  2952. --build-and-test
  2953. "${CMake_SOURCE_DIR}/Tests/Fortran"
  2954. "${CMake_BINARY_DIR}/Tests/Fortran"
  2955. ${build_generator_args}
  2956. --build-project testf
  2957. --build-two-config
  2958. --test-command testf)
  2959. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Fortran")
  2960. if(CMAKE_Fortran_COMPILER_SUPPORTS_F90)
  2961. add_test(FortranModules ${CMAKE_CTEST_COMMAND}
  2962. --build-and-test
  2963. "${CMake_SOURCE_DIR}/Tests/FortranModules"
  2964. "${CMake_BINARY_DIR}/Tests/FortranModules"
  2965. ${build_generator_args}
  2966. --build-project FortranModules
  2967. --build-options
  2968. -DCMake_TEST_NESTED_MAKE_PROGRAM:FILEPATH=${CMake_TEST_EXPLICIT_MAKE_PROGRAM}
  2969. -DCMake_TEST_Fortran_SUBMODULES:BOOL=${CMake_TEST_Fortran_SUBMODULES}
  2970. ${CMake_TEST_FortranModules_BUILD_OPTIONS}
  2971. )
  2972. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/FortranModules")
  2973. endif()
  2974. # FortranCInterface tests.
  2975. if(UNIX)
  2976. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/FortranC/Flags.cmake.in
  2977. ${CMAKE_CURRENT_BINARY_DIR}/FortranC/Flags.cmake @ONLY)
  2978. add_test(FortranC.Flags ${CMAKE_CMAKE_COMMAND} -P
  2979. ${CMAKE_CURRENT_BINARY_DIR}/FortranC/Flags.cmake)
  2980. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/FortranC/Flags")
  2981. else()
  2982. add_test(FortranC ${CMAKE_CTEST_COMMAND}
  2983. --build-and-test
  2984. "${CMake_SOURCE_DIR}/Tests/FortranC"
  2985. "${CMake_BINARY_DIR}/Tests/FortranC"
  2986. ${build_generator_args}
  2987. --build-project FortranC
  2988. --build-two-config
  2989. --test-command CMakeFiles/FortranCInterface/FortranCInterface)
  2990. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/FortranC")
  2991. endif()
  2992. endif()
  2993. find_package(Java COMPONENTS Development QUIET)
  2994. if(Java_JAVA_EXECUTABLE AND Java_JAVAC_EXECUTABLE AND Java_JAR_EXECUTABLE AND NOT MINGW
  2995. AND NOT "${CMAKE_GENERATOR}" MATCHES "Xcode")
  2996. set(JavaExportImport_BUILD_OPTIONS -DCMake_TEST_NESTED_MAKE_PROGRAM:FILEPATH=${CMake_TEST_EXPLICIT_MAKE_PROGRAM})
  2997. ADD_TEST_MACRO(JavaExportImport JavaExportImport)
  2998. get_filename_component(JNIPATH ${JAVA_COMPILE} PATH)
  2999. find_file(JNI_H jni.h
  3000. "${JNIPATH}/../include"
  3001. "${JNIPATH}/../java/include")
  3002. if(JNI_H AND EXISTS "${JNI_H}") # in case jni.h is a broken symlink
  3003. file(READ "${JNI_H}" JNI_FILE)
  3004. if("${JNI_FILE}" MATCHES "JDK1_2")
  3005. add_test(Java.Jar ${CMAKE_CTEST_COMMAND}
  3006. --build-and-test
  3007. "${CMake_SOURCE_DIR}/Tests/Java"
  3008. "${CMake_BINARY_DIR}/Tests/JavaJar"
  3009. ${build_generator_args}
  3010. --build-project hello
  3011. --build-target hello
  3012. --build-two-config
  3013. --build-run-dir "${CMake_BINARY_DIR}/Tests/JavaJar/"
  3014. --test-command ${JAVA_RUNTIME} -classpath hello.jar HelloWorld)
  3015. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/JavaJar")
  3016. add_test(Java.JarSourceList ${CMAKE_CTEST_COMMAND}
  3017. --build-and-test
  3018. "${CMake_SOURCE_DIR}/Tests/Java"
  3019. "${CMake_BINARY_DIR}/Tests/JavaJarSourceList"
  3020. ${build_generator_args}
  3021. --build-project hello
  3022. --build-target hello2
  3023. --build-two-config
  3024. --build-run-dir "${CMake_BINARY_DIR}/Tests/JavaJarSourceList/"
  3025. --test-command ${JAVA_RUNTIME} -classpath hello2.jar HelloWorld)
  3026. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/JavaJarSourceList")
  3027. add_test(Java.JarSourceListAndOutput ${CMAKE_CTEST_COMMAND}
  3028. --build-and-test
  3029. "${CMake_SOURCE_DIR}/Tests/Java"
  3030. "${CMake_BINARY_DIR}/Tests/JavaJarSourceListAndOutput"
  3031. ${build_generator_args}
  3032. --build-project hello
  3033. --build-target hello3
  3034. --build-two-config
  3035. --build-run-dir "${CMake_BINARY_DIR}/Tests/JavaJarSourceListAndOutput/hello3"
  3036. --test-command ${JAVA_RUNTIME} -classpath hello3.jar HelloWorld)
  3037. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/JavaJarSourceListAndOutput")
  3038. # For next tests, java tool must have same architecture as toolchain
  3039. math(EXPR _object_mode "${CMAKE_SIZEOF_VOID_P} * 8")
  3040. execute_process(
  3041. COMMAND "${Java_JAVA_EXECUTABLE}" -d${_object_mode} -version
  3042. OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE _result
  3043. )
  3044. if(_result EQUAL 0)
  3045. ## next test is valid only if Java version is less than 1.10
  3046. if ("${Java_VERSION}" VERSION_LESS 1.10)
  3047. if(_isMultiConfig)
  3048. set (JAVAH_LIBRARY_PATH ${CMake_BINARY_DIR}/Tests/JavaJavah/$<CONFIGURATION>)
  3049. else()
  3050. set (JAVAH_LIBRARY_PATH ${CMake_BINARY_DIR}/Tests/JavaJavah)
  3051. endif()
  3052. add_test(NAME Java.Javah COMMAND ${CMAKE_CTEST_COMMAND}
  3053. --build-and-test
  3054. "${CMake_SOURCE_DIR}/Tests/JavaJavah"
  3055. "${CMake_BINARY_DIR}/Tests/JavaJavah"
  3056. ${build_generator_args}
  3057. --build-project helloJavah
  3058. --build-two-config
  3059. --build-run-dir "${CMake_BINARY_DIR}/Tests/JavaJavah/"
  3060. --test-command ${JAVA_RUNTIME} -Djava.library.path=${JAVAH_LIBRARY_PATH} -classpath hello3.jar HelloWorld2)
  3061. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/JavaJavah")
  3062. endif()
  3063. ## next test is valid only if Java is, at least, version 1.8
  3064. if (NOT "${Java_VERSION}" VERSION_LESS 1.8)
  3065. if(_isMultiConfig)
  3066. set (JAVANATIVEHEADERS_LIBRARY_PATH ${CMake_BINARY_DIR}/Tests/JavaNativeHeaders/$<CONFIGURATION>)
  3067. else()
  3068. set (JAVANATIVEHEADERS_LIBRARY_PATH ${CMake_BINARY_DIR}/Tests/JavaNativeHeaders)
  3069. endif()
  3070. add_test(NAME Java.NativeHeaders COMMAND ${CMAKE_CTEST_COMMAND}
  3071. --build-and-test
  3072. "${CMake_SOURCE_DIR}/Tests/JavaNativeHeaders"
  3073. "${CMake_BINARY_DIR}/Tests/JavaNativeHeaders"
  3074. ${build_generator_args}
  3075. --build-project helloJavaNativeHeaders
  3076. --build-two-config
  3077. --build-run-dir "${CMake_BINARY_DIR}/Tests/JavaNativeHeaders/"
  3078. --test-command ${JAVA_RUNTIME} -Djava.library.path=${JAVANATIVEHEADERS_LIBRARY_PATH} -classpath hello4.jar HelloWorld3)
  3079. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/JavaNativeHeaders")
  3080. endif()
  3081. endif()
  3082. endif()
  3083. endif()
  3084. endif()
  3085. # add some cross compiler tests, for now only with makefile based generators
  3086. if(CMAKE_GENERATOR MATCHES "Makefiles")
  3087. # if sdcc is found, build the SimpleCOnly project with sdcc
  3088. find_program(SDCC_EXECUTABLE sdcc)
  3089. mark_as_advanced(SDCC_EXECUTABLE)
  3090. if(SDCC_EXECUTABLE)
  3091. add_test(SimpleCOnly_sdcc ${CMAKE_CTEST_COMMAND}
  3092. --build-and-test
  3093. "${CMake_SOURCE_DIR}/Tests/SimpleCOnly"
  3094. "${CMake_BINARY_DIR}/Tests/SimpleCOnly_sdcc"
  3095. ${build_generator_args}
  3096. --build-project SimpleC
  3097. --build-options
  3098. "-DCMAKE_SYSTEM_NAME=Generic"
  3099. "-DCMAKE_C_COMPILER=${SDCC_EXECUTABLE}")
  3100. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/SimpleCOnly_sdcc")
  3101. endif()
  3102. # If a Linux -> MinGW cross compiler is found then try it
  3103. find_program(MINGW_CC_LINUX2WIN_EXECUTABLE i586-mingw32msvc-gcc)
  3104. find_program(MINGW_CXX_LINUX2WIN_EXECUTABLE i586-mingw32msvc-g++)
  3105. find_program(MINGW_RC_LINUX2WIN_EXECUTABLE i586-mingw32msvc-windres)
  3106. mark_as_advanced(MINGW_CC_LINUX2WIN_EXECUTABLE MINGW_CXX_LINUX2WIN_EXECUTABLE MINGW_RC_LINUX2WIN_EXECUTABLE)
  3107. if(MINGW_CC_LINUX2WIN_EXECUTABLE AND MINGW_CXX_LINUX2WIN_EXECUTABLE AND MINGW_RC_LINUX2WIN_EXECUTABLE)
  3108. add_test(Simple_Mingw_Linux2Win ${CMAKE_CTEST_COMMAND}
  3109. --build-and-test
  3110. "${CMake_SOURCE_DIR}/Tests/Simple"
  3111. "${CMake_BINARY_DIR}/Tests/Simple_Mingw_Linux2Win"
  3112. ${build_generator_args}
  3113. --build-project Simple
  3114. --build-options
  3115. "-DCMAKE_SYSTEM_NAME=Windows"
  3116. "-DCMAKE_C_COMPILER=${MINGW_CC_LINUX2WIN_EXECUTABLE}"
  3117. "-DCMAKE_CXX_COMPILER=${MINGW_CXX_LINUX2WIN_EXECUTABLE}"
  3118. "-DCMAKE_RC_COMPILER=${MINGW_RC_LINUX2WIN_EXECUTABLE}"
  3119. )
  3120. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Simple_Mingw_Linux2Win")
  3121. endif()
  3122. endif()
  3123. if(CMAKE_TEST_PROJECT_CSE_DIR)
  3124. set(script "${CMAKE_TEST_PROJECT_CSE_DIR}/BuildProjectCSE.cmake")
  3125. if(NOT EXISTS "${script}")
  3126. set(script "${CMAKE_TEST_PROJECT_CSE_DIR}/cse_build.cmake")
  3127. endif()
  3128. if(NOT EXISTS "${script}")
  3129. message("warning: CMAKE_TEST_PROJECT_CSE_DIR set, but no build script found...")
  3130. endif()
  3131. add_test(BuildCSE ${CMAKE_CTEST_COMMAND} -V -S "${script}")
  3132. set_tests_properties(BuildCSE PROPERTIES TIMEOUT 5400)
  3133. endif()
  3134. if(CMAKE_TEST_PLPLOT_DIR)
  3135. add_test(plplot ${CMAKE_CTEST_COMMAND} -V -S ${CMAKE_TEST_PLPLOT_DIR}/../../EasyDashboardScripts/plplot.cmake )
  3136. set_tests_properties ( plplot PROPERTIES TIMEOUT 5400)
  3137. endif()
  3138. if(CMAKE_TEST_CHICKEN_DIR)
  3139. add_test(Chicken ${CMAKE_CTEST_COMMAND} -V -S ${CMAKE_TEST_CHICKEN_DIR}/../../EasyDashboardScripts/Chicken.cmake )
  3140. set_tests_properties ( Chicken PROPERTIES TIMEOUT 5400)
  3141. endif()
  3142. if(CMAKE_TEST_KDELIBS_ALPHA_1_DIR)
  3143. add_test(KDELibsAlpha1 ${CMAKE_CTEST_COMMAND} -V -S ${CMAKE_TEST_KDELIBS_ALPHA_1_DIR}/../../EasyDashboardScripts/kdelibs.cmake )
  3144. set_tests_properties ( KDELibsAlpha1 PROPERTIES TIMEOUT 5400)
  3145. endif()
  3146. # If this is not an in-source build, provide a target to wipe out
  3147. # all the test build directories.
  3148. if(NOT EXISTS "${CMake_BINARY_DIR}/CMakeLists.txt")
  3149. configure_file(${CMake_SOURCE_DIR}/Tests/test_clean.cmake.in
  3150. ${CMake_BINARY_DIR}/Tests/test_clean.cmake @ONLY)
  3151. add_custom_target(test_clean
  3152. COMMAND ${CMAKE_COMMAND} -P ${CMake_BINARY_DIR}/Tests/test_clean.cmake
  3153. COMMENT "Removing test build directories."
  3154. )
  3155. endif()
  3156. # Define a set of "contract" tests, each activated by a cache entry
  3157. # named "CMake_TEST_CONTRACT_<project>". For each Contract test,
  3158. # the project should provide a directory with a CMakeLists.txt file
  3159. # that uses ExternalProject to download and configure the project.
  3160. # The directory should also contain a Configure.cmake file that
  3161. # sets "CMake_TEST_CONTRACT_<project>_<var>" variables to configure
  3162. # the code below.
  3163. foreach(project
  3164. PLplot
  3165. Trilinos
  3166. VTK
  3167. )
  3168. if(CMake_TEST_CONTRACT_${project})
  3169. include(Contracts/${project}/Configure.cmake)
  3170. ADD_TEST_MACRO(Contracts.${project} ${CMake_TEST_CONTRACT_${project}_RUN_TEST})
  3171. # The external projects may take a long time to build.
  3172. if(DEFINED CMake_TEST_CONTRACT_${project}_TIMEOUT)
  3173. set(timeout ${CMake_TEST_CONTRACT_${project}_TIMEOUT})
  3174. elseif(CMake_TEST_CONTRACT_DEFAULT_TIMEOUT)
  3175. set(timeout ${CMake_TEST_CONTRACT_DEFAULT_TIMEOUT})
  3176. else()
  3177. set(timeout 21600)
  3178. endif()
  3179. set_property(TEST Contracts.${project} PROPERTY TIMEOUT "${timeout}")
  3180. endif()
  3181. endforeach()
  3182. if(TEST_CompileCommandOutput)
  3183. set(CompileCommandOutput_BUILD_OPTIONS
  3184. -DMAKE_SUPPORTS_SPACES=${MAKE_SUPPORTS_SPACES})
  3185. ADD_TEST_MACRO(CompileCommandOutput
  3186. "${CMake_BINARY_DIR}/Tests/CMakeLib/runcompilecommands")
  3187. endif()
  3188. add_test(IncludeDirectories ${CMAKE_CTEST_COMMAND}
  3189. --build-and-test
  3190. "${CMake_SOURCE_DIR}/Tests/IncludeDirectories"
  3191. "${CMake_BINARY_DIR}/Tests/IncludeDirectories"
  3192. --build-two-config
  3193. ${build_generator_args}
  3194. --build-project IncludeDirectories
  3195. --test-command IncludeDirectories)
  3196. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/IncludeDirectories")
  3197. if(CMAKE_GENERATOR MATCHES "^((Unix|MSYS) Makefiles|Ninja)$" AND
  3198. ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.4)
  3199. OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
  3200. OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")))
  3201. add_test(IncludeDirectoriesCPATH ${CMAKE_CTEST_COMMAND}
  3202. --build-and-test
  3203. "${CMake_SOURCE_DIR}/Tests/IncludeDirectoriesCPATH"
  3204. "${CMake_BINARY_DIR}/Tests/IncludeDirectoriesCPATH"
  3205. --build-two-config
  3206. ${build_generator_args}
  3207. --build-project IncludeDirectoriesCPATH)
  3208. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/IncludeDirectoriesCPATH")
  3209. set_tests_properties(IncludeDirectoriesCPATH
  3210. PROPERTIES
  3211. ENVIRONMENT "CPATH=${CMAKE_CURRENT_SOURCE_DIR}/IncludeDirectoriesCPATH/viacpath")
  3212. endif()
  3213. add_test(InterfaceLinkLibraries ${CMAKE_CTEST_COMMAND}
  3214. --build-and-test
  3215. "${CMake_SOURCE_DIR}/Tests/InterfaceLinkLibraries"
  3216. "${CMake_BINARY_DIR}/Tests/InterfaceLinkLibraries"
  3217. --build-two-config
  3218. ${build_generator_args}
  3219. --build-project InterfaceLinkLibraries
  3220. --test-command InterfaceLinkLibraries)
  3221. list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/InterfaceLinkLibraries")
  3222. if(NOT CMake_TEST_EXTERNAL_CMAKE)
  3223. add_subdirectory(CMakeTests)
  3224. endif()
  3225. endif()