summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbootstrap98
1 files changed, 84 insertions, 14 deletions
diff --git a/bootstrap b/bootstrap
index 993c776..9afc733 100755
--- a/bootstrap
+++ b/bootstrap
@@ -1,5 +1,22 @@
#!/bin/sh
+#=========================================================================
+#
+# Program: CMake - Cross-Platform Makefile Generator
+# Module: $RCSfile$
+# Language: Bourne Shell
+# Date: $Date$
+# Version: $Revision$
+#
+# Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
+# See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even
+# the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the above copyright notices for more information.
+#
+#=========================================================================
+
CMAKE_KNOWN_C_COMPILERS="cc gcc xlc icc tcc"
CMAKE_KNOWN_CXX_COMPILERS="CC g++ c++ xlC icc como aCC"
CMAKE_KNOWN_MAKE_PROCESSORS="make gmake"
@@ -82,6 +99,27 @@ cmake_error()
exit 1
}
+# Replace KWSYS_NAMESPACE with cmsys
+cmake_replace_string ()
+{
+ INFILE="$1"
+ OUTFILE="$2"
+ SEARCHFOR="$3"
+ REPLACEWITH="$4"
+ if [ -f "${INFILE}" ]; then
+ cat "${INFILE}" |
+ sed "s/\@${SEARCHFOR}\@/${REPLACEWITH}/g" > "${OUTFILE}.tmp"
+ if [ -f "${OUTFILE}.tmp" ]; then
+ if diff "${OUTFILE}" "${OUTFILE}.tmp" > /dev/null 2> /dev/null ; then
+ #echo "Files are the same"
+ rm -f "${OUTFILE}.tmp"
+ else
+ mv -f "${OUTFILE}.tmp" "${OUTFILE}"
+ fi
+ fi
+ fi
+}
+
# Write string into a file
cmake_report ()
{
@@ -215,7 +253,6 @@ cd "${cmake_bootstrap_dir}"
# Delete all the bootstrap files
rm -f "${cmake_bootstrap_dir}/cmake_bootstrap.log"
-rm -f "${cmake_bootstrap_dir}/cmConfigure.h"
# If exist compiler flags, set them
cmake_c_flags=${CFLAGS}
@@ -349,21 +386,38 @@ EOF
rm -f "${TMPFILE}.cxx"
fi
+# Just to be safe, let us store compiler and flags to the header file
+
+cmake_report cmConfigure.h.tmp "/*"
+cmake_report cmConfigure.h.tmp " * Generated by ${cmake_source_dir}/bootstrap"
+cmake_report cmConfigure.h.tmp " * Binary directory: ${cmake_bootstrap_dir}"
+cmake_report cmConfigure.h.tmp " * C compiler: ${cmake_c_compiler}"
+cmake_report cmConfigure.h.tmp " * C flags: ${cmake_c_flags}"
+cmake_report cmConfigure.h.tmp " *"
+cmake_report cmConfigure.h.tmp " * C++ compiler: ${cmake_cxx_compiler}"
+cmake_report cmConfigure.h.tmp " * C++ flags: ${cmake_cxx_flags}"
+cmake_report cmConfigure.h.tmp " *"
+cmake_report cmConfigure.h.tmp " * Make: ${cmake_make_processor}"
+cmake_report cmConfigure.h.tmp " *"
+cmake_report cmConfigure.h.tmp " * Sources:"
+cmake_report cmConfigure.h.tmp " * ${CMAKE_SOURCES}"
+cmake_report cmConfigure.h.tmp " */"
+
# Test for STD namespace
if cmake_try_run "${cmake_cxx_compiler}" "${cmake_cxx_flags}" "${cmake_source_dir}/Modules/TestForSTDNamespace.cxx" >> cmake_bootstrap.log 2>&1; then
- cmake_report cmConfigure.h "/* #undef CMAKE_NO_STD_NAMESPACE */"
+ cmake_report cmConfigure.h.tmp "/* #undef CMAKE_NO_STD_NAMESPACE */"
echo "${cmake_cxx_compiler} has STD namespace"
else
- cmake_report cmConfigure.h "#define CMAKE_NO_STD_NAMESPACE 1"
+ cmake_report cmConfigure.h.tmp "#define CMAKE_NO_STD_NAMESPACE 1"
echo "${cmake_cxx_compiler} does not have STD namespace"
fi
# Test for ANSI stream headers
if cmake_try_run "${cmake_cxx_compiler}" "${cmake_cxx_flags}" "${cmake_source_dir}/Modules/TestForANSIStreamHeaders.cxx" >> cmake_bootstrap.log 2>&1; then
- cmake_report cmConfigure.h "/* #undef CMAKE_NO_ANSI_STREAM_HEADERS */"
+ cmake_report cmConfigure.h.tmp "/* #undef CMAKE_NO_ANSI_STREAM_HEADERS */"
echo "${cmake_cxx_compiler} has ANSI stream headers"
else
- cmake_report cmConfigure.h "#define CMAKE_NO_ANSI_STREAM_HEADERS 1"
+ cmake_report cmConfigure.h.tmp "#define CMAKE_NO_ANSI_STREAM_HEADERS 1"
echo "${cmake_cxx_compiler} does not have ANSI stream headers"
fi
@@ -374,30 +428,37 @@ cat>${TMPFILE}.cxx<<EOF
int main() { return 0;}
EOF
if cmake_try_run "${cmake_cxx_compiler}" "${cmake_cxx_flags}" "${TMPFILE}.cxx" >> cmake_bootstrap.log 2>&1; then
- cmake_report cmConfigure.h "/* #undef CMAKE_NO_ANSI_STRING_STREAM */"
+ cmake_report cmConfigure.h.tmp "/* #undef CMAKE_NO_ANSI_STRING_STREAM */"
echo "${cmake_cxx_compiler} has ANSI string streams"
else
- cmake_report cmConfigure.h "#define CMAKE_NO_ANSI_STRING_STREAM 1"
+ cmake_report cmConfigure.h.tmp "#define CMAKE_NO_ANSI_STRING_STREAM 1"
echo "${cmake_cxx_compiler} does not have ANSI string streams"
fi
rm -f "${TMPFILE}.cxx"
# Test for ansi FOR scope
if cmake_try_run "${cmake_cxx_compiler}" "${cmake_cxx_flags}" "${cmake_source_dir}/Modules/TestForAnsiForScope.cxx" >> cmake_bootstrap.log 2>&1; then
- cmake_report cmConfigure.h "/* #undef CMAKE_NO_ANSI_FOR_SCOPE */"
+ cmake_report cmConfigure.h.tmp "/* #undef CMAKE_NO_ANSI_FOR_SCOPE */"
echo "${cmake_cxx_compiler} has ANSI for scoping"
else
- cmake_report cmConfigure.h "#define CMAKE_NO_ANSI_FOR_SCOPE 1"
+ cmake_report cmConfigure.h.tmp "#define CMAKE_NO_ANSI_FOR_SCOPE 1"
echo "${cmake_cxx_compiler} does not have ANSI for scoping"
fi
# Write CMake version
for a in MAJOR MINOR PATCH; do
CMake_VERSION=`cat "${cmake_source_dir}/CMakeLists.txt" | grep "SET(CMake_VERSION_${a} *[0-9]*)" | sed "s/SET(CMake_VERSION_${a} *\([0-9]*\))/\1/"`
- cmake_report cmConfigure.h "#define CMake_VERSION_${a} ${CMake_VERSION}"
+ cmake_report cmConfigure.h.tmp "#define CMake_VERSION_${a} ${CMake_VERSION}"
done
-cmake_report cmConfigure.h "#define CMAKE_ROOT_DIR \"${cmake_source_dir}\""
-cmake_report cmConfigure.h "#define CMAKE_BOOTSTRAP"
+cmake_report cmConfigure.h.tmp "#define CMAKE_ROOT_DIR \"${cmake_source_dir}\""
+cmake_report cmConfigure.h.tmp "#define CMAKE_BOOTSTRAP"
+
+# Regenerate real cmConfigure.h
+if diff cmConfigure.h cmConfigure.h.tmp > /dev/null 2> /dev/null; then
+ rm -f cmConfigure.h.tmp
+else
+ mv -f cmConfigure.h.tmp cmConfigure.h
+fi
# Generate Makefile
dep="cmConfigure.h `cmake_escape \"${cmake_source_dir}\"`/Source/*.h"
@@ -405,7 +466,16 @@ objs=""
for a in ${CMAKE_SOURCES}; do
objs="${objs} ${a}.o"
done
-cmake_cxx_flags="${cmake_ansi_cxx_flags} ${cmake_cxx_flags} -I`cmake_escape \"${cmake_source_dir}/Source\"` -I`cmake_escape \"${cmake_bootstrap_dir}\"`"
+
+if [ "x${cmake_ansi_cxx_flags}" != "x" ]; then
+ cmake_cxx_flags="${cmake_ansi_cxx_flags} ${cmake_cxx_flags}"
+fi
+
+if [ "x${cmake_cxx_flags}" != "x" ]; then
+ cmake_cxx_flags="${cmake_cxx_flags} "
+fi
+
+cmake_cxx_flags="${cmake_cxx_flags}-I`cmake_escape \"${cmake_source_dir}/Source\"` -I`cmake_escape \"${cmake_bootstrap_dir}\"`"
echo "cmake: ${objs}" > "${cmake_bootstrap_dir}/Makefile"
echo " ${cmake_cxx_compiler} ${LDFLAGS} ${cmake_cxx_flags} ${objs} -o cmake" >> "${cmake_bootstrap_dir}/Makefile"
for a in ${CMAKE_SOURCES}; do
@@ -446,4 +516,4 @@ export MAKE
echo "---------------------------------------------"
# And we are done. Now just run make
-echo "CMake ${CMAKE_VERSION} is configured. Now just run ${cmake_make_processor}."
+echo "CMake is configured. Now just run ${cmake_make_processor}."