summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYann Collet <Cyan4973@users.noreply.github.com>2016-08-28 11:55:36 (GMT)
committerGitHub <noreply@github.com>2016-08-28 11:55:36 (GMT)
commit7f08131f9986f0c19f2683d023d1cd9fdab41e32 (patch)
tree77fdd51d65d2afa44b68d8f779665c4e4e90b07f
parent5bd3eaa481f4446b03a062d12119ef11e0f46653 (diff)
parent3fa60044e77be14b187baac779a5ea72f800ab75 (diff)
downloadlz4-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.txt58
-rw-r--r--examples/Makefile2
-rw-r--r--lib/Makefile2
-rw-r--r--programs/lz4cli.c3
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 */
/****************************