bootstrap 46 KB

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