| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359 |
- CMAKE_MINIMUM_REQUIRED(VERSION 2.0)
- PROJECT(LIBTAR C)
- INCLUDE_REGULAR_EXPRESSION("^.*$")
- # 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"
- "sys/mkdev.h"
- "stdint.h"
- "stdlib.h"
- "stdio.h"
- "string.h"
- "strings.h"
- "sys/param.h"
- "sys/types.h"
- "sys/stat.h"
- "unistd.h"
- "glob.h"
- "dirent.h"
- "sys/sysmacros.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
- vsnprintf
- glob
- major
- minor
- )
- 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("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_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)
- IF(UNIX)
- SET (NEED_MAKEDEV 1)
- ENDIF(UNIX)
- #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 (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)
- FOREACH(hfile internal.h filesystem.h)
- GET_FILENAME_COMPONENT(outname "${hfile}" NAME)
- CONFIGURE_FILE(${LIBTAR_SOURCE_DIR}/${hfile}
- ${LIBTAR_BINARY_DIR}/libtarint/${outname} @ONLY IMMEDIATE)
- ENDFOREACH(hfile)
-
- 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
- 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_DIRENT_H)
- SET(libtar_SRC
- ${libtar_SRC}
- filesystem.c filesystem.h)
- ENDIF(NOT HAVE_DIRENT_H)
- 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 OR NOT HAVE_VSNPRINTF)
- SET(libtar_SRC ${libtar_SRC} compat/snprintf.c)
- SET(NEED_SNPRINTF 1)
- ENDIF(NOT HAVE_SNPRINTF OR NOT HAVE_VSNPRINTF)
- 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)
- CONFIGURE_FILE(${LIBTAR_SOURCE_DIR}/config.h.in
- ${LIBTAR_BINARY_DIR}/libtar/config.h)
- ADD_LIBRARY(cmtar STATIC ${libtar_SRC})
- ADD_EXECUTABLE(tartest libtar.c)
- TARGET_LINK_LIBRARIES(tartest cmtar ${CMAKE_ZLIB_LIBRARIES})
|