CMakeLists.txt 147 KB

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