complex.cxx 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692
  1. #include "cmTestConfigure.h"
  2. #include "cmVersion.h"
  3. #include "ExtraSources/file1.h"
  4. #include "file2.h"
  5. #include "sharedFile.h"
  6. extern "C" {
  7. #include "testConly.h"
  8. }
  9. #include "cmStandardIncludes.h"
  10. #include "cmSystemTools.h"
  11. int cm_passed = 0;
  12. int cm_failed = 0;
  13. // Here is a stupid function that tries to use std::string methods
  14. // so that the dec cxx compiler will instantiate the stuff that
  15. // we are using from the CMakeLib library....
  16. void ForceStringUse()
  17. {
  18. std::vector<std::string> v;
  19. std::vector<std::string> v2;
  20. v = v2;
  21. std::string cachetest = CACHE_TEST_VAR_INTERNAL;
  22. v.push_back(cachetest);
  23. v2 = v;
  24. std::string x(5,'x');
  25. char buff[5];
  26. x.copy(buff, 1, 0);
  27. x[0] = 'a';
  28. std::string::size_type pos = 0;
  29. x.replace(pos, pos, pos, 'x');
  30. std::string copy = cachetest;
  31. cachetest.find("bar");
  32. cachetest.rfind("bar");
  33. copy.append(cachetest);
  34. copy = cachetest.substr(0, cachetest.size());
  35. }
  36. // ======================================================================
  37. void cmFailed(const char* Message, const char* m2= "")
  38. {
  39. std::cout << "FAILED: " << Message << m2 << "\n";
  40. cm_failed++;
  41. }
  42. // ======================================================================
  43. void cmPassed(const char* Message, const char* m2="")
  44. {
  45. std::cout << "Passed: " << Message << m2 << "\n";
  46. cm_passed++;
  47. }
  48. // ======================================================================
  49. void TestAndRemoveFile(const char* filename)
  50. {
  51. if (!cmSystemTools::FileExists(filename))
  52. {
  53. cmFailed("Could not find file: ", filename);
  54. }
  55. else
  56. {
  57. if (!cmSystemTools::RemoveFile(filename))
  58. {
  59. cmFailed("Unable to remove file. It does not imply that this test failed, but it *will* be corrupted thereafter if this file is not removed: ", filename);
  60. }
  61. else
  62. {
  63. cmPassed("Find and remove file: ", filename);
  64. }
  65. }
  66. }
  67. // ======================================================================
  68. void TestDir(const char* filename)
  69. {
  70. if (!cmSystemTools::FileExists(filename))
  71. {
  72. cmFailed("Could not find dir: ", filename);
  73. }
  74. else
  75. {
  76. if (!cmSystemTools::FileIsDirectory(filename))
  77. {
  78. cmFailed("Unable to check if file is a directory: ", filename);
  79. }
  80. else
  81. {
  82. cmPassed("Find dir: ", filename);
  83. }
  84. }
  85. }
  86. // ======================================================================
  87. int main()
  88. {
  89. if(sharedFunction() != 1)
  90. {
  91. cmFailed("Call to sharedFunction from shared library failed.");
  92. }
  93. else
  94. {
  95. cmPassed("Call to sharedFunction from shared library worked.");
  96. }
  97. if(CsharedFunction() != 1)
  98. {
  99. cmFailed("Call to C sharedFunction from shared library failed.");
  100. }
  101. else
  102. {
  103. cmPassed("Call to C sharedFunction from shared library worked.");
  104. }
  105. if(file1() != 1)
  106. {
  107. cmFailed("Call to file1 function from library failed.");
  108. }
  109. else
  110. {
  111. cmPassed("Call to file1 function returned 1.");
  112. }
  113. if(file2() != 1)
  114. {
  115. cmFailed("Call to file2 function from library failed.");
  116. }
  117. else
  118. {
  119. cmPassed("Call to file2 function returned 1.");
  120. }
  121. #ifndef TEST_CXX_FLAGS
  122. cmFailed("CMake CMAKE_CXX_FLAGS is not being passed to the compiler!");
  123. #else
  124. cmPassed("CMake CMAKE_CXX_FLAGS is being passed to the compiler.");
  125. #endif
  126. // ----------------------------------------------------------------------
  127. // Test ADD_DEFINITIONS
  128. #ifndef CMAKE_IS_FUN
  129. cmFailed("CMake is not fun, so it is broken and should be fixed.");
  130. #else
  131. cmPassed("CMAKE_IS_FUN is defined.");
  132. #endif
  133. // ----------------------------------------------------------------------
  134. // Test SET, VARIABLE_REQUIRES
  135. #ifdef SHOULD_NOT_BE_DEFINED
  136. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED is defined.");
  137. #else
  138. cmPassed("SHOULD_NOT_BE_DEFINED is not defined.");
  139. #endif
  140. #ifndef SHOULD_BE_DEFINED
  141. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED is not defined.\n");
  142. #else
  143. cmPassed("SHOULD_BE_DEFINED is defined.");
  144. #endif
  145. #ifndef ONE_VAR
  146. cmFailed("cmakedefine is broken, ONE_VAR is not defined.");
  147. #else
  148. cmPassed("ONE_VAR is defined.");
  149. #endif
  150. #ifndef ONE_VAR_IS_DEFINED
  151. cmFailed("cmakedefine, SET or VARIABLE_REQUIRES is broken, "
  152. "ONE_VAR_IS_DEFINED is not defined.");
  153. #else
  154. cmPassed("ONE_VAR_IS_DEFINED is defined.");
  155. #endif
  156. #ifdef ZERO_VAR
  157. cmFailed("cmakedefine is broken, ZERO_VAR is defined.");
  158. #else
  159. cmPassed("ZERO_VAR is not defined.");
  160. #endif
  161. #ifndef STRING_VAR
  162. cmFailed("the CONFIGURE_FILE command is broken, STRING_VAR is not defined.");
  163. #else
  164. if(strcmp(STRING_VAR, "CMake is great") != 0)
  165. {
  166. cmFailed("the SET or CONFIGURE_FILE command is broken. STRING_VAR == ",
  167. STRING_VAR);
  168. }
  169. else
  170. {
  171. cmPassed("STRING_VAR == ", STRING_VAR);
  172. }
  173. #endif
  174. // ----------------------------------------------------------------------
  175. // Test various IF/ELSE combinations
  176. #ifdef SHOULD_NOT_BE_DEFINED_NOT
  177. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_NOT is defined.");
  178. #else
  179. cmPassed("SHOULD_NOT_BE_DEFINED_NOT is not defined.");
  180. #endif
  181. #ifndef SHOULD_BE_DEFINED_NOT
  182. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_NOT is not defined.\n");
  183. #else
  184. cmPassed("SHOULD_BE_DEFINED_NOT is defined.");
  185. #endif
  186. #ifdef SHOULD_NOT_BE_DEFINED_NOT2
  187. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_NOT2 is defined.");
  188. #else
  189. cmPassed("SHOULD_NOT_BE_DEFINED_NOT2 is not defined.");
  190. #endif
  191. #ifndef SHOULD_BE_DEFINED_NOT2
  192. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_NOT2 is not defined.\n");
  193. #else
  194. cmPassed("SHOULD_BE_DEFINED_NOT2 is defined.");
  195. #endif
  196. #ifdef SHOULD_NOT_BE_DEFINED_AND
  197. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_AND is defined.");
  198. #else
  199. cmPassed("SHOULD_NOT_BE_DEFINED_AND is not defined.");
  200. #endif
  201. #ifndef SHOULD_BE_DEFINED_AND
  202. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_AND is not defined.\n");
  203. #else
  204. cmPassed("SHOULD_BE_DEFINED_AND is defined.");
  205. #endif
  206. #ifdef SHOULD_NOT_BE_DEFINED_AND2
  207. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_AND2 is defined.");
  208. #else
  209. cmPassed("SHOULD_NOT_BE_DEFINED_AND2 is not defined.");
  210. #endif
  211. #ifndef SHOULD_BE_DEFINED_AND2
  212. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_AND2 is not defined.\n");
  213. #else
  214. cmPassed("SHOULD_BE_DEFINED_AND2 is defined.");
  215. #endif
  216. #ifdef SHOULD_NOT_BE_DEFINED_OR
  217. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_OR is defined.");
  218. #else
  219. cmPassed("SHOULD_NOT_BE_DEFINED_OR is not defined.");
  220. #endif
  221. #ifndef SHOULD_BE_DEFINED_OR
  222. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_OR is not defined.\n");
  223. #else
  224. cmPassed("SHOULD_BE_DEFINED_OR is defined.");
  225. #endif
  226. #ifdef SHOULD_NOT_BE_DEFINED_OR2
  227. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_OR2 is defined.");
  228. #else
  229. cmPassed("SHOULD_NOT_BE_DEFINED_OR2 is not defined.");
  230. #endif
  231. #ifndef SHOULD_BE_DEFINED_OR2
  232. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_OR2 is not defined.\n");
  233. #else
  234. cmPassed("SHOULD_BE_DEFINED_OR2 is defined.");
  235. #endif
  236. #ifdef SHOULD_NOT_BE_DEFINED_MATCHES
  237. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_MATCHES is defined.");
  238. #else
  239. cmPassed("SHOULD_NOT_BE_DEFINED_MATCHES is not defined.");
  240. #endif
  241. #ifndef SHOULD_BE_DEFINED_MATCHES
  242. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_MATCHES is not defined.\n");
  243. #else
  244. cmPassed("SHOULD_BE_DEFINED_MATCHES is defined.");
  245. #endif
  246. #ifdef SHOULD_NOT_BE_DEFINED_MATCHES2
  247. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_MATCHES2 is defined.");
  248. #else
  249. cmPassed("SHOULD_NOT_BE_DEFINED_MATCHES2 is not defined.");
  250. #endif
  251. #ifndef SHOULD_BE_DEFINED_MATCHES2
  252. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_MATCHES2 is not defined.\n");
  253. #else
  254. cmPassed("SHOULD_BE_DEFINED_MATCHES2 is defined.");
  255. #endif
  256. #ifdef SHOULD_NOT_BE_DEFINED_COMMAND
  257. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_COMMAND is defined.");
  258. #else
  259. cmPassed("SHOULD_NOT_BE_DEFINED_COMMAND is not defined.");
  260. #endif
  261. #ifndef SHOULD_BE_DEFINED_COMMAND
  262. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_COMMAND is not defined.\n");
  263. #else
  264. cmPassed("SHOULD_BE_DEFINED_COMMAND is defined.");
  265. #endif
  266. #ifdef SHOULD_NOT_BE_DEFINED_COMMAND2
  267. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_COMMAND2 is defined.");
  268. #else
  269. cmPassed("SHOULD_NOT_BE_DEFINED_COMMAND2 is not defined.");
  270. #endif
  271. #ifndef SHOULD_BE_DEFINED_COMMAND2
  272. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_COMMAND2 is not defined.\n");
  273. #else
  274. cmPassed("SHOULD_BE_DEFINED_COMMAND2 is defined.");
  275. #endif
  276. #ifdef SHOULD_NOT_BE_DEFINED_EXISTS
  277. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_EXISTS is defined.");
  278. #else
  279. cmPassed("SHOULD_NOT_BE_DEFINED_EXISTS is not defined.");
  280. #endif
  281. #ifndef SHOULD_BE_DEFINED_EXISTS
  282. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_EXISTS is not defined.\n");
  283. #else
  284. cmPassed("SHOULD_BE_DEFINED_EXISTS is defined.");
  285. #endif
  286. #ifdef SHOULD_NOT_BE_DEFINED_EXISTS2
  287. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_EXISTS2 is defined.");
  288. #else
  289. cmPassed("SHOULD_NOT_BE_DEFINED_EXISTS2 is not defined.");
  290. #endif
  291. #ifndef SHOULD_BE_DEFINED_EXISTS2
  292. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_EXISTS2 is not defined.\n");
  293. #else
  294. cmPassed("SHOULD_BE_DEFINED_EXISTS2 is defined.");
  295. #endif
  296. // ----------------------------------------------------------------------
  297. // Test FOREACH
  298. #ifndef FOREACH_VAR1
  299. cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
  300. "FOREACH_VAR1 is not defined.");
  301. #else
  302. if(strcmp(FOREACH_VAR1, "VALUE1") != 0)
  303. {
  304. cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
  305. "FOREACH_VAR1 == ", FOREACH_VAR1);
  306. }
  307. else
  308. {
  309. cmPassed("FOREACH_VAR1 == ", FOREACH_VAR1);
  310. }
  311. #endif
  312. #ifndef FOREACH_VAR2
  313. cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
  314. "FOREACH_VAR2 is not defined.");
  315. #else
  316. if(strcmp(FOREACH_VAR2, "VALUE2") != 0)
  317. {
  318. cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
  319. "FOREACH_VAR2 == ", FOREACH_VAR2);
  320. }
  321. else
  322. {
  323. cmPassed("FOREACH_VAR2 == ", FOREACH_VAR2);
  324. }
  325. #endif
  326. #ifndef FOREACH_CONCAT
  327. cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
  328. "FOREACH_CONCAT is not defined.");
  329. #else
  330. if(strcmp(FOREACH_CONCAT, "abcdefg") != 0)
  331. {
  332. cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
  333. "FOREACH_CONCAT == ", FOREACH_CONCAT);
  334. }
  335. else
  336. {
  337. cmPassed("FOREACH_CONCAT == ", FOREACH_CONCAT);
  338. }
  339. #endif
  340. // ----------------------------------------------------------------------
  341. // Test FIND_FILE, FIND_PATH and various GET_FILENAME_COMPONENT combinations
  342. #ifndef FILENAME_VAR_PATH_NAME
  343. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  344. "FILENAME_VAR_PATH_NAME is not defined.");
  345. #else
  346. if(strcmp(FILENAME_VAR_PATH_NAME, "Complex") != 0)
  347. {
  348. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  349. "FILENAME_VAR_PATH_NAME == ", FILENAME_VAR_PATH_NAME);
  350. }
  351. else
  352. {
  353. cmPassed("FILENAME_VAR_PATH_NAME == ", FILENAME_VAR_PATH_NAME);
  354. }
  355. #endif
  356. #ifndef FILENAME_VAR_NAME
  357. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  358. "FILENAME_VAR_NAME is not defined.");
  359. #else
  360. if(strcmp(FILENAME_VAR_NAME, "VarTests.cmake") != 0)
  361. {
  362. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  363. "FILENAME_VAR_NAME == ", FILENAME_VAR_NAME);
  364. }
  365. else
  366. {
  367. cmPassed("FILENAME_VAR_NAME == ", FILENAME_VAR_NAME);
  368. }
  369. #endif
  370. #ifndef FILENAME_VAR_EXT
  371. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  372. "FILENAME_VAR_EXT is not defined.");
  373. #else
  374. if(strcmp(FILENAME_VAR_EXT, ".cmake") != 0)
  375. {
  376. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  377. "FILENAME_VAR_EXT == ", FILENAME_VAR_EXT);
  378. }
  379. else
  380. {
  381. cmPassed("FILENAME_VAR_EXT == ", FILENAME_VAR_EXT);
  382. }
  383. #endif
  384. #ifndef FILENAME_VAR_NAME_WE
  385. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  386. "FILENAME_VAR_NAME_WE is not defined.");
  387. #else
  388. if(strcmp(FILENAME_VAR_NAME_WE, "VarTests") != 0)
  389. {
  390. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  391. "FILENAME_VAR_NAME_WE == ", FILENAME_VAR_NAME_WE);
  392. }
  393. else
  394. {
  395. cmPassed("FILENAME_VAR_NAME_WE == ", FILENAME_VAR_NAME_WE);
  396. }
  397. #endif
  398. #ifndef PATH_VAR_NAME
  399. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  400. "PATH_VAR_NAME is not defined.");
  401. #else
  402. if(strcmp(PATH_VAR_NAME, "Complex") != 0)
  403. {
  404. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  405. "PATH_VAR_NAME == ", PATH_VAR_NAME);
  406. }
  407. else
  408. {
  409. cmPassed("PATH_VAR_NAME == ", PATH_VAR_NAME);
  410. }
  411. #endif
  412. // ----------------------------------------------------------------------
  413. // Test LOAD_CACHE
  414. #ifndef CACHE_TEST_VAR1
  415. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
  416. "CACHE_TEST_VAR1 is not defined.");
  417. #else
  418. if(strcmp(CACHE_TEST_VAR1, "foo") != 0)
  419. {
  420. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
  421. "CACHE_TEST_VAR1 == ", CACHE_TEST_VAR1);
  422. }
  423. else
  424. {
  425. cmPassed("CACHE_TEST_VAR1 == ", CACHE_TEST_VAR1);
  426. }
  427. #endif
  428. #ifndef CACHE_TEST_VAR2
  429. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
  430. "CACHE_TEST_VAR2 is not defined.");
  431. #else
  432. if(strcmp(CACHE_TEST_VAR2, "bar") != 0)
  433. {
  434. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
  435. "CACHE_TEST_VAR2 == ", CACHE_TEST_VAR2);
  436. }
  437. else
  438. {
  439. cmPassed("CACHE_TEST_VAR2 == ", CACHE_TEST_VAR2);
  440. }
  441. #endif
  442. #ifndef CACHE_TEST_VAR3
  443. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
  444. "CACHE_TEST_VAR3 is not defined.");
  445. #else
  446. if(strcmp(CACHE_TEST_VAR3, "1") != 0)
  447. {
  448. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
  449. "CACHE_TEST_VAR3 == ", CACHE_TEST_VAR3);
  450. }
  451. else
  452. {
  453. cmPassed("CACHE_TEST_VAR3 == ", CACHE_TEST_VAR3);
  454. }
  455. #endif
  456. #ifdef CACHE_TEST_VAR_EXCLUDED
  457. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command or cmakedefine is broken, "
  458. "CACHE_TEST_VAR_EXCLUDED is defined (should not have been loaded).");
  459. #else
  460. cmPassed("CACHE_TEST_VAR_EXCLUDED is not defined.");
  461. #endif
  462. #ifndef CACHE_TEST_VAR_INTERNAL
  463. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
  464. "CACHE_TEST_VAR_INTERNAL is not defined.");
  465. #else
  466. std::string cachetest = CACHE_TEST_VAR_INTERNAL;
  467. if(cachetest != "bar")
  468. {
  469. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
  470. "CACHE_TEST_VAR_INTERNAL == ", CACHE_TEST_VAR_INTERNAL);
  471. }
  472. else
  473. {
  474. cmPassed("CACHE_TEST_VAR_INTERNAL == ", CACHE_TEST_VAR_INTERNAL);
  475. }
  476. #endif
  477. // ----------------------------------------------------------------------
  478. // A post-build custom-command has been attached to the lib (see Library/).
  479. // It runs ${CREATE_FILE_EXE} which will create a file.
  480. // It also copies that file again using CCOMMAND.
  481. //
  482. // WARNING: if you run 'complex' manually, this *will* fail, because
  483. // the file was removed the last time 'complex' was run, and it is
  484. // only created during a build.
  485. TestAndRemoveFile(BINARY_DIR "/Library/postbuild.txt");
  486. TestAndRemoveFile(BINARY_DIR "/Library/postbuild2.txt");
  487. // ----------------------------------------------------------------------
  488. // A custom target has been created (see Library/).
  489. // It runs ${CREATE_FILE_EXE} which will create a file.
  490. //
  491. // WARNING: if you run 'complex' manually, this *will* fail, because
  492. // the file was removed the last time 'complex' was run, and it is
  493. // only created during a build.
  494. TestAndRemoveFile(BINARY_DIR "/Library/custom_target1.txt");
  495. // ----------------------------------------------------------------------
  496. // A directory has been created.
  497. TestDir(BINARY_DIR "/make_dir");
  498. // ----------------------------------------------------------------------
  499. // Test OUTPUT_REQUIRED_FILES
  500. // The files required by 'complex' have been output to a file.
  501. // The contents of this file is not tested (absolute paths).
  502. //
  503. // WARNING: if you run 'complex' manually, this *will* fail, because
  504. // the file was removed the last time 'complex' was run, and it is
  505. // only created during a build.
  506. TestAndRemoveFile(BINARY_DIR "/Executable/Temp/complex-required.txt");
  507. // ----------------------------------------------------------------------
  508. // Test FIND_LIBRARY
  509. #ifndef FIND_DUMMY_LIB
  510. cmFailed("the CONFIGURE_FILE command is broken, "
  511. "FIND_DUMMY_LIB is not defined.");
  512. #else
  513. if(strstr(FIND_DUMMY_LIB, "dummylib") == NULL)
  514. {
  515. cmFailed("the FIND_LIBRARY or CONFIGURE_FILE command is broken, "
  516. "FIND_DUMMY_LIB == ", FIND_DUMMY_LIB);
  517. }
  518. else
  519. {
  520. cmPassed("FIND_DUMMY_LIB == ", FIND_DUMMY_LIB);
  521. }
  522. #endif
  523. // ----------------------------------------------------------------------
  524. // Test SET_SOURCE_FILES_PROPERTIES
  525. #ifndef FILE_HAS_EXTRA_COMPILE_FLAGS
  526. cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting FILE_HAS_EXTRA_COMPILE_FLAGS flag");
  527. #else
  528. cmPassed("SET_SOURCE_FILES_PROPERTIES succeeded in setting FILE_HAS_EXTRA_COMPILE_FLAGS flag");
  529. #endif
  530. #ifndef FILE_HAS_ABSTRACT
  531. cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting ABSTRACT flag");
  532. #else
  533. cmPassed("SET_SOURCE_FILES_PROPERTIES succeeded in setting ABSTRACT flag");
  534. #endif
  535. #ifndef FILE_HAS_WRAP_EXCLUDE
  536. cmFailed("FILE_HAS_WRAP_EXCLUDE failed at setting WRAP_EXCLUDE flag");
  537. #else
  538. cmPassed("FILE_HAS_WRAP_EXCLUDE succeeded in setting WRAP_EXCLUDE flag");
  539. #endif
  540. #ifndef FILE_COMPILE_FLAGS
  541. cmFailed("the CONFIGURE_FILE command is broken, FILE_COMPILE_FLAGS is not defined.");
  542. #else
  543. if(strcmp(FILE_COMPILE_FLAGS, "-foo -bar") != 0)
  544. {
  545. cmFailed("the SET_SOURCE_FILES_PROPERTIES or CONFIGURE_FILE command is broken. FILE_COMPILE_FLAGS == ",
  546. FILE_COMPILE_FLAGS);
  547. }
  548. else
  549. {
  550. cmPassed("SET_SOURCE_FILES_PROPERTIES succeeded in setting extra flags == ", FILE_COMPILE_FLAGS);
  551. }
  552. #endif
  553. // ----------------------------------------------------------------------
  554. // Test registry (win32)
  555. #if defined(_WIN32) && !defined(__CYGWIN__)
  556. #ifndef REGISTRY_TEST_PATH
  557. cmFailed("the CONFIGURE_FILE command is broken, REGISTRY_TEST_PATH is not defined.");
  558. #else
  559. if(stricmp(REGISTRY_TEST_PATH, BINARY_DIR "/registry_dir") != 0)
  560. {
  561. cmFailed("the 'read registry value' function or CONFIGURE_FILE command is broken. REGISTRY_TEST_PATH == ",
  562. REGISTRY_TEST_PATH);
  563. }
  564. else
  565. {
  566. cmPassed("REGISTRY_TEST_PATH == ", REGISTRY_TEST_PATH);
  567. }
  568. #endif
  569. #endif // defined(_WIN32) && !defined(__CYGWIN__)
  570. if(strcmp(CMAKE_MINIMUM_REQUIRED_VERSION, "1.3") == 0)
  571. {
  572. cmPassed("CMAKE_MINIMUM_REQUIRED_VERSION is set to 1.3");
  573. }
  574. else
  575. {
  576. cmFailed("CMAKE_MINIMUM_REQUIRED_VERSION is not set to the expected 1.3");
  577. }
  578. // ----------------------------------------------------------------------
  579. // Test REMOVE command
  580. if (strcmp("a;b;d",REMOVE_STRING))
  581. {
  582. cmPassed("REMOVE is working");
  583. }
  584. else
  585. {
  586. cmFailed("REMOVE is not working");
  587. }
  588. // ----------------------------------------------------------------------
  589. // Test SEPARATE_ARGUMENTS
  590. if(strcmp("a;b;c", TEST_SEP) == 0)
  591. {
  592. cmPassed("SEPARATE_ARGUMENTS is working");
  593. }
  594. else
  595. {
  596. cmFailed("SEPARATE_ARGUMENTS is not working");
  597. }
  598. // ----------------------------------------------------------------------
  599. // Summary
  600. std::cout << "Passed: " << cm_passed << "\n";
  601. if(cm_failed)
  602. {
  603. std::cout << "Failed: " << cm_failed << "\n";
  604. return cm_failed;
  605. }
  606. return 0;
  607. }