ENH: Merged use of kwsys library.

This commit is contained in:
Brad King 2003-06-23 08:58:58 -04:00
parent c5890b8c2e
commit dc3fd5c267
15 changed files with 116 additions and 2034 deletions

View File

@ -29,6 +29,15 @@ IF(CMAKE_SYSTEM MATCHES "OSF1-V.*")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -timplicit_local -no_implicit_include ")
ENDIF(NOT CMAKE_COMPILER_IS_GNUCXX)
ENDIF(CMAKE_SYSTEM MATCHES "OSF1-V.*")
#-----------------------------------------------------------------------------
# Create the kwsys library for CMake.
SET(KWSYS_NAMESPACE cmsys)
SET(KWSYS_USE_SystemTools 1)
SET(KWSYS_USE_Directory 1)
SET(KWSYS_HEADER_ROOT ${CMake_BINARY_DIR}/Source)
SUBDIRS(Source/kwsys)
SUBDIRS(Source Modules Templates Utilities)
ENABLE_TESTING()

View File

@ -8,7 +8,6 @@ cmMakefile.cxx
cmRegularExpression.cxx
cmSourceFile.cxx
cmSystemTools.cxx
cmDirectory.cxx
cmDocumentation.cxx
cmDynamicLoader.cxx
cmCommands.cxx
@ -30,7 +29,6 @@ cmRegularExpression.h
cmSourceFile.h
cmSystemTools.h
cmDynamicLoader.h
cmDirectory.h
cmCommands.h
cmTarget.h
cmCustomCommand.h
@ -96,6 +94,7 @@ ENDIF (WIN32)
# create a library used by the command line and the GUI
ADD_LIBRARY(CMakeLib ${SRCS})
TARGET_LINK_LIBRARIES(CMakeLib cmsys)
# always link in the library
# the library is found here

View File

@ -18,7 +18,6 @@
#include "cmCursesMainForm.h"
#include "cmSystemTools.h"
#include "cmDirectory.h"
cmCursesPathWidget::cmCursesPathWidget(int width, int height,
int left, int top) :

View File

