summaryrefslogtreecommitdiffstats
path: root/bootstrap
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2003-06-21 15:57:13 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2003-06-21 15:57:13 (GMT)
commit324807d395f6c516337478e94958b39037f65f22 (patch)
tree06c3e87499013ba5260d05193244b2faa9bf8149 /bootstrap
parentaaf279505005a4604ae6317297e2e926fdf9bc78 (diff)
downloadCMake-324807d395f6c516337478e94958b39037f65f22.zip
CMake-324807d395f6c516337478e94958b39037f65f22.tar.gz
CMake-324807d395f6c516337478e94958b39037f65f22.tar.bz2
ENH: Add copyright, cmConfigure.h is now touched only when it is modified, remove some spaces from output, add procedure that copies file and replaces atstring with another string
Diffstat (limited to 'bootstrap')
-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}."