CMakeLists.txt 139 KB

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