3 #=========================================================================
5 # Program: CMake - Cross-Platform Makefile Generator
6 # Module: $RCSfile: bootstrap,v $
7 # Language: Bourne Shell
8 # Date: $Date: 2008-09-15 21:53:27 $
9 # Version: $Revision: 1.114 $
11 # Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
12 # See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
14 # This software is distributed WITHOUT ANY WARRANTY; without even
15 # the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
16 # PURPOSE. See the above copyright notices for more information.
18 #=========================================================================
20 # Version number extraction function.
21 cmake_version_component
()
23 cat "${cmake_source_dir}/CMakeLists.txt" |
sed -n "
24 /^SET(CMake_VERSION_${1}/ {s/SET(CMake_VERSION_${1} *\([0-9]*\))/\1/;p;}
28 cmake_date_stamp_component
()
30 cat "${cmake_source_dir}/Source/kwsys/kwsysDateStamp.cmake" |
sed -n "
31 /KWSYS_DATE_STAMP_${1}/ {s/^.* \([0-9][0-9]*\))$/\1/;p;}
35 # Detect system and directory information.
37 cmake_source_dir
=`echo $0 | sed -n '/\//{s/\/[^\/]*$//;p;}'`
38 cmake_source_dir
=`(cd "${cmake_source_dir}";pwd)`
39 cmake_binary_dir
=`pwd`
40 cmake_bootstrap_dir
="${cmake_binary_dir}/Bootstrap.cmk"
41 cmake_version_major
="`cmake_version_component MAJOR`"
42 cmake_version_minor
="`cmake_version_component MINOR`"
43 cmake_version_patch
="`cmake_version_component PATCH`"
44 cmake_version
="${cmake_version_major}.${cmake_version_minor}"
45 cmake_version_full
="${cmake_version_major}.${cmake_version_minor}.${cmake_version_patch}"
46 cmake_date_stamp
="`cmake_date_stamp_component YEAR``cmake_date_stamp_component MONTH``cmake_date_stamp_component DAY`"
47 cmake_data_dir
="/share/cmake-${cmake_version}"
48 cmake_doc_dir
="/doc/cmake-${cmake_version}"
51 cmake_bootstrap_system_libs
=""
52 cmake_bootstrap_qt_gui
=""
53 cmake_bootstrap_qt_qmake
=""
55 # Determine whether this is a MinGW environment.
56 if echo "${cmake_system}" |
grep MINGW
>/dev
/null
2>&1; then
57 cmake_system_mingw
=true
59 cmake_system_mingw
=false
62 # Determine whether this is OS X
63 if echo "${cmake_system}" |
grep Darwin
>/dev
/null
2>&1; then
64 cmake_system_darwin
=true
66 cmake_system_darwin
=false
69 # Determine whether this is BeOS
70 if echo "${cmake_system}" |
grep BeOS
>/dev
/null
2>&1; then
71 cmake_system_beos
=true
73 cmake_system_beos
=false
76 # Determine whether this is Haiku
77 if echo "${cmake_system}" |
grep Haiku
>/dev
/null
2>&1; then
78 cmake_system_haiku
=true
80 cmake_system_haiku
=false
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"
88 # Bootstrapping from a standard UNIX prompt.
89 cmake_bootstrap_generator
="Unix Makefiles"
92 # Helper function to fix windows paths.
95 echo "$1" |
sed 's/\\/\//g'
98 # Choose the default install prefix.
99 if ${cmake_system_mingw}; then
100 if [ "x${PROGRAMFILES}" != "x" ]; then
101 cmake_default_prefix
=`cmake_fix_slashes "${PROGRAMFILES}/CMake"`
102 elif [ "x${ProgramFiles}" != "x" ]; then
103 cmake_default_prefix
=`cmake_fix_slashes "${ProgramFiles}/CMake"`
104 elif [ "x${SYSTEMDRIVE}" != "x" ]; then
105 cmake_default_prefix
=`cmake_fix_slashes "${SYSTEMDRIVE}/Program Files/CMake"`
106 elif [ "x${SystemDrive}" != "x" ]; then
107 cmake_default_prefix
=`cmake_fix_slashes "${SystemDrive}/Program Files/CMake"`
109 cmake_default_prefix
="c:/Program Files/CMake"
112 cmake_default_prefix
="/usr/local"
115 CMAKE_KNOWN_C_COMPILERS
="cc gcc xlc icc tcc"
116 CMAKE_KNOWN_CXX_COMPILERS
="aCC xlC CC g++ c++ icc como "
117 CMAKE_KNOWN_MAKE_PROCESSORS
="gmake make"
119 CMAKE_PROBLEMATIC_FILES
="\
122 CMakeCCompiler.cmake \
123 CMakeCXXCompiler.cmake \
124 Source/cmConfigure.h \
125 Source/CTest/Curl/config.h \
126 Utilities/cmexpat/expatConfig.h \
127 Utilities/cmexpat/expatDllConfig.h \
130 CMAKE_UNUSED_SOURCES
="\
131 cmGlobalXCodeGenerator \
132 cmLocalXCodeGenerator \
142 cmCommandArgumentLexer \
143 cmCommandArgumentParser \
144 cmCommandArgumentParserHelper \
147 cmDocumentationFormatter \
148 cmDocumentationFormatterText \
152 cmPropertyDefinition \
153 cmPropertyDefinitionMap \
156 cmExportFileGenerator \
157 cmExportInstallFileGenerator \
158 cmInstallDirectoryGenerator \
159 cmGeneratedFileStream \
163 cmInstallExportGenerator \
164 cmInstallFilesGenerator \
165 cmInstallScriptGenerator \
166 cmInstallTargetGenerator \
168 cmSourceFileLocation \
171 cmFileTimeComparison \
172 cmGlobalUnixMakefileGenerator3 \
173 cmLocalUnixMakefileGenerator3 \
174 cmMakefileExecutableTargetGenerator \
175 cmMakefileLibraryTargetGenerator \
176 cmMakefileTargetGenerator \
177 cmMakefileUtilityTargetGenerator \
178 cmBootstrapCommands \
183 cmDocumentVariables \
186 cmComputeLinkDepends \
187 cmComputeLinkInformation \
189 cmComputeTargetDepends \
190 cmComputeComponentGraph \
196 if ${cmake_system_mingw}; then
197 CMAKE_CXX_SOURCES
="${CMAKE_CXX_SOURCES}\
198 cmGlobalMSYSMakefileGenerator \
199 cmGlobalMinGWMakefileGenerator \
200 cmWin32ProcessExecution"
207 if ${cmake_system_mingw}; then
212 KWSYS_C_MINGW_SOURCES
="\
215 KWSYS_C_GENERATED_SOURCES
="\
216 cmsysProcessFwd9xEnc"
222 KWSYS_C_MINGW_SOURCES
=""
223 KWSYS_C_GENERATED_SOURCES
=""
237 RegularExpression.hxx \
249 # Display CMake bootstrap usage
254 Options: [defaults in brackets after descriptions]
256 --help print this message
257 --version only print version information
258 --verbose display more information
259 --parallel=n bootstrap cmake in parallel, where n is
261 --init=FILE use FILE for cmake initialization
262 --system-libs use system-installed third-party libraries
263 (for use only by package maintainers)
264 --no-system-libs use cmake-provided third-party libraries
266 --qt-gui build the Qt-based GUI (requires Qt >= 4.2)
267 --no-qt-gui do not build the Qt-based GUI (default)
268 --qt-qmake=<qmake> use <qmake> as the qmake executable to find Qt
270 Directory and file names:
271 --prefix=PREFIX install files in tree rooted at PREFIX
272 [${cmake_default_prefix}]
273 --datadir=DIR install data files in PREFIX/DIR
275 --docdir=DIR install documentation files in PREFIX/DIR
277 --mandir=DIR install man pages files in PREFIX/DIR/manN
283 # Display CMake bootstrap usage
284 cmake_version_display
()
288 if echo "${cmake_version_full}" |
grep "[0-9]\.[0-9]*[13579]\.[0-9]" > /dev
/null
2>&1; then
289 version
="${cmake_version}-${cmake_date_stamp}"
291 version
="${cmake_version}-${cmake_version_patch}"
293 echo "CMake ${version}, Copyright (c) 2007 Kitware, Inc., Insight Consortium"
297 # Display CMake bootstrap error, display the log file and exit
302 echo "---------------------------------------------"
303 echo "Error when bootstrapping CMake:"
305 echo "---------------------------------------------"
306 if [ -f cmake_bootstrap.log
]; then
307 echo "Log of errors: `pwd`/cmake_bootstrap.log"
308 #cat cmake_bootstrap.log
309 echo "---------------------------------------------"
314 # Replace KWSYS_NAMESPACE with cmsys
315 cmake_replace_string
()
321 if [ -f "${INFILE}" ]; then
323 sed "s/\@${SEARCHFOR}\@/${REPLACEWITH}/g" > "${OUTFILE}.tmp"
324 if [ -f "${OUTFILE}.tmp" ]; then
325 if diff "${OUTFILE}" "${OUTFILE}.tmp" > /dev
/null
2> /dev
/null
; then
326 #echo "Files are the same"
327 rm -f "${OUTFILE}.tmp"
329 mv -f "${OUTFILE}.tmp" "${OUTFILE}"
333 cmake_error
1 "Cannot find file ${INFILE}"
337 cmake_kwsys_config_replace_string
()
343 if [ -f "${INFILE}" ]; then
344 echo "${APPEND}" > "${OUTFILE}.tmp"
346 sed "/./ {s/\@KWSYS_NAMESPACE\@/cmsys/g;
347 s/@KWSYS_BUILD_SHARED@/${KWSYS_BUILD_SHARED}/g;
348 s/@KWSYS_LFS_AVAILABLE@/${KWSYS_LFS_AVAILABLE}/g;
349 s/@KWSYS_LFS_REQUESTED@/${KWSYS_LFS_REQUESTED}/g;
350 s/@KWSYS_NAME_IS_KWSYS@/${KWSYS_NAME_IS_KWSYS}/g;
351 s/@KWSYS_IOS_USE_ANSI@/${KWSYS_IOS_USE_ANSI}/g;
352 s/@KWSYS_IOS_HAVE_STD@/${KWSYS_IOS_HAVE_STD}/g;
353 s/@KWSYS_IOS_USE_SSTREAM@/${KWSYS_IOS_USE_SSTREAM}/g;
354 s/@KWSYS_IOS_USE_STRSTREAM_H@/${KWSYS_IOS_USE_STRSTREAM_H}/g;
355 s/@KWSYS_IOS_USE_STRSTREA_H@/${KWSYS_IOS_USE_STRSTREA_H}/g;
356 s/@KWSYS_STL_HAVE_STD@/${KWSYS_STL_HAVE_STD}/g;
357 s/@KWSYS_STL_STRING_HAVE_ISTREAM@/${KWSYS_STL_STRING_HAVE_ISTREAM}/g;
358 s/@KWSYS_STL_STRING_HAVE_OSTREAM@/${KWSYS_STL_STRING_HAVE_OSTREAM}/g;
359 s/@KWSYS_STL_STRING_HAVE_NEQ_CHAR@/${KWSYS_STL_STRING_HAVE_NEQ_CHAR}/g;
360 s/@KWSYS_STL_HAS_ITERATOR_TRAITS@/${KWSYS_STL_HAS_ITERATOR_TRAITS}/g;
361 s/@KWSYS_STL_HAS_ITERATOR_CATEGORY@/${KWSYS_STL_HAS_ITERATOR_CATEGORY}/g;
362 s/@KWSYS_STL_HAS___ITERATOR_CATEGORY@/${KWSYS_STL_HAS___ITERATOR_CATEGORY}/g;
363 s/@KWSYS_STL_HAS_ALLOCATOR_TEMPLATE@/${KWSYS_STL_HAS_ALLOCATOR_TEMPLATE}/g;
364 s/@KWSYS_STL_HAS_ALLOCATOR_NONTEMPLATE@/${KWSYS_STL_HAS_ALLOCATOR_NONTEMPLATE}/g;
365 s/@KWSYS_STL_HAS_ALLOCATOR_REBIND@/${KWSYS_STL_HAS_ALLOCATOR_REBIND}/g;
366 s/@KWSYS_STL_HAS_ALLOCATOR_MAX_SIZE_ARGUMENT@/${KWSYS_STL_HAS_ALLOCATOR_MAX_SIZE_ARGUMENT}/g;
367 s/@KWSYS_STL_HAS_ALLOCATOR_OBJECTS@/${KWSYS_STL_HAS_ALLOCATOR_OBJECTS}/g;
368 s/@KWSYS_CXX_HAS_CSTDDEF@/${KWSYS_CXX_HAS_CSTDDEF}/g;
369 s/@KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS@/${KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS}/g;
370 s/@KWSYS_CXX_HAS_MEMBER_TEMPLATES@/${KWSYS_CXX_HAS_MEMBER_TEMPLATES}/g;
371 s/@KWSYS_CXX_HAS_FULL_SPECIALIZATION@/${KWSYS_CXX_HAS_FULL_SPECIALIZATION}/g;
372 s/@KWSYS_CXX_HAS_ARGUMENT_DEPENDENT_LOOKUP@/${KWSYS_CXX_HAS_ARGUMENT_DEPENDENT_LOOKUP}/g;
373 s/@KWSYS_STAT_HAS_ST_MTIM@/${KWSYS_STAT_HAS_ST_MTIM}/g;}" >> "${OUTFILE}.tmp"
374 if [ -f "${OUTFILE}.tmp" ]; then
375 if diff "${OUTFILE}" "${OUTFILE}.tmp" > /dev
/null
2> /dev
/null
; then
376 #echo "Files are the same"
377 rm -f "${OUTFILE}.tmp"
379 mv -f "${OUTFILE}.tmp" "${OUTFILE}"
383 cmake_error
2 "Cannot find file ${INFILE}"
386 # Write string into a file
394 # Escape spaces in strings
397 echo $1 |
sed "s/ /\\\\ /g"
400 # Write message to the log
403 echo "$*" >> cmake_bootstrap.log
409 echo "cmake_bootstrap_$$.test"
412 # Run a compiler test. First argument is compiler, second one are compiler
413 # flags, third one is test source file to be compiled
419 if [ ! -f "${TESTFILE}" ]; then
420 echo "Test file ${TESTFILE} missing. Please verify your CMake source tree."
423 TMPFILE
=`cmake_tmp_file`
424 echo "Try: ${COMPILER}"
425 echo "Line: ${COMPILER} ${FLAGS} ${TESTFILE} -o ${TMPFILE}"
426 echo "---------- file -----------------------"
428 echo "------------------------------------------"
429 "${COMPILER}" ${FLAGS} "${TESTFILE}" -o "${TMPFILE}"
431 if [ "${RES}" -ne "0" ]; then
432 echo "Test failed to compile"
435 if [ ! -f "${TMPFILE}" ] && [ ! -f "${TMPFILE}.exe" ]; then
436 echo "Test failed to produce executable"
442 if [ "${RES}" -ne "0" ]; then
443 echo "Test produced non-zero return code"
450 # Run a make test. First argument is the make interpreter.
455 echo "Try: ${MAKE_PROC}"
456 "${MAKE_PROC}" ${MAKE_FLAGS}
458 if [ "${RES}" -ne "0" ]; then
459 echo "${MAKE_PROC} does not work"
462 if [ ! -f "test" ] && [ ! -f "test.exe" ]; then
463 echo "${COMPILER} does not produce output"
469 if [ "${RES}" -ne "0" ]; then
470 echo "${MAKE_PROC} produces strange executable"
473 echo "${MAKE_PROC} works"
480 cmake_prefix_dir
="${cmake_default_prefix}"
482 if echo $a |
grep "^--prefix=" > /dev
/null
2> /dev
/null
; then
483 cmake_prefix_dir
=`echo $a | sed "s/^--prefix=//"`
484 cmake_prefix_dir
=`cmake_fix_slashes "${cmake_prefix_dir}"`
486 if echo $a |
grep "^--parallel=" > /dev
/null
2> /dev
/null
; then
487 cmake_parallel_make
=`echo $a | sed "s/^--parallel=//" | grep "[0-9][0-9]*"`
489 if echo $a |
grep "^--datadir=" > /dev
/null
2> /dev
/null
; then
490 cmake_data_dir
=`echo $a | sed "s/^--datadir=//"`
492 if echo $a |
grep "^--docdir=" > /dev
/null
2> /dev
/null
; then
493 cmake_doc_dir
=`echo $a | sed "s/^--docdir=//"`
495 if echo $a |
grep "^--mandir=" > /dev
/null
2> /dev
/null
; then
496 cmake_man_dir
=`echo $a | sed "s/^--mandir=//"`
498 if echo $a |
grep "^--init=" > /dev
/null
2> /dev
/null
; then
499 cmake_init_file
=`echo $a | sed "s/^--init=//"`
501 if echo $a |
grep "^--system-libs" > /dev
/null
2> /dev
/null
; then
502 cmake_bootstrap_system_libs
="-DCMAKE_USE_SYSTEM_LIBRARIES=1"
504 if echo $a |
grep "^--no-system-libs" > /dev
/null
2> /dev
/null
; then
505 cmake_bootstrap_system_libs
="-DCMAKE_USE_SYSTEM_LIBRARIES=0"
507 if echo $a |
grep "^--qt-gui" > /dev
/null
2> /dev
/null
; then
508 cmake_bootstrap_qt_gui
="1"
510 if echo $a |
grep "^--no-qt-gui" > /dev
/null
2> /dev
/null
; then
511 cmake_bootstrap_qt_gui
="0"
513 if echo $a |
grep "^--qt-qmake=" > /dev
/null
2> /dev
/null
; then
514 cmake_bootstrap_qt_qmake
=`echo $a | sed "s/^--qt-qmake=//"`
516 if echo $a |
grep "^--help" > /dev
/null
2> /dev
/null
; then
519 if echo $a |
grep "^--version" > /dev
/null
2> /dev
/null
; then
520 cmake_version_display
523 if echo $a |
grep "^--verbose" > /dev
/null
2> /dev
/null
; then
528 # If verbose, display some information about bootstrap
529 if [ -n "${cmake_verbose}" ]; then
530 echo "---------------------------------------------"
531 echo "Source directory: ${cmake_source_dir}"
532 echo "Binary directory: ${cmake_binary_dir}"
533 echo "Prefix directory: ${cmake_prefix_dir}"
534 echo "System: ${cmake_system}"
535 if [ "x${cmake_parallel_make}" != "x" ]; then
536 echo "Doing parallel make: ${cmake_parallel_make}"
541 echo "---------------------------------------------"
543 echo "`cmake_version_display`"
545 # Check for in-source build
546 cmake_in_source_build
=
547 if [ -f "${cmake_binary_dir}/Source/cmake.cxx" -a \
548 -f "${cmake_binary_dir}/Source/cmake.h" ]; then
549 if [ -n "${cmake_verbose}" ]; then
550 echo "Warning: This is an in-source build"
552 cmake_in_source_build
=TRUE
555 # If this is not an in-source build, then Bootstrap stuff should not exist.
556 if [ -z "${cmake_in_source_build}" ]; then
557 # Did somebody bootstrap in the source tree?
558 if [ -d "${cmake_source_dir}/Bootstrap.cmk" ]; then
559 cmake_error
10 "Found directory \"${cmake_source_dir}/Bootstrap.cmk\".
560 Looks like somebody did bootstrap CMake in the source tree, but now you are
561 trying to do bootstrap in the binary tree. Please remove Bootstrap.cmk
562 directory from the source tree."
564 # Is there a cache in the source tree?
565 for cmake_problematic_file
in ${CMAKE_PROBLEMATIC_FILES}; do
566 if [ -f "${cmake_source_dir}/${cmake_problematic_file}" ]; then
567 cmake_error
10 "Found \"${cmake_source_dir}/${cmake_problematic_file}\".
568 Looks like somebody tried to build CMake in the source tree, but now you are
569 trying to do bootstrap in the binary tree. Please remove \"${cmake_problematic_file}\"
570 from the source tree."
575 # Make bootstrap directory
576 [ -d "${cmake_bootstrap_dir}" ] || mkdir
"${cmake_bootstrap_dir}"
577 if [ ! -d "${cmake_bootstrap_dir}" ]; then
578 cmake_error
3 "Cannot create directory ${cmake_bootstrap_dir} to bootstrap CMake."
580 cd "${cmake_bootstrap_dir}"
582 [ -d "cmsys" ] || mkdir
"cmsys"
583 if [ ! -d "cmsys" ]; then
584 cmake_error
4 "Cannot create directory ${cmake_bootstrap_dir}/cmsys"
588 [ -d "cmsys/${a}" ] || mkdir
"cmsys/${a}"
589 if [ ! -d "cmsys/${a}" ]; then
590 cmake_error
5 "Cannot create directory ${cmake_bootstrap_dir}/cmsys/${a}"
594 # Delete all the bootstrap files
595 rm -f "${cmake_bootstrap_dir}/cmake_bootstrap.log"
596 rm -f "${cmake_bootstrap_dir}/cmConfigure.h.tmp"
598 # If exist compiler flags, set them
599 cmake_c_flags
=${CFLAGS}
600 cmake_cxx_flags
=${CXXFLAGS}
601 cmake_ld_flags
=${LDFLAGS}
603 # Add Carbon framework on Darwin
604 if ${cmake_system_darwin}; then
605 cmake_ld_flags
="${LDFLAGS} -framework Carbon"
608 # Add BeOS toolkits...
609 if ${cmake_system_beos}; then
610 cmake_ld_flags
="${LDFLAGS} -lroot -lbe"
613 # Add Haiku toolkits...
614 if ${cmake_system_haiku}; then
615 cmake_ld_flags
="${LDFLAGS} -lroot -lbe"
621 # If CC is set, use that for compiler, otherwise use list of known compilers
622 if [ -n "${CC}" ]; then
623 cmake_c_compilers
="${CC}"
625 cmake_c_compilers
="${CMAKE_KNOWN_C_COMPILERS}"
628 # Check if C compiler works
629 TMPFILE
=`cmake_tmp_file`
630 cat > "${TMPFILE}.c" <<EOF
632 # error "The CMAKE_C_COMPILER is set to a C++ compiler"
637 #if defined(__CLASSIC_C__)
642 int main(int argc, char* argv[])
645 printf("%d\n", (argv != 0));
649 for a
in ${cmake_c_compilers}; do
650 if [ -z "${cmake_c_compiler}" ] && \
651 cmake_try_run
"${a}" "${cmake_c_flags}" "${TMPFILE}.c" >> cmake_bootstrap.log
2>&1; then
652 cmake_c_compiler
="${a}"
657 if [ -z "${cmake_c_compiler}" ]; then
658 cmake_error
6 "Cannot find appropriate C compiler on this system.
659 Please specify one using environment variable CC.
660 See cmake_bootstrap.log for compilers attempted.
663 echo "C compiler on this system is: ${cmake_c_compiler} ${cmake_c_flags}"
668 # On Mac OSX, CC is the same as cc, so make sure not to try CC as c++ compiler.
670 # If CC is set, use that for compiler, otherwise use list of known compilers
671 if [ -n "${CXX}" ]; then
672 cmake_cxx_compilers
="${CXX}"
674 cmake_cxx_compilers
="${CMAKE_KNOWN_CXX_COMPILERS}"
677 # Check if C++ compiler works
678 TMPFILE
=`cmake_tmp_file`
679 cat > "${TMPFILE}.cxx" <<EOF
683 # include <iostream.h>
689 NeedCXX() { this->Foo = 1; }
690 int GetFoo() { return this->Foo; }
698 cout << c.GetFoo() << endl;
700 std::cout << c.GetFoo() << std::endl;
705 for a
in ${cmake_cxx_compilers}; do
707 if [ -z "${cmake_cxx_compiler}" ] && \
708 cmake_try_run
"${a}" "${cmake_cxx_flags} -DTEST${b}" "${TMPFILE}.cxx" >> cmake_bootstrap.log
2>&1; then
709 cmake_cxx_compiler
="${a}"
713 rm -f "${TMPFILE}.cxx"
715 if [ -z "${cmake_cxx_compiler}" ]; then
716 cmake_error
7 "Cannot find appropriate C++ compiler on this system.
717 Please specify one using environment variable CXX.
718 See cmake_bootstrap.log for compilers attempted."
720 echo "C++ compiler on this system is: ${cmake_cxx_compiler} ${cmake_cxx_flags}"
724 cmake_make_processor
=
727 # If MAKE is set, use that for make processor, otherwise use list of known make
728 if [ -n "${MAKE}" ]; then
729 cmake_make_processors
="${MAKE}"
731 cmake_make_processors
="${CMAKE_KNOWN_MAKE_PROCESSORS}"
734 TMPFILE
="`cmake_tmp_file`_dir"
735 rm -rf "${cmake_bootstrap_dir}/${TMPFILE}"
736 mkdir
"${cmake_bootstrap_dir}/${TMPFILE}"
737 cd "${cmake_bootstrap_dir}/${TMPFILE}"
740 "${cmake_c_compiler}" -o test test.c
744 int main(){ printf("1\n"); return 0; }
746 cmake_original_make_flags
="${cmake_make_flags}"
747 if [ "x${cmake_parallel_make}" != "x" ]; then
748 cmake_make_flags
="${cmake_make_flags} -j ${cmake_parallel_make}"
750 for a
in ${cmake_make_processors}; do
751 if [ -z "${cmake_make_processor}" ] && cmake_try_make "${a}" "${cmake_make_flags}" >> cmake_bootstrap.log
2>&1; then
752 cmake_make_processor
="${a}"
755 cmake_full_make_flags
="${cmake_make_flags}"
756 if [ "x${cmake_original_make_flags}" != "x${cmake_make_flags}" ]; then
757 if [ -z "${cmake_make_processor}" ]; then
758 cmake_make_flags
="${cmake_original_make_flags}"
759 for a
in ${cmake_make_processors}; do
760 if [ -z "${cmake_make_processor}" ] && cmake_try_make "${a}" "${cmake_make_flags}" >> cmake_bootstrap.log
2>&1; then
761 cmake_make_processor
="${a}"
766 cd "${cmake_bootstrap_dir}"
767 rm -rf "${cmake_bootstrap_dir}/${TMPFILE}"
769 if [ -z "${cmake_make_processor}" ]; then
770 cmake_error
8 "Cannot find appropriate Makefile processor on this system.
771 Please specify one using environment variable MAKE."
773 echo "Makefile processor on this system is: ${cmake_make_processor}"
774 if [ "x${cmake_full_make_flags}" != "x${cmake_make_flags}" ]; then
775 echo "---------------------------------------------"
776 echo "Makefile processor ${cmake_make_processor} does not support parallel build"
777 echo "---------------------------------------------"
780 # Ok, we have CC, CXX, and MAKE.
782 # Test C++ compiler features
786 TMPFILE
=`cmake_tmp_file`
787 cat > ${TMPFILE}.cxx
<<EOF
788 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
790 int main() { std::cout << "This is GNU" << std::endl; return 0;}
793 cmake_cxx_compiler_is_gnu
=0
794 if cmake_try_run
"${cmake_cxx_compiler}" \
795 "${cmake_cxx_flags}" "${TMPFILE}.cxx" >> cmake_bootstrap.log
2>&1; then
796 cmake_cxx_compiler_is_gnu
=1
798 if [ "x${cmake_cxx_compiler_is_gnu}" = "x1" ]; then
799 echo "${cmake_cxx_compiler} is GNU compiler"
801 echo "${cmake_cxx_compiler} is not GNU compiler"
803 rm -f "${TMPFILE}.cxx"
805 if [ "x${cmake_cxx_compiler_is_gnu}" != "x1" ]; then
806 # Check for non-GNU compiler flags
808 # If we are on IRIX, check for -LANG:std
809 cmake_test_flags
="-LANG:std"
810 if [ "x${cmake_system}" = "xIRIX64" ]; then
811 TMPFILE
=`cmake_tmp_file`
812 cat > ${TMPFILE}.cxx
<<EOF
814 int main() { std::cout << "No need for ${cmake_test_flags}" << std::endl; return 0;}
816 cmake_need_lang_std
=0
817 if cmake_try_run
"${cmake_cxx_compiler}" \
818 "${cmake_cxx_flags}" "${TMPFILE}.cxx" >> cmake_bootstrap.log
2>&1; then
821 if cmake_try_run
"${cmake_cxx_compiler}" \
822 "${cmake_cxx_flags} ${cmake_test_flags}" "${TMPFILE}.cxx" >> cmake_bootstrap.log
2>&1; then
823 cmake_need_lang_std
=1
826 if [ "x${cmake_need_lang_std}" = "x1" ]; then
827 cmake_cxx_flags
="${cmake_cxx_flags} ${cmake_test_flags}"
828 echo "${cmake_cxx_compiler} needs ${cmake_test_flags}"
830 echo "${cmake_cxx_compiler} does not need ${cmake_test_flags}"
832 rm -f "${TMPFILE}.cxx"
836 # If we are on OSF, check for -timplicit_local -no_implicit_include
837 cmake_test_flags
="-timplicit_local -no_implicit_include"
838 if [ "x${cmake_system}" = "xOSF1" ]; then
839 TMPFILE
=`cmake_tmp_file`
840 cat > ${TMPFILE}.cxx
<<EOF
842 int main() { std::cout << "We need ${cmake_test_flags}" << std::endl; return 0;}
845 if cmake_try_run
"${cmake_cxx_compiler}" \
846 "${cmake_cxx_flags} ${cmake_test_flags}" "${TMPFILE}.cxx" >> cmake_bootstrap.log
2>&1; then
851 if [ "x${cmake_need_flags}" = "x1" ]; then
852 cmake_cxx_flags
="${cmake_cxx_flags} ${cmake_test_flags}"
853 echo "${cmake_cxx_compiler} needs ${cmake_test_flags}"
855 echo "${cmake_cxx_compiler} does not need ${cmake_test_flags}"
857 rm -f "${TMPFILE}.cxx"
861 # If we are on OSF, check for -std strict_ansi -nopure_cname
862 cmake_test_flags
="-std strict_ansi -nopure_cname"
863 if [ "x${cmake_system}" = "xOSF1" ]; then
864 TMPFILE
=`cmake_tmp_file`
865 cat > ${TMPFILE}.cxx
<<EOF
867 int main() { std::cout << "We need ${cmake_test_flags}" << std::endl; return 0;}
870 if cmake_try_run
"${cmake_cxx_compiler}" \
871 "${cmake_cxx_flags} ${cmake_test_flags}" "${TMPFILE}.cxx" >> cmake_bootstrap.log
2>&1; then
876 if [ "x${cmake_need_flags}" = "x1" ]; then
877 cmake_cxx_flags
="${cmake_cxx_flags} ${cmake_test_flags}"
878 echo "${cmake_cxx_compiler} needs ${cmake_test_flags}"
880 echo "${cmake_cxx_compiler} does not need ${cmake_test_flags}"
882 rm -f "${TMPFILE}.cxx"
886 # If we are on HP-UX, check for -Ae for the C compiler.
887 cmake_test_flags
="-Ae"
888 if [ "x${cmake_system}" = "xHP-UX" ]; then
889 TMPFILE
=`cmake_tmp_file`
890 cat > ${TMPFILE}.c
<<EOF
891 int main(int argc, char** argv) { (void)argc; (void)argv; return 0; }
894 if cmake_try_run
"${cmake_c_compiler}" "${cmake_c_flags}" "${TMPFILE}.c" >> cmake_bootstrap.log
2>&1; then
897 if cmake_try_run
"${cmake_c_compiler}" \
898 "${cmake_c_flags} ${cmake_test_flags}" "${TMPFILE}.c" >> cmake_bootstrap.log
2>&1; then
902 if [ "x${cmake_need_Ae}" = "x1" ]; then
903 cmake_c_flags
="${cmake_c_flags} ${cmake_test_flags}"
904 echo "${cmake_c_compiler} needs ${cmake_test_flags}"
906 echo "${cmake_c_compiler} does not need ${cmake_test_flags}"
913 # Test for kwsys features
914 KWSYS_NAME_IS_KWSYS
=0
916 KWSYS_LFS_AVAILABLE
=0
917 KWSYS_LFS_REQUESTED
=0
918 KWSYS_IOS_USE_STRSTREAM_H
=0
919 KWSYS_IOS_USE_STRSTREA_H
=0
921 KWSYS_IOS_USE_SSTREAM
=0
924 KWSYS_STAT_HAS_ST_MTIM
=0
925 KWSYS_STL_STRING_HAVE_NEQ_CHAR
=0
926 KWSYS_STL_HAS_ITERATOR_TRAITS
=0
927 KWSYS_STL_HAS_ITERATOR_CATEGORY
=0
928 KWSYS_STL_HAS___ITERATOR_CATEGORY
=0
929 KWSYS_STL_HAS_ALLOCATOR_TEMPLATE
=0
930 KWSYS_STL_HAS_ALLOCATOR_NONTEMPLATE
=0
931 KWSYS_STL_HAS_ALLOCATOR_REBIND
=0
932 KWSYS_STL_HAS_ALLOCATOR_MAX_SIZE_ARGUMENT
=0
933 KWSYS_STL_HAS_ALLOCATOR_OBJECTS
=0
934 KWSYS_CXX_HAS_CSTDDEF
=0
935 KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS
=0
936 KWSYS_CXX_HAS_MEMBER_TEMPLATES
=0
937 KWSYS_CXX_HAS_FULL_SPECIALIZATION
=0
938 KWSYS_CXX_HAS_ARGUMENT_DEPENDENT_LOOKUP
=0
940 # Hardcode these kwsys features. They work on all known UNIX compilers anyway.
941 KWSYS_STL_STRING_HAVE_ISTREAM
=1
942 KWSYS_STL_STRING_HAVE_OSTREAM
=1
944 if cmake_try_run
"${cmake_cxx_compiler}" \
945 "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAVE_STD" \
946 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
948 echo "${cmake_cxx_compiler} has STL in std:: namespace"
950 echo "${cmake_cxx_compiler} does not have STL in std:: namespace"
953 if cmake_try_run
"${cmake_cxx_compiler}" \
954 "${cmake_cxx_flags} -DTEST_KWSYS_IOS_USE_ANSI" \
955 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
957 echo "${cmake_cxx_compiler} has ANSI streams"
959 echo "${cmake_cxx_compiler} does not have ANSI streams"
962 if [ "x$KWSYS_IOS_USE_ANSI" = "x1" ]; then
963 if cmake_try_run
"${cmake_cxx_compiler}" \
964 "${cmake_cxx_flags} -DTEST_KWSYS_IOS_HAVE_STD" \
965 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
967 echo "${cmake_cxx_compiler} has streams in std:: namespace"
969 echo "${cmake_cxx_compiler} does not have streams in std:: namespace"
971 if cmake_try_run
"${cmake_cxx_compiler}" \
972 "${cmake_cxx_flags} -DTEST_KWSYS_IOS_USE_SSTREAM" \
973 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
974 KWSYS_IOS_USE_SSTREAM
=1
975 echo "${cmake_cxx_compiler} has sstream"
977 echo "${cmake_cxx_compiler} does not have sstream"
981 if [ "x$KWSYS_IOS_USE_SSTREAM" = "x0" ]; then
982 if cmake_try_run
"${cmake_cxx_compiler}" \
983 "${cmake_cxx_flags} -DTEST_KWSYS_IOS_USE_STRSTREAM_H" \
984 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
985 KWSYS_IOS_USE_STRSTREAM_H
=1
986 echo "${cmake_cxx_compiler} has strstream.h"
988 echo "${cmake_cxx_compiler} does not have strstream.h"
990 if [ "x$KWSYS_IOS_USE_STRSTREAM_H" = "x0" ]; then
991 if cmake_try_run
"${cmake_cxx_compiler}" \
992 "${cmake_cxx_flags} -DTEST_KWSYS_IOS_USE_STRSTREA_H" \
993 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
994 KWSYS_IOS_USE_STRSTREA_H
=1
995 echo "${cmake_cxx_compiler} has strstrea.h"
997 echo "${cmake_cxx_compiler} does not have strstrea.h"
1002 if cmake_try_run
"${cmake_cxx_compiler}" \
1003 "${cmake_cxx_flags} -DTEST_KWSYS_STL_STRING_HAVE_NEQ_CHAR -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
1004 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
1005 KWSYS_STL_STRING_HAVE_NEQ_CHAR
=1
1006 echo "${cmake_cxx_compiler} has operator!=(string, char*)"
1008 echo "${cmake_cxx_compiler} does not have operator!=(string, char*)"
1011 if cmake_try_run
"${cmake_cxx_compiler}" \
1012 "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAS_ITERATOR_TRAITS -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
1013 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
1014 KWSYS_STL_HAS_ITERATOR_TRAITS
=1
1015 echo "${cmake_cxx_compiler} has stl iterator_traits"
1017 echo "${cmake_cxx_compiler} does not have stl iterator_traits"
1020 if [ "x${KWSYS_STL_HAS_ITERATOR_TRAITS}" = "x0" ]; then
1021 if cmake_try_run
"${cmake_cxx_compiler}" \
1022 "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAS_ITERATOR_CATEGORY -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
1023 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
1024 KWSYS_STL_HAS_ITERATOR_CATEGORY
=1
1025 echo "${cmake_cxx_compiler} has old iterator_category"
1027 echo "${cmake_cxx_compiler} does not have old iterator_category"
1029 if [ "x${KWSYS_STL_HAS_ITERATOR_CATEGORY}" = "x0" ]; then
1030 if cmake_try_run
"${cmake_cxx_compiler}" \
1031 "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAS___ITERATOR_CATEGORY -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
1032 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
1033 KWSYS_STL_HAS___ITERATOR_CATEGORY
=1
1034 echo "${cmake_cxx_compiler} has old __iterator_category"
1036 echo "${cmake_cxx_compiler} does not have old __iterator_category"
1041 if cmake_try_run
"${cmake_cxx_compiler}" \
1042 "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAS_ALLOCATOR_TEMPLATE -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
1043 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
1044 KWSYS_STL_HAS_ALLOCATOR_TEMPLATE
=1
1045 echo "${cmake_cxx_compiler} has standard template allocator"
1047 echo "${cmake_cxx_compiler} does not have standard template allocator"
1050 if [ "x${KWSYS_STL_HAS_ALLOCATOR_TEMPLATE}" = "x1" ]; then
1051 if cmake_try_run
"${cmake_cxx_compiler}" \
1052 "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAS_ALLOCATOR_REBIND -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
1053 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
1054 KWSYS_STL_HAS_ALLOCATOR_REBIND
=1
1055 echo "${cmake_cxx_compiler} has allocator<>::rebind<>"
1057 echo "${cmake_cxx_compiler} does not have allocator<>::rebind<>"
1060 if cmake_try_run
"${cmake_cxx_compiler}" \
1061 "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAS_ALLOCATOR_MAX_SIZE_ARGUMENT -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
1062 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
1063 KWSYS_STL_HAS_ALLOCATOR_MAX_SIZE_ARGUMENT
=1
1064 echo "${cmake_cxx_compiler} has non-standard allocator<>::max_size argument"
1066 echo "${cmake_cxx_compiler} does not have non-standard allocator<>::max_size argument"
1069 if cmake_try_run
"${cmake_cxx_compiler}" \
1070 "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAS_ALLOCATOR_NONTEMPLATE -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
1071 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
1072 KWSYS_STL_HAS_ALLOCATOR_NONTEMPLATE
=1
1073 echo "${cmake_cxx_compiler} has old non-template allocator"
1075 echo "${cmake_cxx_compiler} does not have old non-template allocator"
1079 if cmake_try_run
"${cmake_cxx_compiler}" \
1080 "${cmake_cxx_flags} -DTEST_KWSYS_STL_HAS_ALLOCATOR_OBJECTS -DKWSYS_STL_HAVE_STD=${KWSYS_STL_HAVE_STD}" \
1081 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
1082 KWSYS_STL_HAS_ALLOCATOR_OBJECTS
=1
1083 echo "${cmake_cxx_compiler} has stl containers supporting allocator objects"
1085 echo "${cmake_cxx_compiler} does not have stl containers supporting allocator objects"
1088 if cmake_try_run
"${cmake_cxx_compiler}" \
1089 "${cmake_cxx_flags} -DTEST_KWSYS_CXX_HAS_CSTDDEF" \
1090 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
1091 KWSYS_CXX_HAS_CSTDDEF
=1
1092 echo "${cmake_cxx_compiler} has header cstddef"
1094 echo "${cmake_cxx_compiler} does not have header cstddef"
1097 if cmake_try_run
"${cmake_cxx_compiler}" \
1098 "${cmake_cxx_flags} -DTEST_KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS" \
1099 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
1100 echo "${cmake_cxx_compiler} does not require template friends to use <>"
1102 KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS
=1
1103 echo "${cmake_cxx_compiler} requires template friends to use <>"
1106 if cmake_try_run
"${cmake_cxx_compiler}" \
1107 "${cmake_cxx_flags} -DTEST_KWSYS_CXX_HAS_MEMBER_TEMPLATES" \
1108 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
1109 KWSYS_CXX_HAS_MEMBER_TEMPLATES
=1
1110 echo "${cmake_cxx_compiler} supports member templates"
1112 echo "${cmake_cxx_compiler} does not support member templates"
1115 if cmake_try_run
"${cmake_cxx_compiler}" \
1116 "${cmake_cxx_flags} -DTEST_KWSYS_CXX_HAS_FULL_SPECIALIZATION" \
1117 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
1118 KWSYS_CXX_HAS_FULL_SPECIALIZATION
=1
1119 echo "${cmake_cxx_compiler} has standard template specialization syntax"
1121 echo "${cmake_cxx_compiler} does not have standard template specialization syntax"
1124 if cmake_try_run
"${cmake_cxx_compiler}" \
1125 "${cmake_cxx_flags} -DTEST_KWSYS_CXX_HAS_ARGUMENT_DEPENDENT_LOOKUP" \
1126 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
1127 KWSYS_CXX_HAS_ARGUMENT_DEPENDENT_LOOKUP
=1
1128 echo "${cmake_cxx_compiler} has argument dependent lookup"
1130 echo "${cmake_cxx_compiler} does not have argument dependent lookup"
1133 if cmake_try_run
"${cmake_cxx_compiler}" \
1134 "${cmake_cxx_flags} -DTEST_KWSYS_STAT_HAS_ST_MTIM" \
1135 "${cmake_source_dir}/Source/kwsys/kwsysPlatformTestsCXX.cxx" >> cmake_bootstrap.log
2>&1; then
1136 KWSYS_STAT_HAS_ST_MTIM
=1
1137 echo "${cmake_cxx_compiler} has struct stat with st_mtim member"
1139 echo "${cmake_cxx_compiler} does not have struct stat with st_mtim member"
1142 # Just to be safe, let us store compiler and flags to the header file
1144 cmake_bootstrap_version
='$Revision: 1.114 $'
1145 cmake_compiler_settings_comment
="/*
1146 * Generated by ${cmake_source_dir}/bootstrap
1147 * Version: ${cmake_bootstrap_version}
1149 * Source directory: ${cmake_source_dir}
1150 * Binary directory: ${cmake_bootstrap_dir}
1152 * C compiler: ${cmake_c_compiler}
1153 * C flags: ${cmake_c_flags}
1155 * C++ compiler: ${cmake_cxx_compiler}
1156 * C++ flags: ${cmake_cxx_flags}
1158 * Make: ${cmake_make_processor}
1161 * ${CMAKE_CXX_SOURCES} ${CMAKE_C_SOURCES}
1163 * ${KWSYS_CXX_SOURCES} ${KWSYS_C_SOURCES} ${KWSYS_C_MINGW_SOURCES}
1167 cmake_report cmConfigure.h.tmp
"${cmake_compiler_settings_comment}"
1169 if [ "x$KWSYS_STL_HAVE_STD" = "x1" ]; then
1170 cmake_report cmConfigure.h.tmp
"/* #undef CMAKE_NO_STD_NAMESPACE */"
1172 cmake_report cmConfigure.h.tmp
"#define CMAKE_NO_STD_NAMESPACE 1"
1175 if [ "x$KWSYS_IOS_USE_ANSI" = "x1" ]; then
1176 cmake_report cmConfigure.h.tmp
"/* #undef CMAKE_NO_ANSI_STREAM_HEADERS */"
1178 cmake_report cmConfigure.h.tmp
"#define CMAKE_NO_ANSI_STREAM_HEADERS 1"
1181 if [ "x$KWSYS_IOS_USE_SSTREAM" = "x1" ]; then
1182 cmake_report cmConfigure.h.tmp
"/* #undef CMAKE_NO_ANSI_STRING_STREAM */"
1184 cmake_report cmConfigure.h.tmp
"#define CMAKE_NO_ANSI_STRING_STREAM 1"
1187 # Test for ansi FOR scope
1188 if cmake_try_run
"${cmake_cxx_compiler}" \
1189 "${cmake_cxx_flags}" \
1190 "${cmake_source_dir}/Modules/TestForAnsiForScope.cxx" >> cmake_bootstrap.log
2>&1; then
1191 cmake_report cmConfigure.h.tmp
"/* #undef CMAKE_NO_ANSI_FOR_SCOPE */"
1192 echo "${cmake_cxx_compiler} has ANSI for scoping"
1194 cmake_report cmConfigure.h.tmp
"#define CMAKE_NO_ANSI_FOR_SCOPE 1"
1195 echo "${cmake_cxx_compiler} does not have ANSI for scoping"
1198 # When bootstrapping on MinGW with MSYS we must convert the source
1199 # directory to a windows path.
1200 if ${cmake_system_mingw}; then
1201 cmake_root_dir
=`cd "${cmake_source_dir}"; pwd -W`
1203 cmake_root_dir
="${cmake_source_dir}"
1206 # Write CMake version
1207 cmake_report cmConfigure.h.tmp
"#define CMake_VERSION_MAJOR ${cmake_version_major}"
1208 cmake_report cmConfigure.h.tmp
"#define CMake_VERSION_MINOR ${cmake_version_minor}"
1209 cmake_report cmConfigure.h.tmp
"#define CMake_VERSION_PATCH ${cmake_version_patch}"
1210 cmake_report cmConfigure.h.tmp
"#define CMAKE_ROOT_DIR \"${cmake_root_dir}\""
1211 cmake_report cmConfigure.h.tmp
"#define CMAKE_DATA_DIR \"${cmake_data_dir}\""
1212 cmake_report cmConfigure.h.tmp
"#define CMAKE_BOOTSTRAP"
1214 # Regenerate real cmConfigure.h
1215 if diff cmConfigure.h cmConfigure.h.tmp
> /dev
/null
2> /dev
/null
; then
1216 rm -f cmConfigure.h.tmp
1218 mv -f cmConfigure.h.tmp cmConfigure.h
1222 cmake_kwsys_config_replace_string \
1223 "${cmake_source_dir}/Source/kwsys/Configure.hxx.in" \
1224 "${cmake_bootstrap_dir}/cmsys/Configure.hxx" \
1225 "${cmake_compiler_settings_comment}"
1226 cmake_kwsys_config_replace_string \
1227 "${cmake_source_dir}/Source/kwsys/Configure.h.in" \
1228 "${cmake_bootstrap_dir}/cmsys/Configure.h" \
1229 "${cmake_compiler_settings_comment}"
1231 cat>"${cmake_bootstrap_dir}/cmsys/DateStamp.h"<<EOF
1232 /* Minimal DateStamp header for CMake bootstrap build. */
1233 #ifndef cmsys_DateStamp_h
1234 #define cmsys_DateStamp_h
1235 #define cmsys_DATE_STAMP_STRING_FULL "${cmake_date_stamp}"
1239 for a
in ${KWSYS_FILES}; do
1240 cmake_replace_string
"${cmake_source_dir}/Source/kwsys/${a}.in" \
1241 "${cmake_bootstrap_dir}/cmsys/${a}" KWSYS_NAMESPACE cmsys
1244 for a
in ${KWSYS_IOS_FILES}; do
1245 cmake_replace_string
"${cmake_source_dir}/Source/kwsys/kwsys_ios_${a}.h.in" \
1246 "${cmake_bootstrap_dir}/cmsys/ios/${a}" KWSYS_NAMESPACE cmsys
1249 cmake_replace_string
"${cmake_source_dir}/Source/kwsys/kwsys_stl.hxx.in" \
1250 "${cmake_bootstrap_dir}/cmsys/stl/stl.hxx.in" KWSYS_STL_HEADER_EXTRA
""
1252 cmake_replace_string
"${cmake_bootstrap_dir}/cmsys/stl/stl.hxx.in" \
1253 "${cmake_bootstrap_dir}/cmsys/stl/stl.h.in" KWSYS_NAMESPACE cmsys
1255 for a
in string vector map algorithm
; do
1256 cmake_replace_string
"${cmake_bootstrap_dir}/cmsys/stl/stl.h.in" \
1257 "${cmake_bootstrap_dir}/cmsys/stl/${a}" KWSYS_STL_HEADER ${a}
1261 dep="cmConfigure.h cmsys
/*.hxx cmsys
/*.h
`cmake_escape \"${cmake_source_dir}\"`/Source
/*.h
"
1263 for a in ${CMAKE_CXX_SOURCES} ${CMAKE_C_SOURCES} ${KWSYS_CXX_SOURCES} ${KWSYS_C_SOURCES} ${KWSYS_C_GENERATED_SOURCES}; do
1264 objs="${objs} ${a}.o
"
1267 # Generate dependencies for cmBootstrapCommands.cxx
1268 for file in `grep "#include.*cm[^.]*.cxx" "${cmake_source_dir}/Source/cmBootstrapCommands.cxx" | sed "s/.* \"\(.*\)\"/\1/"`; do
1269 cmBootstrapCommandsDeps
="${cmBootstrapCommandsDeps} `cmake_escape "${cmake_source_dir}/Source
/$file"`"
1271 cmBootstrapCommandsDeps
=`echo $cmBootstrapCommandsDeps`
1273 if [ "x${cmake_ansi_cxx_flags}" != "x" ]; then
1274 cmake_cxx_flags
="${cmake_ansi_cxx_flags} ${cmake_cxx_flags}"
1277 if [ "x${cmake_c_flags}" != "x" ]; then
1278 cmake_c_flags
="${cmake_c_flags} "
1281 if [ "x${cmake_cxx_flags}" != "x" ]; then
1282 cmake_cxx_flags
="${cmake_cxx_flags} "
1285 cmake_c_flags
="${cmake_c_flags}-I`cmake_escape \"${cmake_source_dir}/Source\"` \
1286 -I`cmake_escape \"${cmake_bootstrap_dir}\"`"
1287 cmake_cxx_flags
="${cmake_cxx_flags}-I`cmake_escape \"${cmake_source_dir}/Source\"` \
1288 -I`cmake_escape \"${cmake_bootstrap_dir}\"`"
1289 echo "cmake: ${objs}" > "${cmake_bootstrap_dir}/Makefile"
1290 echo " ${cmake_cxx_compiler} ${cmake_ld_flags} ${cmake_cxx_flags} ${objs} -o cmake" >> "${cmake_bootstrap_dir}/Makefile"
1291 for a
in ${CMAKE_CXX_SOURCES}; do
1292 src
=`cmake_escape "${cmake_source_dir}/Source/${a}.cxx"`
1293 echo "${a}.o : ${src} ${dep}" >> "${cmake_bootstrap_dir}/Makefile"
1294 echo " ${cmake_cxx_compiler} ${cmake_cxx_flags} -c ${src} -o ${a}.o" >> "${cmake_bootstrap_dir}/Makefile"
1296 echo "cmBootstrapCommands.o : $cmBootstrapCommandsDeps" >> "${cmake_bootstrap_dir}/Makefile"
1297 for a
in ${CMAKE_C_SOURCES}; do
1298 src
=`cmake_escape "${cmake_source_dir}/Source/${a}.c"`
1299 echo "${a}.o : ${src} ${dep}" >> "${cmake_bootstrap_dir}/Makefile"
1300 echo " ${cmake_c_compiler} ${cmake_c_flags} -c ${src} -o ${a}.o" >> "${cmake_bootstrap_dir}/Makefile"
1302 for a
in ${KWSYS_C_SOURCES} ${KWSYS_C_MINGW_SOURCES}; do
1303 src
=`cmake_escape "${cmake_source_dir}/Source/kwsys/${a}.c"`
1304 echo "${a}.o : ${src} ${dep}" >> "${cmake_bootstrap_dir}/Makefile"
1305 echo " ${cmake_c_compiler} ${cmake_c_flags} -DKWSYS_NAMESPACE=cmsys -c ${src} -o ${a}.o" >> "${cmake_bootstrap_dir}/Makefile"
1307 for a
in ${KWSYS_CXX_SOURCES}; do
1308 src
=`cmake_escape "${cmake_source_dir}/Source/kwsys/${a}.cxx"`
1309 echo "${a}.o : ${src} ${dep}" >> "${cmake_bootstrap_dir}/Makefile"
1310 echo " ${cmake_cxx_compiler} ${cmake_cxx_flags} -DKWSYS_NAMESPACE=cmsys -c ${src} -o ${a}.o" >> "${cmake_bootstrap_dir}/Makefile"
1312 if ${cmake_system_mingw}; then
1313 src
=`cmake_escape "${cmake_bootstrap_dir}/cmsysProcessFwd9xEnc.c"`
1314 in=`cmake_escape "${cmake_bootstrap_dir}/cmsysProcessFwd9x.exe"`
1315 cmd
=`cmake_escape "${cmake_bootstrap_dir}/cmsysEncodeExecutable.exe"`
1316 a
="cmsysProcessFwd9xEnc"
1317 echo "${cmd} : EncodeExecutable.o" >> "${cmake_bootstrap_dir}/Makefile"
1318 echo " ${cmake_c_compiler} ${cmake_ld_flags} ${cmake_c_flags} EncodeExecutable.o -o ${cmd}" >> "${cmake_bootstrap_dir}/Makefile"
1319 echo "${in} : ProcessFwd9x.o" >> "${cmake_bootstrap_dir}/Makefile"
1320 echo " ${cmake_c_compiler} ${cmake_ld_flags} ${cmake_c_flags} ProcessFwd9x.o -o ${in}" >> "${cmake_bootstrap_dir}/Makefile"
1321 echo "${src} : ${cmd} ${in}" >> "${cmake_bootstrap_dir}/Makefile"
1322 echo " ${cmd} ${in} ${src} cmsys ProcessFwd9x" >> "${cmake_bootstrap_dir}/Makefile"
1323 echo "${a}.o : ${src} ${dep}" >> "${cmake_bootstrap_dir}/Makefile"
1324 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"
1326 cat>>"${cmake_bootstrap_dir}/Makefile"<<EOF
1328 cd "${cmake_binary_dir}" && "${cmake_source_dir}/bootstrap"
1331 # Write our default settings to Bootstrap.cmk/InitialCacheFlags.cmake.
1332 cat > "${cmake_bootstrap_dir}/InitialCacheFlags.cmake" <<EOF
1333 # Generated by ${cmake_source_dir}/bootstrap
1334 # Default cmake settings. These may be overridden any settings below.
1335 SET (CMAKE_INSTALL_PREFIX "${cmake_prefix_dir}" CACHE PATH "Install path prefix, prepended onto install directories." FORCE)
1336 SET (CMAKE_DOC_DIR "${cmake_doc_dir}" CACHE PATH "Install location for documentation (relative to prefix)." FORCE)
1337 SET (CMAKE_MAN_DIR "${cmake_man_dir}" CACHE PATH "Install location for man pages (relative to prefix)." FORCE)
1338 SET (CMAKE_DATA_DIR "${cmake_data_dir}" CACHE PATH "Install location for data (relative to prefix)." FORCE)
1341 # Add configuration settings given as command-line options.
1342 if [ "x${cmake_bootstrap_qt_gui}" != "x" ]; then
1343 cat >> "${cmake_bootstrap_dir}/InitialCacheFlags.cmake" <<EOF
1344 SET (BUILD_QtDialog ${cmake_bootstrap_qt_gui} CACHE BOOL "Build Qt dialog for CMake" FORCE)
1347 if [ "x${cmake_bootstrap_qt_qmake}" != "x" ]; then
1348 cat >> "${cmake_bootstrap_dir}/InitialCacheFlags.cmake" <<EOF
1349 SET (QT_QMAKE_EXECUTABLE "${cmake_bootstrap_qt_qmake}" CACHE FILEPATH "Location of Qt qmake" FORCE)
1353 # Add user-specified settings. Handle relative-path case for
1354 # specification of cmake_init_file.
1356 cd "${cmake_binary_dir}"
1357 if [ -f "${cmake_init_file}" ]; then
1358 cat "${cmake_init_file}" >> "${cmake_bootstrap_dir}/InitialCacheFlags.cmake"
1362 echo "---------------------------------------------"
1364 # Run make to build bootstrap cmake
1365 if [ "x${cmake_parallel_make}" != "x" ]; then
1366 ${cmake_make_processor} ${cmake_make_flags}
1368 ${cmake_make_processor}
1371 if [ "${RES}" -ne "0" ]; then
1372 cmake_error
9 "Problem while running ${cmake_make_processor}"
1374 cd "${cmake_binary_dir}"
1376 # Set C, CXX, and MAKE environment variables, so that real real cmake will be
1377 # build with same compiler and make
1378 CC
="${cmake_c_compiler}"
1379 CXX
="${cmake_cxx_compiler}"
1380 MAKE
="${cmake_make_processor}"
1385 # Run bootstrap CMake to configure real CMake
1386 "${cmake_bootstrap_dir}/cmake" "${cmake_source_dir}" "-C${cmake_bootstrap_dir}/InitialCacheFlags.cmake" "-G${cmake_bootstrap_generator}" ${cmake_bootstrap_system_libs}
1388 if [ "${RES}" -ne "0" ]; then
1389 cmake_error 11 "Problem
while running initial CMake
"
1392 echo "---------------------------------------------"
1394 # And we are done. Now just run make
1395 echo "CMake has bootstrapped. Now run
${cmake_make_processor}.
"