summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2003-06-19 22:57:11 (GMT)
committerBrad King <brad.king@kitware.com>2003-06-19 22:57:11 (GMT)
commitc21ad6298731ae7d1d7534ad9dc078fee5884dab (patch)
tree4a7773aa3569eaae11bae0bf4f97ee051ec2c1b7
parentcaeada7f274368c175f8b3e9c2c6b20017a41918 (diff)
downloadCMake-c21ad6298731ae7d1d7534ad9dc078fee5884dab.zip
CMake-c21ad6298731ae7d1d7534ad9dc078fee5884dab.tar.gz
CMake-c21ad6298731ae7d1d7534ad9dc078fee5884dab.tar.bz2
ENH: Added full configuration of namespace even for Configure.hxx macro definitions.
-rw-r--r--Source/kwsys/CMakeLists.txt397
-rw-r--r--Source/kwsys/Configure.hxx.in51
-rw-r--r--Source/kwsys/RegularExpression.hxx.in10
-rw-r--r--Source/kwsys/SystemTools.hxx.in10
-rw-r--r--Source/kwsys/kwsys_std_fstream.h.in4
-rw-r--r--Source/kwsys/kwsys_std_iosfwd.h.in4
-rw-r--r--Source/kwsys/kwsys_std_iostream.h.in4
-rw-r--r--Source/kwsys/kwsys_std_sstream.h.in20
8 files changed, 369 insertions, 131 deletions
diff --git a/Source/kwsys/CMakeLists.txt b/Source/kwsys/CMakeLists.txt
index 4afa4d8..620cda9 100644
--- a/Source/kwsys/CMakeLists.txt
+++ b/Source/kwsys/CMakeLists.txt
@@ -1,8 +1,84 @@
+#=============================================================================
+#
+# Program: KWSys - Kitware System Library
+# Module: $RCSfile$
+# Language: C++
+# Date: $Date$
+# Version: $Revision$
+#
+# Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
+# See 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.
+#
+#=============================================================================
+
+# The Kitware System Library is intended to be included in other
+# projects. It is completely configurable in that the library's
+# namespace can be configured and the components that are included
+# selected invididually.
+
+# Typical usage is to import the kwsys directory tree into a
+# subdirectory under a parent project. The CMake listfile above this
+# one configures the library as follows:
+#
+# SET(KWSYS_NAMESPACE fookwsys)
+# SUBDIRS(kwsys)
+#
+# Optional settings are as follows:
+#
+# KWSYS_HEADER_DIR = The directory into which to generate the kwsys headers.
+#
+# Example:
+#
+# SET(KWSYS_HEADER_DIR ${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE})
+# INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
+#
+# KWSYS_LIBRARY_INSTALL_DIR = The installation target directories into
+# KWSYS_HEADER_INSTALL_DIR which the libraries and headers from
+# kwsys should be installed by a "make install".
+# The values should be specified relative to
+# the installation prefix and start with a '/'.
+# Example:
+#
+# SET(KWSYS_LIBRARY_INSTALL_DIR /lib)
+# SET(KWSYS_HEADER_INSTALL_DIR /include)
+#
+# KWSYS_FORCE_OLD_STREAMS = Force use of old non-ANSI C++ streams even if
+# new streams are available. This may be used
+# by projects that cannot configure their
+# streams library.
+# Example:
+#
+# SET(KWSYS_FORCE_OLD_STREAMS 1)
+#
+
+# Once configured, kwsys should be used as follows from C or C++ code:
+#
+# #include <fookwsys/Directory.hxx>
+# ...
+# fookwsys::Directory directory;
+#
+
+#-----------------------------------------------------------------------------
+# If a namespace is not specified, use "kwsys" and enable testing.
+# This should be the case only when kwsys is not included inside
+# another project and is being tested.
IF(NOT KWSYS_NAMESPACE)
SET(KWSYS_NAMESPACE "kwsys")
- SET(KWSYS_DEFAULTS 1)
+ SET(KWSYS_STANDALONE 1)
+
+ # Enable all components.
+ SET(KWSYS_USE_Process 1)
+ SET(KWSYS_USE_Directory 1)
+ SET(KWSYS_USE_RegularExpression 1)
+ SET(KWSYS_USE_SystemTools 1)
ENDIF(NOT KWSYS_NAMESPACE)
+#-----------------------------------------------------------------------------
+# The project name is that of the specified namespace.
PROJECT(${KWSYS_NAMESPACE})
# Work-around for CMake 1.6.7 bug in custom command dependencies when
@@ -12,156 +88,255 @@ IF(NOT EXECUTABLE_OUTPUT_PATH)
"Output directory for executables.")
ENDIF(NOT EXECUTABLE_OUTPUT_PATH)
-# Choose a default directory for the headers if none is given.
-IF(NOT KWSYS_HEADER_DIR)
- SET(KWSYS_HEADER_DIR "${PROJECT_BINARY_DIR}/${KWSYS_NAMESPACE}")
-ENDIF(NOT KWSYS_HEADER_DIR)
+#-----------------------------------------------------------------------------
+# We require ANSI support from the C compiler. Add any needed flags.
+IF(CMAKE_ANSI_CFLAGS)
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_ANSI_CFLAGS}")
+ENDIF(CMAKE_ANSI_CFLAGS)
+#-----------------------------------------------------------------------------
+# Configure the standard library header wrappers based on compiler's
+# capabilities and parent project's request.
INCLUDE(${CMAKE_ROOT}/Modules/CheckIncludeFileCXX.cmake)
INCLUDE(${CMAKE_ROOT}/Modules/TestForSTDNamespace.cmake)
-INCLUDE(${CMAKE_ROOT}/Modules/TestForANSIForScope.cmake)
CHECK_INCLUDE_FILE_CXX("sstream" CMAKE_HAS_ANSI_STRING_STREAM)
CHECK_INCLUDE_FILE_CXX("iosfwd" CMAKE_ANSI_IOSFWD_HEADER)
-IF(NOT CMAKE_ANSI_IOSFWD_HEADER)
+# Enforce 0/1 as only possible values. Needed for the means by which
+# Configure.hxx is implemented.
+IF(CMAKE_NO_STD_NAMESPACE)
+ SET(CMAKE_NO_STD_NAMESPACE 1)
+ELSE(CMAKE_NO_STD_NAMESPACE)
+ SET(CMAKE_NO_STD_NAMESPACE 0)
+ENDIF(CMAKE_NO_STD_NAMESPACE)
+
+IF(CMAKE_ANSI_IOSFWD_HEADER)
+ SET(CMAKE_NO_ANSI_STREAM_HEADERS 0)
+ELSE(CMAKE_ANSI_IOSFWD_HEADER)
SET(CMAKE_NO_ANSI_STREAM_HEADERS 1)
-ENDIF(NOT CMAKE_ANSI_IOSFWD_HEADER)
+ENDIF(CMAKE_ANSI_IOSFWD_HEADER)
-IF(NOT CMAKE_HAS_ANSI_STRING_STREAM)
+IF(CMAKE_HAS_ANSI_STRING_STREAM)
+ SET(CMAKE_NO_ANSI_STRING_STREAM 0)
+ELSE(CMAKE_HAS_ANSI_STRING_STREAM)
SET(CMAKE_NO_ANSI_STRING_STREAM 1)
-ENDIF(NOT CMAKE_HAS_ANSI_STRING_STREAM)
+ENDIF(CMAKE_HAS_ANSI_STRING_STREAM)
IF(KWSYS_FORCE_OLD_STREAMS)
SET(CMAKE_NO_ANSI_STREAM_HEADERS 1)
SET(CMAKE_NO_ANSI_STRING_STREAM 1)
ENDIF(KWSYS_FORCE_OLD_STREAMS)
+IF(KWSYS_NAMESPACE MATCHES "^kwsys$")
+ SET(KWSYS_NAME_IS_KWSYS 1)
+ELSE(KWSYS_NAMESPACE MATCHES "^kwsys$")
+ SET(KWSYS_NAME_IS_KWSYS 0)
+ENDIF(KWSYS_NAMESPACE MATCHES "^kwsys$")
+
+# Set names that are used in creating Configure.hxx for these test
+# results.
SET(KWSYS_NO_STD_NAMESPACE ${CMAKE_NO_STD_NAMESPACE})
SET(KWSYS_NO_ANSI_STREAM_HEADERS ${CMAKE_NO_ANSI_STREAM_HEADERS})
SET(KWSYS_NO_ANSI_STRING_STREAM ${CMAKE_NO_ANSI_STRING_STREAM})
-SET(KWSYS_NO_ANSI_FOR_SCOPE ${CMAKE_NO_ANSI_FOR_SCOPE})
-IF(CMAKE_ANSI_CFLAGS)
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_ANSI_CFLAGS}")
-ENDIF(CMAKE_ANSI_CFLAGS)
+#-----------------------------------------------------------------------------
+# Choose a directory for the generated headers.
+IF(NOT KWSYS_HEADER_DIR)
+ SET(KWSYS_HEADER_DIR "${PROJECT_BINARY_DIR}/${KWSYS_NAMESPACE}")
+ENDIF(NOT KWSYS_HEADER_DIR)
+
+#-----------------------------------------------------------------------------
+# Create STL header wrappers to block warnings in the STL headers and
+# give standard names by which they may be included.
+FOREACH(header algorithm deque iterator list map numeric queue set stack string
+ utility vector)
+ # Configure the header wrapper.
+ SET(KWSYS_STL_HEADER "${header}")
+ CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/kwsys_std.h.in
+ ${KWSYS_HEADER_DIR}/std/${header}
+ @ONLY IMMEDIATE)
+
+ # Create an install target for the header wrapper.
+ IF(KWSYS_HEADER_INSTALL_DIR)
+ INSTALL_FILES(${KWSYS_HEADER_INSTALL_DIR}/${KWSYS_NAMESPACE}
+ FILES ${KWSYS_HEADER_DIR}/std/${header})
+ ENDIF(KWSYS_HEADER_INSTALL_DIR)
+ENDFOREACH(header)
+
+#-----------------------------------------------------------------------------
+# Create streams header wrappers to give standard names by which they
+# may be included.
+FOREACH(header iostream fstream sstream iosfwd)
+ # Configure the header wrapper.
+ CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/kwsys_std_${header}.h.in
+ ${KWSYS_HEADER_DIR}/std/${header}
+ @ONLY IMMEDIATE)
+
+ # Create an install target for the header wrapper.
+ IF(KWSYS_HEADER_INSTALL_DIR)
+ INSTALL_FILES(${KWSYS_HEADER_INSTALL_DIR}/${KWSYS_NAMESPACE}
+ FILES ${KWSYS_HEADER_DIR}/std/${header})
+ ENDIF(KWSYS_HEADER_INSTALL_DIR)
+ENDFOREACH(header)
+
+#-----------------------------------------------------------------------------
+# Build a list of classes and headers we need to implement the
+# selected components. Initialize with required components.
+SET(KWSYS_CLASSES)
+SET(KWSYS_H_FILES)
+SET(KWSYS_HXX_FILES Configure)
+
+# Enforce component dependencies.
+IF(KWSYS_USE_SystemTools)
+ SET(KWSYS_USE_Directory 1)
+ SET(KWSYS_USE_RegularExpression 1)
+ENDIF(KWSYS_USE_SystemTools)
+
+# Add selected C++ classes.
+FOREACH(c Directory RegularExpression SystemTools)
+ IF(KWSYS_USE_${c})
+ SET(KWSYS_CLASSES ${KWSYS_CLASSES} ${c})
+ ENDIF(KWSYS_USE_${c})
+ENDFOREACH(c)
+
+# Add selected C components.
+IF(KWSYS_USE_Process)
+ SET(KWSYS_H_FILES ${KWSYS_H_FILES} Process)
+ENDIF(KWSYS_USE_Process)
-SET(CLASSES Directory RegularExpression SystemTools)
-SET(H Process)
-SET(HXX Configure)
-
-IF(NOT UNIX)
- ADD_EXECUTABLE(${KWSYS_NAMESPACE}ProcessFwd9x ProcessFwd9x.c)
- ADD_EXECUTABLE(${KWSYS_NAMESPACE}EncodeExecutable EncodeExecutable.c)
- SET(SRCS ProcessWin32.c ${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE}ProcessFwd9xEnc.c)
- SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE}ProcessFwd9xEnc.c
- PROPERTIES GENERATED 1)
-ELSE(NOT UNIX)
- SET(SRCS ProcessUNIX.c)
-ENDIF(NOT UNIX)
-
-SET(KWSYS_INCLUDES)
-FOREACH(c ${CLASSES})
- SET(SRCS ${SRCS} ${c}.cxx)
- CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/${c}.hxx.in
- ${KWSYS_HEADER_DIR}/${c}.hxx
+#-----------------------------------------------------------------------------
+# Build a list of sources for the library based on components that are
+# included.
+SET(KWSYS_SRCS)
+
+# Add the proper sources for this platform's Process implementation.
+IF(KWSYS_USE_Process)
+ IF(NOT UNIX)
+ # Use the Windows implementation. We need the encoded forwarding executable.
+ SET(KWSYS_SRCS ProcessWin32.c ${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE}ProcessFwd9xEnc.c)
+ SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE}ProcessFwd9xEnc.c
+ PROPERTIES GENERATED 1)
+ ELSE(NOT UNIX)
+ # Use the UNIX implementation.
+ SET(KWSYS_SRCS ProcessUNIX.c)
+ ENDIF(NOT UNIX)
+ENDIF(KWSYS_USE_Process)
+
+# Configure headers of C++ classes and construct the list of sources.
+FOREACH(c ${KWSYS_CLASSES})
+ # Add this source to the list of source files for the library.
+ SET(KWSYS_SRCS ${KWSYS_SRCS} ${c}.cxx)
+
+ # Configure the header for this class.
+ CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/${c}.hxx.in ${KWSYS_HEADER_DIR}/${c}.hxx
@ONLY IMMEDIATE)
- SET(KWSYS_INCLUDES ${KWSYS_INCLUDES}
- ${KWSYS_HEADER_DIR}/${c}.hxx)
+
+ # Create an install target for the header.
+ IF(KWSYS_HEADER_INSTALL_DIR)
+ INSTALL_FILES(${KWSYS_HEADER_INSTALL_DIR}/${KWSYS_NAMESPACE}
+ FILES ${KWSYS_HEADER_DIR}/${c}.hxx)
+ ENDIF(KWSYS_HEADER_INSTALL_DIR)
ENDFOREACH(c)
-FOREACH(h ${H})
- CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/${h}.h.in
- ${KWSYS_HEADER_DIR}/${h}.h
+# Configure C headers.
+FOREACH(h ${KWSYS_H_FILES})
+ # Configure the header into the given directory.
+ CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/${h}.h.in ${KWSYS_HEADER_DIR}/${h}.h
@ONLY IMMEDIATE)
- SET(KWSYS_INCLUDES ${KWSYS_INCLUDES}
- ${KWSYS_HEADER_DIR}/${h}.h)
+
+ # Create an install target for the header.
+ IF(KWSYS_HEADER_INSTALL_DIR)
+ INSTALL_FILES(${KWSYS_HEADER_INSTALL_DIR}/${KWSYS_NAMESPACE}
+ FILES ${KWSYS_HEADER_DIR}/${h}.h)
+ ENDIF(KWSYS_HEADER_INSTALL_DIR)
ENDFOREACH(h)
-FOREACH(h ${HXX})
- CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/${h}.hxx.in
- ${KWSYS_HEADER_DIR}/${h}.hxx
+# Configure other C++ headers.
+FOREACH(h ${KWSYS_HXX_FILES})
+ # Configure the header into the given directory.
+ CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/${h}.hxx.in ${KWSYS_HEADER_DIR}/${h}.hxx
@ONLY IMMEDIATE)
- SET(KWSYS_INCLUDES ${KWSYS_INCLUDES}
- ${KWSYS_HEADER_DIR}/${h}.hxx)
-ENDFOREACH(h)
-ADD_LIBRARY(${KWSYS_NAMESPACE} ${SRCS})
+ # Create an install target for the header.
+ IF(KWSYS_HEADER_INSTALL_DIR)
+ INSTALL_FILES(${KWSYS_HEADER_INSTALL_DIR}/${KWSYS_NAMESPACE}
+ FILES ${KWSYS_HEADER_DIR}/${h}.hxx)
+ ENDIF(KWSYS_HEADER_INSTALL_DIR)
+ENDFOREACH(h)
-ADD_DEFINITIONS("-DKWSYS_NAMESPACE=${KWSYS_NAMESPACE}")
-INCLUDE_DIRECTORIES(BEFORE ${KWSYS_HEADER_DIR})
+#-----------------------------------------------------------------------------
+# Add the library with the configured name and list of sources.
+ADD_LIBRARY(${KWSYS_NAMESPACE} ${KWSYS_SRCS})
+# Create an install target for the library.
IF(KWSYS_LIBRARY_INSTALL_DIR)
INSTALL_TARGETS(${KWSYS_LIBRARY_INSTALL_DIR} ${KWSYS_NAMESPACE})
ENDIF(KWSYS_LIBRARY_INSTALL_DIR)
-IF(KWSYS_INCLUDE_INSTALL_DIR)
- INSTALL_FILES(${KWSYS_INCLUDE_INSTALL_DIR}/${KWSYS_NAMESPACE}
- FILES ${KWSYS_INCLUDES})
-ENDIF(KWSYS_INCLUDE_INSTALL_DIR)
+# For building kwsys itself, we use a macro defined on the command
+# line to configure the namespace in the C and C++ source files. The
+# source files must also include their headers without the namespae
+# prefix, so we add the header directory to the include path directly.
+ADD_DEFINITIONS("-DKWSYS_NAMESPACE=${KWSYS_NAMESPACE}")
+INCLUDE_DIRECTORIES(BEFORE ${KWSYS_HEADER_DIR})
#-----------------------------------------------------------------------------
-# Create STL header wrappers to block warnings in the STL headers.
-FOREACH(header algorithm deque iterator list map numeric queue set stack string
- utility vector)
- SET(KWSYS_STL_HEADER "${header}")
- CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/kwsys_std.h.in
- ${KWSYS_HEADER_DIR}/std/${header}
- @ONLY IMMEDIATE)
- IF(KWSYS_INCLUDE_INSTALL_DIR)
- INSTALL_FILES(${KWSYS_INCLUDE_INSTALL_DIR}/${KWSYS_NAMESPACE}
- FILES ${KWSYS_HEADER_DIR}/std/${header})
- ENDIF(KWSYS_INCLUDE_INSTALL_DIR)
-ENDFOREACH(header)
+# Process execution on windows needs to build a forwarding executable
+# that works around a Win9x bug. We encode the executable into a C
+# file and build it into the library. Win9x platforms reproduce the
+# executable into a temporary directory when it is needed.
+IF(KWSYS_USE_Process)
+ IF(NOT UNIX)
+ # Build the forwarding executable itself and a program that will
+ # encode it into a C file.
+ ADD_EXECUTABLE(${KWSYS_NAMESPACE}ProcessFwd9x ProcessFwd9x.c)
+ ADD_EXECUTABLE(${KWSYS_NAMESPACE}EncodeExecutable EncodeExecutable.c)
-FOREACH(header iostream fstream sstream iosfwd)
- CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/kwsys_std_${header}.h.in
- ${KWSYS_HEADER_DIR}/std/${header}
- @ONLY IMMEDIATE)
- IF(KWSYS_INCLUDE_INSTALL_DIR)
- INSTALL_FILES(${KWSYS_INCLUDE_INSTALL_DIR}/${KWSYS_NAMESPACE}
- FILES ${KWSYS_HEADER_DIR}/std/${header})
- ENDIF(KWSYS_INCLUDE_INSTALL_DIR)
-ENDFOREACH(header)
+ # Construct the location of the executable to be encoded.
+ SET(BIN_DIR ${CMAKE_CURRENT_BINARY_DIR})
+ IF(EXECUTABLE_OUTPUT_PATH)
+ SET(BIN_DIR ${EXECUTABLE_OUTPUT_PATH})
+ ENDIF(EXECUTABLE_OUTPUT_PATH)
+
+ SET(MAKE_SYSTEM)
+ SET(CFG_INTDIR "/${CMAKE_CFG_INTDIR}")
+ IF(CMAKE_BUILD_TOOL MATCHES "make")
+ SET(CFG_INTDIR "")
+ ENDIF(CMAKE_BUILD_TOOL MATCHES "make")
-IF(KWSYS_DEFAULTS)
+ # Take advantage of a better custom command syntax if possible.
+ SET(CMD ${BIN_DIR}${CFG_INTDIR}/${KWSYS_NAMESPACE}EncodeExecutable.exe)
+ SET(FWD ${BIN_DIR}${CFG_INTDIR}/${KWSYS_NAMESPACE}ProcessFwd9x.exe)
+ IF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" GREATER 1.6)
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE}ProcessFwd9xEnc.c
+ COMMAND ${CMD}
+ ARGS ${FWD} ${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE}ProcessFwd9xEnc.c
+ ${KWSYS_NAMESPACE} ProcessFwd9x
+ DEPENDS ${CMD} ${FWD})
+ ELSE("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" GREATER 1.6)
+ ADD_CUSTOM_COMMAND(
+ TARGET ${KWSYS_NAMESPACE}
+ SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/ProcessFwd9x.c
+ COMMAND ${CMD}
+ ARGS ${FWD} ${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE}ProcessFwd9xEnc.c
+ ${KWSYS_NAMESPACE} ProcessFwd9x
+ OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE}ProcessFwd9xEnc.c
+ DEPENDS ${CMD} ${FWD})
+ ENDIF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" GREATER 1.6)
+
+ # Make sure build occurs in proper order.
+ ADD_DEPENDENCIES(${KWSYS_NAMESPACE} ${KWSYS_NAMESPACE}ProcessFwd9x
+ ${KWSYS_NAMESPACE}EncodeExecutable)
+ ENDIF(NOT UNIX)
+ENDIF(KWSYS_USE_Process)
+
+#-----------------------------------------------------------------------------
+# Setup testing if not being built as part of another project.
+IF(KWSYS_STANDALONE)
INCLUDE_DIRECTORIES(${KWSYS_HEADER_DIR}/..)
ADD_EXECUTABLE(testProcess testProcess.c)
ADD_EXECUTABLE(test1 test1.cxx)
TARGET_LINK_LIBRARIES(testProcess ${KWSYS_NAMESPACE})
TARGET_LINK_LIBRARIES(test1 ${KWSYS_NAMESPACE})
-ENDIF(KWSYS_DEFAULTS)
-
-IF(NOT UNIX)
- SET(BIN_DIR ${CMAKE_CURRENT_BINARY_DIR})
- IF(EXECUTABLE_OUTPUT_PATH)
- SET(BIN_DIR ${EXECUTABLE_OUTPUT_PATH})
- ENDIF(EXECUTABLE_OUTPUT_PATH)
-
- SET(MAKE_SYSTEM)
- SET(CFG_INTDIR "/${CMAKE_CFG_INTDIR}")
- IF(CMAKE_BUILD_TOOL MATCHES "make")
- SET(CFG_INTDIR "")
- ENDIF(CMAKE_BUILD_TOOL MATCHES "make")
-
- SET(CMD ${BIN_DIR}${CFG_INTDIR}/${KWSYS_NAMESPACE}EncodeExecutable.exe)
- SET(FWD ${BIN_DIR}${CFG_INTDIR}/${KWSYS_NAMESPACE}ProcessFwd9x.exe)
- IF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" GREATER 1.6)
- ADD_CUSTOM_COMMAND(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE}ProcessFwd9xEnc.c
- COMMAND ${CMD}
- ARGS ${FWD} ${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE}ProcessFwd9xEnc.c
- ${KWSYS_NAMESPACE} ProcessFwd9x
- DEPENDS ${CMD} ${FWD})
- ELSE("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" GREATER 1.6)
- ADD_CUSTOM_COMMAND(
- TARGET ${KWSYS_NAMESPACE}
- SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/ProcessFwd9x.c
- COMMAND ${CMD}
- ARGS ${FWD} ${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE}ProcessFwd9xEnc.c
- ${KWSYS_NAMESPACE} ProcessFwd9x
- OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE}ProcessFwd9xEnc.c
- DEPENDS ${CMD} ${FWD})
- ENDIF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" GREATER 1.6)
- ADD_DEPENDENCIES(${KWSYS_NAMESPACE} ${KWSYS_NAMESPACE}ProcessFwd9x
- ${KWSYS_NAMESPACE}EncodeExecutable)
-ENDIF(NOT UNIX)
+ENDIF(KWSYS_STANDALONE)
diff --git a/Source/kwsys/Configure.hxx.in b/Source/kwsys/Configure.hxx.in
index 367f887..ed4f8ec 100644
--- a/Source/kwsys/Configure.hxx.in
+++ b/Source/kwsys/Configure.hxx.in
@@ -17,20 +17,53 @@
#ifndef @KWSYS_NAMESPACE@_Configure_hxx
#define @KWSYS_NAMESPACE@_Configure_hxx
-/* This configuration should match for all instances of kwsys. */
-#cmakedefine KWSYS_NO_STD_NAMESPACE
-#cmakedefine KWSYS_NO_ANSI_STREAM_HEADERS
-#cmakedefine KWSYS_NO_ANSI_STRING_STREAM
-#cmakedefine KWSYS_NO_ANSI_FOR_SCOPE
+/* Defined if kwsys namespace is "kwsys". */
+#if @KWSYS_NAME_IS_KWSYS@
+# define @KWSYS_NAMESPACE@_NAME_IS_KWSYS
+#endif
+
+/* Defined if no ANSI C++ stream headers are present. */
+#if @KWSYS_NO_ANSI_STREAM_HEADERS@
+# define @KWSYS_NAMESPACE@_NO_ANSI_STREAM_HEADERS
+#endif
+
+/* Defined if no ANSI C++ <sstream> header is present. */
+#if @KWSYS_NO_ANSI_STRING_STREAM@
+# define @KWSYS_NAMESPACE@_NO_ANSI_STRING_STREAM
+#endif
+/* Defined if no std namespace is present. */
+#if @KWSYS_NO_STD_NAMESPACE@
+# define @KWSYS_NAMESPACE@_NO_STD_NAMESPACE
+#endif
+
+/* Defined if std namespace is the GCC hack. */
#if defined(__GNUC__) && (__GNUC__ < 3)
-# define KWSYS_FAKE_STD_NAMESPACE
+# define @KWSYS_NAMESPACE@_FAKE_STD_NAMESPACE
#endif
-#if defined(KWSYS_NO_STD_NAMESPACE)
-# define kwsys_std
+/* Define the std namespace macro. */
+#if defined(@KWSYS_NAMESPACE@_NO_STD_NAMESPACE)
+# define @KWSYS_NAMESPACE@_std
#else
-# define kwsys_std std
+# define @KWSYS_NAMESPACE@_std std
+#endif
+
+/* If building a C++ file in kwsys itself, give the source file
+ access to the macros without a configured namespace. */
+#if defined(KWSYS_NAMESPACE)
+# if !defined(@KWSYS_NAMESPACE@_NAME_IS_KWSYS)
+# define kwsys_std @KWSYS_NAMESPACE@_std
+# endif
+# if defined(@KWSYS_NAMESPACE@_NO_STD_NAMESPACE)
+# define KWSYS_NO_STD_NAMESPACE
+# endif
+# if defined(@KWSYS_NAMESPACE@_NO_ANSI_STREAM_HEADERS)
+# define KWSYS_NO_ANSI_STREAM_HEADERS
+# endif
+# if defined(@KWSYS_NAMESPACE@_NO_ANSI_STRING_STREAM)
+# define KWSYS_NO_ANSI_STRING_STREAM
+# endif
#endif
#endif
diff --git a/Source/kwsys/RegularExpression.hxx.in b/Source/kwsys/RegularExpression.hxx.in
index 4b7698c..f00c32e 100644
--- a/Source/kwsys/RegularExpression.hxx.in
+++ b/Source/kwsys/RegularExpression.hxx.in
@@ -39,6 +39,11 @@
#include <@KWSYS_NAMESPACE@/std/string>
+/* Define this macro temporarily to keep the code readable. */
+#if !defined (KWSYS_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_NAME_IS_KWSYS)
+# define kwsys_std @KWSYS_NAMESPACE@_std
+#endif
+
namespace @KWSYS_NAMESPACE@
{
@@ -382,4 +387,9 @@ inline kwsys_std::string RegularExpression::match(int n) const
} // namespace @KWSYS_NAMESPACE@
+/* Undefine temporary macro. */
+#if !defined (KWSYS_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_NAME_IS_KWSYS)
+# undef kwsys_std
+#endif
+
#endif
diff --git a/Source/kwsys/SystemTools.hxx.in b/Source/kwsys/SystemTools.hxx.in
index cceb278..98cb71b 100644
--- a/Source/kwsys/SystemTools.hxx.in
+++ b/Source/kwsys/SystemTools.hxx.in
@@ -21,6 +21,11 @@
#include <@KWSYS_NAMESPACE@/std/string>
#include <@KWSYS_NAMESPACE@/std/vector>
+/* Define this macro temporarily to keep the code readable. */
+#if !defined (KWSYS_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_NAME_IS_KWSYS)
+# define kwsys_std @KWSYS_NAMESPACE@_std
+#endif
+
namespace @KWSYS_NAMESPACE@
{
@@ -287,4 +292,9 @@ protected:
} // namespace @KWSYS_NAMESPACE@
+/* Undefine temporary macro. */
+#if !defined (KWSYS_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_NAME_IS_KWSYS)
+# undef kwsys_std
+#endif
+
#endif
diff --git a/Source/kwsys/kwsys_std_fstream.h.in b/Source/kwsys/kwsys_std_fstream.h.in
index 127bfab..8702c3f 100644
--- a/Source/kwsys/kwsys_std_fstream.h.in
+++ b/Source/kwsys/kwsys_std_fstream.h.in
@@ -24,11 +24,11 @@
#pragma warning (disable: 4702)
#endif
-#if !defined(KWSYS_NO_ANSI_STREAM_HEADERS)
+#if !defined(@KWSYS_NAMESPACE@_NO_ANSI_STREAM_HEADERS)
# include <fstream>
#else
# include <fstream.h>
-# if !defined(KWSYS_NO_STD_NAMESPACE) && !defined(KWSYS_FAKE_STD_NAMESPACE)
+# if !defined(@KWSYS_NAMESPACE@_NO_STD_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_FAKE_STD_NAMESPACE)
namespace std
{
using ::ostream;
diff --git a/Source/kwsys/kwsys_std_iosfwd.h.in b/Source/kwsys/kwsys_std_iosfwd.h.in
index 8f86677..3c6ca47 100644
--- a/Source/kwsys/kwsys_std_iosfwd.h.in
+++ b/Source/kwsys/kwsys_std_iosfwd.h.in
@@ -24,7 +24,7 @@
#pragma warning (disable: 4702)
#endif
-#if !defined(KWSYS_NO_ANSI_STREAM_HEADERS)
+#if !defined(@KWSYS_NAMESPACE@_NO_ANSI_STREAM_HEADERS)
# include <iosfwd>
#else
class fstream;
@@ -33,7 +33,7 @@ class ios;
class istream;
class ofstream;
class ostream;
-# if !defined(KWSYS_NO_STD_NAMESPACE) && !defined(KWSYS_FAKE_STD_NAMESPACE)
+# if !defined(@KWSYS_NAMESPACE@_NO_STD_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_FAKE_STD_NAMESPACE)
namespace std
{
using ::fstream;
diff --git a/Source/kwsys/kwsys_std_iostream.h.in b/Source/kwsys/kwsys_std_iostream.h.in
index 686416b..c23143c 100644
--- a/Source/kwsys/kwsys_std_iostream.h.in
+++ b/Source/kwsys/kwsys_std_iostream.h.in
@@ -24,11 +24,11 @@
#pragma warning (disable: 4702)
#endif
-#if !defined(KWSYS_NO_ANSI_STREAM_HEADERS)
+#if !defined(@KWSYS_NAMESPACE@_NO_ANSI_STREAM_HEADERS)
# include <iostream>
#else
# include <iostream.h>
-# if !defined(KWSYS_NO_STD_NAMESPACE) && !defined(KWSYS_FAKE_STD_NAMESPACE)
+# if !defined(@KWSYS_NAMESPACE@_NO_STD_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_FAKE_STD_NAMESPACE)
namespace std
{
using ::ostream;
diff --git a/Source/kwsys/kwsys_std_sstream.h.in b/Source/kwsys/kwsys_std_sstream.h.in
index 1d30593..fe347a4 100644
--- a/Source/kwsys/kwsys_std_sstream.h.in
+++ b/Source/kwsys/kwsys_std_sstream.h.in
@@ -19,7 +19,12 @@
#include <@KWSYS_NAMESPACE@/Configure.hxx>
-#if !defined(KWSYS_NO_ANSI_STRING_STREAM)
+/* Define this macro temporarily to keep the code readable. */
+#if !defined (KWSYS_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_NAME_IS_KWSYS)
+# define kwsys_std @KWSYS_NAMESPACE@_std
+#endif
+
+#if !defined(@KWSYS_NAMESPACE@_NO_ANSI_STRING_STREAM)
# ifdef _MSC_VER
# pragma warning (push, 1)
# pragma warning (disable: 4702)
@@ -33,11 +38,11 @@
# pragma warning (push, 1)
# pragma warning (disable: 4702)
# endif
-# if !defined(KWSYS_NO_ANSI_STREAM_HEADERS)
+# if !defined(@KWSYS_NAMESPACE@_NO_ANSI_STREAM_HEADERS)
# include <strstream>
# else
# include <strstream.h>
-# if !defined(KWSYS_NO_STD_NAMESPACE) && !defined(KWSYS_FAKE_STD_NAMESPACE)
+# if !defined(@KWSYS_NAMESPACE@_NO_STD_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_FAKE_STD_NAMESPACE)
namespace std
{
using ::ostream;
@@ -60,7 +65,7 @@ namespace std
# include <@KWSYS_NAMESPACE@/std/string>
-# if !defined(KWSYS_NO_STD_NAMESPACE)
+# if !defined(@KWSYS_NAMESPACE@_NO_STD_NAMESPACE)
namespace std
{
# endif
@@ -114,10 +119,15 @@ private:
void operator=(const istringstream&);
};
-# if !defined(KWSYS_NO_STD_NAMESPACE)
+# if !defined(@KWSYS_NAMESPACE@_NO_STD_NAMESPACE)
}
# endif
#endif
+/* Undefine temporary macro. */
+#if !defined (KWSYS_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_NAME_IS_KWSYS)
+# undef kwsys_std
+#endif
+
#endif