@ -15,9 +15,10 @@
=========================================================================*/
#include "cmAuxSourceDirectoryCommand.h"
#include "cmDirectory.h"
#include "cmSourceFile.h"
#include <cmsys/Directory.hxx>
// cmAuxSourceDirectoryCommand
bool cmAuxSourceDirectoryCommand::InitialPass(std::vector<std::string> const& args)
{
@ -42,7 +43,7 @@ bool cmAuxSourceDirectoryCommand::InitialPass(std::vector<std::string> const& ar
}
// Load all the files in the directory
cmDirectory dir;
cmsys::Directory dir;
if(dir.Load(tdir.c_str()))
{
size_t numfiles = dir.GetNumberOfFiles();

View File

@ -1,121 +0,0 @@
/*=========================================================================
Program: CMake - Cross-Platform Makefile Generator
Module: $RCSfile$
Language: C++
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.
=========================================================================*/
#include "cmDirectory.h"
// First microsoft compilers
#ifdef _MSC_VER
#include <windows.h>
#include <io.h>
#include <ctype.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
/**
*
*/
bool
cmDirectory
::Load(const char* name)
{
char* buf;
size_t n = strlen(name);
if ( name[n - 1] == '/' )
{
buf = new char[n + 1 + 1];
sprintf(buf, "%s*", name);
}
else
{
buf = new char[n + 2 + 1];
sprintf(buf, "%s/*", name);
}
struct _finddata_t data; // data of current file
// Now put them into the file array
size_t srchHandle = _findfirst(buf, &data);
delete [] buf;
if ( srchHandle == -1 )
{
return 0;
}
// Loop through names
do
{
m_Files.push_back(data.name);
}
while ( _findnext(srchHandle, &data) != -1 );
m_Path = name;
return _findclose(srchHandle) != -1;
}
#else
// Now the POSIX style directory access
#include <sys/types.h>
#include <dirent.h>
/**
*
*/
bool
cmDirectory
::Load(const char* name)
{
DIR* dir = opendir(name);
if (!dir)
{
return 0;
}
for (dirent* d = readdir(dir); d; d = readdir(dir) )
{
m_Files.push_back(d->d_name);
}
m_Path = name;
closedir(dir);
return 1;
}
#endif
/**
*
*/
const char*
cmDirectory
::GetFile(size_t dindex)
{
if ( dindex >= m_Files.size() )
{
cmSystemTools::Error("Bad index for GetFile on cmDirectory\n", 0);
return 0;
}
return m_Files[dindex].c_str();
}

View File

@ -1,58 +0,0 @@
/*=========================================================================
Program: CMake - Cross-Platform Makefile Generator
Module: $RCSfile$
Language: C++
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.
=========================================================================*/
#ifndef __cmDirectory_h
#define __cmDirectory_h
#include "cmStandardIncludes.h"
#include "cmSystemTools.h"
/** \class cmDirectory
* \brief Portable directory/filename traversal.
*
* cmDirectory provides a portable way of finding the names of the files
* in a system directory.
*
* cmDirectory currently works with Windows and Unix operating systems.
*/
class cmDirectory
{
public:
/**
* Load the specified directory and load the names of the files
* in that directory. 0 is returned if the directory can not be
* opened, 1 if it is opened.
*/
bool Load(const char* dir);
/**
* Return the number of files in the current directory.
*/
size_t GetNumberOfFiles() { return m_Files.size();}
/**
* Return the file at the given index, the indexing is 0 based
*/
const char* GetFile(size_t );
private:
std::vector<std::string> m_Files; // Array of Files
std::string m_Path; // Path to Open'ed directory
}; // End Class: cmDirectory
#endif

View File

@ -15,7 +15,6 @@
=========================================================================*/
#include "cmMakeDirectoryCommand.h"
#include "cmDirectory.h"
// cmMakeDirectoryCommand
bool cmMakeDirectoryCommand::InitialPass(std::vector<std::string> const& args)

View File

@ -18,7 +18,6 @@
#include "cmCommand.h"
#include "cmStandardIncludes.h"
#include "cmSourceFile.h"
#include "cmDirectory.h"
#include "cmSystemTools.h"
#include "cmGlobalGenerator.h"
#include "cmLocalGenerator.h"

File diff suppressed because it is too large Load Diff

View File

@ -19,47 +19,17 @@
#include "cmStandardIncludes.h"
#include <cmsys/SystemTools.hxx>
/** \class cmSystemTools
* \brief A collection of useful functions for CMake.
*
* cmSystemTools is a class that provides helper functions
* for the CMake build system.
*/
class cmSystemTools
class cmSystemTools: public cmsys::SystemTools
{
public:
/**
* Replace symbols in str that are not valid in C identifiers as
* defined by the 1999 standard, ie. anything except [A-Za-z0-9_].
* They are replaced with `_' and if the first character is a digit
* then an underscore is prepended. Note that this can produce
* identifiers that the standard reserves (_[A-Z].* and __.*).
*/
static std::string MakeCindentifier(const char* s);
/**
* Make a new directory if it is not there. This function
* can make a full path even if none of the directories existed
* prior to calling this function.
*/
static bool MakeDirectory(const char* path);
/**
* Get current time as a double. On certain platforms this will
* return higher resolution than seconds:
* (1) gettimeofday() -- resolution in microseconds
* (2) ftime() -- resolution in milliseconds
* (3) time() -- resolution in seconds
*/
static double GetTime();
/**
* Replace replace all occurances of the string in
* the source string.
*/
static void ReplaceString(std::string& source,
const char* replace,
const char* with);
/** Expand out any arguements in the vector that have ; separated
* strings into multiple arguements. A new vector is created
@ -70,47 +40,11 @@ public:
static void ExpandListArgument(const std::string& arg,
std::vector<std::string>& argsOut);
/**
* Read a registry value
*/
static bool ReadRegistryValue(const char *key, std::string &value);
/**
* Write a registry value
*/
static bool WriteRegistryValue(const char *key, const char *value);
/**
* Delete a registry value
*/
static bool DeleteRegistryValue(const char *key);
/**
* Look for and replace registry values in a string
*/
static void ExpandRegistryValues(std::string& source);
/**
* Return a capitalized string (i.e the first letter is uppercased, all other
* are lowercased).
*/
static std::string Capitalized(const std::string&);
/**
* Return a lower case string
*/
static std::string LowerCase(const std::string&);
/**
* Return a lower case string
*/
static std::string UpperCase(const std::string&);
/**
* Replace Windows file system slashes with Unix-style slashes.
*/
static void ConvertToUnixSlashes(std::string& path);
/**
* Platform independent escape spaces, unix uses backslash,
* windows double quotes the string.
@ -119,15 +53,6 @@ public:
///! Escape quotes in a string.
static std::string EscapeQuotes(const char* str);
/**
* For windows this calles ConvertToWindowsOutputPath and for unix
* it calls ConvertToUnixOutputPath
*/
static std::string ConvertToOutputPath(const char*);
///! Return true if a file exists in the current directory.
static bool FileExists(const char* filename);
/**
* Given a string, replace any escape sequences with the corresponding
@ -135,19 +60,6 @@ public:
*/
static std::string RemoveEscapes(const char*);
/**
* Add the paths from the environment variable PATH to the
* string vector passed in.
*/
static void GetPath(std::vector<std::string>& path);
/**
* Get the file extension (including ".") needed for an executable
* on the current platform ("" for unix, ".exe" for Windows).
*/
static const char* GetExecutableExtension();
typedef void (*ErrorCallback)(const char*, const char*, bool&, void*);
/**
* Set the function used by GUI's to display error messages
@ -191,26 +103,6 @@ public:
cmSystemTools::s_ErrorOccured = false;
}
/**
* Copy the source file to the destination file only
* if the two files differ.
*/
static bool CopyFileIfDifferent(const char* source,
const char* destination);
///! Compare the contents of two files. Return true if different.
static bool FilesDiffer(const char* source,
const char* destination);
///! return true if the two files are the same file
static bool SameFile(const char* file1, const char* file2);
///! Copy a file.
static void cmCopyFile(const char* source,
const char* destination);
///! Remove a file.
static bool RemoveFile(const char* source);
/**
* does a string indicate a true or on value ? This is not the same
* as ifdef.
@ -229,22 +121,6 @@ public:
///! Return true if value is NOTFOUND or ends in -NOTFOUND.
static bool IsNOTFOUND(const char* value);
///! Find a file in the system PATH, with optional extra paths.
static std::string FindFile(const char* name,
const std::vector<std::string>& path= std::vector<std::string>());
///! Find an executable in the system PATH, with optional extra paths.
static std::string FindProgram(const char* name,
const std::vector<std::string>& path = std::vector<std::string>(),
bool no_system_path = false);
///! Find a library in the system PATH, with optional extra paths.
static std::string FindLibrary(const char* name,
const std::vector<std::string>& path);
///! return true if the file is a directory.
static bool FileIsDirectory(const char* name);
static bool DoesFileExistWithExtensions(
const char *name,
const std::vector<std::string>& sourceExts);
@ -265,43 +141,8 @@ public:
static bool SimpleGlob(const std::string& glob, std::vector<std::string>& files,
int type = 0);
static std::string GetCurrentWorkingDirectory();
static std::string GetProgramPath(const char*);
static void SplitProgramPath(const char* in_name,
std::string& dir,
std::string& file,
bool errorReport = true);
static std::string CollapseFullPath(const char* in_relative);
static std::string CollapseFullPath(const char* in_relative,
const char* in_base);
///! return path of a full filename (no trailing slashes).
static std::string GetFilenamePath(const std::string&);
///! return file name of a full filename (i.e. file name without path).
static std::string GetFilenameName(const std::string&);
///! Split a program from its arguments and handle spaces in the paths.
static void SplitProgramFromArgs(const char* path,
std::string& program, std::string& args);
///! return file extension of a full filename (dot included).
static std::string GetFilenameExtension(const std::string&);
///! return file extension of a full filename (dot included).
static std::string GetFilenameLastExtension(const std::string&);
///! return file name without extension of a full filename.
static std::string GetFilenameWithoutExtension(const std::string&);
///! return file name without its last (shortest) extension.
static std::string GetFilenameWithoutLastExtension(const std::string&);
/** Return whether the path represents a full path (not relative). */
static bool FileIsFullPath(const char*);
static long int ModifiedTime(const char* filename);
///! Copy a file.
static bool cmCopyFile(const char* source, const char* destination);
/**
* Run an executable command and put the stdout in output.
@ -319,13 +160,7 @@ public:
bool verbose = true, int timeout = 0);
static bool RunCommand(const char* command, std::string& output,
int &retVal, const char* directory = 0,
bool verbose = true, int timeout = 0);
///! for windows return the short path for the given path, unix just a pass through
static bool GetShortPath(const char* path, std::string& result);
///! change directory the the directory specified
static int ChangeDirectory(const char* dir);
bool verbose = true, int timeout = 0);
static void EnableMessages() { s_DisableMessages = false; }
static void DisableMessages() { s_DisableMessages = true; }
@ -333,10 +168,6 @@ public:
static void EnableRunCommandOutput() {s_DisableRunCommandOutput = false; }
static bool GetRunCommandOutput() { return s_DisableRunCommandOutput; }
/** Split a string on its newlines into multiple lines. Returns
false only if the last line stored had no newline. */
static bool Split(const char* s, std::vector<cmStdString>& l);
/**
* Come constants for different file formats.
*/
@ -360,8 +191,6 @@ public:
*/
static FileFormat GetFileFormat(const char* ext);
static std::string GetCurrentDateTime(const char* format);
/**
* On Windows 9x we need a comspec (command.com) substitute to run
* programs correctly. This string has to be constant available
@ -380,35 +209,9 @@ public:
*/
static void ReportLastSystemError(const char* m);
/** When building DEBUG with MSVC, this enables a hook that prevents
* error dialogs from popping up if the program is being run from
* DART.
*/
static void EnableMSVCDebugHook();
/**
* Read line from file. Make sure to get everything. Due to a buggy stream
* library on the HP and another on Mac OSX, we need this very carefully
* written version of getline. Returns true if any data were read before the
* end-of-file was reached.
*/
static bool GetLineFromStream(std::istream& istr, std::string& line);
protected:
// these two functions can be called from ConvertToOutputPath
/**
* Convert the path to a string that can be used in a unix makefile.
* double slashes are removed, and spaces are escaped.
*/
static std::string ConvertToUnixOutputPath(const char*);
/**
* Convert the path to string that can be used in a windows project or
* makefile. Double slashes are removed if they are not at the start of
* the string, the slashes are converted to windows style backslashes, and
* if there are spaces in the string it is double quoted.
*/
static std::string ConvertToWindowsOutputPath(const char*);
/** Split a string on its newlines into multiple lines. Returns
false only if the last line stored had no newline. */
static bool Split(const char* s, std::vector<cmStdString>& l);
private:
static bool s_RunCommandHideConsole;

View File

@ -18,6 +18,8 @@
#include "cmCacheManager.h"
#include "cmListFileCache.h"
#include <cmsys/Directory.hxx>
int cmTryCompileCommand::CoreTryCompileCode(
cmMakefile *mf, std::vector<std::string> const& argv, bool clean)
{
@ -263,7 +265,7 @@ void cmTryCompileCommand::CleanupFiles(const char* binDir)
return;
}
cmDirectory dir;
cmsys::Directory dir;
dir.Load(binDir);
size_t fileNum;
for (fileNum = 0; fileNum < dir.GetNumberOfFiles(); ++fileNum)

View File

@ -6,6 +6,7 @@ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTEST_CXX_FLAGS")
# Link to CMake lib
LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Source)
LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Source/kwsys)
# Use LINK_LIBRARIES instead of TARGET_LINK_LIBRARIES to
SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared;CMakeTestCLibraryShared)
LINK_LIBRARIES(${COMPLEX_LIBS})
@ -13,9 +14,9 @@ LINK_LIBRARIES(${COMPLEX_LIBS})
ADD_EXECUTABLE(complex complex)
IF (UNIX)
TARGET_LINK_LIBRARIES(complex CMakeLib ${CMAKE_DL_LIBS})
TARGET_LINK_LIBRARIES(complex CMakeLib cmsys ${CMAKE_DL_LIBS})
ELSE(UNIX)
TARGET_LINK_LIBRARIES(complex CMakeLib)
TARGET_LINK_LIBRARIES(complex CMakeLib cmsys)
IF (NOT BORLAND)
TARGET_LINK_LIBRARIES(complex rpcrt4.lib)
ENDIF(NOT BORLAND)

