bootstrap 46 KB

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