ENH: Add options to build with system utility libraries. Organize inclusion of third party libraries into a single header per library. This addresses bug#3653.

This commit is contained in:
Brad King 2006-10-19 15:00:10 -04:00
parent de007ef199
commit f91b3c1daa
18 changed files with 321 additions and 72 deletions

View File

@ -71,27 +71,116 @@ SET(KWSYS_HEADER_ROOT ${CMake_BINARY_DIR}/Source)
SUBDIRS(Source/kwsys) SUBDIRS(Source/kwsys)
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# Build zlib library for Curl, CMake, and CTest. # Setup third-party libraries.
SUBDIRS(Utilities/cmzlib)
SET(CMAKE_ZLIB_INCLUDES # Everything in the tree should be able to include files from the
"${CMAKE_CURRENT_BINARY_DIR}/Utilities" # Utilities directory.
INCLUDE_DIRECTORIES(
${CMake_SOURCE_DIR}/Utilities
${CMake_BINARY_DIR}/Utilities
) )
SET(CMAKE_ZLIB_LIBRARIES "cmzlib")
SET(CURL_SPECIAL_LIBZ ${CMAKE_ZLIB_LIBRARIES}) # Third party libraries must be something that can be found.
SET(CURL_SPECIAL_LIBZ_INCLUDES ${CMAKE_ZLIB_INCLUDES}) IF(EXISTS ${CMAKE_ROOT}/Modules/FindXMLRPC.cmake)
SET(CURL_SPECIAL_ZLIB_H "cmzlib/zlib.h") SET(CMAKE_ALLOW_SYSTEM_LIBRARIES 1)
ELSE(EXISTS ${CMAKE_ROOT}/Modules/FindXMLRPC.cmake)
SET(CMAKE_ALLOW_SYSTEM_LIBRARIES 0)
ENDIF(EXISTS ${CMAKE_ROOT}/Modules/FindXMLRPC.cmake)
IF(CMAKE_ALLOW_SYSTEM_LIBRARIES)
# Options have dependencies.
INCLUDE(CMakeDependentOption)
# Allow the user to enable/disable all system utility library options
# by setting CMAKE_USE_SYSTEM_LIBRARIES on the command line.
IF(DEFINED CMAKE_USE_SYSTEM_LIBRARIES)
SET(CMAKE_USE_SYSTEM_LIBRARIES_USER 1)
ENDIF(DEFINED CMAKE_USE_SYSTEM_LIBRARIES)
IF(CMAKE_USE_SYSTEM_LIBRARIES)
SET(CMAKE_USE_SYSTEM_LIBRARIES ON)
ELSE(CMAKE_USE_SYSTEM_LIBRARIES)
SET(CMAKE_USE_SYSTEM_LIBRARIES OFF)
ENDIF(CMAKE_USE_SYSTEM_LIBRARIES)
IF(CMAKE_USE_SYSTEM_LIBRARIES_USER)
SET(CMAKE_USE_SYSTEM_CURL "${CMAKE_USE_SYSTEM_LIBRARIES}" CACHE BOOL "Use system-installed curl" FORCE)
SET(CMAKE_USE_SYSTEM_EXPAT "${CMAKE_USE_SYSTEM_LIBRARIES}" CACHE BOOL "Use system-installed expat" FORCE)
SET(CMAKE_USE_SYSTEM_XMLRPC "${CMAKE_USE_SYSTEM_LIBRARIES}" CACHE BOOL "Use system-installed xmlrpc" FORCE)
SET(CMAKE_USE_SYSTEM_ZLIB "${CMAKE_USE_SYSTEM_LIBRARIES}" CACHE BOOL "Use system-installed zlib" FORCE)
ENDIF(CMAKE_USE_SYSTEM_LIBRARIES_USER)
# Optionally use system utility libraries.
OPTION(CMAKE_USE_SYSTEM_CURL "Use system-installed curl" ${CMAKE_USE_SYSTEM_LIBRARIES})
OPTION(CMAKE_USE_SYSTEM_XMLRPC "Use system-installed xmlrpc" ${CMAKE_USE_SYSTEM_LIBRARIES})
CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_EXPAT "Use system-installed expat"
${CMAKE_USE_SYSTEM_LIBRARIES} "NOT CMAKE_USE_SYSTEM_XMLRPC" ON)
CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_ZLIB "Use system-installed zlib"
${CMAKE_USE_SYSTEM_LIBRARIES} "NOT CMAKE_USE_SYSTEM_CURL" ON)
# There is currently no option for system tar because the upstream
# libtar does not have our modifications to allow reentrant
# object-oriented use of the library.
# OPTION(CMAKE_USE_SYSTEM_TAR "Use system-installed tar" OFF)
ELSE(CMAKE_ALLOW_SYSTEM_LIBRARIES)
SET(CMAKE_USE_SYSTEM_CURL 0)
SET(CMAKE_USE_SYSTEM_EXPAT 0)
SET(CMAKE_USE_SYSTEM_XMLRPC 0)
SET(CMAKE_USE_SYSTEM_ZLIB 0)
ENDIF(CMAKE_ALLOW_SYSTEM_LIBRARIES)
# Inform utility library header wrappers whether to use system versions.
CONFIGURE_FILE(${CMake_SOURCE_DIR}/Utilities/cmThirdParty.h.in
${CMake_BINARY_DIR}/Utilities/cmThirdParty.h
@ONLY IMMEDIATE)
# Mention to the user what system libraries are being used.
FOREACH(util CURL EXPAT XMLRPC ZLIB)
IF(CMAKE_USE_SYSTEM_${util})
MESSAGE(STATUS "Using system-installed ${util}")
ENDIF(CMAKE_USE_SYSTEM_${util})
ENDFOREACH(util)
#-----------------------------------------------------------------------------
# Build zlib library for Curl, CMake, and CTest.
SET(CMAKE_ZLIB_HEADER "cm_zlib.h")
IF(CMAKE_USE_SYSTEM_ZLIB)
FIND_PACKAGE(ZLIB)
IF(NOT ZLIB_FOUND)
MESSAGE(FATAL_ERROR "CMAKE_USE_SYSTEM_ZLIB is ON but a zlib is not found!")
ENDIF(NOT ZLIB_FOUND)
SET(CMAKE_ZLIB_INCLUDES ${ZLIB_INCLUDE_DIR})
SET(CMAKE_ZLIB_LIBRARIES ${ZLIB_LIBRARIES})
ELSE(CMAKE_USE_SYSTEM_ZLIB)
SUBDIRS(Utilities/cmzlib)
SET(CMAKE_ZLIB_INCLUDES)
SET(CMAKE_ZLIB_LIBRARIES cmzlib)
ENDIF(CMAKE_USE_SYSTEM_ZLIB)
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# Build Curl library for CTest. # Build Curl library for CTest.
SUBDIRS(Utilities/cmcurl) IF(CMAKE_USE_SYSTEM_CURL)
SET(CMAKE_CURL_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/Utilities") FIND_PACKAGE(CURL)
SET(CMAKE_CURL_LIBRARIES "cmcurl") IF(NOT CURL_FOUND)
MESSAGE(FATAL_ERROR "CMAKE_USE_SYSTEM_CURL is ON but a curl is not found!")
ENDIF(NOT CURL_FOUND)
SET(CMAKE_CURL_INCLUDES ${CURL_INCLUDE_DIRS})
SET(CMAKE_CURL_LIBRARIES ${CURL_LIBRARIES})
ELSE(CMAKE_USE_SYSTEM_CURL)
SET(CURL_SPECIAL_ZLIB_H ${CMAKE_ZLIB_HEADER})
SET(CURL_SPECIAL_LIBZ_INCLUDES ${CMAKE_ZLIB_INCLUDES})
SET(CURL_SPECIAL_LIBZ ${CMAKE_ZLIB_LIBRARIES})
SUBDIRS(Utilities/cmcurl)
SET(CMAKE_CURL_INCLUDES)
SET(CMAKE_CURL_LIBRARIES cmcurl)
ENDIF(CMAKE_USE_SYSTEM_CURL)
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# Build Tar library for CTest. # Build Tar library for CTest.
SET(CMTAR_ZLIB_HEADER ${CMAKE_ZLIB_HEADER})
SET(CMTAR_ZLIB_LIBRARIES ${CMAKE_ZLIB_LIBRARIES})
SET(CMTAR_ZLIB_INCLUDE_DIRS ${CMAKE_ZLIB_INCLUDES})
SUBDIRS(Utilities/cmtar) SUBDIRS(Utilities/cmtar)
SET(CMAKE_TAR_INCLUDES "${CMAKE_CURRENT_BINARY_DIR}/Utilities/cmtar") SET(CMAKE_TAR_INCLUDES ${CMAKE_CURRENT_BINARY_DIR}/Utilities/cmtar)
SET(CMAKE_TAR_LIBRARIES "cmtar") SET(CMAKE_TAR_LIBRARIES cmtar)
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# Build Compress library for CTest. # Build Compress library for CTest.
@ -101,19 +190,33 @@ SET(CMAKE_COMPRESS_LIBRARIES "cmcompress")
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# Build expat library for CMake and CTest. # Build expat library for CMake and CTest.
SUBDIRS(Utilities/cmexpat) IF(CMAKE_USE_SYSTEM_EXPAT)
SET(CMAKE_EXPAT_INCLUDES FIND_PACKAGE(EXPAT)
"${CMAKE_CURRENT_BINARY_DIR}/Utilities" IF(NOT EXPAT_FOUND)
"${CMAKE_CURRENT_BINARY_DIR}/Utilities/cmexpat" MESSAGE(FATAL_ERROR
) "CMAKE_USE_SYSTEM_EXPAT is ON but a expat is not found!")
SET(CMAKE_EXPAT_LIBRARIES "cmexpat") ENDIF(NOT EXPAT_FOUND)
SET(CMAKE_EXPAT_INCLUDES ${EXPAT_INCLUDE_DIRS})
SET(CMAKE_EXPAT_LIBRARIES ${EXPAT_LIBRARIES})
ELSE(CMAKE_USE_SYSTEM_EXPAT)
SUBDIRS(Utilities/cmexpat)
SET(CMAKE_EXPAT_INCLUDES)
SET(CMAKE_EXPAT_LIBRARIES cmexpat)
ENDIF(CMAKE_USE_SYSTEM_EXPAT)
SUBDIRS(Utilities/cmxmlrpc) IF(CMAKE_USE_SYSTEM_XMLRPC)
SET(CMAKE_XMLRPC_INCLUDES FIND_PACKAGE(XMLRPC QUIET REQUIRED libwww-client)
"${CMAKE_CURRENT_SOURCE_DIR}/Utilities/cmxmlrpc" IF(NOT XMLRPC_FOUND)
"${CMAKE_CURRENT_BINARY_DIR}/Utilities/cmxmlrpc" MESSAGE(FATAL_ERROR
) "CMAKE_USE_SYSTEM_XMLRPC is ON but a xmlrpc is not found!")
SET(CMAKE_XMLRPC_LIBRARIES "cmXMLRPC") ENDIF(NOT XMLRPC_FOUND)
SET(CMAKE_XMLRPC_INCLUDES ${XMLRPC_INCLUDE_DIRS})
SET(CMAKE_XMLRPC_LIBRARIES ${XMLRPC_LIBRARIES})
ELSE(CMAKE_USE_SYSTEM_XMLRPC)
SUBDIRS(Utilities/cmxmlrpc)
SET(CMAKE_XMLRPC_INCLUDES)
SET(CMAKE_XMLRPC_LIBRARIES cmXMLRPC)
ENDIF(CMAKE_USE_SYSTEM_XMLRPC)
IF (UNIX) IF (UNIX)
FIND_PACKAGE(Curses QUIET) FIND_PACKAGE(Curses QUIET)

View File

@ -352,6 +352,13 @@ IF(BUILD_TESTING)
SET(CMAKE_TEST_DIFFERENT_GENERATOR TRUE) SET(CMAKE_TEST_DIFFERENT_GENERATOR TRUE)
ENDIF(NOT CMAKE_TEST_GENERATOR) ENDIF(NOT CMAKE_TEST_GENERATOR)
SET(CMAKE_TEST_SYSTEM_LIBRARIES 0)
FOREACH(util CURL EXPAT XMLRPC ZLIB)
IF(CMAKE_USE_SYSTEM_${util})
SET(CMAKE_TEST_SYSTEM_LIBRARIES 1)
ENDIF(CMAKE_USE_SYSTEM_${util})
ENDFOREACH(util)
# This variable is set by cmake, however to # This variable is set by cmake, however to
# test cmake we want to make sure that # test cmake we want to make sure that
# the ctest from this cmake is used for testing # the ctest from this cmake is used for testing
@ -602,6 +609,7 @@ IF(BUILD_TESTING)
--build-exe-dir "${CMake_BINARY_DIR}/Tests/Complex/bin" --build-exe-dir "${CMake_BINARY_DIR}/Tests/Complex/bin"
--build-options --build-options
-DCMAKE_TEST_DIFFERENT_GENERATOR:BOOL=${CMAKE_TEST_DIFFERENT_GENERATOR} -DCMAKE_TEST_DIFFERENT_GENERATOR:BOOL=${CMAKE_TEST_DIFFERENT_GENERATOR}
-DCMAKE_TEST_SYSTEM_LIBRARIES:BOOL=${CMAKE_TEST_SYSTEM_LIBRARIES}
--test-command complex --test-command complex
) )
@ -615,6 +623,7 @@ IF(BUILD_TESTING)
--build-exe-dir "${CMake_BINARY_DIR}/Tests/ComplexOneConfig/bin" --build-exe-dir "${CMake_BINARY_DIR}/Tests/ComplexOneConfig/bin"
--build-options --build-options
-DCMAKE_TEST_DIFFERENT_GENERATOR:BOOL=${CMAKE_TEST_DIFFERENT_GENERATOR} -DCMAKE_TEST_DIFFERENT_GENERATOR:BOOL=${CMAKE_TEST_DIFFERENT_GENERATOR}
-DCMAKE_TEST_SYSTEM_LIBRARIES:BOOL=${CMAKE_TEST_SYSTEM_LIBRARIES}
--test-command complex) --test-command complex)
# ADD_TEST(complexRelativePaths ${CMAKE_CTEST_COMMAND} # ADD_TEST(complexRelativePaths ${CMAKE_CTEST_COMMAND}

