bootstrap 46 KB

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