bootstrap 46 KB

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