View File

@ -26,7 +26,7 @@
#include "cmCPackLog.h" #include "cmCPackLog.h"
#include <cmsys/SystemTools.hxx> #include <cmsys/SystemTools.hxx>
#include <cmzlib/zutil.h> #include <cm_zlib.h>
#include <libtar/libtar.h> #include <libtar/libtar.h>
#include <memory> // auto_ptr #include <memory> // auto_ptr
#include <fcntl.h> #include <fcntl.h>
@ -94,7 +94,7 @@ int cmCPackTGZ_Data_Open(void *client_data, const char* pathname,
mydata->ZLibStream.opaque = Z_NULL; mydata->ZLibStream.opaque = Z_NULL;
int strategy = Z_DEFAULT_STRATEGY; int strategy = Z_DEFAULT_STRATEGY;
if ( deflateInit2(&mydata->ZLibStream, mydata->CompressionLevel, if ( deflateInit2(&mydata->ZLibStream, mydata->CompressionLevel,
Z_DEFLATED, -MAX_WBITS, DEF_MEM_LEVEL, strategy) != Z_OK ) Z_DEFLATED, -MAX_WBITS, 8, strategy) != Z_OK )
{ {
return -1; return -1;
} }
@ -281,7 +281,8 @@ int cmCPackTGZGenerator::GenerateHeader(std::ostream* os)
const int gz_magic[2] = {0x1f, 0x8b}; /* gzip magic header */ const int gz_magic[2] = {0x1f, 0x8b}; /* gzip magic header */
char header[11]; char header[11];
sprintf(header, "%c%c%c%c%c%c%c%c%c%c", gz_magic[0], gz_magic[1], sprintf(header, "%c%c%c%c%c%c%c%c%c%c", gz_magic[0], gz_magic[1],
Z_DEFLATED, 0 /*flags*/, 0,0,0,0 /*time*/, 0 /*xflags*/, OS_CODE); Z_DEFLATED, 0 /*flags*/, 0,0,0,0 /*time*/, 0 /*xflags*/,
3 /* zlib os code for UNIX, not really used anyway */);
os->write(header, 10); os->write(header, 10);
} }
return 1; return 1;

