CMakeLists.txt 142 KB

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