ENH: Merged use of kwsys library.
This commit is contained in:
parent
c5890b8c2e
commit
dc3fd5c267
|
@ -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()
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
|
||||
#include "cmCursesMainForm.h"
|
||||
#include "cmSystemTools.h"
|
||||
#include "cmDirectory.h"
|
||||
|
||||
cmCursesPathWidget::cmCursesPathWidget(int width, int height,
|
||||
int left, int top) :
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
@ -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
|
|
@ -15,7 +15,6 @@
|
|||
|
||||
=========================================================================*/
|
||||
#include "cmMakeDirectoryCommand.h"
|
||||
#include "cmDirectory.h"
|
||||
|
||||
// cmMakeDirectoryCommand
|
||||
bool cmMakeDirectoryCommand::InitialPass(std::vector<std::string> const& args)
|
||||
|
|
|
@ -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
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
67
bootstrap
67
bootstrap
|
@ -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"
|
||||
|
|
Loading…
Reference in New Issue