summaryrefslogtreecommitdiffstats
path: root/Utilities/cmtar/CMakeLists.txt
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2005-12-28 15:18:37 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2005-12-28 15:18:37 (GMT)
commitbc1548b236515514c138da8b59f61af2efbfc4a5 (patch)
treeab8ab5b2bceca941f363ca7064248ece6779b617 /Utilities/cmtar/CMakeLists.txt
parent552842d11f845ad53e4f34be549aa4007737564b (diff)
downloadCMake-bc1548b236515514c138da8b59f61af2efbfc4a5.zip
CMake-bc1548b236515514c138da8b59f61af2efbfc4a5.tar.gz
CMake-bc1548b236515514c138da8b59f61af2efbfc4a5.tar.bz2
ENH: Initial import
Diffstat (limited to 'Utilities/cmtar/CMakeLists.txt')
-rw-r--r--Utilities/cmtar/CMakeLists.txt360
1 files changed, 360 insertions, 0 deletions
diff --git a/Utilities/cmtar/CMakeLists.txt b/Utilities/cmtar/CMakeLists.txt
new file mode 100644
index 0000000..dd50316
--- /dev/null
+++ b/Utilities/cmtar/CMakeLists.txt
@@ -0,0 +1,360 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.0)
+PROJECT(LIBTAR C)
+INCLUDE_REGULAR_EXPRESSION("^.*\\.h$")
+
+# We need ansi c-flags, especially on HP
+SET(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}")
+SET(CMAKE_REQUIRED_FLAGS ${CMAKE_ANSI_CFLAGS})
+
+# If we are on AIX, do the _ALL_SOURCE magic
+IF(${CMAKE_SYSTEM_NAME} MATCHES AIX)
+ SET(_ALL_SOURCE 1)
+ENDIF(${CMAKE_SYSTEM_NAME} MATCHES AIX)
+
+# Include all the necessary files for macros
+#SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
+# Include all the necessary files for macros
+INCLUDE (CheckIncludeFiles)
+INCLUDE (CheckFunctionExists)
+INCLUDE (CheckTypeSize)
+INCLUDE (CheckSymbolExists)
+INCLUDE (TestBigEndian)
+
+MACRO(MANGLE_VARIABLE_NAME str var prefix)
+ STRING(TOUPPER "${str}" mangle_variable_name_var)
+ STRING(REGEX REPLACE "[/. ]" "_" mangle_variable_name_var "${mangle_variable_name_var}")
+ SET(${var} "${prefix}${mangle_variable_name_var}")
+ENDMACRO(MANGLE_VARIABLE_NAME str var)
+
+# Check if header file exists and add it to the list.
+MACRO(CHECK_INCLUDE_FILE_CONCAT FILE)
+ MANGLE_VARIABLE_NAME("${FILE}" "CHECK_INCLUDE_FILE_CONCAT_VAR" "HAVE_")
+ CHECK_INCLUDE_FILES("${HEADER_INCLUDES};${FILE}" ${CHECK_INCLUDE_FILE_CONCAT_VAR})
+ IF(${CHECK_INCLUDE_FILE_CONCAT_VAR})
+ SET(HEADER_INCLUDES ${HEADER_INCLUDES} ${FILE})
+ ENDIF(${CHECK_INCLUDE_FILE_CONCAT_VAR})
+ENDMACRO(CHECK_INCLUDE_FILE_CONCAT)
+
+MACRO(CHECK_FUNCTION_EXISTS_EX FUNC)
+ MANGLE_VARIABLE_NAME("${FUNC}" "CHECK_FUNCTION_EXISTS_EX_VAR" "HAVE_")
+ CHECK_FUNCTION_EXISTS("${FUNC}" "${CHECK_FUNCTION_EXISTS_EX_VAR}")
+ENDMACRO(CHECK_FUNCTION_EXISTS_EX)
+
+MACRO(CHECK_SYMBOL_EXISTS_EX SYM)
+ MANGLE_VARIABLE_NAME("${SYM}" "CHECK_SYMBOL_EXISTS_EX_VAR" "HAVE_")
+ CHECK_SYMBOL_EXISTS("${SYM}" "${HEADER_INCLUDES}" "${CHECK_SYMBOL_EXISTS_EX_VAR}")
+ENDMACRO(CHECK_SYMBOL_EXISTS_EX)
+
+#MACRO(CHECK_TYPE_SIZE_EX type defualt_size)
+# MANGLE_VARIABLE_NAME("${type}" "check_type_size_var" "")
+# CHECK_TYPE_SIZE("${type}" "SIZEOF_${check_type_size_var}")
+# IF(HAVE_${check_type_size_var})
+# SET("HAVE_${check_type_size_var}" 1)
+# ELSE(HAVE_${check_type_size_var})
+# ENDIF(HAVE_${check_type_size_var})
+#ENDMACRO(CHECK_TYPE_SIZE_EX)
+
+
+
+INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}")
+INCLUDE_DIRECTORIES(${CURL_SPECIAL_LIBZ_INCLUDES})
+
+#check for stdc headers
+CHECK_INCLUDE_FILES("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS)
+
+#check for other headers used by the program
+FOREACH(file
+ "ctype.h"
+ "fnmatch.h"
+ "inttypes.h"
+ "libgen.h"
+ "memory.h"
+ "stdint.h"
+ "stdlib.h"
+ "stdio.h"
+ "string.h"
+ "strings.h"
+ "sys/types.h"
+ "sys/stat.h"
+ "unistd.h"
+ "glob.h"
+ )
+ CHECK_INCLUDE_FILE_CONCAT("${file}")
+ENDFOREACH(file)
+
+#check for the functions used by the program
+FOREACH(func
+ basename
+ dirname
+ fnmatch
+ lchown
+ snprintf
+ strlcpy
+ strmode
+ strsep
+ strdup
+ strftime
+ glob
+ )
+ CHECK_SYMBOL_EXISTS_EX("${func}")
+ENDFOREACH(func)
+
+CHECK_TYPE_SIZE("dev_t" SIZEOF_DEV_T)
+IF(HAVE_SIZEOF_DEV_T)
+ SET (HAVE_DEV_T 1)
+ELSE(HAVE_SIZEOF_DEV_T)
+ SET (HAVE_DEV_T 0)
+ SET (dev_t "unsigned long")
+ENDIF(HAVE_SIZEOF_DEV_T)
+
+CHECK_TYPE_SIZE("major_t" SIZEOF_MAJOR_T)
+IF(HAVE_SIZEOF_MAJOR_T)
+ SET (HAVE_MAJOR_T 1)
+ELSE(HAVE_SIZEOF_MAJOR_T)
+ SET (HAVE_MAJOR_T 0)
+ SET (major_t "unsigned int")
+ENDIF(HAVE_SIZEOF_MAJOR_T)
+
+CHECK_TYPE_SIZE("minor_t" SIZEOF_MINOR_T)
+IF(HAVE_SIZEOF_MINOR_T)
+ SET (HAVE_MINOR_T 1)
+ELSE(HAVE_SIZEOF_MINOR_T)
+ SET (HAVE_MINOR_T 0)
+ SET (minor_t "unsigned int")
+ENDIF(HAVE_SIZEOF_MINOR_T)
+
+CHECK_TYPE_SIZE("nlink_t" SIZEOF_NLINK_T)
+IF(HAVE_SIZEOF_NLINK_T)
+ SET (HAVE_NLINK_T 1)
+ELSE(HAVE_SIZEOF_NLINK_T)
+ SET (HAVE_NLINK_T 0)
+ SET (nlink_t "unsigned short")
+ENDIF(HAVE_SIZEOF_NLINK_T)
+
+CHECK_TYPE_SIZE("uint64_t" SIZEOF_UINT64_T)
+IF(HAVE_SIZEOF_UINT64_T)
+ SET (HAVE_UINT64_T 1)
+ELSE(HAVE_SIZEOF_UINT64_T)
+ SET (HAVE_UINT64_T 0)
+ SET (uint64_t "long long")
+ENDIF(HAVE_SIZEOF_UINT64_T)
+
+CHECK_TYPE_SIZE("socklen_t" SIZEOF_SOCKLEN_T)
+IF(HAVE_SIZEOF_SOCKLEN_T)
+ SET (HAVE_SOCKLEN_T 1)
+ELSE(HAVE_SIZEOF_SOCKLEN_T)
+ SET (HAVE_SOCKLEN_T 0)
+ SET (socklen_t "unsigned long")
+ENDIF(HAVE_SIZEOF_SOCKLEN_T)
+
+CHECK_TYPE_SIZE("gid_t" SIZEOF_GID_T)
+IF(HAVE_SIZEOF_GID_T)
+ SET (HAVE_GID_T 1)
+ELSE(HAVE_SIZEOF_GID_T)
+ SET (HAVE_GID_T 0)
+ SET (gid_t "int")
+ENDIF(HAVE_SIZEOF_GID_T)
+
+CHECK_TYPE_SIZE("mode_t" SIZEOF_MODE_T)
+IF(HAVE_SIZEOF_MODE_T)
+ SET (HAVE_MODE_T 1)
+ELSE(HAVE_SIZEOF_MODE_T)
+ SET (HAVE_MODE_T 0)
+ SET (mode_t "int")
+ENDIF(HAVE_SIZEOF_MODE_T)
+
+CHECK_TYPE_SIZE("off_t" SIZEOF_OFF_T)
+IF(HAVE_SIZEOF_OFF_T)
+ SET (HAVE_OFF_T 1)
+ELSE(HAVE_SIZEOF_OFF_T)
+ SET (HAVE_OFF_T 0)
+ SET (off_t "long")
+ENDIF(HAVE_SIZEOF_OFF_T)
+
+CHECK_TYPE_SIZE("size_t" SIZEOF_SIZE_T)
+IF(HAVE_SIZEOF_SIZE_T)
+ SET (HAVE_SIZE_T 1)
+ELSE(HAVE_SIZEOF_SIZE_T)
+ SET (HAVE_SIZE_T 0)
+ SET (size_t "unsigned")
+ENDIF(HAVE_SIZEOF_SIZE_T)
+
+CHECK_TYPE_SIZE("ssize_t" SIZEOF_SSIZE_T)
+IF(HAVE_SIZEOF_SSIZE_T)
+ SET (HAVE_SSIZE_T 1)
+ELSE(HAVE_SIZEOF_SSIZE_T)
+ SET (HAVE_SSIZE_T 0)
+ SET (ssize_t "int")
+ENDIF(HAVE_SIZEOF_SSIZE_T)
+
+CHECK_TYPE_SIZE("uid_t" SIZEOF_UID_T)
+IF(HAVE_SIZEOF_UID_T)
+ SET (HAVE_UID_T 1)
+ELSE(HAVE_SIZEOF_UID_T)
+ SET (HAVE_UID_T 0)
+ SET (uid_t "int")
+ENDIF(HAVE_SIZEOF_UID_T)
+
+#SET (HAVE_BASENAME 0)
+#SET (HAVE_CTYPE_H 0)
+#SET (HAVE_DEV_T 1)
+#SET (HAVE_DIRNAME 0)
+#SET (HAVE_FNMATCH 1)
+#SET (HAVE_FNMATCH_H 1)
+#SET (HAVE_INTTYPES_H 1)
+#SET (HAVE_LCHOWN 1)
+#SET (HAVE_LIBGEN_H 1)
+SET (HAVE_LIBZ 1)
+#SET (HAVE_MAJOR_T 0)
+#SET (HAVE_MEMORY_H 1)
+#SET (HAVE_MINOR_T 0)
+#SET (HAVE_NLINK_T 1)
+#SET (HAVE_SNPRINTF 1)
+#SET (HAVE_SOCKLEN_T 1)
+#SET (HAVE_STDINT_H 1)
+#SET (HAVE_STDLIB_H 1)
+#SET (HAVE_STRDUP 1)
+#SET (HAVE_STRFTIME 1)
+#SET (HAVE_STRINGS_H 1)
+#SET (HAVE_STRING_H 1)
+#SET (HAVE_STRLCPY 0)
+#SET (HAVE_STRMODE 0)
+#SET (HAVE_STRSEP 1)
+#SET (HAVE_SYS_STAT_H 1)
+#SET (HAVE_SYS_TYPES_H 1)
+#SET (HAVE_UINT64_T 1)
+#SET (HAVE_UNISTD_H 1)
+SET (MAJOR_IN_MKDEV 0)
+SET (MAJOR_IN_SYSMACROS 0)
+SET (MAKEDEV_THREE_ARGS 0)
+#SET (NEED_BASENAME 0)
+#SET (NEED_DIRNAME 0)
+#SET (NEED_FNMATCH 1)
+#SET (NEED_MAKEDEV 1)
+#SET (NEED_SNPRINTF 0)
+#SET (NEED_STRDUP 0)
+#SET (NEED_STRLCPY 0)
+#SET (NEED_STRMODE 1)
+#SET (NEED_STRSEP 0)
+SET (PACKAGE_BUGREPORT "")
+SET (PACKAGE_NAME "\"libtar\"")
+SET (PACKAGE_STRING "\"libtar 1.2.11\"")
+SET (PACKAGE_TARNAME "\"libtar\"")
+SET (PACKAGE_VERSION "\"1.2.11\"")
+#SET (STDC_HEADERS 1)
+SET (const 0)
+#SET (dev_t 0)
+#SET (gid_t 0)
+#SET (major_t "unsigned int")
+#SET (minor_t "unsigned int")
+#SET (mode_t 0)
+#SET (nlink_t 0)
+#SET (off_t 0)
+#SET (size_t 0)
+#SET (socklen_t 0)
+#SET (uid_t 0)
+#SET (uint64_t 0)
+SET (LISTHASH_PREFIX "libtar")
+
+CONFIGURE_FILE(${LIBTAR_SOURCE_DIR}/listhash/listhash.h.in
+ ${LIBTAR_BINARY_DIR}/libtar/libtar_listhash.h @ONLY IMMEDIATE)
+CONFIGURE_FILE(${LIBTAR_SOURCE_DIR}/listhash/list.c.in
+ ${LIBTAR_BINARY_DIR}/listhash/libtar_list.c @ONLY IMMEDIATE)
+CONFIGURE_FILE(${LIBTAR_SOURCE_DIR}/listhash/hash.c.in
+ ${LIBTAR_BINARY_DIR}/listhash/libtar_hash.c @ONLY IMMEDIATE)
+
+FOREACH(hfile libtar.h tar.h compat/compat.h)
+ GET_FILENAME_COMPONENT(outname "${hfile}" NAME)
+ CONFIGURE_FILE(${LIBTAR_SOURCE_DIR}/${hfile}
+ ${LIBTAR_BINARY_DIR}/libtar/${outname} @ONLY IMMEDIATE)
+ENDFOREACH(hfile)
+
+CONFIGURE_FILE(${LIBTAR_SOURCE_DIR}/internal.h
+ ${LIBTAR_BINARY_DIR}/libtarint/internal.h @ONLY IMMEDIATE)
+
+SET(libtar_SRC
+ append.c
+ block.c
+ decode.c
+ encode.c
+ extract.c
+ handle.c
+ ${LIBTAR_BINARY_DIR}/listhash/libtar_hash.c
+ ${LIBTAR_BINARY_DIR}/listhash/libtar_list.c
+ output.c
+ util.c
+ wrapper.c
+ filesystem.c filesystem.h
+ internal.h
+ ${LIBTAR_BINARY_DIR}/libtar/config.h
+ config.h.in
+ tar.h
+ libtar.h
+ compat/compat.h
+
+# compat/strlcpy.c
+# compat/basename.c
+# compat/dirname.c
+# compat/strmode.c
+# compat/strsep.c
+)
+
+IF(NOT HAVE_STRLCPY)
+SET(libtar_SRC ${libtar_SRC} compat/strlcpy.c)
+SET(NEED_STRLCPY 1)
+ENDIF(NOT HAVE_STRLCPY)
+
+IF(NOT HAVE_STRMODE)
+SET(libtar_SRC ${libtar_SRC} compat/strmode.c)
+SET(NEED_STRMODE 1)
+ENDIF(NOT HAVE_STRMODE)
+
+IF(WIN32)
+IF(NOT HAVE_SNPRINTF)
+SET(libtar_SRC ${libtar_SRC} compat/snprintf.c)
+SET(NEED_SNPRINTF 1)
+ENDIF(NOT HAVE_SNPRINTF)
+ENDIF(WIN32)
+
+IF(NOT HAVE_DIRNAME)
+SET(libtar_SRC ${libtar_SRC} compat/dirname.c)
+SET(NEED_DIRNAME 1)
+ENDIF(NOT HAVE_DIRNAME)
+
+
+IF(NOT HAVE_STRSEP)
+SET(libtar_SRC ${libtar_SRC} compat/strsep.c)
+SET(NEED_STRSEP 1)
+ENDIF(NOT HAVE_STRSEP)
+
+
+IF(NOT HAVE_BASENAME)
+SET(libtar_SRC ${libtar_SRC} compat/basename.c)
+SET(NEED_BASENAME 1)
+ENDIF(NOT HAVE_BASENAME)
+
+IF(NOT HAVE_FNMATCH)
+SET(libtar_SRC ${libtar_SRC} compat/fnmatch.c)
+SET(NEED_FNMATCH 1)
+ENDIF(NOT HAVE_FNMATCH)
+
+#IF(NOT HAVE_GLOB)
+#SET(libtar_SRC ${libtar_SRC} compat/glob.c)
+#SET(NEED_GLOB 1)
+#ENDIF(NOT HAVE_GLOB)
+
+
+IF(WIN32)
+SET(NEED_MAKEDEV 0)
+ELSE(WIN32)
+SET(NEED_MAKEDEV 1)
+ENDIF(WIN32)
+
+
+CONFIGURE_FILE(${LIBTAR_SOURCE_DIR}/config.h.in
+ ${LIBTAR_BINARY_DIR}/libtar/config.h)
+
+ADD_LIBRARY(tar STATIC ${libtar_SRC})
+ADD_EXECUTABLE(tartest libtar.c)
+TARGET_LINK_LIBRARIES(tartest tar ${CMAKE_ZLIB_LIBRARIES})
+