bootstrap 46 KB

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