bootstrap 46 KB

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