View File

@ -6,6 +6,7 @@ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTEST_CXX_FLAGS")
# Link to CMake lib
LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Source)
LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Source/kwsys)
# Use LINK_LIBRARIES instead of TARGET_LINK_LIBRARIES to
SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared;CMakeTestCLibraryShared)
LINK_LIBRARIES(${COMPLEX_LIBS})
@ -13,9 +14,9 @@ LINK_LIBRARIES(${COMPLEX_LIBS})
ADD_EXECUTABLE(complex complex)
IF (UNIX)
TARGET_LINK_LIBRARIES(complex CMakeLib ${CMAKE_DL_LIBS})
TARGET_LINK_LIBRARIES(complex CMakeLib cmsys ${CMAKE_DL_LIBS})
ELSE(UNIX)
TARGET_LINK_LIBRARIES(complex CMakeLib)
TARGET_LINK_LIBRARIES(complex CMakeLib cmsys)
IF (NOT BORLAND)
TARGET_LINK_LIBRARIES(complex rpcrt4.lib)
ENDIF(NOT BORLAND)

View File

@ -6,6 +6,7 @@ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTEST_CXX_FLAGS")
# Link to CMake lib
LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Source)
LINK_DIRECTORIES(${Complex_BINARY_DIR}/../../Source/kwsys)
# Use LINK_LIBRARIES instead of TARGET_LINK_LIBRARIES to
SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared;CMakeTestCLibraryShared)
LINK_LIBRARIES(${COMPLEX_LIBS})
@ -13,9 +14,9 @@ LINK_LIBRARIES(${COMPLEX_LIBS})
ADD_EXECUTABLE(complex complex)
IF (UNIX)
TARGET_LINK_LIBRARIES(complex CMakeLib ${CMAKE_DL_LIBS})
TARGET_LINK_LIBRARIES(complex CMakeLib cmsys ${CMAKE_DL_LIBS})
ELSE(UNIX)
TARGET_LINK_LIBRARIES(complex CMakeLib)
TARGET_LINK_LIBRARIES(complex CMakeLib cmsys)
IF (NOT BORLAND)
TARGET_LINK_LIBRARIES(complex rpcrt4.lib)
ENDIF(NOT BORLAND)

