bootstrap 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383
  1. #!/bin/sh
  2. #=========================================================================
  3. #
  4. # Program: CMake - Cross-Platform Makefile Generator
  5. # Module: $RCSfile$
  6. # Language: Bourne Shell
  7. # Date: $Date$
  8. # Version: $Revision$
  9. #
  10. # Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
  11. # See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
  12. #
  13. # This software is distributed WITHOUT ANY WARRANTY; without even
  14. # the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  15. # PURPOSE. See the above copyright notices for more information.
  16. #
  17. #=========================================================================
  18. # Version number extraction function.
  19. cmake_version_component()
  20. {
  21. cat "${cmake_source_dir}/CMakeLists.txt" | sed -n "
  22. /^SET(CMake_VERSION_${1}/ {s/SET(CMake_VERSION_${1} *\([0-9]*\))/\1/;p;}
  23. "
  24. }
  25. cmake_date_stamp_component()
  26. {
  27. cat "${cmake_source_dir}/Source/kwsys/kwsysDateStamp.cmake" | sed -n "
  28. /KWSYS_DATE_STAMP_${1}/ {s/^.* \([0-9][0-9]*\))$/\1/;p;}
  29. "
  30. }
  31. # Detect system and directory information.
  32. cmake_system=`uname`
  33. cmake_source_dir=`echo $0 | sed -n '/\//{s/\/[^\/]*$//;p;}'`
  34. cmake_source_dir=`(cd "${cmake_source_dir}";pwd)`
  35. cmake_binary_dir=`pwd`
  36. cmake_bootstrap_dir="${cmake_binary_dir}/Bootstrap.cmk"
  37. cmake_version_major="`cmake_version_component MAJOR`"
  38. cmake_version_minor="`cmake_version_component MINOR`"
  39. cmake_version_patch="`cmake_version_component PATCH`"
  40. cmake_version="${cmake_version_major}.${cmake_version_minor}"
  41. cmake_version_full="${cmake_version_major}.${cmake_version_minor}.${cmake_version_patch}"
  42. cmake_date_stamp="`cmake_date_stamp_component YEAR``cmake_date_stamp_component MONTH``cmake_date_stamp_component DAY`"
  43. cmake_data_dir="/share/cmake-${cmake_version}"
  44. cmake_doc_dir="/doc/cmake-${cmake_version}"
  45. cmake_man_dir="/man"
  46. cmake_init_file=""
  47. cmake_bootstrap_system_libs=""
  48. cmake_bootstrap_qt_gui=""
  49. cmake_bootstrap_qt_qmake=""
  50. # Determine whether this is a MinGW environment.
  51. if echo "${cmake_system}" | grep MINGW >/dev/null 2>&1; then
  52. cmake_system_mingw=true
  53. else
  54. cmake_system_mingw=false
  55. fi
  56. # Determine whether this is OS X
  57. if echo "${cmake_system}" | grep Darwin >/dev/null 2>&1; then
  58. cmake_system_darwin=true
  59. else
  60. cmake_system_darwin=false
  61. fi
  62. # Determine whether this is BeOS
  63. if echo "${cmake_system}" | grep BeOS >/dev/null 2>&1; then
  64. cmake_system_beos=true
  65. else
  66. cmake_system_beos=false
  67. fi
  68. # Choose the generator to use for bootstrapping.
  69. if ${cmake_system_mingw}; then
  70. # Bootstrapping from an MSYS prompt.
  71. cmake_bootstrap_generator="MSYS Makefiles"
  72. else
  73. # Bootstrapping from a standard UNIX prompt.
  74. cmake_bootstrap_generator="Unix Makefiles"
  75. fi
  76. # Helper function to fix windows paths.
  77. cmake_fix_slashes ()
  78. {
  79. echo "$1" | sed 's/\\/\//g'
  80. }
  81. # Choose the default install prefix.
  82. if ${cmake_system_mingw}; then
  83. if [ "x${PROGRAMFILES}" != "x" ]; then
  84. cmake_default_prefix=`cmake_fix_slashes "${PROGRAMFILES}/CMake"`
  85. elif [ "x${ProgramFiles}" != "x" ]; then
  86. cmake_default_prefix=`cmake_fix_slashes "${ProgramFiles}/CMake"`
  87. elif [ "x${SYSTEMDRIVE}" != "x" ]; then
  88. cmake_default_prefix=`cmake_fix_slashes "${SYSTEMDRIVE}/Program Files/CMake"`
  89. elif [ "x${SystemDrive}" != "x" ]; then
  90. cmake_default_prefix=`cmake_fix_slashes "${SystemDrive}/Program Files/CMake"`
  91. else
  92. cmake_default_prefix="c:/Program Files/CMake"
  93. fi
  94. else
  95. cmake_default_prefix="/usr/local"
  96. fi
  97. CMAKE_KNOWN_C_COMPILERS="cc gcc xlc icc tcc"
  98. CMAKE_KNOWN_CXX_COMPILERS="aCC xlC CC g++ c++ icc como "
  99. CMAKE_KNOWN_MAKE_PROCESSORS="gmake make"
  100. CMAKE_PROBLEMATIC_FILES="\
  101. CMakeCache.txt \
  102. CMakeSystem.cmake \
  103. CMakeCCompiler.cmake \
  104. CMakeCXXCompiler.cmake \
  105. Source/cmConfigure.h \
  106. Source/CTest/Curl/config.h \
  107. Utilities/cmexpat/expatConfig.h \
  108. Utilities/cmexpat/expatDllConfig.h \
  109. "
  110. CMAKE_UNUSED_SOURCES="\
  111. cmGlobalXCodeGenerator \
  112. cmLocalXCodeGenerator \
  113. cmXCodeObject \
  114. cmXCode21Object \
  115. cmSourceGroup \
  116. "
  117. CMAKE_CXX_SOURCES="\
  118. cmake \
  119. cmakemain \
  120. cmakewizard \
  121. cmCommandArgumentLexer \
  122. cmCommandArgumentParser \
  123. cmCommandArgumentParserHelper \
  124. cmDepends \
  125. cmDependsC \
  126. cmDocumentationFormatter \
  127. cmDocumentationFormatterText \
  128. cmPolicies \
  129. cmProperty \
  130. cmPropertyMap \
  131. cmPropertyDefinition \
  132. cmPropertyDefinitionMap \
  133. cmMakeDepend \
  134. cmMakefile \
  135. cmExportFileGenerator \
  136. cmExportInstallFileGenerator \
  137. cmInstallDirectoryGenerator \
  138. cmGeneratedFileStream \
  139. cmGlobalGenerator \
  140. cmLocalGenerator \
  141. cmInstallGenerator \
  142. cmInstallExportGenerator \
  143. cmInstallFilesGenerator \
  144. cmInstallScriptGenerator \
  145. cmInstallTargetGenerator \
  146. cmSourceFile \
  147. cmSourceFileLocation \
  148. cmSystemTools \
  149. cmVersion \
  150. cmFileTimeComparison \
  151. cmGlobalUnixMakefileGenerator3 \
  152. cmLocalUnixMakefileGenerator3 \
  153. cmMakefileExecutableTargetGenerator \
  154. cmMakefileLibraryTargetGenerator \
  155. cmMakefileTargetGenerator \
  156. cmMakefileUtilityTargetGenerator \
  157. cmBootstrapCommands \
  158. cmCommands \
  159. cmTarget \
  160. cmTest \
  161. cmCustomCommand \
  162. cmDocumentVariables \
  163. cmCacheManager \
  164. cmListFileCache \
  165. cmComputeLinkDepends \
  166. cmComputeLinkInformation \
  167. cmOrderDirectories \
  168. cmComputeTargetDepends \
  169. cmComputeComponentGraph \
  170. cmExprLexer \
  171. cmExprParser \
  172. cmExprParserHelper \
  173. "
  174. if ${cmake_system_mingw}; then
  175. CMAKE_CXX_SOURCES="${CMAKE_CXX_SOURCES}\
  176. cmGlobalMSYSMakefileGenerator \
  177. cmGlobalMinGWMakefileGenerator \
  178. cmWin32ProcessExecution"
  179. fi
  180. CMAKE_C_SOURCES="\
  181. cmListFileLexer \
  182. "
  183. if ${cmake_system_mingw}; then
  184. KWSYS_C_SOURCES="\
  185. ProcessWin32 \
  186. String \
  187. System"
  188. KWSYS_C_MINGW_SOURCES="\
  189. ProcessFwd9x \
  190. EncodeExecutable"
  191. KWSYS_C_GENERATED_SOURCES="\
  192. cmsysProcessFwd9xEnc"
  193. else
  194. KWSYS_C_SOURCES="\
  195. ProcessUNIX \
  196. String \
  197. System"
  198. KWSYS_C_MINGW_SOURCES=""
  199. KWSYS_C_GENERATED_SOURCES=""
  200. fi
  201. KWSYS_CXX_SOURCES="\
  202. Directory \
  203. Glob \
  204. RegularExpression \
  205. SystemTools"
  206. KWSYS_FILES="\
  207. auto_ptr.hxx \
  208. Directory.hxx \
  209. Glob.hxx \
  210. Process.h \
  211. RegularExpression.hxx \
  212. String.h \
  213. String.hxx \
  214. System.h \
  215. SystemTools.hxx"
  216. KWSYS_IOS_FILES="
  217. fstream \
  218. iosfwd \
  219. iostream \
  220. sstream"
  221. # Display CMake bootstrap usage
  222. cmake_usage()
  223. {
  224. cat <<EOF
  225. Usage: $0 [options]
  226. Options: [defaults in brackets after descriptions]
  227. Configuration:
  228. --help print this message
  229. --version only print version information
  230. --verbose display more information
  231. --parallel=n bootstrap cmake in parallel, where n is
  232. number of nodes [1]
  233. --init=FILE use FILE for cmake initialization
  234. --system-libs use system-installed third-party libraries
  235. (for use only by package maintainers)
  236. --no-system-libs use cmake-provided third-party libraries
  237. (default)
  238. --qt-gui build the Qt-based GUI (requires Qt >= 4.2)
  239. --no-qt-gui do not build the Qt-based GUI (default)
  240. --qt-qmake=<qmake> use <qmake> as the qmake executable to find Qt
  241. Directory and file names:
  242. --prefix=PREFIX install files in tree rooted at PREFIX
  243. [${cmake_default_prefix}]
  244. --datadir=DIR install data files in PREFIX/DIR
  245. [/share/CMake]
  246. --docdir=DIR install documentation files in PREFIX/DIR
  247. [/doc/CMake]
  248. --mandir=DIR install man pages files in PREFIX/DIR/manN
  249. [/man]
  250. EOF
  251. exit 10
  252. }
  253. # Display CMake bootstrap usage
  254. cmake_version_display()
  255. {
  256. (
  257. # Get CMake version
  258. if echo "${cmake_version_full}" | grep "[0-9]\.[0-9]*[13579]\.[0-9]" > /dev/null 2>&1; then
  259. version="${cmake_version}-${cmake_date_stamp}"
  260. else
  261. version="${cmake_version}-${cmake_version_patch}"
  262. fi
  263. echo "CMake ${version}, Copyright (c) 2007 Kitware, Inc., Insight Consortium"
  264. )
  265. }
  266. # Display CMake bootstrap error, display the log file and exit
  267. cmake_error()
  268. {
  269. res=$1
  270. shift 1
  271. echo "---------------------------------------------"
  272. echo "Error when bootstrapping CMake:"
  273. echo "$*"
  274. echo "---------------------------------------------"
  275. if [ -f cmake_bootstrap.log ]; then
  276. echo "Log of errors: `pwd`/cmake_bootstrap.log"
  277. #cat cmake_bootstrap.log
  278. echo "---------------------------------------------"
  279. fi
  280. exit ${res}
  281. }
  282. # Replace KWSYS_NAMESPACE with cmsys
  283. cmake_replace_string ()
  284. {
  285. INFILE="$1"
  286. OUTFILE="$2"
  287. SEARCHFOR="$3"
  288. REPLACEWITH="$4"
  289. if [ -f "${INFILE}" ]; then
  290. cat "${INFILE}" |
  291. sed "s/\@${SEARCHFOR}\@/${REPLACEWITH}/g" > "${OUTFILE}.tmp"
  292. if [ -f "${OUTFILE}.tmp" ]; then
  293. if diff "${OUTFILE}" "${OUTFILE}.tmp" > /dev/null 2> /dev/null ; then
  294. #echo "Files are the same"
  295. rm -f "${OUTFILE}.tmp"
  296. else
  297. mv -f "${OUTFILE}.tmp" "${OUTFILE}"
  298. fi
  299. fi
  300. else
  301. cmake_error 1 "Cannot find file ${INFILE}"
  302. fi
  303. }
  304. cmake_kwsys_config_replace_string ()
  305. {
  306. INFILE="$1"
  307. OUTFILE="$2"
  308. shift 2
  309. APPEND="$*"
  310. if [ -f "${INFILE}" ]; then
  311. echo "${APPEND}" > "${OUTFILE}.tmp"
  312. cat "${INFILE}" |
  313. sed "/./ {s/\@KWSYS_NAMESPACE\@/cmsys/g;
  314. s/@KWSYS_BUILD_SHARED@/${KWSYS_BUILD_SHARED}/g;
  315. s/@KWSYS_LFS_AVAILABLE@/${KWSYS_LFS_AVAILABLE}/g;
  316. s/@KWSYS_LFS_REQUESTED@/${KWSYS_LFS_REQUESTED}/g;
  317. s/@KWSYS_NAME_IS_KWSYS@/${KWSYS_NAME_IS_KWSYS}/g;
  318. s/@KWSYS_IOS_USE_ANSI@/${KWSYS_IOS_USE_ANSI}/g;
  319. s/@KWSYS_IOS_HAVE_STD@/${KWSYS_IOS_HAVE_STD}/g;
  320. s/@KWSYS_IOS_USE_SSTREAM@/${KWSYS_IOS_USE_SSTREAM}/g;
  321. s/@KWSYS_IOS_USE_STRSTREAM_H@/${KWSYS_IOS_USE_STRSTREAM_H}/g;
  322. s/@KWSYS_IOS_USE_STRSTREA_H@/${KWSYS_IOS_USE_STRSTREA_H}/g;
  323. s/@KWSYS_STL_HAVE_STD@/${KWSYS_STL_HAVE_STD}/g;
  324. s/@KWSYS_STL_STRING_HAVE_ISTREAM@/${KWSYS_STL_STRING_HAVE_ISTREAM}/g;
  325. s/@KWSYS_STL_STRING_HAVE_OSTREAM@/${KWSYS_STL_STRING_HAVE_OSTREAM}/g;
  326. s/@KWSYS_STL_STRING_HAVE_NEQ_CHAR@/${KWSYS_STL_STRING_HAVE_NEQ_CHAR}/g;
  327. s/@KWSYS_STL_HAS_ITERATOR_TRAITS@/${KWSYS_STL_HAS_ITERATOR_TRAITS}/g;
  328. s/@KWSYS_STL_HAS_ITERATOR_CATEGORY@/${KWSYS_STL_HAS_ITERATOR_CATEGORY}/g;
  329. s/@KWSYS_STL_HAS___ITERATOR_CATEGORY@/${KWSYS_STL_HAS___ITERATOR_CATEGORY}/g;
  330. s/@KWSYS_STL_HAS_ALLOCATOR_TEMPLATE@/${KWSYS_STL_HAS_ALLOCATOR_TEMPLATE}/g;
  331. s/@KWSYS_STL_HAS_ALLOCATOR_NONTEMPLATE@/${KWSYS_STL_HAS_ALLOCATOR_NONTEMPLATE}/g;
  332. s/@KWSYS_STL_HAS_ALLOCATOR_REBIND@/${KWSYS_STL_HAS_ALLOCATOR_REBIND}/g;
  333. s/@KWSYS_STL_HAS_ALLOCATOR_MAX_SIZE_ARGUMENT@/${KWSYS_STL_HAS_ALLOCATOR_MAX_SIZE_ARGUMENT}/g;
  334. s/@KWSYS_STL_HAS_ALLOCATOR_OBJECTS@/${KWSYS_STL_HAS_ALLOCATOR_OBJECTS}/g;
  335. s/@KWSYS_CXX_HAS_CSTDDEF@/${KWSYS_CXX_HAS_CSTDDEF}/g;
  336. s/@KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS@/${KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS}/g;
  337. s/@KWSYS_CXX_HAS_MEMBER_TEMPLATES@/${KWSYS_CXX_HAS_MEMBER_TEMPLATES}/g;
  338. s/@KWSYS_CXX_HAS_FULL_SPECIALIZATION@/${KWSYS_CXX_HAS_FULL_SPECIALIZATION}/g;
  339. s/@KWSYS_CXX_HAS_ARGUMENT_DEPENDENT_LOOKUP@/${KWSYS_CXX_HAS_ARGUMENT_DEPENDENT_LOOKUP}/g;
  340. s/@KWSYS_STAT_HAS_ST_MTIM@/${KWSYS_STAT_HAS_ST_MTIM}/g;}" >> "${OUTFILE}.tmp"
  341. if [ -f "${OUTFILE}.tmp" ]; then
  342. if diff "${OUTFILE}" "${OUTFILE}.tmp" > /dev/null 2> /dev/null ; then
  343. #echo "Files are the same"
  344. rm -f "${OUTFILE}.tmp"
  345. else
  346. mv -f "${OUTFILE}.tmp" "${OUTFILE}"
  347. fi
  348. fi
  349. else
  350. cmake_error 2 "Cannot find file ${INFILE}"
  351. fi
  352. }
  353. # Write string into a file
  354. cmake_report ()
  355. {
  356. FILE=$1
  357. shift
  358. echo "$*" >> ${FILE}
  359. }
  360. # Escape spaces in strings
  361. cmake_escape ()
  362. {
  363. echo $1 | sed "s/ /\\\\ /g"
  364. }
  365. # Write message to the log
  366. cmake_log ()
  367. {
  368. echo "$*" >> cmake_bootstrap.log
  369. }
  370. # Return temp file
  371. cmake_tmp_file ()
  372. {
  373. echo "cmake_bootstrap_$$.test"
  374. }
  375. # Run a compiler test. First argument is compiler, second one are compiler
  376. # flags, third one is test source file to be compiled
  377. cmake_try_run ()
  378. {
  379. COMPILER=$1
  380. FLAGS=$2
  381. TESTFILE=$3
  382. if [ ! -f "${TESTFILE}" ]; then
  383. echo "Test file ${TESTFILE} missing. Please verify your CMake source tree."
  384. exit 4
  385. fi
  386. TMPFILE=`cmake_tmp_file`
  387. echo "Try: ${COMPILER}"
  388. echo "Line: ${COMPILER} ${FLAGS} ${TESTFILE} -o ${TMPFILE}"
  389. echo "---------- file -----------------------"
  390. cat "${TESTFILE}"
  391. echo "------------------------------------------"
  392. "${COMPILER}" ${FLAGS} "${TESTFILE}" -o "${TMPFILE}"
  393. RES=$?
  394. if [ "${RES}" -ne "0" ]; then
  395. echo "Test failed to compile"
  396. return 1
  397. fi
  398. if [ ! -f "${TMPFILE}" ] && [ ! -f "${TMPFILE}.exe" ]; then
  399. echo "Test failed to produce executable"
  400. return 2
  401. fi
  402. ./${TMPFILE}
  403. RES=$?
  404. rm -f "${TMPFILE}"
  405. if [ "${RES}" -ne "0" ]; then
  406. echo "Test produced non-zero return code"
  407. return 3
  408. fi
  409. echo "Test succeded"
  410. return 0
  411. }
  412. # Run a make test. First argument is the make interpreter.
  413. cmake_try_make ()
  414. {
  415. MAKE_PROC="$1"
  416. MAKE_FLAGS="$2"
  417. echo "Try: ${MAKE_PROC}"
  418. "${MAKE_PROC}" ${MAKE_FLAGS}
  419. RES=$?
  420. if [ "${RES}" -ne "0" ]; then
  421. echo "${MAKE_PROC} does not work"
  422. return 1
  423. fi
  424. if [ ! -f "test" ] && [ ! -f "test.exe" ]; then
  425. echo "${COMPILER} does not produce output"
  426. return 2
  427. fi
  428. ./test
  429. RES=$?
  430. rm -f "test"
  431. if [ "${RES}" -ne "0" ]; then
  432. echo "${MAKE_PROC} produces strange executable"
  433. return 3
  434. fi
  435. echo "${MAKE_PROC} works"
  436. return 0
  437. }
  438. # Parse arguments
  439. cmake_verbose=
  440. cmake_parallel_make=
  441. cmake_prefix_dir="${cmake_default_prefix}"
  442. for a in "$@"; do
  443. if echo $a | grep "^--prefix=" > /dev/null 2> /dev/null; then
  444. cmake_prefix_dir=`echo $a | sed "s/^--prefix=//"`
  445. cmake_prefix_dir=`cmake_fix_slashes "${cmake_prefix_dir}"`
  446. fi
  447. if echo $a | grep "^--parallel=" > /dev/null 2> /dev/null; then
  448. cmake_parallel_make=`echo $a | sed "s/^--parallel=//" | grep "[0-9][0-9]*"`
  449. fi
  450. if echo $a | grep "^--datadir=" > /dev/null 2> /dev/null; then
  451. cmake_data_dir=`echo $a | sed "s/^--datadir=//"`
  452. fi
  453. if echo $a | grep "^--docdir=" > /dev/null 2> /dev/null; then
  454. cmake_doc_dir=`echo $a | sed "s/^--docdir=//"`
  455. fi
  456. if echo $a | grep "^--mandir=" > /dev/null 2> /dev/null; then
  457. cmake_man_dir=`echo $a | sed "s/^--mandir=//"`
  458. fi
  459. if echo $a | grep "^--init=" > /dev/null 2> /dev/null; then
  460. cmake_init_file=`echo $a | sed "s/^--init=//"`
  461. fi
  462. if echo $a | grep "^--system-libs" > /dev/null 2> /dev/null; then
  463. cmake_bootstrap_system_libs="-DCMAKE_USE_SYSTEM_LIBRARIES=1"
  464. fi
  465. if echo $a | grep "^--no-system-libs" > /dev/null 2> /dev/null; then
  466. cmake_bootstrap_system_libs="-DCMAKE_USE_SYSTEM_LIBRARIES=0"
  467. fi
  468. if echo $a | grep "^--qt-gui" > /dev/null 2> /dev/null; then
  469. cmake_bootstrap_qt_gui="1"
  470. fi
  471. if echo $a | grep "^--no-qt-gui" > /dev/null 2> /dev/null; then
  472. cmake_bootstrap_qt_gui="0"
  473. fi
  474. if echo $a | grep "^--qt-qmake=" > /dev/null 2> /dev/null; then
  475. cmake_bootstrap_qt_qmake=`echo $a | sed "s/^--qt-qmake=//"`
  476. fi
  477. if echo $a | grep "^--help" > /dev/null 2> /dev/null; then
  478. cmake_usage
  479. fi
  480. if echo $a | grep "^--version" > /dev/null 2> /dev/null; then
  481. cmake_version_display
  482. exit 2
  483. fi
  484. if echo $a | grep "^--verbose" > /dev/null 2> /dev/null; then
  485. cmake_verbose=TRUE
  486. fi
  487. done
  488. # If verbose, display some information about bootstrap
  489. if [ -n "${cmake_verbose}" ]; then
  490. echo "---------------------------------------------"
  491. echo "Source directory: ${cmake_source_dir}"
  492. echo "Binary directory: ${cmake_binary_dir}"
  493. echo "Prefix directory: ${cmake_prefix_dir}"
  494. echo "System: ${cmake_system}"
  495. if [ "x${cmake_parallel_make}" != "x" ]; then
  496. echo "Doing parallel make: ${cmake_parallel_make}"
  497. fi
  498. echo ""
  499. fi
  500. echo "---------------------------------------------"
  501. # Get CMake version
  502. echo "`cmake_version_display`"
  503. # Check for in-source build
  504. cmake_in_source_build=
  505. if [ -f "${cmake_binary_dir}/Source/cmake.cxx" -a \
  506. -f "${cmake_binary_dir}/Source/cmake.h" ]; then
  507. if [ -n "${cmake_verbose}" ]; then
  508. echo "Warning: This is an in-source build"
  509. fi
  510. cmake_in_source_build=TRUE
  511. fi
  512. # If this is not an in-source build, then Bootstrap stuff should not exist.
  513. if [ -z "${cmake_in_source_build}" ]; then
  514. # Did somebody bootstrap in the source tree?
  515. if [ -d "${cmake_source_dir}/Bootstrap.cmk" ]; then
  516. cmake_error 10 "Found directory \"${cmake_source_dir}/Bootstrap.cmk\".
  517. Looks like somebody did bootstrap CMake in the source tree, but now you are
  518. trying to do bootstrap in the binary tree. Please remove Bootstrap.cmk
  519. directory from the source tree."
  520. fi
  521. # Is there a cache in the source tree?
  522. for cmake_problematic_file in ${CMAKE_PROBLEMATIC_FILES}; do
  523. if [ -f "${cmake_source_dir}/${cmake_problematic_file}" ]; then
  524. cmake_error 10 "Found \"${cmake_source_dir}/${cmake_problematic_file}\".
  525. Looks like somebody tried to build CMake in the source tree, but now you are
  526. trying to do bootstrap in the binary tree. Please remove \"${cmake_problematic_file}\"
  527. from the source tree."
  528. fi
  529. done
  530. fi
  531. # Make bootstrap directory
  532. [ -d "${cmake_bootstrap_dir}" ] || mkdir "${cmake_bootstrap_dir}"
  533. if [ ! -d "${cmake_bootstrap_dir}" ]; then
  534. cmake_error 3 "Cannot create directory ${cmake_bootstrap_dir} to bootstrap CMake."
  535. fi
  536. cd "${cmake_bootstrap_dir}"
  537. [ -d "cmsys" ] || mkdir "cmsys"
  538. if [ ! -d "cmsys" ]; then
  539. cmake_error 4 "Cannot create directory ${cmake_bootstrap_dir}/cmsys"
  540. fi
  541. for a in stl ios; do
  542. [ -d "cmsys/${a}" ] || mkdir "cmsys/${a}"
  543. if [ ! -d "cmsys/${a}" ]; then
  544. cmake_error 5 "Cannot create directory ${cmake_bootstrap_dir}/cmsys/${a}"
  545. fi
  546. done
  547. # Delete all the bootstrap files
  548. rm -f "${cmake_bootstrap_dir}/cmake_bootstrap.log"
  549. rm -f "${cmake_bootstrap_dir}/cmConfigure.h.tmp"
  550. # If exist compiler flags, set them
  551. cmake_c_flags=${CFLAGS}
  552. cmake_cxx_flags=${CXXFLAGS}
  553. cmake_ld_flags=${LDFLAGS}
  554. # Add Carbon framework on Darwin
  555. if ${cmake_system_darwin}; then
  556. cmake_ld_flags="${LDFLAGS} -framework Carbon"
  557. fi
  558. # Add BeOS toolkits...
  559. if ${cmake_system_beos}; then
  560. cmake_ld_flags="${LDFLAGS} -lroot -lbe"
  561. fi
  562. # Test C compiler
  563. cmake_c_compiler=
  564. # If CC is set, use that for compiler, otherwise use list of known compilers
  565. if [ -n "${CC}" ]; then
  566. cmake_c_compilers="${CC}"
  567. else
  568. cmake_c_compilers="${CMAKE_KNOWN_C_COMPILERS}"
  569. fi
  570. # Check if C compiler works
  571. TMPFILE=`cmake_tmp_file`
  572. cat > "${TMPFILE}.c" <<EOF
  573. #ifdef __cplusplus
  574. # error "The CMAKE_C_COMPILER is set to a C++ compiler"
  575. #endif
  576. #include<stdio.h>
  577. #if defined(__CLASSIC_C__)
  578. int main(argc, argv)
  579. int argc;
  580. char* argv[];
  581. #else
  582. int main(int argc, char* argv[])
  583. #endif
  584. {
  585. printf("%d\n", (argv != 0));
  586. return argc-1;
  587. }
  588. EOF
  589. for a in ${cmake_c_compilers}; do
  590. if [ -z "${cmake_c_compiler}" ] && \
  591. cmake_try_run "${a}" "${cmake_c_flags}" "${TMPFILE}.c" >> cmake_bootstrap.log 2>&1; then
  592. cmake_c_compiler="${a}"
  593. fi
  594. done
  595. rm -f "${TMPFILE}.c"
  596. if [ -z "${cmake_c_compiler}" ]; then
  597. cmake_error 6 "Cannot find appropriate C compiler on this system.
  598. Please specify one using environment variable CC.
  599. See cmake_bootstrap.log for compilers attempted.
  600. "
  601. fi
  602. echo "C compiler on this system is: ${cmake_c_compiler} ${cmake_c_flags}"
  603. # Test CXX compiler
  604. cmake_cxx_compiler=
  605. # On Mac OSX, CC is the same as cc, so make sure not to try CC as c++ compiler.
  606. # If CC is set, use that for compiler, otherwise use list of known compilers
  607. if [ -n "${CXX}" ]; then
  608. cmake_cxx_compilers="${CXX}"
  609. else
  610. cmake_cxx_compilers="${CMAKE_KNOWN_CXX_COMPILERS}"
  611. fi
  612. # Check if C++ compiler works
  613. TMPFILE=`cmake_tmp_file`
  614. cat > "${TMPFILE}.cxx" <<EOF
  615. #if defined(TEST1)
  616. # include <iostream>
  617. #else
  618. # include <iostream.h>
  619. #endif
  620. class NeedCXX
  621. {
  622. public:
  623. NeedCXX() { this->Foo = 1; }
  624. int GetFoo() { return this->Foo; }
  625. private:
  626. int Foo;
  627. };
  628. int main()
  629. {
  630. NeedCXX c;
  631. #ifdef TEST3
  632. cout << c.GetFoo() << endl;
  633. #else
  634. std::cout << c.GetFoo() << std::endl;
  635. #endif
  636. return 0;
  637. }
  638. EOF
  639. for a in ${cmake_cxx_compilers}; do
  640. for b in 1 2 3; do
  641. if [ -z "${cmake_cxx_compiler}" ] && \
  642. cmake_try_run "${a}" "${cmake_cxx_flags} -DTEST${b}" "${TMPFILE}.cxx" >> cmake_bootstrap.log 2>&1; then
  643. cmake_cxx_compiler="${a}"
  644. fi
  645. done
  646. done
  647. rm -f "${TMPFILE}.cxx"
  648. if [ -z "${cmake_cxx_compiler}" ]; then
  649. cmake_error 7 "Cannot find appropriate C++ compiler on this system.
  650. Please specify one using environment variable CXX.
  651. See cmake_bootstrap.log for compilers attempted."
  652. fi
  653. echo "C++ compiler on this system is: ${cmake_cxx_compiler} ${cmake_cxx_flags}"
  654. # Test Make
  655. cmake_make_processor=
  656. cmake_make_flags=
  657. # If MAKE is set, use that for make processor, otherwise use list of known make
  658. if [ -n "${MAKE}" ]; then
  659. cmake_make_processors="${MAKE}"
  660. else
  661. cmake_make_processors="${CMAKE_KNOWN_MAKE_PROCESSORS}"
  662. fi
  663. TMPFILE="`cmake_tmp_file`_dir"
  664. rm -rf "${cmake_bootstrap_dir}/${TMPFILE}"
  665. mkdir "${cmake_bootstrap_dir}/${TMPFILE}"
  666. cd "${cmake_bootstrap_dir}/${TMPFILE}"
  667. cat>"Makefile"<<EOF
  668. test: test.c
  669. "${cmake_c_compiler}" -o test test.c
  670. EOF
  671. cat>"test.c"<<EOF
  672. #include <stdio.h>
  673. int main(){ printf("1\n"); return 0; }
  674. EOF
  675. cmake_original_make_flags="${cmake_make_flags}"
  676. if [ "x${cmake_parallel_make}" != "x" ]; then
  677. cmake_make_flags="${cmake_make_flags} -j ${cmake_parallel_make}"
  678. fi
  679. for a in ${cmake_make_processors}; do
  680. if [ -z "${cmake_make_processor}" ] && cmake_try_make "${a}" "${cmake_make_flags}" >> cmake_bootstrap.log 2>&1; then
  681. cmake_make_processor="${a}"
  682. fi
  683. done
  684. cmake_full_make_flags="${cmake_make_flags}"
  685. if [ "x${cmake_original_make_flags}" != "x${cmake_make_flags}" ]; then
  686. if [ -z "${cmake_make_processor}" ]; then
  687. cmake_make_flags="${cmake_original_make_flags}"
  688. for a in ${cmake_make_processors}; do
  689. if [ -z "${cmake_make_processor}" ] && cmake_try_make "${a}" "${cmake_make_flags}" >> cmake_bootstrap.log 2>&1; then
  690. cmake_make_processor="${a}"
  691. fi
  692. done
  693. fi
  694. fi
  695. cd "${cmake_bootstrap_dir}"
  696. rm -rf "${cmake_bootstrap_dir}/${TMPFILE}"
  697. if [ -z "${cmake_make_processor}" ]; then
  698. cmake_error 8 "Cannot find appropriate Makefile processor on this system.
  699. Please specify one using environment variable MAKE."
  700. fi
  701. echo "Makefile processor on this system is: ${cmake_make_processor}"
  702. if [ "x${cmake_full_make_flags}" != "x${cmake_make_flags}" ]; then
  703. echo "---------------------------------------------"
  704. echo "Makefile processor ${cmake_make_processor} does not support parallel build"
  705. echo "---------------------------------------------"
  706. fi
  707. # Ok, we have CC, CXX, and MAKE.
  708. # Test C++ compiler features
  709. # Are we GCC?
  710. TMPFILE=`cmake_tmp_file`
  711. cat > ${TMPFILE}.cxx <<EOF
  712. #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
  713. #include <iostream>
  714. int main() { std::cout << "This is GNU" << std::endl; return 0;}
  715. #endif
  716. EOF
  717. cmake_cxx_compiler_is_gnu=0
  718. if cmake_try_run "${cmake_cxx_compiler}" \
  719. "${cmake_cxx_flags}" "${TMPFILE}.cxx" >> cmake_bootstrap.log 2>&1; then
  720. cmake_cxx_compiler_is_gnu=1
  721. fi
  722. if [ "x${cmake_cxx_compiler_is_gnu}" = "x1" ]; then
  723. echo "${cmake_cxx_compiler} is GNU compiler"
  724. else
  725. echo "${cmake_cxx_compiler} is not GNU compiler"
  726. fi
  727. rm -f "${TMPFILE}.cxx"
  728. if [ "x${cmake_cxx_compiler_is_gnu}" != "x1" ]; then
  729. # Check for non-GNU compiler flags
  730. # If we are on IRIX, check for -LANG:std
  731. cmake_test_flags="-LANG:std"
  732. if [ "x${cmake_system}" = "xIRIX64" ]; then
  733. TMPFILE=`cmake_tmp_file`
  734. cat > ${TMPFILE}.cxx <<EOF
  735. #include <iostream>
  736. int main() { std::cout << "No need for ${cmake_test_flags}" << std::endl; return 0;}
  737. EOF
  738. cmake_need_lang_std=0
  739. if cmake_try_run "${cmake_cxx_compiler}" \
  740. "${cmake_cxx_flags}" "${TMPFILE}.cxx" >> cmake_bootstrap.log 2>&1; then
  741. :
  742. else
  743. if cmake_try_run "${cmake_cxx_compiler}" \
  744. "${cmake_cxx_flags} ${cmake_test_flags}" "${TMPFILE}.cxx" >> cmake_bootstrap.log 2>&1; then
  745. cmake_need_lang_std=1
  746. fi
  747. fi
  748. if [ "x${cmake_need_lang_std}" = "x1" ]; then
  749. cmake_cxx_flags="${cmake_cxx_flags} ${cmake_test_flags}"
  750. echo "${cmake_cxx_compiler} needs ${cmake_test_flags}"
  751. else
  752. echo "${cmake_cxx_compiler} does not need ${cmake_test_flags}"
  753. fi
  754. rm -f "${TMPFILE}.cxx"
  755. fi
  756. cmake_test_flags=
  757. # If we are on OSF, check for -timplicit_local -no_implicit_include
  758. cmake_test_flags="-timplicit_local -no_implicit_include"
  759. if [ "x${cmake_system}" = "xOSF1" ]; then
  760. TMPFILE=`cmake_tmp_file`
  761. cat > ${TMPFILE}.cxx <<EOF
  762. #include <iostream>
  763. int main() { std::cout << "We need ${cmake_test_flags}" << std::endl; return 0;}
  764. EOF
  765. cmake_need_flags=1
  766. if cmake_try_run "${cmake_cxx_compiler}" \
  767. "${cmake_cxx_flags} ${cmake_test_flags}" "${TMPFILE}.cxx" >> cmake_bootstrap.log 2>&1; then
  768. :
  769. else
  770. cmake_need_flags=0
  771. fi
  772. if [ "x${cmake_need_flags}" = "x1" ]; then
  773. cmake_cxx_flags="${cmake_cxx_flags} ${cmake_test_flags}"
  774. echo "${cmake_cxx_compiler} needs ${cmake_test_flags}"
  775. else
  776. echo "${cmake_cxx_compiler} does not need ${cmake_test_flags}"
  777. fi
  778. rm -f "${TMPFILE}.cxx"
  779. fi
  780. cmake_test_flags=
  781. # If we are on OSF, check for -std strict_ansi -nopure_cname
  782. cmake_test_flags="-std strict_ansi -nopure_cname"
  783. if [ "x${cmake_system}" = "xOSF1" ]; then
  784. TMPFILE=`cmake_tmp_file`
  785. cat > ${TMPFILE}.cxx <<EOF
  786. #include <iostream>
  787. int main() { std::cout << "We need ${cmake_test_flags}" << std::endl; return 0;}
  788. EOF
  789. cmake_need_flags=1
  790. if cmake_try_run "${cmake_cxx_compiler}" \
  791. "${cmake_cxx_flags} ${cmake_test_flags}" "${TMPFILE}.cxx" >> cmake_bootstrap.log 2>&1; then
  792. :
  793. else
  794. cmake_need_flags=0
  795. fi
  796. if [ "x${cmake_need_flags}" = "x1" ]; then
  797. cmake_cxx_flags="${cmake_cxx_flags} ${cmake_test_flags}"
  798. echo "${cmake_cxx_compiler} needs ${cmake_test_flags}"
  799. else
  800. echo "${cmake_cxx_compiler} does not need ${cmake_test_flags}"
  801. fi
  802. rm -f "${TMPFILE}.cxx"
  803. fi
  804. cmake_test_flags=
  805. # If we are on HP-UX, check for -Ae for the C compiler.
  806. cmake_test_flags="-Ae"
  807. if [ "x${cmake_system}" = "xHP-UX" ]; then
  808. TMPFILE=`cmake_tmp_file`
  809. cat > ${TMPFILE}.c <<EOF
  810. int main(int argc, char** argv) { (void)argc; (void)argv; return 0; }
  811. EOF
  812. cmake_need_Ae=0
  813. if cmake_try_run "${cmake_c_compiler}" "${cmake_c_flags}" "${TMPFILE}.c" >> cmake_bootstrap.log 2>&1; then
  814. :
  815. else
  816. if cmake_try_run "${cmake_c_compiler}" \
  817. "${cmake_c_flags} ${cmake_test_flags}" "${TMPFILE}.c" >> cmake_bootstrap.log 2>&1; then
  818. cmake_need_Ae=1
  819. fi
  820. fi
  821. if [ "x${cmake_need_Ae}" = "x1" ]; then
  822. cmake_c_flags="${cmake_c_flags} ${cmake_test_flags}"
  823. echo "${cmake_c_compiler} needs ${cmake_test_flags}"
  824. else
  825. echo "${cmake_c_compiler} does not need ${cmake_test_flags}"
  826. fi
  827. rm -f "${TMPFILE}.c"
  828. fi
  829. cmake_test_flags=
  830. fi
  831. # Test for kwsys features
  832. KWSYS_NAME_IS_KWSYS=0
  833. KWSYS_BUILD_SHARED=0
  834. KWSYS_LFS_AVAILABLE=0
  835. KWSYS_LFS_REQUESTED=0
  836. KWSYS_IOS_USE_STRSTREAM_H=0
  837. KWSYS_IOS_USE_STRSTREA_H=0
  838. KWSYS_IOS_HAVE_STD=0
  839. KWSYS_IOS_USE_SSTREAM=0
  840. KWSYS_IOS_USE_ANSI=0
  841. KWSYS_STL_HAVE_STD=0
  842. KWSYS_STAT_HAS_ST_MTIM=0
  843. KWSYS_STL_STRING_HAVE_NEQ_CHAR=0
  844. KWSYS_STL_HAS_ITERATOR_TRAITS=0
  845. KWSYS_STL_HAS_ITERATOR_CATEGORY=0
  846. KWSYS_STL_HAS___ITERATOR_CATEGORY=0
  847. KWSYS_STL_HAS_ALLOCATOR_TEMPLATE=0
  848. KWSYS_STL_HAS_ALLOCATOR_NONTEMPLATE=0
  849. KWSYS_STL_HAS_ALLOCATOR_REBIND=0
  850. KWSYS_STL_HAS_ALLOCATOR_MAX_SIZE_ARGUMENT=0
  851. KWSYS_STL_HAS_ALLOCATOR_OBJECTS=0
  852. KWSYS_CXX_HAS_CSTDDEF=0
  853. KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS=0
  854. KWSYS_CXX_HAS_MEMBER_TEMPLATES=0
  855. KWSYS_CXX_HAS_FULL_SPECIALIZATION=0
  856. KWSYS_CXX_HAS_ARGUMENT_DEPENDENT_LOOKUP=0
  857. # Hardcode these kwsys features. They work on all known UNIX compilers anyway.
  858. KWSYS_STL_STRING_HAVE_ISTREAM=1
  859. KWSYS_STL_STRING_HAVE_OSTREAM=1
  860. if cmake_try_run "${cmake_cxx_compiler}" \
  861. "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAVE_STD" \
  862. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  863. KWSYS_STL_HAVE_STD=1
  864. echo "${cmake_cxx_compiler} has STL in std:: namespace"
  865. else
  866. echo "${cmake_cxx_compiler} does not have STL in std:: namespace"
  867. fi
  868. if cmake_try_run "${cmake_cxx_compiler}" \
  869. "${cmake_cxx_flags} -DTEST_KWSYS_IOS_USE_ANSI" \
  870. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  871. KWSYS_IOS_USE_ANSI=1
  872. echo "${cmake_cxx_compiler} has ANSI streams"
  873. else
  874. echo "${cmake_cxx_compiler} does not have ANSI streams"
  875. fi
  876. if [ "x$KWSYS_IOS_USE_ANSI" = "x1" ]; then
  877. if cmake_try_run "${cmake_cxx_compiler}" \
  878. "${cmake_cxx_flags} -DTEST_KWSYS_IOS_HAVE_STD" \
  879. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  880. KWSYS_IOS_HAVE_STD=1
  881. echo "${cmake_cxx_compiler} has streams in std:: namespace"
  882. else
  883. echo "${cmake_cxx_compiler} does not have streams in std:: namespace"
  884. fi
  885. if cmake_try_run "${cmake_cxx_compiler}" \
  886. "${cmake_cxx_flags} -DTEST_KWSYS_IOS_USE_SSTREAM" \
  887. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  888. KWSYS_IOS_USE_SSTREAM=1
  889. echo "${cmake_cxx_compiler} has sstream"
  890. else
  891. echo "${cmake_cxx_compiler} does not have sstream"
  892. fi
  893. fi
  894. if [ "x$KWSYS_IOS_USE_SSTREAM" = "x0" ]; then
  895. if cmake_try_run "${cmake_cxx_compiler}" \
  896. "${cmake_cxx_flags} -DTEST_KWSYS_IOS_USE_STRSTREAM_H" \
  897. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  898. KWSYS_IOS_USE_STRSTREAM_H=1
  899. echo "${cmake_cxx_compiler} has strstream.h"
  900. else
  901. echo "${cmake_cxx_compiler} does not have strstream.h"
  902. fi
  903. if [ "x$KWSYS_IOS_USE_STRSTREAM_H" = "x0" ]; then
  904. if cmake_try_run "${cmake_cxx_compiler}" \
  905. "${cmake_cxx_flags} -DTEST_KWSYS_IOS_USE_STRSTREA_H" \
  906. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  907. KWSYS_IOS_USE_STRSTREA_H=1
  908. echo "${cmake_cxx_compiler} has strstrea.h"
  909. else
  910. echo "${cmake_cxx_compiler} does not have strstrea.h"
  911. fi
  912. fi
  913. fi
  914. if cmake_try_run "${cmake_cxx_compiler}" \
  915. "${cmake_cxx_flags} -DTEST_KWSYS_STL_STRING_HAVE_NEQ_CHAR -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
  916. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  917. KWSYS_STL_STRING_HAVE_NEQ_CHAR=1
  918. echo "${cmake_cxx_compiler} has operator!=(string, char*)"
  919. else
  920. echo "${cmake_cxx_compiler} does not have operator!=(string, char*)"
  921. fi
  922. if cmake_try_run "${cmake_cxx_compiler}" \
  923. "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAS_ITERATOR_TRAITS -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
  924. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  925. KWSYS_STL_HAS_ITERATOR_TRAITS=1
  926. echo "${cmake_cxx_compiler} has stl iterator_traits"
  927. else
  928. echo "${cmake_cxx_compiler} does not have stl iterator_traits"
  929. fi
  930. if [ "x${KWSYS_STL_HAS_ITERATOR_TRAITS}" = "x0" ]; then
  931. if cmake_try_run "${cmake_cxx_compiler}" \
  932. "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAS_ITERATOR_CATEGORY -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
  933. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  934. KWSYS_STL_HAS_ITERATOR_CATEGORY=1
  935. echo "${cmake_cxx_compiler} has old iterator_category"
  936. else
  937. echo "${cmake_cxx_compiler} does not have old iterator_category"
  938. fi
  939. if [ "x${KWSYS_STL_HAS_ITERATOR_CATEGORY}" = "x0" ]; then
  940. if cmake_try_run "${cmake_cxx_compiler}" \
  941. "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAS___ITERATOR_CATEGORY -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
  942. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  943. KWSYS_STL_HAS___ITERATOR_CATEGORY=1
  944. echo "${cmake_cxx_compiler} has old __iterator_category"
  945. else
  946. echo "${cmake_cxx_compiler} does not have old __iterator_category"
  947. fi
  948. fi
  949. fi
  950. if cmake_try_run "${cmake_cxx_compiler}" \
  951. "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAS_ALLOCATOR_TEMPLATE -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
  952. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  953. KWSYS_STL_HAS_ALLOCATOR_TEMPLATE=1
  954. echo "${cmake_cxx_compiler} has standard template allocator"
  955. else
  956. echo "${cmake_cxx_compiler} does not have standard template allocator"
  957. fi
  958. if [ "x${KWSYS_STL_HAS_ALLOCATOR_TEMPLATE}" = "x1" ]; then
  959. if cmake_try_run "${cmake_cxx_compiler}" \
  960. "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAS_ALLOCATOR_REBIND -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
  961. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  962. KWSYS_STL_HAS_ALLOCATOR_REBIND=1
  963. echo "${cmake_cxx_compiler} has allocator<>::rebind<>"
  964. else
  965. echo "${cmake_cxx_compiler} does not have allocator<>::rebind<>"
  966. fi
  967. if cmake_try_run "${cmake_cxx_compiler}" \
  968. "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAS_ALLOCATOR_MAX_SIZE_ARGUMENT -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
  969. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  970. KWSYS_STL_HAS_ALLOCATOR_MAX_SIZE_ARGUMENT=1
  971. echo "${cmake_cxx_compiler} has non-standard allocator<>::max_size argument"
  972. else
  973. echo "${cmake_cxx_compiler} does not have non-standard allocator<>::max_size argument"
  974. fi
  975. else
  976. if cmake_try_run "${cmake_cxx_compiler}" \
  977. "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAS_ALLOCATOR_NONTEMPLATE -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
  978. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  979. KWSYS_STL_HAS_ALLOCATOR_NONTEMPLATE=1
  980. echo "${cmake_cxx_compiler} has old non-template allocator"
  981. else
  982. echo "${cmake_cxx_compiler} does not have old non-template allocator"
  983. fi
  984. fi
  985. if cmake_try_run "${cmake_cxx_compiler}" \
  986. "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAS_ALLOCATOR_OBJECTS -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
  987. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  988. KWSYS_STL_HAS_ALLOCATOR_OBJECTS=1
  989. echo "${cmake_cxx_compiler} has stl containers supporting allocator objects"
  990. else
  991. echo "${cmake_cxx_compiler} does not have stl containers supporting allocator objects"
  992. fi
  993. if cmake_try_run "${cmake_cxx_compiler}" \
  994. "${cmake_cxx_flags} -DTEST_KWSYS_CXX_HAS_CSTDDEF" \
  995. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  996. KWSYS_CXX_HAS_CSTDDEF=1
  997. echo "${cmake_cxx_compiler} has header cstddef"
  998. else
  999. echo "${cmake_cxx_compiler} does not have header cstddef"
  1000. fi
  1001. if cmake_try_run "${cmake_cxx_compiler}" \
  1002. "${cmake_cxx_flags} -DTEST_KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS" \
  1003. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  1004. echo "${cmake_cxx_compiler} does not require template friends to use <>"
  1005. else
  1006. KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS=1
  1007. echo "${cmake_cxx_compiler} requires template friends to use <>"
  1008. fi
  1009. if cmake_try_run "${cmake_cxx_compiler}" \
  1010. "${cmake_cxx_flags} -DTEST_KWSYS_CXX_HAS_MEMBER_TEMPLATES" \
  1011. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  1012. KWSYS_CXX_HAS_MEMBER_TEMPLATES=1
  1013. echo "${cmake_cxx_compiler} supports member templates"
  1014. else
  1015. echo "${cmake_cxx_compiler} does not support member templates"
  1016. fi
  1017. if cmake_try_run "${cmake_cxx_compiler}" \
  1018. "${cmake_cxx_flags} -DTEST_KWSYS_CXX_HAS_FULL_SPECIALIZATION" \
  1019. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  1020. KWSYS_CXX_HAS_FULL_SPECIALIZATION=1
  1021. echo "${cmake_cxx_compiler} has standard template specialization syntax"
  1022. else
  1023. echo "${cmake_cxx_compiler} does not have standard template specialization syntax"
  1024. fi
  1025. if cmake_try_run "${cmake_cxx_compiler}" \
  1026. "${cmake_cxx_flags} -DTEST_KWSYS_CXX_HAS_ARGUMENT_DEPENDENT_LOOKUP" \
  1027. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  1028. KWSYS_CXX_HAS_ARGUMENT_DEPENDENT_LOOKUP=1
  1029. echo "${cmake_cxx_compiler} has argument dependent lookup"
  1030. else
  1031. echo "${cmake_cxx_compiler} does not have argument dependent lookup"
  1032. fi
  1033. if cmake_try_run "${cmake_cxx_compiler}" \
  1034. "${cmake_cxx_flags} -DTEST_KWSYS_STAT_HAS_ST_MTIM" \
  1035. "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log 2>&1; then
  1036. KWSYS_STAT_HAS_ST_MTIM=1
  1037. echo "${cmake_cxx_compiler} has struct stat with st_mtim member"
  1038. else
  1039. echo "${cmake_cxx_compiler} does not have struct stat with st_mtim member"
  1040. fi
  1041. # Just to be safe, let us store compiler and flags to the header file
  1042. cmake_bootstrap_version='$Revision$'
  1043. cmake_compiler_settings_comment="/*
  1044. * Generated by ${cmake_source_dir}/bootstrap
  1045. * Version: ${cmake_bootstrap_version}
  1046. *
  1047. * Source directory: ${cmake_source_dir}
  1048. * Binary directory: ${cmake_bootstrap_dir}
  1049. *
  1050. * C compiler: ${cmake_c_compiler}
  1051. * C flags: ${cmake_c_flags}
  1052. *
  1053. * C++ compiler: ${cmake_cxx_compiler}
  1054. * C++ flags: ${cmake_cxx_flags}
  1055. *
  1056. * Make: ${cmake_make_processor}
  1057. *
  1058. * Sources:
  1059. * ${CMAKE_CXX_SOURCES} ${CMAKE_C_SOURCES}
  1060. * kwSys Sources:
  1061. * ${KWSYS_CXX_SOURCES} ${KWSYS_C_SOURCES} ${KWSYS_C_MINGW_SOURCES}
  1062. */
  1063. "
  1064. cmake_report cmConfigure.h.tmp "${cmake_compiler_settings_comment}"
  1065. if [ "x$KWSYS_STL_HAVE_STD" = "x1" ]; then
  1066. cmake_report cmConfigure.h.tmp "/* #undef CMAKE_NO_STD_NAMESPACE */"
  1067. else
  1068. cmake_report cmConfigure.h.tmp "#define CMAKE_NO_STD_NAMESPACE 1"
  1069. fi
  1070. if [ "x$KWSYS_IOS_USE_ANSI" = "x1" ]; then
  1071. cmake_report cmConfigure.h.tmp "/* #undef CMAKE_NO_ANSI_STREAM_HEADERS */"
  1072. else
  1073. cmake_report cmConfigure.h.tmp "#define CMAKE_NO_ANSI_STREAM_HEADERS 1"
  1074. fi
  1075. if [ "x$KWSYS_IOS_USE_SSTREAM" = "x1" ]; then
  1076. cmake_report cmConfigure.h.tmp "/* #undef CMAKE_NO_ANSI_STRING_STREAM */"
  1077. else
  1078. cmake_report cmConfigure.h.tmp "#define CMAKE_NO_ANSI_STRING_STREAM 1"
  1079. fi
  1080. # Test for ansi FOR scope
  1081. if cmake_try_run "${cmake_cxx_compiler}" \
  1082. "${cmake_cxx_flags}" \
  1083. "${cmake_source_dir}/Modules/TestForAnsiForScope.cxx" >> cmake_bootstrap.log 2>&1; then
  1084. cmake_report cmConfigure.h.tmp "/* #undef CMAKE_NO_ANSI_FOR_SCOPE */"
  1085. echo "${cmake_cxx_compiler} has ANSI for scoping"
  1086. else
  1087. cmake_report cmConfigure.h.tmp "#define CMAKE_NO_ANSI_FOR_SCOPE 1"
  1088. echo "${cmake_cxx_compiler} does not have ANSI for scoping"
  1089. fi
  1090. # When bootstrapping on MinGW with MSYS we must convert the source
  1091. # directory to a windows path.
  1092. if ${cmake_system_mingw}; then
  1093. cmake_root_dir=`cd "${cmake_source_dir}"; pwd -W`
  1094. else
  1095. cmake_root_dir="${cmake_source_dir}"
  1096. fi
  1097. # Write CMake version
  1098. cmake_report cmConfigure.h.tmp "#define CMake_VERSION_MAJOR ${cmake_version_major}"
  1099. cmake_report cmConfigure.h.tmp "#define CMake_VERSION_MINOR ${cmake_version_minor}"
  1100. cmake_report cmConfigure.h.tmp "#define CMake_VERSION_PATCH ${cmake_version_patch}"
  1101. cmake_report cmConfigure.h.tmp "#define CMAKE_ROOT_DIR \"${cmake_root_dir}\""
  1102. cmake_report cmConfigure.h.tmp "#define CMAKE_DATA_DIR \"${cmake_data_dir}\""
  1103. cmake_report cmConfigure.h.tmp "#define CMAKE_BOOTSTRAP"
  1104. # Regenerate real cmConfigure.h
  1105. if diff cmConfigure.h cmConfigure.h.tmp > /dev/null 2> /dev/null; then
  1106. rm -f cmConfigure.h.tmp
  1107. else
  1108. mv -f cmConfigure.h.tmp cmConfigure.h
  1109. fi
  1110. # Prepare KWSYS
  1111. cmake_kwsys_config_replace_string \
  1112. "${cmake_source_dir}/Source/kwsys/Configure.hxx.in" \
  1113. "${cmake_bootstrap_dir}/cmsys/Configure.hxx" \
  1114. "${cmake_compiler_settings_comment}"
  1115. cmake_kwsys_config_replace_string \
  1116. "${cmake_source_dir}/Source/kwsys/Configure.h.in" \
  1117. "${cmake_bootstrap_dir}/cmsys/Configure.h" \
  1118. "${cmake_compiler_settings_comment}"
  1119. cat>"${cmake_bootstrap_dir}/cmsys/DateStamp.h"<<EOF
  1120. /* Minimal DateStamp header for CMake bootstrap build. */
  1121. #ifndef cmsys_DateStamp_h
  1122. #define cmsys_DateStamp_h
  1123. #define cmsys_DATE_STAMP_STRING_FULL "${cmake_date_stamp}"
  1124. #endif
  1125. EOF
  1126. for a in ${KWSYS_FILES}; do
  1127. cmake_replace_string "${cmake_source_dir}/Source/kwsys/${a}.in" \
  1128. "${cmake_bootstrap_dir}/cmsys/${a}" KWSYS_NAMESPACE cmsys
  1129. done
  1130. for a in ${KWSYS_IOS_FILES}; do
  1131. cmake_replace_string "${cmake_source_dir}/Source/kwsys/kwsys_ios_${a}.h.in" \
  1132. "${cmake_bootstrap_dir}/cmsys/ios/${a}" KWSYS_NAMESPACE cmsys
  1133. done
  1134. cmake_replace_string "${cmake_source_dir}/Source/kwsys/kwsys_stl.hxx.in" \
  1135. "${cmake_bootstrap_dir}/cmsys/stl/stl.hxx.in" KWSYS_STL_HEADER_EXTRA ""
  1136. cmake_replace_string "${cmake_bootstrap_dir}/cmsys/stl/stl.hxx.in" \
  1137. "${cmake_bootstrap_dir}/cmsys/stl/stl.h.in" KWSYS_NAMESPACE cmsys
  1138. for a in string vector map algorithm; do
  1139. cmake_replace_string "${cmake_bootstrap_dir}/cmsys/stl/stl.h.in" \
  1140. "${cmake_bootstrap_dir}/cmsys/stl/${a}" KWSYS_STL_HEADER ${a}
  1141. done
  1142. # Generate Makefile
  1143. dep="cmConfigure.h cmsys/*.hxx cmsys/*.h `cmake_escape \"${cmake_source_dir}\"`/Source/*.h"
  1144. objs=""
  1145. for a in ${CMAKE_CXX_SOURCES} ${CMAKE_C_SOURCES} ${KWSYS_CXX_SOURCES} ${KWSYS_C_SOURCES} ${KWSYS_C_GENERATED_SOURCES}; do
  1146. objs="${objs} ${a}.o"
  1147. done
  1148. # Generate dependencies for cmBootstrapCommands.cxx
  1149. for file in `grep "#include.*cm[^.]*.cxx" "${cmake_source_dir}/Source/cmBootstrapCommands.cxx" | sed "s/.* \"\(.*\)\"/\1/"`; do
  1150. cmBootstrapCommandsDeps="${cmBootstrapCommandsDeps} `cmake_escape "${cmake_source_dir}/Source/$file"`"
  1151. done
  1152. cmBootstrapCommandsDeps=`echo $cmBootstrapCommandsDeps`
  1153. if [ "x${cmake_ansi_cxx_flags}" != "x" ]; then
  1154. cmake_cxx_flags="${cmake_ansi_cxx_flags} ${cmake_cxx_flags}"
  1155. fi
  1156. if [ "x${cmake_c_flags}" != "x" ]; then
  1157. cmake_c_flags="${cmake_c_flags} "
  1158. fi
  1159. if [ "x${cmake_cxx_flags}" != "x" ]; then
  1160. cmake_cxx_flags="${cmake_cxx_flags} "
  1161. fi
  1162. cmake_c_flags="${cmake_c_flags}-I`cmake_escape \"${cmake_source_dir}/Source\"` \
  1163. -I`cmake_escape \"${cmake_bootstrap_dir}\"`"
  1164. cmake_cxx_flags="${cmake_cxx_flags}-I`cmake_escape \"${cmake_source_dir}/Source\"` \
  1165. -I`cmake_escape \"${cmake_bootstrap_dir}\"`"
  1166. echo "cmake: ${objs}" > "${cmake_bootstrap_dir}/Makefile"
  1167. echo " ${cmake_cxx_compiler} ${cmake_ld_flags} ${cmake_cxx_flags} ${objs} -o cmake" >> "${cmake_bootstrap_dir}/Makefile"
  1168. for a in ${CMAKE_CXX_SOURCES}; do
  1169. src=`cmake_escape "${cmake_source_dir}/Source/${a}.cxx"`
  1170. echo "${a}.o : ${src} ${dep}" >> "${cmake_bootstrap_dir}/Makefile"
  1171. echo " ${cmake_cxx_compiler} ${cmake_cxx_flags} -c ${src} -o ${a}.o" >> "${cmake_bootstrap_dir}/Makefile"
  1172. done
  1173. echo "cmBootstrapCommands.o : $cmBootstrapCommandsDeps" >> "${cmake_bootstrap_dir}/Makefile"
  1174. for a in ${CMAKE_C_SOURCES}; do
  1175. src=`cmake_escape "${cmake_source_dir}/Source/${a}.c"`
  1176. echo "${a}.o : ${src} ${dep}" >> "${cmake_bootstrap_dir}/Makefile"
  1177. echo " ${cmake_c_compiler} ${cmake_c_flags} -c ${src} -o ${a}.o" >> "${cmake_bootstrap_dir}/Makefile"
  1178. done
  1179. for a in ${KWSYS_C_SOURCES} ${KWSYS_C_MINGW_SOURCES}; do
  1180. src=`cmake_escape "${cmake_source_dir}/Source/kwsys/${a}.c"`
  1181. echo "${a}.o : ${src} ${dep}" >> "${cmake_bootstrap_dir}/Makefile"
  1182. echo " ${cmake_c_compiler} ${cmake_c_flags} -DKWSYS_NAMESPACE=cmsys -c ${src} -o ${a}.o" >> "${cmake_bootstrap_dir}/Makefile"
  1183. done
  1184. for a in ${KWSYS_CXX_SOURCES}; do
  1185. src=`cmake_escape "${cmake_source_dir}/Source/kwsys/${a}.cxx"`
  1186. echo "${a}.o : ${src} ${dep}" >> "${cmake_bootstrap_dir}/Makefile"
  1187. echo " ${cmake_cxx_compiler} ${cmake_cxx_flags} -DKWSYS_NAMESPACE=cmsys -c ${src} -o ${a}.o" >> "${cmake_bootstrap_dir}/Makefile"
  1188. done
  1189. if ${cmake_system_mingw}; then
  1190. src=`cmake_escape "${cmake_bootstrap_dir}/cmsysProcessFwd9xEnc.c"`
  1191. in=`cmake_escape "${cmake_bootstrap_dir}/cmsysProcessFwd9x.exe"`
  1192. cmd=`cmake_escape "${cmake_bootstrap_dir}/cmsysEncodeExecutable.exe"`
  1193. a="cmsysProcessFwd9xEnc"
  1194. echo "${cmd} : EncodeExecutable.o" >> "${cmake_bootstrap_dir}/Makefile"
  1195. echo " ${cmake_c_compiler} ${cmake_ld_flags} ${cmake_c_flags} EncodeExecutable.o -o ${cmd}" >> "${cmake_bootstrap_dir}/Makefile"
  1196. echo "${in} : ProcessFwd9x.o" >> "${cmake_bootstrap_dir}/Makefile"
  1197. echo " ${cmake_c_compiler} ${cmake_ld_flags} ${cmake_c_flags} ProcessFwd9x.o -o ${in}" >> "${cmake_bootstrap_dir}/Makefile"
  1198. echo "${src} : ${cmd} ${in}" >> "${cmake_bootstrap_dir}/Makefile"
  1199. echo " ${cmd} ${in} ${src} cmsys ProcessFwd9x" >> "${cmake_bootstrap_dir}/Makefile"
  1200. echo "${a}.o : ${src} ${dep}" >> "${cmake_bootstrap_dir}/Makefile"
  1201. echo " ${cmake_c_compiler} ${cmake_c_flags} -I`cmake_escape \"${cmake_source_dir}/Source/kwsys\"` -DKWSYS_NAMESPACE=cmsys -c ${src} -o ${a}.o" >> "${cmake_bootstrap_dir}/Makefile"
  1202. fi
  1203. cat>>"${cmake_bootstrap_dir}/Makefile"<<EOF
  1204. rebuild_cache:
  1205. cd "${cmake_binary_dir}" && "${cmake_source_dir}/bootstrap"
  1206. EOF
  1207. # Write our default settings to Bootstrap.cmk/InitialCacheFlags.cmake.
  1208. cat > "${cmake_bootstrap_dir}/InitialCacheFlags.cmake" <<EOF
  1209. # Generated by ${cmake_source_dir}/bootstrap
  1210. # Default cmake settings. These may be overridden any settings below.
  1211. SET (CMAKE_INSTALL_PREFIX "${cmake_prefix_dir}" CACHE PATH "Install path prefix, prepended onto install directories." FORCE)
  1212. SET (CMAKE_DOC_DIR "${cmake_doc_dir}" CACHE PATH "Install location for documentation (relative to prefix)." FORCE)
  1213. SET (CMAKE_MAN_DIR "${cmake_man_dir}" CACHE PATH "Install location for man pages (relative to prefix)." FORCE)
  1214. SET (CMAKE_DATA_DIR "${cmake_data_dir}" CACHE PATH "Install location for data (relative to prefix)." FORCE)
  1215. EOF
  1216. # Add configuration settings given as command-line options.
  1217. if [ "x${cmake_bootstrap_qt_gui}" != "x" ]; then
  1218. cat >> "${cmake_bootstrap_dir}/InitialCacheFlags.cmake" <<EOF
  1219. SET (BUILD_QtDialog ${cmake_bootstrap_qt_gui} CACHE BOOL "Build Qt dialog for CMake" FORCE)
  1220. EOF
  1221. fi
  1222. if [ "x${cmake_bootstrap_qt_qmake}" != "x" ]; then
  1223. cat >> "${cmake_bootstrap_dir}/InitialCacheFlags.cmake" <<EOF
  1224. SET (QT_QMAKE_EXECUTABLE "${cmake_bootstrap_qt_qmake}" CACHE FILEPATH "Location of Qt qmake" FORCE)
  1225. EOF
  1226. fi
  1227. # Add user-specified settings. Handle relative-path case for
  1228. # specification of cmake_init_file.
  1229. (
  1230. cd "${cmake_binary_dir}"
  1231. if [ -f "${cmake_init_file}" ]; then
  1232. cat "${cmake_init_file}" >> "${cmake_bootstrap_dir}/InitialCacheFlags.cmake"
  1233. fi
  1234. )
  1235. echo "---------------------------------------------"
  1236. # Run make to build bootstrap cmake
  1237. if [ "x${cmake_parallel_make}" != "x" ]; then
  1238. ${cmake_make_processor} ${cmake_make_flags}
  1239. else
  1240. ${cmake_make_processor}
  1241. fi
  1242. RES=$?
  1243. if [ "${RES}" -ne "0" ]; then
  1244. cmake_error 9 "Problem while running ${cmake_make_processor}"
  1245. fi
  1246. cd "${cmake_binary_dir}"
  1247. # Set C, CXX, and MAKE environment variables, so that real real cmake will be
  1248. # build with same compiler and make
  1249. CC="${cmake_c_compiler}"
  1250. CXX="${cmake_cxx_compiler}"
  1251. MAKE="${cmake_make_processor}"
  1252. export CC
  1253. export CXX
  1254. export MAKE
  1255. # Run bootstrap CMake to configure real CMake
  1256. "${cmake_bootstrap_dir}/cmake" "${cmake_source_dir}" "-C${cmake_bootstrap_dir}/InitialCacheFlags.cmake" "-G${cmake_bootstrap_generator}" ${cmake_bootstrap_system_libs}
  1257. RES=$?
  1258. if [ "${RES}" -ne "0" ]; then
  1259. cmake_error 11 "Problem while running initial CMake"
  1260. fi
  1261. echo "---------------------------------------------"
  1262. # And we are done. Now just run make
  1263. echo "CMake has bootstrapped. Now run ${cmake_make_processor}."