Преглед изворни кода

ENH: fix cmake so it can boot strap itself better

Bill Hoffman пре 24 година
родитељ
комит
adbae91cb5

+ 25 - 16
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

+ 6 - 6
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
 )
 
 

+ 1 - 1
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

+ 5 - 0
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}"
+
+

+ 7 - 0
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;

+ 3 - 0
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 )

+ 1 - 1
Source/cmake.cxx

@@ -164,7 +164,7 @@ void cmake::AddCMakePaths(const std::vector<std::string>& 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";

+ 2 - 1
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@" )

+ 9 - 11
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 <<!
 #include <list>
@@ -2965,15 +2963,13 @@ void foo() { std::list<int> 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
 

+ 4 - 2
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<int> 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