CMakeLists.txt 141 KB

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