View File

@ -25,11 +25,10 @@ PURPOSE. See the above copyright notices for more information.
#include <cmsys/Base64.h> #include <cmsys/Base64.h>
// For XML-RPC submission // For XML-RPC submission
#include "xmlrpc.h" #include "cm_xmlrpc.h"
#include "xmlrpc_client.h"
// For curl submission // For curl submission
#include "cmcurl/curl/curl.h" #include "cm_curl.h"
#include <sys/stat.h> #include <sys/stat.h>
@ -644,12 +643,14 @@ bool cmCTestSubmitHandler::SubmitUsingXMLRPC(const cmStdString& localprefix,
const cmStdString& url) const cmStdString& url)
{ {
xmlrpc_env env; xmlrpc_env env;
std::string ctestVersion = cmVersion::GetCMakeVersion(); char ctestString[] = "CTest";
std::string ctestVersionString = cmVersion::GetCMakeVersion();
char* ctestVersion = const_cast<char*>(ctestVersionString.c_str());
cmStdString realURL = url + "/" + remoteprefix + "/Command/"; cmStdString realURL = url + "/" + remoteprefix + "/Command/";
/* Start up our XML-RPC client library. */ /* Start up our XML-RPC client library. */
xmlrpc_client_init(XMLRPC_CLIENT_NO_FLAGS, "CTest", ctestVersion.c_str()); xmlrpc_client_init(XMLRPC_CLIENT_NO_FLAGS, ctestString, ctestVersion);
/* Initialize our error-handling environment. */ /* Initialize our error-handling environment. */
xmlrpc_env_init(&env); xmlrpc_env_init(&env);
@ -697,9 +698,9 @@ bool cmCTestSubmitHandler::SubmitUsingXMLRPC(const cmStdString& localprefix,
} }
fclose(fp); fclose(fp);
std::string remoteCommand = "Submit.put"; char remoteCommand[] = "Submit.put";
result = xmlrpc_client_call(&env, realURL.c_str(), char* pRealURL = const_cast<char*>(realURL.c_str());
remoteCommand.c_str(), result = xmlrpc_client_call(&env, pRealURL, remoteCommand,
"(6)", fileBuffer, (xmlrpc_int32)fileSize ); "(6)", fileBuffer, (xmlrpc_int32)fileSize );
delete [] fileBuffer; delete [] fileBuffer;

View File

@ -14,7 +14,7 @@
PURPOSE. See the above copyright notices for more information. PURPOSE. See the above copyright notices for more information.
=========================================================================*/ =========================================================================*/
#include "cmcurl/curl/curl.h" #include "cm_curl.h"
#include "cmCTest.h" #include "cmCTest.h"
#include "cmake.h" #include "cmake.h"

View File

@ -27,7 +27,7 @@
#endif #endif
#if defined(CMAKE_BUILD_WITH_CMAKE) #if defined(CMAKE_BUILD_WITH_CMAKE)
# include <cmzlib/zlib.h> # include <cm_zlib.h>
#endif #endif
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@ -213,7 +213,7 @@ void cmGeneratedFileStreamBase::Close()
int cmGeneratedFileStreamBase::CompressFile(const char* oldname, int cmGeneratedFileStreamBase::CompressFile(const char* oldname,
const char* newname) const char* newname)
{ {
gzFile gf = cm_zlib_gzopen(newname, "w"); gzFile gf = gzopen(newname, "w");
if ( !gf ) if ( !gf )
{ {
return 0; return 0;
@ -228,15 +228,15 @@ int cmGeneratedFileStreamBase::CompressFile(const char* oldname,
char buffer[BUFFER_SIZE]; char buffer[BUFFER_SIZE];
while ( (res = fread(buffer, 1, BUFFER_SIZE, ifs)) > 0 ) while ( (res = fread(buffer, 1, BUFFER_SIZE, ifs)) > 0 )
{ {
if ( !cm_zlib_gzwrite(gf, buffer, res) ) if ( !gzwrite(gf, buffer, res) )
{ {
fclose(ifs); fclose(ifs);
cm_zlib_gzclose(gf); gzclose(gf);
return 0; return 0;
} }
} }
fclose(ifs); fclose(ifs);
cm_zlib_gzclose(gf); gzclose(gf);
return 1; return 1;
} }
#else #else

View File

@ -48,7 +48,7 @@
# include <libtar/libtar.h> # include <libtar/libtar.h>
# include <memory> // auto_ptr # include <memory> // auto_ptr
# include <fcntl.h> # include <fcntl.h>
# include <cmzlib/zlib.h> # include <cm_zlib.h>
#endif #endif
#if defined(__sgi) && !defined(__GNUC__) #if defined(__sgi) && !defined(__GNUC__)
@ -1439,7 +1439,7 @@ int cmSystemToolsGZStructOpen(void* call_data, const char *pathname,
} }
#endif #endif
gzf->GZFile = cm_zlib_gzdopen(fd, gzoflags); gzf->GZFile = gzdopen(fd, gzoflags);
if (!gzf->GZFile) if (!gzf->GZFile)
{ {
errno = ENOMEM; errno = ENOMEM;
@ -1452,20 +1452,20 @@ int cmSystemToolsGZStructOpen(void* call_data, const char *pathname,
int cmSystemToolsGZStructClose(void* call_data) int cmSystemToolsGZStructClose(void* call_data)
{ {
cmSystemToolsGZStruct* gzf = static_cast<cmSystemToolsGZStruct*>(call_data); cmSystemToolsGZStruct* gzf = static_cast<cmSystemToolsGZStruct*>(call_data);
return cm_zlib_gzclose(gzf->GZFile); return gzclose(gzf->GZFile);
} }
ssize_t cmSystemToolsGZStructRead(void* call_data, void* buf, size_t count) ssize_t cmSystemToolsGZStructRead(void* call_data, void* buf, size_t count)
{ {
cmSystemToolsGZStruct* gzf = static_cast<cmSystemToolsGZStruct*>(call_data); cmSystemToolsGZStruct* gzf = static_cast<cmSystemToolsGZStruct*>(call_data);
return cm_zlib_gzread(gzf->GZFile, buf, count); return gzread(gzf->GZFile, buf, count);
} }
ssize_t cmSystemToolsGZStructWrite(void* call_data, const void* buf, ssize_t cmSystemToolsGZStructWrite(void* call_data, const void* buf,
size_t count) size_t count)
{ {
cmSystemToolsGZStruct* gzf = static_cast<cmSystemToolsGZStruct*>(call_data); cmSystemToolsGZStruct* gzf = static_cast<cmSystemToolsGZStruct*>(call_data);
return cm_zlib_gzwrite(gzf->GZFile, (void*)buf, count); return gzwrite(gzf->GZFile, (void*)buf, count);
} }
#endif #endif

View File

@ -16,7 +16,7 @@
=========================================================================*/ =========================================================================*/
#include "cmXMLParser.h" #include "cmXMLParser.h"
#include <cmexpat/expat.h> #include <cm_expat.h>
#include <ctype.h> #include <ctype.h>
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------

View File

@ -0,0 +1,26 @@
/*=========================================================================
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 __cmThirdParty_h
#define __cmThirdParty_h
/* Whether CMake is using its own utility libraries. */
#cmakedefine CMAKE_USE_SYSTEM_CURL
#cmakedefine CMAKE_USE_SYSTEM_EXPAT
#cmakedefine CMAKE_USE_SYSTEM_XMLRPC
#cmakedefine CMAKE_USE_SYSTEM_ZLIB
#endif

28
Utilities/cm_curl.h Normal file
View File

@ -0,0 +1,28 @@
/*=========================================================================
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 __cm_curl_h
#define __cm_curl_h
/* Use the curl library configured for CMake. */
#include "cmThirdParty.h"
#ifdef CMAKE_USE_SYSTEM_CURL
# include <curl/curl.h>
#else
# include <cmcurl/curl/curl.h>
#endif
#endif

28
Utilities/cm_expat.h Normal file
View File

@ -0,0 +1,28 @@
/*=========================================================================
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 __cm_expat_h
#define __cm_expat_h
/* Use the expat library configured for CMake. */
#include "cmThirdParty.h"
#ifdef CMAKE_USE_SYSTEM_EXPAT
# include <expat.h>
#else
# include <cmexpat/expat.h>
#endif
#endif

30
Utilities/cm_xmlrpc.h Normal file
View File

@ -0,0 +1,30 @@
/*=========================================================================
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 __cm_xmlrpc_h
#define __cm_xmlrpc_h
/* Use the xmlrpc library configured for CMake. */
#include "cmThirdParty.h"
#ifdef CMAKE_USE_SYSTEM_XMLRPC
# include <xmlrpc.h>
# include <xmlrpc_client.h>
#else
# include <cmxmlrpc/xmlrpc.h>
# include <cmxmlrpc/xmlrpc_client.h>
#endif
#endif

28
Utilities/cm_zlib.h Normal file
View File

@ -0,0 +1,28 @@
/*=========================================================================
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 __cm_zlib_h
#define __cm_zlib_h
/* Use the zlib library configured for CMake. */
#include "cmThirdParty.h"
#ifdef CMAKE_USE_SYSTEM_ZLIB
# include <zlib.h>
#else
# include <cmzlib/zlib.h>
#endif
#endif

View File

@ -367,11 +367,18 @@ ENDIF(NOT HAVE_FNMATCH)
#SET(NEED_GLOB 1) #SET(NEED_GLOB 1)
#ENDIF(NOT HAVE_GLOB) #ENDIF(NOT HAVE_GLOB)
# Setup zlib.
IF(NOT CMTAR_ZLIB_LIBRARIES)
MESSAGE(FATAL_ERROR "Parent project must set CMTAR_ZLIB_LIBRARIES.")
ENDIF(NOT CMTAR_ZLIB_LIBRARIES)
IF(NOT CMTAR_ZLIB_HEADER)
MESSAGE(FATAL_ERROR "Parent project must set CMTAR_ZLIB_HEADER.")
ENDIF(NOT CMTAR_ZLIB_HEADER)
INCLUDE_DIRECTORIES(${CMTAR_ZLIB_INCLUDE_DIRS})
CONFIGURE_FILE(${LIBTAR_SOURCE_DIR}/config.h.in CONFIGURE_FILE(${LIBTAR_SOURCE_DIR}/config.h.in
${LIBTAR_BINARY_DIR}/libtar/config.h) ${LIBTAR_BINARY_DIR}/libtar/config.h)
ADD_LIBRARY(cmtar STATIC ${libtar_SRC}) ADD_LIBRARY(cmtar STATIC ${libtar_SRC})
ADD_EXECUTABLE(tartest libtar.c) ADD_EXECUTABLE(tartest libtar.c)
TARGET_LINK_LIBRARIES(tartest cmtar ${CMAKE_ZLIB_LIBRARIES}) TARGET_LINK_LIBRARIES(tartest cmtar ${CMTAR_ZLIB_LIBRARIES})

View File

@ -42,9 +42,6 @@
/* Define to 1 if you have the `z' library (-lz). */ /* Define to 1 if you have the `z' library (-lz). */
#cmakedefine HAVE_LIBZ @HAVE_LIBZ@ #cmakedefine HAVE_LIBZ @HAVE_LIBZ@
/* Define to 1 if you have the VTK's `z' library */
#cmakedefine HAVE_VTK_LIBZ @HAVE_VTK_LIBZ@
/* Define to 1 if the system has the type `major_t'. */ /* Define to 1 if the system has the type `major_t'. */
#cmakedefine HAVE_MAJOR_T @HAVE_MAJOR_T@ #cmakedefine HAVE_MAJOR_T @HAVE_MAJOR_T@
@ -209,3 +206,5 @@
/* Define to `long long' if not defined in system header files. */ /* Define to `long long' if not defined in system header files. */
#cmakedefine uint64_t @uint64_t@ #cmakedefine uint64_t @uint64_t@
#define CMTAR_ZLIB_HEADER "@CMTAR_ZLIB_HEADER@"

View File

@ -35,18 +35,7 @@
# include <signal.h> # include <signal.h>
#endif #endif
#ifdef HAVE_LIBZ #include CMTAR_ZLIB_HEADER
#ifdef HAVE_VTK_LIBZ
# include <vtkzlib/zlib.h>
# define cm_zlib_gzdopen gzdopen
# define cm_zlib_gzclose gzclose
# define cm_zlib_gzread gzread
# define cm_zlib_gzwrite gzwrite
#else
# include <cmzlib/zlib.h>
#endif
#endif
#include <libtar/compat.h> #include <libtar/compat.h>
@ -117,7 +106,7 @@ static int libtar_gzopen(void* call_data, const char *pathname,
} }
#endif #endif
gzf->GZFile = cm_zlib_gzdopen(fd, gzoflags); gzf->GZFile = gzdopen(fd, gzoflags);
if (!gzf->GZFile) if (!gzf->GZFile)
{ {
errno = ENOMEM; errno = ENOMEM;
@ -130,19 +119,19 @@ static int libtar_gzopen(void* call_data, const char *pathname,
static int libtar_gzclose(void* call_data) static int libtar_gzclose(void* call_data)
{ {
struct gzStruct* gzf = (struct gzStruct*)call_data; struct gzStruct* gzf = (struct gzStruct*)call_data;
return cm_zlib_gzclose(gzf->GZFile); return gzclose(gzf->GZFile);
} }
static ssize_t libtar_gzread(void* call_data, void* buf, size_t count) static ssize_t libtar_gzread(void* call_data, void* buf, size_t count)
{ {
struct gzStruct* gzf = (struct gzStruct*)call_data; struct gzStruct* gzf = (struct gzStruct*)call_data;
return cm_zlib_gzread(gzf->GZFile, buf, count); return gzread(gzf->GZFile, buf, count);
} }
static ssize_t libtar_gzwrite(void* call_data, const void* buf, size_t count) static ssize_t libtar_gzwrite(void* call_data, const void* buf, size_t count)
{ {
struct gzStruct* gzf = (struct gzStruct*)call_data; struct gzStruct* gzf = (struct gzStruct*)call_data;
return cm_zlib_gzwrite(gzf->GZFile, (void*)buf, count); return gzwrite(gzf->GZFile, (void*)buf, count);
} }
tartype_t gztype = { tartype_t gztype = {

View File

@ -29,7 +29,7 @@
#include <stddef.h> #include <stddef.h>
#include <stdarg.h> #include <stdarg.h>
#include <xmlrpc_config.h> #include <cmxmlrpc/xmlrpc_config.h>
#ifdef HAVE_UNICODE_WCHAR #ifdef HAVE_UNICODE_WCHAR
#include <wchar.h> #include <wchar.h>
@ -778,7 +778,7 @@ char *xmlrpc_authcookie(void);
in here. For backward compatibility, we need to include it here, even in here. For backward compatibility, we need to include it here, even
though it really isn't logical to do so. though it really isn't logical to do so.
*/ */
#include <xmlrpc_server.h> #include <cmxmlrpc/xmlrpc_server.h>
#endif #endif

View File

@ -28,7 +28,7 @@
#include <stddef.h> #include <stddef.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <expat.h> #include <cm_expat.h>
#include "xmlrpc.h" #include "xmlrpc.h"
#include "xmlrpc_int.h" #include "xmlrpc_int.h"