View File

@ -33,7 +33,6 @@ CMAKE_SOURCES="\
cmRegularExpression \
cmSourceFile \
cmSystemTools \
cmDirectory \
cmGlobalUnixMakefileGenerator \
cmLocalUnixMakefileGenerator \
cmCommands \
@ -44,6 +43,24 @@ CMAKE_SOURCES="\
cmVariableWatch \
cmSourceGroup"
KWSYS_SOURCES="\
Directory \
RegularExpression \
SystemTools"
KWSYS_FILES="\
Directory.hxx \
Process.h \
RegularExpression.hxx \
StandardIncludes.hxx \
SystemTools.hxx"
KWSYS_STD_FILES="
fstream \
iosfwd \
iostream \
sstream"
cmake_system=`uname`
cmake_source_dir=`echo $0 | sed -n '/\//{s/\/[^\/]*$//;p;}'`
@ -117,6 +134,8 @@ cmake_replace_string ()
mv -f "${OUTFILE}.tmp" "${OUTFILE}"
fi
fi
else
cmake_error "Cannot find file ${INFILE}"
fi
}
@ -251,6 +270,16 @@ if [ ! -d "${cmake_bootstrap_dir}" ]; then
fi
cd "${cmake_bootstrap_dir}"
[ -d "cmsys" ] || mkdir "cmsys"
if [ ! -d "cmsys" ]; then
cmake_error "Cannot create directory ${cmake_bootstrap_dir}/cmsys"
fi
[ -d "cmsys/std" ] || mkdir "cmsys/std"
if [ ! -d "cmsys/std" ]; then
cmake_error "Cannot create directory ${cmake_bootstrap_dir}/cmsys/std"
fi
# Delete all the bootstrap files
rm -f "${cmake_bootstrap_dir}/cmake_bootstrap.log"
@ -406,9 +435,12 @@ 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.tmp "/* #undef CMAKE_NO_STD_NAMESPACE */"
cmake_report cmConfigure.h.tmp "#define cmsys_std std"
echo "${cmake_cxx_compiler} has STD namespace"
else
cmake_report cmConfigure.h.tmp "#define CMAKE_NO_STD_NAMESPACE 1"
cmake_report cmConfigure.h.tmp "#define KWSYS_NO_STD_NAMESPACE"
cmake_report cmConfigure.h.tmp "#define cmsys_std"
echo "${cmake_cxx_compiler} does not have STD namespace"
fi
@ -418,6 +450,8 @@ if cmake_try_run "${cmake_cxx_compiler}" "${cmake_cxx_flags}" "${cmake_source_di
echo "${cmake_cxx_compiler} has ANSI stream headers"
else
cmake_report cmConfigure.h.tmp "#define CMAKE_NO_ANSI_STREAM_HEADERS 1"
cmake_report cmConfigure.h.tmp "#define KWSYS_NO_ANSI_STREAM_HEADERS 1"
cmake_report cmConfigure.h.tmp "#define cmsys_NO_ANSI_STREAM_HEADERS"
echo "${cmake_cxx_compiler} does not have ANSI stream headers"
fi
@ -432,6 +466,8 @@ if cmake_try_run "${cmake_cxx_compiler}" "${cmake_cxx_flags}" "${TMPFILE}.cxx" >
echo "${cmake_cxx_compiler} has ANSI string streams"
else
cmake_report cmConfigure.h.tmp "#define CMAKE_NO_ANSI_STRING_STREAM 1"
cmake_report cmConfigure.h.tmp "#define KWSYS_NO_ANSI_STRING_STREAM 1"
cmake_report cmConfigure.h.tmp "#define cmsys_NO_ANSI_STRING_STREAM 1"
echo "${cmake_cxx_compiler} does not have ANSI string streams"
fi
rm -f "${TMPFILE}.cxx"
@ -444,6 +480,11 @@ else
cmake_report cmConfigure.h.tmp "#define CMAKE_NO_ANSI_FOR_SCOPE 1"
echo "${cmake_cxx_compiler} does not have ANSI for scoping"
fi
cmake_report cmConfigure.h.tmp "/* Defined if std namespace is the GCC hack. */"
cmake_report cmConfigure.h.tmp "#if defined(__GNUC__) && (__GNUC__ < 3)"
cmake_report cmConfigure.h.tmp "# define cmsys_FAKE_STD_NAMESPACE"
cmake_report cmConfigure.h.tmp "#endif"
cmake_report cmConfigure.h.tmp "#define kwsys_std cmsys_std"
# Write CMake version
for a in MAJOR MINOR PATCH; do
@ -458,12 +499,29 @@ 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
cp cmConfigure.h cmsys/Configure.hxx
fi
# Prepare KWSYS
for a in ${KWSYS_FILES}; do
cmake_replace_string "${cmake_source_dir}/Source/kwsys/${a}.in" \
"${cmake_bootstrap_dir}/cmsys/${a}" KWSYS_NAMESPACE cmsys
done
for a in ${KWSYS_STD_FILES}; do
cmake_replace_string "${cmake_source_dir}/Source/kwsys/kwsys_std_${a}.h.in" \
"${cmake_bootstrap_dir}/cmsys/std/${a}" KWSYS_NAMESPACE cmsys
done
cmake_replace_string "${cmake_source_dir}/Source/kwsys/kwsys_std.h.in" \
"${cmake_bootstrap_dir}/cmsys/std/stl.h.in" KWSYS_NAMESPACE cmsys
for a in string vector; do
cmake_replace_string "${cmake_bootstrap_dir}/cmsys/std/stl.h.in" \
"${cmake_bootstrap_dir}/cmsys/std/${a}" KWSYS_STL_HEADER ${a}
done
# Generate Makefile
dep="cmConfigure.h `cmake_escape \"${cmake_source_dir}\"`/Source/*.h"
objs=""
for a in ${CMAKE_SOURCES}; do
for a in ${CMAKE_SOURCES} ${KWSYS_SOURCES}; do
objs="${objs} ${a}.o"
done
@ -483,6 +541,11 @@ for a in ${CMAKE_SOURCES}; do
echo "${a}.o : ${src} ${dep}" >> "${cmake_bootstrap_dir}/Makefile"
echo " ${cmake_cxx_compiler} ${cmake_cxx_flags} -c ${src} -o ${a}.o" >> "${cmake_bootstrap_dir}/Makefile"
done
for a in ${KWSYS_SOURCES}; do
src=`cmake_escape "${cmake_source_dir}/Source/kwsys/${a}.cxx"`
echo "${a}.o : ${src} ${dep}" >> "${cmake_bootstrap_dir}/Makefile"
echo " ${cmake_cxx_compiler} ${cmake_cxx_flags} -I`cmake_escape \"${cmake_bootstrap_dir}/cmsys\"` -DKWSYS_NAMESPACE=cmsys -c ${src} -o ${a}.o" >> "${cmake_bootstrap_dir}/Makefile"
done
# Write prefix to Bootstrap.cmk/InitialConfigureFlags.cmake
echo "SET (CMAKE_CONFIGURE_INSTALL_PREFIX \"${cmake_prefix_dir}\" CACHE PATH \"Install path prefix, prepended onto install directories, For CMake this will always override CMAKE_INSTALL_PREFIX in the cache.\")" > "${cmake_bootstrap_dir}/InitialConfigureFlags.cmake"