From 96cd8620b09cf862585c5d4cd14b541d1e45ee75 Mon Sep 17 00:00:00 2001 From: Brad King <brad.king@kitware.com> Date: Thu, 10 Jul 2003 14:32:30 -0400 Subject: [PATCH] ENH: Added use of KWSYS_HEADER macro in c and cxx files to include kwsys headers through their configured namespace. --- Base64.c | 3 ++- CMakeLists.txt | 5 +---- Directory.cxx | 9 +++++---- EncodeExecutable.c | 3 ++- ProcessUNIX.c | 3 ++- ProcessWin32.c | 3 ++- RegularExpression.cxx | 4 +++- SystemTools.cxx | 7 ++++--- kwsysPrivate.h | 38 ++++++++++++++++++++++++++++++++++++++ 9 files changed, 59 insertions(+), 16 deletions(-) create mode 100644 kwsysPrivate.h diff --git a/Base64.c b/Base64.c index 521109f7..8eae0a7a 100644 --- a/Base64.c +++ b/Base64.c @@ -15,7 +15,8 @@ PURPOSE. See the above copyright notices for more information. =========================================================================*/ #define KWSYS_IN_BASE64_C -#include <Base64.h> +#include "kwsysPrivate.h" +#include KWSYS_HEADER(Base64.h) /*--------------------------------------------------------------------------*/ static const unsigned char kwsysBase64EncodeTable[65] = diff --git a/CMakeLists.txt b/CMakeLists.txt index 2280839b..8967bb7e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -304,11 +304,8 @@ IF(KWSYS_LIBRARY_INSTALL_DIR) ENDIF(KWSYS_LIBRARY_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. +# line to configure the namespace in the C and C++ source files. ADD_DEFINITIONS("-DKWSYS_NAMESPACE=${KWSYS_NAMESPACE}") -INCLUDE_DIRECTORIES(BEFORE ${KWSYS_HEADER_DIR}) #----------------------------------------------------------------------------- # Process execution on windows needs to build a forwarding executable diff --git a/Directory.cxx b/Directory.cxx index 8d2d08fa..d6959406 100644 --- a/Directory.cxx +++ b/Directory.cxx @@ -14,12 +14,13 @@ PURPOSE. See the above copyright notices for more information. =========================================================================*/ -#include <Directory.hxx> +#include "kwsysPrivate.h" +#include KWSYS_HEADER(Directory.hxx) -#include <Configure.hxx> +#include KWSYS_HEADER(Configure.hxx) -#include <std/string> -#include <std/vector> +#include KWSYS_HEADER(std/string) +#include KWSYS_HEADER(std/vector) namespace KWSYS_NAMESPACE { diff --git a/EncodeExecutable.c b/EncodeExecutable.c index fd597956..ef85759a 100644 --- a/EncodeExecutable.c +++ b/EncodeExecutable.c @@ -50,7 +50,8 @@ int main(int argc, char* argv[]) /* Prepend header comment. */ fprintf(ofp, "/*\n * DO NOT EDIT\n * This file is generated by:\n"); fprintf(ofp, " * %s\n */\n\n", argv[0]); - fprintf(ofp, "#include <Configure.h>\n\n"); + fprintf(ofp, "#include \"kwsysPrivate.h\"\n"); + fprintf(ofp, "#include KWSYS_HEADER(Configure.h)\n\n"); fprintf(ofp, "#include <stdio.h>\n\n"); /* Split file up in 1024-byte chunks. */ diff --git a/ProcessUNIX.c b/ProcessUNIX.c index b00f6483..678fbecb 100644 --- a/ProcessUNIX.c +++ b/ProcessUNIX.c @@ -15,7 +15,8 @@ PURPOSE. See the above copyright notices for more information. =========================================================================*/ #define KWSYS_IN_PROCESS_C -#include <Process.h> +#include "kwsysPrivate.h" +#include KWSYS_HEADER(Process.h) /* diff --git a/ProcessWin32.c b/ProcessWin32.c index 5d5c680a..8321efeb 100644 --- a/ProcessWin32.c +++ b/ProcessWin32.c @@ -15,7 +15,8 @@ PURPOSE. See the above copyright notices for more information. =========================================================================*/ #define KWSYS_IN_PROCESS_C -#include <Process.h> +#include "kwsysPrivate.h" +#include KWSYS_HEADER(Process.h) /* diff --git a/RegularExpression.cxx b/RegularExpression.cxx index 6c0a626f..010b38a7 100644 --- a/RegularExpression.cxx +++ b/RegularExpression.cxx @@ -33,7 +33,9 @@ // Updated: DLS 03/22/91 New lite version // -#include <RegularExpression.hxx> // Include class specification +#include "kwsysPrivate.h" +#include KWSYS_HEADER(RegularExpression.hxx) + #include <stdio.h> namespace KWSYS_NAMESPACE diff --git a/SystemTools.cxx b/SystemTools.cxx index 030859da..fb6901f9 100644 --- a/SystemTools.cxx +++ b/SystemTools.cxx @@ -14,10 +14,11 @@ PURPOSE. See the above copyright notices for more information. =========================================================================*/ -#include <SystemTools.hxx> +#include "kwsysPrivate.h" +#include KWSYS_HEADER(SystemTools.hxx) -#include <std/iostream> -#include <std/fstream> +#include KWSYS_HEADER(std/iostream) +#include KWSYS_HEADER(std/fstream) #ifdef _MSC_VER # pragma warning (disable: 4786) diff --git a/kwsysPrivate.h b/kwsysPrivate.h new file mode 100644 index 00000000..33598969 --- /dev/null +++ b/kwsysPrivate.h @@ -0,0 +1,38 @@ +/*========================================================================= + + Program: KWSys - Kitware System Library + Module: kwsysPrivate.h + 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. + +=========================================================================*/ +#ifndef KWSYS_NAMESPACE +# error "Do not include kwsysPrivate.h outside of kwsys c and cxx files." +#endif + +#ifndef _kwsysPrivate_h +#define _kwsysPrivate_h + +/* + Define KWSYS_HEADER macro to help the c and cxx files include kwsys + headers from the configured namespace directory. The macro can be + used like this: + + #include KWSYS_HEADER(Directory.hxx) + #include KWSYS_HEADER(std/vector) +*/ +#define KWSYS_HEADER(x) KWSYS_HEADER0(KWSYS_NAMESPACE/x) +#define KWSYS_HEADER0(x) KWSYS_HEADER1(x) +#define KWSYS_HEADER1(x) <x> + +#else +# error "kwsysPrivate.h included multiple times." +#endif -- GitLab