diff options
author | Yann Collet <Cyan4973@users.noreply.github.com> | 2016-08-28 11:55:36 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-28 11:55:36 (GMT) |
commit | 7f08131f9986f0c19f2683d023d1cd9fdab41e32 (patch) | |
tree | 77fdd51d65d2afa44b68d8f779665c4e4e90b07f | |
parent | 5bd3eaa481f4446b03a062d12119ef11e0f46653 (diff) | |
parent | 3fa60044e77be14b187baac779a5ea72f800ab75 (diff) | |
download | lz4-7f08131f9986f0c19f2683d023d1cd9fdab41e32.zip lz4-7f08131f9986f0c19f2683d023d1cd9fdab41e32.tar.gz lz4-7f08131f9986f0c19f2683d023d1cd9fdab41e32.tar.bz2 |
Merge pull request #226 from gsauthof/port-make
Fix POSIX portability and cmake file
-rw-r--r-- | cmake_unofficial/CMakeLists.txt | 58 | ||||
-rw-r--r-- | examples/Makefile | 2 | ||||
-rw-r--r-- | lib/Makefile | 2 | ||||
-rw-r--r-- | programs/lz4cli.c | 3 |
4 files changed, 32 insertions, 33 deletions
diff --git a/cmake_unofficial/CMakeLists.txt b/cmake_unofficial/CMakeLists.txt index 3f113b1..c7f1dab 100644 --- a/cmake_unofficial/CMakeLists.txt +++ b/cmake_unofficial/CMakeLists.txt @@ -9,31 +9,27 @@ include(CPack) cmake_minimum_required (VERSION 2.6) INCLUDE (CheckTypeSize) check_type_size("void *" SIZEOF_VOID_P) -IF( "${SIZEOF_VOID_P}" STREQUAL "8" ) +IF(SIZEOF_VOID_P STREQUAL "8") set (CMAKE_SYSTEM_PROCESSOR "64bit") MESSAGE( STATUS "64 bit architecture detected size of void * is " ${SIZEOF_VOID_P}) ENDIF() option(BUILD_TOOLS "Build the command line tools" ON) option(BUILD_LIBS "Build the libraries in addition to the tools" ON) +option(LINK_TOOLS_WITH_LIB "Link the command line tools with the (shared) library" OFF) -IF("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR - "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") +IF(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR + CMAKE_C_COMPILER_ID STREQUAL "Clang") SET(GNU_COMPATIBLE_COMPILER 1) ENDIF() -if(GNU_COMPATIBLE_COMPILER) -if(UNIX AND BUILD_LIBS) - add_definitions(-fPIC) -endif() -endif() set(LZ4_DIR ../lib/) set(PRG_DIR ../programs/) set(LZ4_SRCS_LIB ${LZ4_DIR}lz4.c ${LZ4_DIR}lz4hc.c ${LZ4_DIR}lz4.h ${LZ4_DIR}lz4hc.h ${LZ4_DIR}lz4frame.c ${LZ4_DIR}lz4frame.h ${LZ4_DIR}xxhash.c) set(LZ4_SRCS ${LZ4_DIR}lz4frame.c ${LZ4_DIR}xxhash.c ${PRG_DIR}bench.c ${PRG_DIR}lz4cli.c ${PRG_DIR}lz4io.c) -if(BUILD_TOOLS AND NOT BUILD_LIBS) +if(BUILD_TOOLS AND NOT (LINK_TOOLS_WITH_LIB AND BUILD_LIBS)) set(LZ4_SRCS ${LZ4_SRCS} ${LZ4_SRCS_LIB}) endif() @@ -45,16 +41,16 @@ endif() if(BUILD_LIBS) - SET(LIBS_TARGETS "") - IF(NOT WIN32) - add_library(liblz4 SHARED ${LZ4_SRCS_LIB}) - add_library(liblz4_static STATIC ${LZ4_SRCS_LIB}) - SET_TARGET_PROPERTIES(liblz4_static PROPERTIES OUTPUT_NAME lz4) - SET(LIBS_TARGETS liblz4 liblz4_static) - ELSE(NOT WIN32) - add_library(liblz4 STATIC ${LZ4_SRCS_LIB}) - SET(LIBS_TARGETS liblz4) - ENDIF(NOT WIN32) + SET(LIBS_TARGETS "") + IF(WIN32) + add_library(liblz4 STATIC ${LZ4_SRCS_LIB}) + SET(LIBS_TARGETS liblz4) + ELSE(WIN32) + add_library(liblz4 SHARED ${LZ4_SRCS_LIB}) + add_library(liblz4_static STATIC ${LZ4_SRCS_LIB}) + SET_TARGET_PROPERTIES(liblz4_static PROPERTIES OUTPUT_NAME lz4) + SET(LIBS_TARGETS liblz4 liblz4_static) + ENDIF(WIN32) set_target_properties(liblz4 PROPERTIES OUTPUT_NAME lz4 @@ -83,7 +79,7 @@ if(BUILD_LIBS) DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig" ) - if(BUILD_TOOLS) + if(BUILD_TOOLS AND LINK_TOOLS_WITH_LIB) target_link_libraries(lz4 liblz4) endif() endif() @@ -92,21 +88,23 @@ endif() #warnings if(MSVC) -ADD_DEFINITIONS("-W4") + ADD_DEFINITIONS("-W4") endif() if(GNU_COMPATIBLE_COMPILER) -ADD_DEFINITIONS("-Wall") + ADD_DEFINITIONS("-Wall") endif() if(CMAKE_COMPILER_IS_GNUCXX) -ADD_DEFINITIONS("-Wextra") -ADD_DEFINITIONS("-Wundef") -ADD_DEFINITIONS("-Wshadow") -ADD_DEFINITIONS("-Wcast-align") -ADD_DEFINITIONS("-Wstrict-prototypes") + ADD_DEFINITIONS("-Wextra") + ADD_DEFINITIONS("-Wundef") + ADD_DEFINITIONS("-Wshadow") + ADD_DEFINITIONS("-Wcast-align") + ADD_DEFINITIONS("-Wstrict-prototypes") endif(CMAKE_COMPILER_IS_GNUCXX) -if(GNU_COMPATIBLE_COMPILER AND - (NOT CMAKE_SYSTEM_NAME MATCHES "SunOS")) -ADD_DEFINITIONS("-std=c99") +if(GNU_COMPATIBLE_COMPILER) + # we need gnu99 instead of c99 on Linux and Solaris + # to get C99 and POSIX definitions + # an alternative with cmake >= 3.1/3.2 is the C_STANDARD property + ADD_DEFINITIONS("-std=gnu99") endif() ADD_DEFINITIONS("-DLZ4_VERSION=\"${CPACK_PACKAGE_VERSION_PATCH}\"") INCLUDE_DIRECTORIES (${LZ4_DIR}) diff --git a/examples/Makefile b/examples/Makefile index 1e4f075..c8caf24 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -28,7 +28,7 @@ # ########################################################################## CFLAGS ?= -O3 -CFLAGS += -std=c99 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Wstrict-prototypes +CFLAGS += -std=gnu99 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Wstrict-prototypes FLAGS := -I../lib $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) TESTFILE= Makefile diff --git a/lib/Makefile b/lib/Makefile index 879d2b3..52e0f95 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -41,7 +41,7 @@ DESTDIR?= PREFIX ?= /usr/local CPPFLAGS= -DXXH_NAMESPACE=LZ4_ CFLAGS ?= -O3 -CFLAGS += -std=c99 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Wcast-qual -Wstrict-prototypes -pedantic +CFLAGS += -std=gnu99 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Wcast-qual -Wstrict-prototypes -pedantic FLAGS = $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) LIBDIR?= $(PREFIX)/lib diff --git a/programs/lz4cli.c b/programs/lz4cli.c index b5b244e..12d48d1 100644 --- a/programs/lz4cli.c +++ b/programs/lz4cli.c @@ -49,7 +49,8 @@ # pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */ #endif -#define _POSIX_SOURCE 1 /* for fileno() within <stdio.h> on unix */ +/* cf. http://man7.org/linux/man-pages/man7/feature_test_macros.7.html */ +#define _XOPEN_VERSION 600 /* POSIX.2001, for fileno() within <stdio.h> on unix */ /**************************** |