CMakeLists.txt 145 KB

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