From adbae91cb5a5cb4cd33df273dd977791406ec339 Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Wed, 20 Jun 2001 13:56:38 -0400 Subject: [PATCH] ENH: fix cmake so it can boot strap itself better --- Source/CMakeLists.txt | 41 +++++++++++-------- Source/FLTKDialog/CMakeLists.txt | 12 +++--- .../CMakeSetupGUIImplementation.cxx | 2 +- Source/cmConfigure.cmake.h.in | 5 +++ Source/cmSourceFile.cxx | 7 ++++ Source/cmStandardIncludes.h | 3 ++ Source/cmake.cxx | 2 +- Templates/CMakeSystemConfig.cmake.in | 3 +- Templates/configure | 20 ++++----- Templates/configure.in | 6 ++- 10 files changed, 63 insertions(+), 38 deletions(-) create mode 100644 Source/cmConfigure.cmake.h.in diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 745d2a834..a38e9affa 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -8,26 +8,35 @@ IF(FLTK_LIBRARY) ENDIF(FLTK_LIBRARY) SOURCE_FILES(SRCS -cmake -cmMakeDepend -cmMakefile -cmMakefileGenerator -cmRegularExpression -cmSourceFile -cmSystemTools -cmDirectory -cmCommands -cmTarget -cmCustomCommand -cmCacheManager -cmCableClassSet -cmSourceGroup +cmake +cmMakeDepend.cxx +cmMakefile.cxx +cmMakefileGenerator.cxx +cmRegularExpression.cxx +cmSourceFile.cxx +cmSystemTools.cxx +cmDirectory.cxx +cmCommands.cxx +cmTarget.cxx +cmCustomCommand.cxx +cmCacheManager.cxx +cmCableClassSet.cxx +cmSourceGroup.cxx ) +# configure the .h file +CONFIGURE_FILE( +${CMake_SOURCE_DIR}/Source/cmConfigure.cmake.h.in +${CMake_BINARY_DIR}/Source/cmConfigure.cmake.h ) +# add the include path to find the .h +INCLUDE_DIRECTORIES(${CMake_BINARY_DIR}/Source) +# let cmake know it is supposed to use it +ADD_DEFINITIONS(-DCMAKE_BUILD_WITH_CMAKE) + IF (WIN32) - SOURCE_FILES(SRCS cmDSWWriter cmDSPWriter cmMSProjectGenerator) + SOURCE_FILES(SRCS cmDSWWriter.cxx cmDSPWriter.cxx cmMSProjectGenerator.cxx) ELSE (WIN32) - SOURCE_FILES(SRCS cmUnixMakefileGenerator) + SOURCE_FILES(SRCS cmUnixMakefileGenerator.cxx) ENDIF (WIN32) # create a library used by the command line and the GUI diff --git a/Source/FLTKDialog/CMakeLists.txt b/Source/FLTKDialog/CMakeLists.txt index d110cd842..1c5e8c9b7 100644 --- a/Source/FLTKDialog/CMakeLists.txt +++ b/Source/FLTKDialog/CMakeLists.txt @@ -1,10 +1,10 @@ SOURCE_FILES(SRCS -CMakeSetupGUI -CMakeSetupGUIImplementation -FLTKDialog -FLTKPropertyItemRow -FLTKPropertyList -FLTKPropertyNameButtonWithHelp +CMakeSetupGUI.cxx +CMakeSetupGUIImplementation.cxx +FLTKDialog.cxx +FLTKPropertyItemRow.cxx +FLTKPropertyList.cxx +FLTKPropertyNameButtonWithHelp.cxx ) diff --git a/Source/FLTKDialog/CMakeSetupGUIImplementation.cxx b/Source/FLTKDialog/CMakeSetupGUIImplementation.cxx index b1eab8934..4206e57df 100644 --- a/Source/FLTKDialog/CMakeSetupGUIImplementation.cxx +++ b/Source/FLTKDialog/CMakeSetupGUIImplementation.cxx @@ -146,7 +146,7 @@ CMakeSetupGUIImplementation m_PathToExecutable = absolutePath; #if defined(_WIN32) - m_PathToExecutable += "/CMake.exe"; + m_PathToExecutable += "/Debug/CMake.exe"; #else m_PathToExecutable += "/cmake"; #endif diff --git a/Source/cmConfigure.cmake.h.in b/Source/cmConfigure.cmake.h.in new file mode 100644 index 000000000..6d76a5cee --- /dev/null +++ b/Source/cmConfigure.cmake.h.in @@ -0,0 +1,5 @@ +#cmakedefine CMAKE_NO_STD_NAMESPACE +#cmakedefine CMAKE_NO_ANSI_STREAM_HEADERS +#define CMAKE_ROOT_DIR "${CMake_SOURCE_DIR}" + + diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx index be4dbcc97..078311514 100644 --- a/Source/cmSourceFile.cxx +++ b/Source/cmSourceFile.cxx @@ -74,6 +74,13 @@ void cmSourceFile::SetName(const char* name, const char* dir) std::string hname = pathname; if(cmSystemTools::FileExists(hname.c_str())) { + std::string::size_type pos = hname.rfind('.'); + if(pos != std::string::npos) + { + m_SourceExtension = hname.substr(pos+1, hname.size()-pos); + m_SourceName = hname.substr(0, pos); + } + m_HeaderFileOnly = false; m_FullPath = hname; return; diff --git a/Source/cmStandardIncludes.h b/Source/cmStandardIncludes.h index 9c84215fb..a4330bf5c 100644 --- a/Source/cmStandardIncludes.h +++ b/Source/cmStandardIncludes.h @@ -50,6 +50,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifdef CMAKE_HAS_AUTOCONF #include "cmConfigure.h" #endif +#ifdef CMAKE_BUILD_WITH_CMAKE +#include "cmConfigure.cmake.h" +#endif #ifdef _MSC_VER #pragma warning ( disable : 4786 ) diff --git a/Source/cmake.cxx b/Source/cmake.cxx index f54e556b2..7e2a14b3a 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -164,7 +164,7 @@ void cmake::AddCMakePaths(const std::vector& args) modules = cMakeRoot + "/share/CMake/Modules"; if (!cmSystemTools::FileIsDirectory(modules.c_str())) { -#if !defined(_WIN32) || defined(__CYGWIN__) +#ifdef CMAKE_ROOT_DIR // try compiled in value on UNIX cMakeRoot = CMAKE_ROOT_DIR; modules = cMakeRoot + "/Modules"; diff --git a/Templates/CMakeSystemConfig.cmake.in b/Templates/CMakeSystemConfig.cmake.in index 27ece9ae3..dc522396a 100644 --- a/Templates/CMakeSystemConfig.cmake.in +++ b/Templates/CMakeSystemConfig.cmake.in @@ -46,4 +46,5 @@ SET (CMAKE_SHLIB_RUNTIME_SEP "@CMAKE_SHLIB_RUNTIME_SEP@" CACHE STRING SET (CMAKE_X_LIBS "@X_PRE_LIBS@ @X_LIBS@ -lX11 -lXext @X_EXTRA_LIBS@" CACHE STRING "Libraries and options used in X11 programs") SET (CMAKE_X_CFLAGS "@X_CFLAGS@" CACHE STRING "X11 extra flags") SET (CMAKE_HAS_X "@CMAKE_HAS_X@" ) - +SET (CMAKE_NO_ANSI_STREAM_HEADERS "@CMAKE_NO_ANSI_STREAM_HEADERS@" ) +SET (CMAKE_NO_STD_NAMESPACE "@CMAKE_NO_STD_NAMESPACE@" ) diff --git a/Templates/configure b/Templates/configure index ec9abce31..50f868697 100755 --- a/Templates/configure +++ b/Templates/configure @@ -2944,19 +2944,17 @@ echo "configure:2939: checking ansi standard C++ stream headers " >&5 if test -z "`${CXX} -c conftest.cc 2>&1`"; then echo "$ac_t""yes" 1>&6 else - cat >> confdefs.h <<\EOF -#define CMAKE_NO_STD_NAMESPACE 1 -EOF - + CMAKE_NO_STD_NAMESPACE="1" echo "$ac_t""no" 1>&6 fi fi + # check to see if stl is in the std namespace if test $ac_cv_prog_gxx = no; then echo "******" echo $ac_n "checking ansi standard namespace support ""... $ac_c" 1>&6 -echo "configure:2960: checking ansi standard namespace support " >&5 +echo "configure:2958: checking ansi standard namespace support " >&5 rm -rf conftest.* cat > conftest.cc < @@ -2965,15 +2963,13 @@ void foo() { std::list l; } if test -z "`${CXX} -c conftest.cc 2>&1`"; then echo "$ac_t""yes" 1>&6 else - cat >> confdefs.h <<\EOF -#define CMAKE_NO_ANSI_STREAM_HEADERS 1 -EOF - + CMAKE_NO_ANSI_STREAM_HEADERS="1" echo "$ac_t""no" 1>&6 fi fi + if test "$CC" = "gcc" -o `$CC -v 2>&1 | grep -c gcc` != "0" ; then SHLIB_CFLAGS="-fPIC" fi @@ -2984,7 +2980,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2988: checking for $ac_word" >&5 +echo "configure:2984: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_RUNMAKE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3024,7 +3020,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3028: checking for $ac_word" >&5 +echo "configure:3024: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_CMAKE_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3241,6 +3237,8 @@ s%@CMAKE_HP_PTHREADS@%$CMAKE_HP_PTHREADS%g s%@CMAKE_THREAD_LIBS@%$CMAKE_THREAD_LIBS%g s%@CMAKE_ANSI_CFLAGS@%$CMAKE_ANSI_CFLAGS%g s%@CMAKE_TEMPLATE_FLAGS@%$CMAKE_TEMPLATE_FLAGS%g +s%@CMAKE_NO_STD_NAMESPACE@%$CMAKE_NO_STD_NAMESPACE%g +s%@CMAKE_NO_ANSI_STREAM_HEADERS@%$CMAKE_NO_ANSI_STREAM_HEADERS%g s%@RUNMAKE@%$RUNMAKE%g s%@CMAKE_AR@%$CMAKE_AR%g diff --git a/Templates/configure.in b/Templates/configure.in index 21fcb100a..a89ce30d3 100644 --- a/Templates/configure.in +++ b/Templates/configure.in @@ -520,10 +520,11 @@ if test $ac_cv_prog_gxx = no; then if test -z "`${CXX} -c conftest.cc 2>&1`"; then echo "$ac_t""yes" 1>&6 else - AC_DEFINE(CMAKE_NO_STD_NAMESPACE) + CMAKE_NO_STD_NAMESPACE="1" echo "$ac_t""no" 1>&6 fi fi +AC_SUBST(CMAKE_NO_STD_NAMESPACE) # check to see if stl is in the std namespace if test $ac_cv_prog_gxx = no; then @@ -537,10 +538,11 @@ void foo() { std::list l; } if test -z "`${CXX} -c conftest.cc 2>&1`"; then echo "$ac_t""yes" 1>&6 else - AC_DEFINE(CMAKE_NO_ANSI_STREAM_HEADERS) + CMAKE_NO_ANSI_STREAM_HEADERS="1" echo "$ac_t""no" 1>&6 fi fi +AC_SUBST(CMAKE_NO_ANSI_STREAM_HEADERS) if test "$CC" = "gcc" -o `$CC -v 2>&1 | grep -c gcc` != "0" ; then