From 8013c86c7d9985b9d120930e6bca63f9206ef856 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Thu, 16 Mar 2017 14:03:54 +0100 Subject: [PATCH 01/18] Improve resolving ROOT_DIR --- build/cmake/CMakeLists.txt | 1 + build/cmake/contrib/pzstd/CMakeLists.txt | 9 +++------ build/cmake/lib/CMakeLists.txt | 7 ++----- build/cmake/programs/CMakeLists.txt | 9 +++------ build/cmake/tests/CMakeLists.txt | 9 +++------ 5 files changed, 12 insertions(+), 23 deletions(-) diff --git a/build/cmake/CMakeLists.txt b/build/cmake/CMakeLists.txt index 4805cc2c9..d0f6daade 100644 --- a/build/cmake/CMakeLists.txt +++ b/build/cmake/CMakeLists.txt @@ -9,6 +9,7 @@ PROJECT(zstd) CMAKE_MINIMUM_REQUIRED(VERSION 2.8.7) +SET(ZSTD_SOURCE_DIR "${CMAKE_SOURCE_DIR}/../..") OPTION(ZSTD_LEGACY_SUPPORT "LEGACY SUPPORT" OFF) OPTION(ZSTD_MULTITHREAD_SUPPORT "MULTITHREADING SUPPORT" ON) diff --git a/build/cmake/contrib/pzstd/CMakeLists.txt b/build/cmake/contrib/pzstd/CMakeLists.txt index 2a3663f31..f89be8901 100644 --- a/build/cmake/contrib/pzstd/CMakeLists.txt +++ b/build/cmake/contrib/pzstd/CMakeLists.txt @@ -14,13 +14,10 @@ PROJECT(pzstd) SET(CMAKE_INCLUDE_CURRENT_DIR TRUE) -# Define project root directory -SET(ROOT_DIR ../../../..) - # Define programs directory, where sources and header files are located -SET(LIBRARY_DIR ${ROOT_DIR}/lib) -SET(PROGRAMS_DIR ${ROOT_DIR}/programs) -SET(PZSTD_DIR ${ROOT_DIR}/contrib/pzstd) +SET(LIBRARY_DIR ${ZSTD_SOURCE_DIR}/lib) +SET(PROGRAMS_DIR ${ZSTD_SOURCE_DIR}/programs) +SET(PZSTD_DIR ${ZSTD_SOURCE_DIR}/contrib/pzstd) INCLUDE_DIRECTORIES(${PROGRAMS_DIR} ${LIBRARY_DIR} ${LIBRARY_DIR}/common ${PZSTD_DIR}) ADD_EXECUTABLE(pzstd ${PZSTD_DIR}/main.cpp ${PZSTD_DIR}/Options.cpp ${PZSTD_DIR}/Pzstd.cpp ${PZSTD_DIR}/SkippableFrame.cpp) diff --git a/build/cmake/lib/CMakeLists.txt b/build/cmake/lib/CMakeLists.txt index 1950d97cd..ffb6bd4a3 100644 --- a/build/cmake/lib/CMakeLists.txt +++ b/build/cmake/lib/CMakeLists.txt @@ -22,11 +22,8 @@ PROJECT(libzstd) SET(CMAKE_INCLUDE_CURRENT_DIR TRUE) -# Define project root directory -SET(ROOT_DIR ../../..) - # Define library directory, where sources and header files are located -SET(LIBRARY_DIR ${ROOT_DIR}/lib) +SET(LIBRARY_DIR ${ZSTD_SOURCE_DIR}/lib) INCLUDE_DIRECTORIES(${LIBRARY_DIR} ${LIBRARY_DIR}/common) # Read file content @@ -97,7 +94,7 @@ IF (ZSTD_LEGACY_SUPPORT) ENDIF (ZSTD_LEGACY_SUPPORT) IF (MSVC) - SET(MSVC_RESOURCE_DIR ${ROOT_DIR}/build/VS2010/libzstd-dll) + SET(MSVC_RESOURCE_DIR ${ZSTD_SOURCE_DIR}/build/VS2010/libzstd-dll) SET(PlatformDependResources ${MSVC_RESOURCE_DIR}/libzstd-dll.rc) ENDIF (MSVC) diff --git a/build/cmake/programs/CMakeLists.txt b/build/cmake/programs/CMakeLists.txt index c88ee5cc9..38b4c1e7d 100644 --- a/build/cmake/programs/CMakeLists.txt +++ b/build/cmake/programs/CMakeLists.txt @@ -14,12 +14,9 @@ PROJECT(programs) SET(CMAKE_INCLUDE_CURRENT_DIR TRUE) -# Define project root directory -SET(ROOT_DIR ../../..) - # Define programs directory, where sources and header files are located -SET(LIBRARY_DIR ${ROOT_DIR}/lib) -SET(PROGRAMS_DIR ${ROOT_DIR}/programs) +SET(LIBRARY_DIR ${ZSTD_SOURCE_DIR}/lib) +SET(PROGRAMS_DIR ${ZSTD_SOURCE_DIR}/programs) INCLUDE_DIRECTORIES(${PROGRAMS_DIR} ${LIBRARY_DIR} ${LIBRARY_DIR}/common ${LIBRARY_DIR}/compress ${LIBRARY_DIR}/dictBuilder) IF (ZSTD_LEGACY_SUPPORT) @@ -28,7 +25,7 @@ IF (ZSTD_LEGACY_SUPPORT) ENDIF (ZSTD_LEGACY_SUPPORT) IF (MSVC) - SET(MSVC_RESOURCE_DIR ${ROOT_DIR}/build/VS2010/zstd) + SET(MSVC_RESOURCE_DIR ${ZSTD_SOURCE_DIR}/build/VS2010/zstd) SET(PlatformDependResources ${MSVC_RESOURCE_DIR}/zstd.rc) ENDIF (MSVC) diff --git a/build/cmake/tests/CMakeLists.txt b/build/cmake/tests/CMakeLists.txt index 53a699449..cb327e48c 100644 --- a/build/cmake/tests/CMakeLists.txt +++ b/build/cmake/tests/CMakeLists.txt @@ -34,13 +34,10 @@ PROJECT(tests) SET(CMAKE_INCLUDE_CURRENT_DIR TRUE) -# Define project root directory -SET(ROOT_DIR ../../..) - # Define programs directory, where sources and header files are located -SET(LIBRARY_DIR ${ROOT_DIR}/lib) -SET(PROGRAMS_DIR ${ROOT_DIR}/programs) -SET(TESTS_DIR ${ROOT_DIR}/tests) +SET(LIBRARY_DIR ${ZSTD_SOURCE_DIR}/lib) +SET(PROGRAMS_DIR ${ZSTD_SOURCE_DIR}/programs) +SET(TESTS_DIR ${ZSTD_SOURCE_DIR}/tests) INCLUDE_DIRECTORIES(${TESTS_DIR} ${PROGRAMS_DIR} ${LIBRARY_DIR} ${LIBRARY_DIR}/common ${LIBRARY_DIR}/compress ${LIBRARY_DIR}/dictBuilder) ADD_EXECUTABLE(fullbench ${PROGRAMS_DIR}/datagen.c ${TESTS_DIR}/fullbench.c) From 623baf513e9331954ab76c44eabe63881476969a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Thu, 16 Mar 2017 14:06:49 +0100 Subject: [PATCH 02/18] Move GetLibraryVersion function to its own module file --- build/cmake/CMakeModules/GetLibraryVersion.cmake | 9 +++++++++ build/cmake/lib/CMakeLists.txt | 14 ++------------ 2 files changed, 11 insertions(+), 12 deletions(-) create mode 100644 build/cmake/CMakeModules/GetLibraryVersion.cmake diff --git a/build/cmake/CMakeModules/GetLibraryVersion.cmake b/build/cmake/CMakeModules/GetLibraryVersion.cmake new file mode 100644 index 000000000..a3e2fd25f --- /dev/null +++ b/build/cmake/CMakeModules/GetLibraryVersion.cmake @@ -0,0 +1,9 @@ +function(GetLibraryVersion _header _major _minor _release) + # Read file content + FILE(READ ${_header} CONTENT) + + string(REGEX MATCHALL ".*define ZSTD_VERSION_MAJOR+.* ([0-9]+).*define ZSTD_VERSION_MINOR+.* ([0-9]+).*define ZSTD_VERSION_RELEASE+.* ([0-9]+)" VERSION_REGEX "${CONTENT}") + SET(${_major} ${CMAKE_MATCH_1} PARENT_SCOPE) + SET(${_minor} ${CMAKE_MATCH_2} PARENT_SCOPE) + SET(${_release} ${CMAKE_MATCH_3} PARENT_SCOPE) +endfunction() diff --git a/build/cmake/lib/CMakeLists.txt b/build/cmake/lib/CMakeLists.txt index ffb6bd4a3..ed5b36b21 100644 --- a/build/cmake/lib/CMakeLists.txt +++ b/build/cmake/lib/CMakeLists.txt @@ -10,15 +10,8 @@ # - zstd homepage : http://www.zstd.net/ # ################################################################ -# Get library version based on information from input content (use regular exp) -function(GetLibraryVersion _content _outputVar1 _outputVar2 _outputVar3) - string(REGEX MATCHALL ".*define ZSTD_VERSION_MAJOR+.* ([0-9]+).*define ZSTD_VERSION_MINOR+.* ([0-9]+).*define ZSTD_VERSION_RELEASE+.* ([0-9]+)" VERSION_REGEX "${_content}") - SET(${_outputVar1} ${CMAKE_MATCH_1} PARENT_SCOPE) - SET(${_outputVar2} ${CMAKE_MATCH_2} PARENT_SCOPE) - SET(${_outputVar3} ${CMAKE_MATCH_3} PARENT_SCOPE) -endfunction() - PROJECT(libzstd) +INCLUDE(${CMAKE_SOURCE_DIR}/CMakeModules/GetLibraryVersion.cmake) SET(CMAKE_INCLUDE_CURRENT_DIR TRUE) @@ -26,11 +19,8 @@ SET(CMAKE_INCLUDE_CURRENT_DIR TRUE) SET(LIBRARY_DIR ${ZSTD_SOURCE_DIR}/lib) INCLUDE_DIRECTORIES(${LIBRARY_DIR} ${LIBRARY_DIR}/common) -# Read file content -FILE(READ ${LIBRARY_DIR}/zstd.h HEADER_CONTENT) - # Parse version -GetLibraryVersion("${HEADER_CONTENT}" LIBVER_MAJOR LIBVER_MINOR LIBVER_RELEASE) +GetLibraryVersion(${LIBRARY_DIR}/zstd.h LIBVER_MAJOR LIBVER_MINOR LIBVER_RELEASE) MESSAGE("ZSTD VERSION ${LIBVER_MAJOR}.${LIBVER_MINOR}.${LIBVER_RELEASE}") SET(Sources From c03d7b898d87d50bd2d7dc625f59a4ab60863fb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Thu, 16 Mar 2017 14:08:13 +0100 Subject: [PATCH 03/18] Cleanup lib rules --- build/cmake/lib/CMakeLists.txt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/build/cmake/lib/CMakeLists.txt b/build/cmake/lib/CMakeLists.txt index ed5b36b21..65b00b9ed 100644 --- a/build/cmake/lib/CMakeLists.txt +++ b/build/cmake/lib/CMakeLists.txt @@ -101,17 +101,15 @@ ENDIF (MSVC) # Define library base name IF (MSVC) SET(LIBRARY_BASE_NAME zstdlib) -ELSE () - SET(LIBRARY_BASE_NAME libzstd) -ENDIF (MSVC) -IF (MSVC) IF (CMAKE_SIZEOF_VOID_P MATCHES "8") SET(LIBRARY_ARCH_SUFFIX "_x64") ELSE () SET(LIBRARY_ARCH_SUFFIX "_x86") ENDIF (CMAKE_SIZEOF_VOID_P MATCHES "8") ELSE () + SET(LIBRARY_BASE_NAME libzstd) + SET(LIBRARY_ARCH_SUFFIX "") ENDIF (MSVC) From e8517a95f328163f8f8653682d1894339bbf055c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Thu, 16 Mar 2017 14:08:35 +0100 Subject: [PATCH 04/18] Add build documentation by gen_html --- build/cmake/contrib/CMakeLists.txt | 1 + build/cmake/contrib/gen_html/CMakeLists.txt | 31 +++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 build/cmake/contrib/gen_html/CMakeLists.txt diff --git a/build/cmake/contrib/CMakeLists.txt b/build/cmake/contrib/CMakeLists.txt index 68e0881c5..c7d97aa95 100644 --- a/build/cmake/contrib/CMakeLists.txt +++ b/build/cmake/contrib/CMakeLists.txt @@ -13,4 +13,5 @@ PROJECT(contrib) ADD_SUBDIRECTORY(pzstd) +ADD_SUBDIRECTORY(gen_html) diff --git a/build/cmake/contrib/gen_html/CMakeLists.txt b/build/cmake/contrib/gen_html/CMakeLists.txt new file mode 100644 index 000000000..14f52c68d --- /dev/null +++ b/build/cmake/contrib/gen_html/CMakeLists.txt @@ -0,0 +1,31 @@ +# ################################################################ +# * Copyright (c) 2015-present, Yann Collet, Facebook, Inc. +# * All rights reserved. +# * +# * This source code is licensed under the BSD-style license found in the +# * LICENSE file in the root directory of this source tree. An additional grant +# * of patent rights can be found in the PATENTS file in the same directory. +# +# You can contact the author at : +# - zstd homepage : http://www.zstd.net/ +# ################################################################ + +PROJECT(gen_html) +INCLUDE(${CMAKE_SOURCE_DIR}/CMakeModules/GetLibraryVersion.cmake) + +SET(CMAKE_INCLUDE_CURRENT_DIR TRUE) + +# Define programs directory, where sources and header files are located +SET(LIBRARY_DIR ${ZSTD_SOURCE_DIR}/lib) +SET(PROGRAMS_DIR ${ZSTD_SOURCE_DIR}/programs) +SET(GENHTML_DIR ${ZSTD_SOURCE_DIR}/contrib/gen_html) +SET(GENHTML_BINARY ${PROJECT_BINARY_DIR}/gen_html${CMAKE_EXECUTABLE_SUFFIX}) +INCLUDE_DIRECTORIES(${PROGRAMS_DIR} ${LIBRARY_DIR} ${LIBRARY_DIR}/common ${GENHTML_DIR}) + +ADD_EXECUTABLE(gen_html ${GENHTML_DIR}/gen_html.cpp) + +GetLibraryVersion(${LIBRARY_DIR}/zstd.h VMAJOR VMINOR VRELEASE) +SET(LIBVERSION "${VMAJOR}.${VMINOR}.${VRELEASE}") +ADD_CUSTOM_TARGET(zstd_manual.html ALL + ${GENHTML_BINARY} "${LIBVERSION}" "${LIBRARY_DIR}/zstd.h" "${PROJECT_BINARY_DIR}/zstd_manual.html" + DEPENDS gen_html COMMENT "Update zstd manual") From 56ef200fcb71dcbc97ab40e83e959940d742cfdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Thu, 16 Mar 2017 14:09:39 +0100 Subject: [PATCH 05/18] .gitignore only build directory --- build/.gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/.gitignore b/build/.gitignore index f03aac8b3..85bc9287d 100644 --- a/build/.gitignore +++ b/build/.gitignore @@ -17,4 +17,4 @@ VS2013/bin/ VS2015/bin/ # CMake -cmake/ +cmake/build/ From 0184d80e8ee73011f22ded71d5090703e985b386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Thu, 16 Mar 2017 16:24:33 +0100 Subject: [PATCH 06/18] Refactored AddExtraCompilationFlags - Easier addition of new flags - Removed flags not used by default - Removed implicit PIC flag for all targets --- .../AddExtraCompilationFlags.cmake | 345 +++--------------- 1 file changed, 57 insertions(+), 288 deletions(-) diff --git a/build/cmake/CMakeModules/AddExtraCompilationFlags.cmake b/build/cmake/CMakeModules/AddExtraCompilationFlags.cmake index e480c7ead..db5b48124 100644 --- a/build/cmake/CMakeModules/AddExtraCompilationFlags.cmake +++ b/build/cmake/CMakeModules/AddExtraCompilationFlags.cmake @@ -1,316 +1,85 @@ +include(CheckCXXCompilerFlag) +include(CheckCCompilerFlag) + +function(EnableCompilerFlag _flag _C _CXX) + message("Checking flag ${_flag}") + if (_C) + CHECK_C_COMPILER_FLAG(${_flag} C_FLAG) + if (C_FLAG) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flag}" CACHE INTERNAL "C Flags") + endif () + unset(C_FLAG CACHE) + endif () + if (_CXX) + CHECK_CXX_COMPILER_FLAG(${_flag} CXX_FLAG) + if (CXX_FLAG) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flag}" CACHE INTERNAL "CXX Flags") + endif () + unset(CXX_FLAG CACHE) + endif () +endfunction() + MACRO(ADD_EXTRA_COMPILATION_FLAGS) - include(CheckCXXCompilerFlag) - include(CheckCCompilerFlag) if (CMAKE_COMPILER_IS_GNUCXX OR MINGW) #Not only UNIX but also WIN32 for MinGW - - set(POSITION_INDEPENDENT_CODE_FLAG "-fPIC") - CHECK_C_COMPILER_FLAG(${POSITION_INDEPENDENT_CODE_FLAG} POSITION_INDEPENDENT_CODE_FLAG_ALLOWED) - if (POSITION_INDEPENDENT_CODE_FLAG_ALLOWED) - MESSAGE("Compiler flag ${POSITION_INDEPENDENT_CODE_FLAG} allowed") - set(ACTIVATE_POSITION_INDEPENDENT_CODE_FLAG "ON" CACHE BOOL "activate -fPIC flag") - else () - MESSAGE("Compiler flag ${POSITION_INDEPENDENT_CODE_FLAG} not allowed") - endif (POSITION_INDEPENDENT_CODE_FLAG_ALLOWED) - - set(WARNING_UNDEF "-Wundef") - CHECK_C_COMPILER_FLAG(${WARNING_UNDEF} WARNING_UNDEF_ALLOWED) - if (WARNING_UNDEF_ALLOWED) - MESSAGE("Compiler flag ${WARNING_UNDEF} allowed") - set(ACTIVATE_WARNING_UNDEF "ON" CACHE BOOL "activate -Wundef flag") - else () - MESSAGE("Compiler flag ${WARNING_UNDEF} not allowed") - endif (WARNING_UNDEF_ALLOWED) - - set(WARNING_SHADOW "-Wshadow") - CHECK_C_COMPILER_FLAG(${WARNING_SHADOW} WARNING_SHADOW_ALLOWED) - if (WARNING_SHADOW_ALLOWED) - MESSAGE("Compiler flag ${WARNING_SHADOW} allowed") - set(ACTIVATE_WARNING_SHADOW "ON" CACHE BOOL "activate -Wshadow flag") - else () - MESSAGE("Compiler flag ${WARNING_SHADOW} not allowed") - endif (WARNING_SHADOW_ALLOWED) - - set(WARNING_CAST_ALIGN "-Wcast-align") - CHECK_C_COMPILER_FLAG(${WARNING_CAST_ALIGN} WARNING_CAST_ALIGN_ALLOWED) - if (WARNING_CAST_ALIGN_ALLOWED) - MESSAGE("Compiler flag ${WARNING_CAST_ALIGN} allowed") - set(ACTIVATE_WARNING_CAST_ALIGN "ON" CACHE BOOL "activate -Wcast-align flag") - else () - MESSAGE("Compiler flag ${WARNING_CAST_ALIGN} not allowed") - endif (WARNING_CAST_ALIGN_ALLOWED) - - set(WARNING_CAST_QUAL "-Wcast-qual") - CHECK_C_COMPILER_FLAG(${WARNING_CAST_QUAL} WARNING_CAST_QUAL_ALLOWED) - if (WARNING_CAST_QUAL_ALLOWED) - MESSAGE("Compiler flag ${WARNING_CAST_QUAL} allowed") - set(ACTIVATE_WARNING_CAST_QUAL "ON" CACHE BOOL "activate -Wcast-qual flag") - else () - MESSAGE("Compiler flag ${WARNING_CAST_QUAL} not allowed") - endif (WARNING_CAST_QUAL_ALLOWED) - - set(WARNING_STRICT_PROTOTYPES "-Wstrict-prototypes") - CHECK_C_COMPILER_FLAG(${WARNING_STRICT_PROTOTYPES} WARNING_STRICT_PROTOTYPES_ALLOWED) - if (WARNING_STRICT_PROTOTYPES_ALLOWED) - MESSAGE("Compiler flag ${WARNING_STRICT_PROTOTYPES} allowed") - set(ACTIVATE_WARNING_STRICT_PROTOTYPES "ON" CACHE BOOL "activate -Wstrict-prototypes flag") - else () - MESSAGE("Compiler flag ${WARNING_STRICT_PROTOTYPES} not allowed") - endif (WARNING_STRICT_PROTOTYPES_ALLOWED) - - set(WARNING_ALL "-Wall") - CHECK_C_COMPILER_FLAG(${WARNING_ALL} WARNING_ALL_ALLOWED) - if (WARNING_ALL_ALLOWED) - MESSAGE("Compiler flag ${WARNING_ALL} allowed") - set(ACTIVATE_WARNING_ALL "ON" CACHE BOOL "activate -Wall flag") - else () - MESSAGE("Compiler flag ${WARNING_ALL} not allowed") - endif (WARNING_ALL_ALLOWED) - - set(WARNING_EXTRA "-Wextra") - CHECK_C_COMPILER_FLAG(${WARNING_EXTRA} WARNING_EXTRA_ALLOWED) - if (WARNING_EXTRA_ALLOWED) - MESSAGE("Compiler flag ${WARNING_EXTRA} allowed") - set(ACTIVATE_WARNING_EXTRA "ON" CACHE BOOL "activate -Wextra flag") - else () - MESSAGE("Compiler flag ${WARNING_EXTRA} not allowed") - endif (WARNING_EXTRA_ALLOWED) - - set(WARNING_FLOAT_EQUAL "-Wfloat-equal") - CHECK_C_COMPILER_FLAG(${WARNING_FLOAT_EQUAL} WARNING_FLOAT_EQUAL_ALLOWED) - if (WARNING_FLOAT_EQUAL_ALLOWED) - MESSAGE("Compiler flag ${WARNING_FLOAT_EQUAL} allowed") - set(ACTIVATE_WARNING_FLOAT_EQUAL "OFF" CACHE BOOL "activate -Wfloat-equal flag") - else () - MESSAGE("Compiler flag ${WARNING_FLOAT_EQUAL} not allowed") - endif (WARNING_FLOAT_EQUAL_ALLOWED) - - set(WARNING_SIGN_CONVERSION "-Wsign-conversion") - CHECK_C_COMPILER_FLAG(${WARNING_SIGN_CONVERSION} WARNING_SIGN_CONVERSION_ALLOWED) - if (WARNING_SIGN_CONVERSION_ALLOWED) - MESSAGE("Compiler flag ${WARNING_SIGN_CONVERSION} allowed") - set(ACTIVATE_WARNING_SIGN_CONVERSION "OFF" CACHE BOOL "activate -Wsign-conversion flag") - else () - MESSAGE("Compiler flag ${WARNING_SIGN_CONVERSION} not allowed") - endif (WARNING_SIGN_CONVERSION_ALLOWED) - - if (ACTIVATE_POSITION_INDEPENDENT_CODE_FLAG) - list(APPEND CMAKE_C_FLAGS ${POSITION_INDEPENDENT_CODE_FLAG}) - else () - string(REPLACE ${POSITION_INDEPENDENT_CODE_FLAG} "" CMAKE_C_FLAGS "${POSITION_INDEPENDENT_CODE_FLAG}") - endif (ACTIVATE_POSITION_INDEPENDENT_CODE_FLAG) - - if (ACTIVATE_WARNING_UNDEF) - list(APPEND CMAKE_CXX_FLAGS ${WARNING_UNDEF}) - list(APPEND CMAKE_C_FLAGS ${WARNING_UNDEF}) - else () - string(REPLACE ${WARNING_UNDEF} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE ${WARNING_UNDEF} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - endif (ACTIVATE_WARNING_UNDEF) - - if (ACTIVATE_WARNING_SHADOW) - list(APPEND CMAKE_CXX_FLAGS ${WARNING_SHADOW}) - list(APPEND CMAKE_C_FLAGS ${WARNING_SHADOW}) - else () - string(REPLACE ${WARNING_SHADOW} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE ${WARNING_SHADOW} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - endif (ACTIVATE_WARNING_SHADOW) - - if (ACTIVATE_WARNING_CAST_QUAL) - list(APPEND CMAKE_CXX_FLAGS ${WARNING_CAST_QUAL}) - list(APPEND CMAKE_C_FLAGS ${WARNING_CAST_QUAL}) - else () - string(REPLACE ${WARNING_CAST_QUAL} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE ${WARNING_CAST_QUAL} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - endif (ACTIVATE_WARNING_CAST_QUAL) - - if (ACTIVATE_WARNING_CAST_ALIGN) - list(APPEND CMAKE_CXX_FLAGS ${WARNING_CAST_ALIGN}) - list(APPEND CMAKE_C_FLAGS ${WARNING_CAST_ALIGN}) - else () - string(REPLACE ${WARNING_CAST_ALIGN} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE ${WARNING_CAST_ALIGN} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - endif (ACTIVATE_WARNING_CAST_ALIGN) - - if (ACTIVATE_WARNING_STRICT_PROTOTYPES) - list(APPEND CMAKE_C_FLAGS ${WARNING_STRICT_PROTOTYPES}) - else () - string(REPLACE ${WARNING_STRICT_PROTOTYPES} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - endif (ACTIVATE_WARNING_STRICT_PROTOTYPES) - - if (ACTIVATE_WARNING_ALL) - list(APPEND CMAKE_CXX_FLAGS ${WARNING_ALL}) - list(APPEND CMAKE_C_FLAGS ${WARNING_ALL}) - else () - string(REPLACE ${WARNING_ALL} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE ${WARNING_ALL} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - endif (ACTIVATE_WARNING_ALL) - - if (ACTIVATE_WARNING_EXTRA) - list(APPEND CMAKE_CXX_FLAGS ${WARNING_EXTRA}) - list(APPEND CMAKE_C_FLAGS ${WARNING_EXTRA}) - else () - string(REPLACE ${WARNING_EXTRA} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE ${WARNING_EXTRA} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - endif (ACTIVATE_WARNING_EXTRA) - - if (ACTIVATE_WARNING_FLOAT_EQUAL) - list(APPEND CMAKE_CXX_FLAGS ${WARNING_FLOAT_EQUAL}) - list(APPEND CMAKE_C_FLAGS ${WARNING_FLOAT_EQUAL}) - else () - string(REPLACE ${WARNING_FLOAT_EQUAL} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE ${WARNING_FLOAT_EQUAL} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - endif (ACTIVATE_WARNING_FLOAT_EQUAL) - - if (ACTIVATE_WARNING_SIGN_CONVERSION) - list(APPEND CMAKE_CXX_FLAGS ${WARNING_SIGN_CONVERSION}) - list(APPEND CMAKE_C_FLAGS ${WARNING_SIGN_CONVERSION}) - else () - string(REPLACE ${WARNING_SIGN_CONVERSION} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE ${WARNING_SIGN_CONVERSION} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - endif (ACTIVATE_WARNING_SIGN_CONVERSION) - #Set c++11 by default - list(APPEND CMAKE_CXX_FLAGS "-std=c++11") - + EnableCompilerFlag("-std=c++11" false true) #Set c99 by default - list(APPEND CMAKE_C_FLAGS "-std=c99") + EnableCompilerFlag("-std=c99" true false) + EnableCompilerFlag("-Wall" true true) + EnableCompilerFlag("-Wextra" true true) + EnableCompilerFlag("-Wundef" true true) + EnableCompilerFlag("-Wshadow" true true) + EnableCompilerFlag("-Wcast-align" true true) + EnableCompilerFlag("-Wcast-qual" true true) + EnableCompilerFlag("-Wstrict-prototypes" true false) + elseif (MSVC) # Add specific compilation flags for Windows Visual + EnableCompilerFlag("/Wall" true true) - elseif (MSVC) - # Add specific compilation flags for Windows Visual - - set(WARNING_ALL "/Wall") - CHECK_C_COMPILER_FLAG(${WARNING_ALL} WARNING_ALL_ALLOWED) - if (WARNING_ALL_ALLOWED) - MESSAGE("Compiler flag ${WARNING_ALL} allowed") - set(ACTIVATE_WARNING_ALL "OFF" CACHE BOOL "activate /Wall flag") - else () - MESSAGE("Compiler flag ${WARNING_ALL} not allowed") - endif (WARNING_ALL_ALLOWED) - - set(RTC_FLAG "/RTC1") - CHECK_C_COMPILER_FLAG(${RTC_FLAG} RTC_FLAG_ALLOWED) - if (RTC_FLAG_ALLOWED) - MESSAGE("Compiler flag ${RTC_FLAG} allowed") - set(ACTIVATE_RTC_FLAG "ON" CACHE BOOL "activate /RTC1 flag") - else () - MESSAGE("Compiler flag ${RTC_FLAG} not allowed") - endif (RTC_FLAG_ALLOWED) - - set(ZC_FLAG "/Zc:forScope") - CHECK_C_COMPILER_FLAG(${ZC_FLAG} ZC_FLAG_ALLOWED) - if (ZC_FLAG_ALLOWED) - MESSAGE("Compiler flag ${ZC_FLAG} allowed") - set(ACTIVATE_ZC_FLAG "ON" CACHE BOOL "activate /Zc:forScope flag") - else () - MESSAGE("Compiler flag ${ZC_FLAG} not allowed") - endif (ZC_FLAG_ALLOWED) - - set(GD_FLAG "/Gd") - CHECK_C_COMPILER_FLAG(${GD_FLAG} GD_FLAG_ALLOWED) - if (GD_FLAG_ALLOWED) - MESSAGE("Compiler flag ${GD_FLAG} allowed") - set(ACTIVATE_GD_FLAG "ON" CACHE BOOL "activate /Gd flag") - else () - MESSAGE("Compiler flag ${GD_FLAG} not allowed") - endif (GD_FLAG_ALLOWED) - - set(ANALYZE_FLAG "/analyze:stacksize25000") - CHECK_C_COMPILER_FLAG(${ANALYZE_FLAG} ANALYZE_FLAG_ALLOWED) - if (ANALYZE_FLAG_ALLOWED) - MESSAGE("Compiler flag ${ANALYZE_FLAG} allowed") - set(ACTIVATE_ANALYZE_FLAG "ON" CACHE BOOL "activate /ANALYZE flag") - else () - MESSAGE("Compiler flag ${ANALYZE_FLAG} not allowed") - endif (ANALYZE_FLAG_ALLOWED) - - if (ACTIVATE_WARNING_ALL) - list(APPEND CMAKE_CXX_FLAGS ${WARNING_ALL}) - list(APPEND CMAKE_C_FLAGS ${WARNING_ALL}) - else () - string(REPLACE ${WARNING_ALL} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE ${WARNING_ALL} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - endif (ACTIVATE_WARNING_ALL) - # Only for DEBUG version - if (ACTIVATE_RTC_FLAG) - list(APPEND CMAKE_CXX_FLAGS_DEBUG ${RTC_FLAG}) - list(APPEND CMAKE_C_FLAGS_DEBUG ${RTC_FLAG}) - else () - string(REPLACE ${RTC_FLAG} "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") - string(REPLACE ${RTC_FLAG} "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") - endif (ACTIVATE_RTC_FLAG) - - if (ACTIVATE_ZC_FLAG) - list(APPEND CMAKE_CXX_FLAGS ${ZC_FLAG}) - list(APPEND CMAKE_C_FLAGS ${ZC_FLAG}) - else () - string(REPLACE ${ZC_FLAG} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE ${ZC_FLAG} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - endif (ACTIVATE_ZC_FLAG) - - if (ACTIVATE_GD_FLAG) - list(APPEND CMAKE_CXX_FLAGS ${GD_FLAG}) - list(APPEND CMAKE_C_FLAGS ${GD_FLAG}) - else () - string(REPLACE ${GD_FLAG} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE ${GD_FLAG} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - endif (ACTIVATE_GD_FLAG) - - if (ACTIVATE_ANALYZE_FLAG) - list(APPEND CMAKE_CXX_FLAGS ${ANALYZE_FLAG}) - list(APPEND CMAKE_C_FLAGS ${ANALYZE_FLAG}) - else () - string(REPLACE ${ANALYZE_FLAG} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE ${ANALYZE_FLAG} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - endif (ACTIVATE_ANALYZE_FLAG) - + EnableCompilerFlag("/RTC1" true true) + EnableCompilerFlag("/Zc:forScope" true true) + EnableCompilerFlag("/Gd" true true) + EnableCompilerFlag("/analyze:stacksize25000" true true) + if (MSVC80 OR MSVC90 OR MSVC10 OR MSVC11) # To avoid compiler warning (level 4) C4571, compile with /EHa if you still want # your catch(...) blocks to catch structured exceptions. - list(APPEND CMAKE_CXX_FLAGS "/EHa") + EnableCompilerFlag("/EHa" false true) endif (MSVC80 OR MSVC90 OR MSVC10 OR MSVC11) - set(MULTITHREADED_COMPILATION "/MP") - MESSAGE("Compiler flag ${MULTITHREADED_COMPILATION} allowed") - set(ACTIVATE_MULTITHREADED_COMPILATION "ON" CACHE BOOL "activate /MP flag") - + set(ACTIVATE_MULTITHREADED_COMPILATION "ON" CACHE BOOL "activate multi-threaded compilation (/MP flag)") if (ACTIVATE_MULTITHREADED_COMPILATION) - list(APPEND CMAKE_CXX_FLAGS ${MULTITHREADED_COMPILATION}) - list(APPEND CMAKE_C_FLAGS ${MULTITHREADED_COMPILATION}) - else () - string(REPLACE ${MULTITHREADED_COMPILATION} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE ${MULTITHREADED_COMPILATION} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - endif (ACTIVATE_MULTITHREADED_COMPILATION) + EnableCompilerFlag("/MP" true true) + endif () #For exceptions - list(APPEND CMAKE_CXX_FLAGS "/EHsc") - list(APPEND CMAKE_C_FLAGS "/EHsc") + EnableCompilerFlag("/EHsc" true true) # UNICODE SUPPORT - list(APPEND CMAKE_CXX_FLAGS "/D_UNICODE /DUNICODE") - list(APPEND CMAKE_C_FLAGS "/D_UNICODE /DUNICODE") + EnableCompilerFlag("/D_UNICODE" true true) + EnableCompilerFlag("/DUNICODE" true true) endif () # Remove duplicates compilation flags - FOREACH (flag_var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE - CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE - CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) - separate_arguments(${flag_var}) - list(REMOVE_DUPLICATES ${flag_var}) - string(REPLACE ";" " " ${flag_var} "${${flag_var}}") - set(${flag_var} "${${flag_var}}" CACHE STRING "common build flags" FORCE) + FOREACH (flag_var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) + separate_arguments(${flag_var}) + list(REMOVE_DUPLICATES ${flag_var}) + string(REPLACE ";" " " ${flag_var} "${${flag_var}}") + set(${flag_var} "${${flag_var}}" CACHE STRING "common build flags" FORCE) ENDFOREACH (flag_var) if (MSVC) # Replace /MT to /MD flag - # Replace /O2 to /O3 flag + # Replace /O2 to /O3 flag FOREACH (flag_var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE - CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE - CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) STRING(REGEX REPLACE "/MT" "/MD" ${flag_var} "${${flag_var}}") - STRING(REGEX REPLACE "/O2" "/Ox" ${flag_var} "${${flag_var}}") + STRING(REGEX REPLACE "/O2" "/Ox" ${flag_var} "${${flag_var}}") ENDFOREACH (flag_var) endif () From a8c0c2af10ad87d67583c95d2e1b36cdaf75b006 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Thu, 16 Mar 2017 22:59:11 +0100 Subject: [PATCH 07/18] Fix cmake install prefix with cmake-3.x --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 49f29d782..518ea5c2d 100644 --- a/Makefile +++ b/Makefile @@ -275,7 +275,7 @@ cmakebuild: cmake --version $(RM) -r $(BUILDIR)/cmake/build mkdir $(BUILDIR)/cmake/build - cd $(BUILDIR)/cmake/build ; cmake -DPREFIX:STRING=~/install_test_dir $(CMAKE_PARAMS) .. ; $(MAKE) install ; $(MAKE) uninstall + cd $(BUILDIR)/cmake/build ; cmake -DCMAKE_INSTALL_PREFIX:PATH=~/install_test_dir $(CMAKE_PARAMS) .. ; $(MAKE) install ; $(MAKE) uninstall c90build: clean gcc -v From ce11d77e4db6e5166fea22f78b846ad36dbcff05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Fri, 17 Mar 2017 14:12:28 +0100 Subject: [PATCH 08/18] Use shared library in programs --- build/cmake/contrib/pzstd/CMakeLists.txt | 2 +- build/cmake/programs/CMakeLists.txt | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build/cmake/contrib/pzstd/CMakeLists.txt b/build/cmake/contrib/pzstd/CMakeLists.txt index f89be8901..f9cffa2a9 100644 --- a/build/cmake/contrib/pzstd/CMakeLists.txt +++ b/build/cmake/contrib/pzstd/CMakeLists.txt @@ -21,7 +21,7 @@ SET(PZSTD_DIR ${ZSTD_SOURCE_DIR}/contrib/pzstd) INCLUDE_DIRECTORIES(${PROGRAMS_DIR} ${LIBRARY_DIR} ${LIBRARY_DIR}/common ${PZSTD_DIR}) ADD_EXECUTABLE(pzstd ${PZSTD_DIR}/main.cpp ${PZSTD_DIR}/Options.cpp ${PZSTD_DIR}/Pzstd.cpp ${PZSTD_DIR}/SkippableFrame.cpp) -TARGET_LINK_LIBRARIES(pzstd libzstd_static pthread) +TARGET_LINK_LIBRARIES(pzstd libzstd_shared pthread) SET_TARGET_PROPERTIES(pzstd PROPERTIES COMPILE_DEFINITIONS "NDEBUG") SET_TARGET_PROPERTIES(pzstd PROPERTIES COMPILE_OPTIONS "-Wno-shadow") diff --git a/build/cmake/programs/CMakeLists.txt b/build/cmake/programs/CMakeLists.txt index 38b4c1e7d..122163a95 100644 --- a/build/cmake/programs/CMakeLists.txt +++ b/build/cmake/programs/CMakeLists.txt @@ -30,17 +30,17 @@ IF (MSVC) ENDIF (MSVC) ADD_EXECUTABLE(zstd ${PROGRAMS_DIR}/zstdcli.c ${PROGRAMS_DIR}/fileio.c ${PROGRAMS_DIR}/bench.c ${PROGRAMS_DIR}/datagen.c ${PROGRAMS_DIR}/dibio.c ${PlatformDependResources}) -TARGET_LINK_LIBRARIES(zstd libzstd_static) +TARGET_LINK_LIBRARIES(zstd libzstd_shared) IF (UNIX) ADD_EXECUTABLE(zstd-frugal ${PROGRAMS_DIR}/zstdcli.c ${PROGRAMS_DIR}/fileio.c) - TARGET_LINK_LIBRARIES(zstd-frugal libzstd_static) + TARGET_LINK_LIBRARIES(zstd-frugal libzstd_shared) SET_TARGET_PROPERTIES(zstd-frugal PROPERTIES COMPILE_DEFINITIONS "ZSTD_NOBENCH;ZSTD_NODICT") ENDIF (UNIX) IF (ZSTD_MULTITHREAD_SUPPORT) ADD_EXECUTABLE(zstdmt ${PROGRAMS_DIR}/zstdcli.c ${PROGRAMS_DIR}/fileio.c ${PROGRAMS_DIR}/bench.c ${PROGRAMS_DIR}/datagen.c ${PROGRAMS_DIR}/dibio.c ${PlatformDependResources}) SET_TARGET_PROPERTIES(zstdmt PROPERTIES COMPILE_DEFINITIONS "ZSTD_MULTITHREAD") - TARGET_LINK_LIBRARIES(zstdmt libzstd_static) + TARGET_LINK_LIBRARIES(zstdmt libzstd_shared) IF (UNIX) TARGET_LINK_LIBRARIES(zstdmt pthread) ENDIF (UNIX) From c2430434df7079e5db418d2b928b7b1b2da48888 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Fri, 17 Mar 2017 14:13:47 +0100 Subject: [PATCH 09/18] Install everything, not only libraries --- build/cmake/contrib/gen_html/CMakeLists.txt | 2 ++ build/cmake/contrib/pzstd/CMakeLists.txt | 1 + build/cmake/programs/CMakeLists.txt | 3 +++ 3 files changed, 6 insertions(+) diff --git a/build/cmake/contrib/gen_html/CMakeLists.txt b/build/cmake/contrib/gen_html/CMakeLists.txt index 14f52c68d..dff8c7a11 100644 --- a/build/cmake/contrib/gen_html/CMakeLists.txt +++ b/build/cmake/contrib/gen_html/CMakeLists.txt @@ -29,3 +29,5 @@ SET(LIBVERSION "${VMAJOR}.${VMINOR}.${VRELEASE}") ADD_CUSTOM_TARGET(zstd_manual.html ALL ${GENHTML_BINARY} "${LIBVERSION}" "${LIBRARY_DIR}/zstd.h" "${PROJECT_BINARY_DIR}/zstd_manual.html" DEPENDS gen_html COMMENT "Update zstd manual") + +INSTALL(FILES "${PROJECT_BINARY_DIR}/zstd_manual.html" DESTINATION "share/doc") diff --git a/build/cmake/contrib/pzstd/CMakeLists.txt b/build/cmake/contrib/pzstd/CMakeLists.txt index f9cffa2a9..f581c6aa4 100644 --- a/build/cmake/contrib/pzstd/CMakeLists.txt +++ b/build/cmake/contrib/pzstd/CMakeLists.txt @@ -25,3 +25,4 @@ TARGET_LINK_LIBRARIES(pzstd libzstd_shared pthread) SET_TARGET_PROPERTIES(pzstd PROPERTIES COMPILE_DEFINITIONS "NDEBUG") SET_TARGET_PROPERTIES(pzstd PROPERTIES COMPILE_OPTIONS "-Wno-shadow") +INSTALL(TARGETS pzstd RUNTIME DESTINATION "bin") diff --git a/build/cmake/programs/CMakeLists.txt b/build/cmake/programs/CMakeLists.txt index 122163a95..3f8c3b0f2 100644 --- a/build/cmake/programs/CMakeLists.txt +++ b/build/cmake/programs/CMakeLists.txt @@ -31,6 +31,8 @@ ENDIF (MSVC) ADD_EXECUTABLE(zstd ${PROGRAMS_DIR}/zstdcli.c ${PROGRAMS_DIR}/fileio.c ${PROGRAMS_DIR}/bench.c ${PROGRAMS_DIR}/datagen.c ${PROGRAMS_DIR}/dibio.c ${PlatformDependResources}) TARGET_LINK_LIBRARIES(zstd libzstd_shared) +INSTALL(TARGETS zstd RUNTIME DESTINATION "bin") + IF (UNIX) ADD_EXECUTABLE(zstd-frugal ${PROGRAMS_DIR}/zstdcli.c ${PROGRAMS_DIR}/fileio.c) TARGET_LINK_LIBRARIES(zstd-frugal libzstd_shared) @@ -44,4 +46,5 @@ IF (ZSTD_MULTITHREAD_SUPPORT) IF (UNIX) TARGET_LINK_LIBRARIES(zstdmt pthread) ENDIF (UNIX) + INSTALL(TARGETS zstdmt RUNTIME DESTINATION "bin") ENDIF (ZSTD_MULTITHREAD_SUPPORT) From 0d3daffa2ffaab6070fa509b408e74fe216ebecd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Fri, 17 Mar 2017 14:14:46 +0100 Subject: [PATCH 10/18] Much easier way of installing libraries with correct names --- build/cmake/lib/CMakeLists.txt | 56 ++++++---------------------------- 1 file changed, 9 insertions(+), 47 deletions(-) diff --git a/build/cmake/lib/CMakeLists.txt b/build/cmake/lib/CMakeLists.txt index 65b00b9ed..874111287 100644 --- a/build/cmake/lib/CMakeLists.txt +++ b/build/cmake/lib/CMakeLists.txt @@ -100,71 +100,33 @@ ENDIF (MSVC) # Define library base name IF (MSVC) - SET(LIBRARY_BASE_NAME zstdlib) IF (CMAKE_SIZEOF_VOID_P MATCHES "8") - SET(LIBRARY_ARCH_SUFFIX "_x64") + SET(LIBRARY_BASE_NAME "zstdlib_x64") ELSE () - SET(LIBRARY_ARCH_SUFFIX "_x86") + SET(LIBRARY_BASE_NAME "zstdlib_x86") ENDIF (CMAKE_SIZEOF_VOID_P MATCHES "8") ELSE () - SET(LIBRARY_BASE_NAME libzstd) - - SET(LIBRARY_ARCH_SUFFIX "") + SET(LIBRARY_BASE_NAME zstd) ENDIF (MSVC) # Define static and shared library names -SET(STATIC_LIBRARY_OUTPUT_NAME ${LIBRARY_BASE_NAME}${LIBRARY_ARCH_SUFFIX} CACHE STRING "Static library output name") -SET(SHARED_LIBRARY_OUTPUT_NAME ${LIBRARY_BASE_NAME}.${LIBVER_MAJOR}.${LIBVER_MINOR}.${LIBVER_RELEASE}${LIBRARY_ARCH_SUFFIX} CACHE STRING "Shared library output name") - SET_TARGET_PROPERTIES( libzstd_static PROPERTIES - PREFIX "" - OUTPUT_NAME ${STATIC_LIBRARY_OUTPUT_NAME}) + OUTPUT_NAME ${LIBRARY_BASE_NAME}) SET_TARGET_PROPERTIES( libzstd_shared PROPERTIES - PREFIX "" - OUTPUT_NAME ${SHARED_LIBRARY_OUTPUT_NAME}) + OUTPUT_NAME ${LIBRARY_BASE_NAME} + SOVERSION ${LIBVER_MAJOR}.${LIBVER_MINOR}.${LIBVER_RELEASE}) IF (UNIX) - IF ("${PREFIX}" STREQUAL "") - SET(PREFIX /usr/local) - ENDIF() - MESSAGE("the variable PREFIX=${PREFIX}") - SET(INSTALL_LIBRARY_DIR ${PREFIX}/lib) - SET(INSTALL_INCLUDE_DIR ${PREFIX}/include) - # install target - INSTALL(FILES ${LIBRARY_DIR}/zstd.h ${LIBRARY_DIR}/deprecated/zbuff.h ${LIBRARY_DIR}/dictBuilder/zdict.h DESTINATION ${INSTALL_INCLUDE_DIR}) - INSTALL(TARGETS libzstd_static DESTINATION ${INSTALL_LIBRARY_DIR}) - INSTALL(TARGETS libzstd_shared LIBRARY DESTINATION ${INSTALL_LIBRARY_DIR}) - - # Create symlinks and setup this files - SET(SHARED_LIBRARY_LINK ${SHARED_LIBRARY_OUTPUT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}) - SET(SHARED_LIBRARY_SYMLINK1 ${LIBRARY_BASE_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}) - SET(SHARED_LIBRARY_SYMLINK2 ${LIBRARY_BASE_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${LIBVER_MAJOR}) - - SET(SHARED_LIBRARY_LINK_PATH ${CMAKE_CURRENT_BINARY_DIR}/${SHARED_LIBRARY_LINK}) - SET(SHARED_LIBRARY_SYMLINK1_PATH ${CMAKE_CURRENT_BINARY_DIR}/${SHARED_LIBRARY_SYMLINK1}) - SET(SHARED_LIBRARY_SYMLINK2_PATH ${CMAKE_CURRENT_BINARY_DIR}/${SHARED_LIBRARY_SYMLINK2}) - - ADD_CUSTOM_COMMAND(TARGET libzstd_shared POST_BUILD - COMMAND ${CMAKE_COMMAND} -E create_symlink ${SHARED_LIBRARY_LINK} ${SHARED_LIBRARY_SYMLINK1} - DEPENDS ${SHARED_LIBRARY_LINK_PATH} - COMMENT "Generating symbolic link ${SHARED_LIBRARY_LINK} -> ${SHARED_LIBRARY_SYMLINK1}") - - ADD_CUSTOM_COMMAND(TARGET libzstd_shared POST_BUILD - COMMAND ${CMAKE_COMMAND} -E create_symlink ${SHARED_LIBRARY_LINK} ${SHARED_LIBRARY_SYMLINK2} - DEPENDS ${SHARED_LIBRARY_LINK_PATH} - COMMENT "Generating symbolic link ${SHARED_LIBRARY_LINK} -> ${SHARED_LIBRARY_SYMLINK2}") - - SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${SHARED_LIBRARY_SYMLINK1};${SHARED_LIBRARY_SYMLINK2}") - - INSTALL(FILES ${SHARED_LIBRARY_SYMLINK1_PATH} DESTINATION ${INSTALL_LIBRARY_DIR}) - INSTALL(FILES ${SHARED_LIBRARY_SYMLINK2_PATH} DESTINATION ${INSTALL_LIBRARY_DIR}) + INSTALL(FILES ${LIBRARY_DIR}/zstd.h ${LIBRARY_DIR}/deprecated/zbuff.h ${LIBRARY_DIR}/dictBuilder/zdict.h DESTINATION "include") + INSTALL(TARGETS libzstd_static ARCHIVE DESTINATION "lib") + INSTALL(TARGETS libzstd_shared LIBRARY DESTINATION "lib") # uninstall target CONFIGURE_FILE( From b98b6fcf41bda6089ca0df821eaf90c4d272642a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Fri, 17 Mar 2017 14:27:01 +0100 Subject: [PATCH 11/18] Check for pthreads library --- build/cmake/contrib/pzstd/CMakeLists.txt | 9 ++++++++- build/cmake/programs/CMakeLists.txt | 12 ++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/build/cmake/contrib/pzstd/CMakeLists.txt b/build/cmake/contrib/pzstd/CMakeLists.txt index f581c6aa4..b4fbe1689 100644 --- a/build/cmake/contrib/pzstd/CMakeLists.txt +++ b/build/cmake/contrib/pzstd/CMakeLists.txt @@ -21,8 +21,15 @@ SET(PZSTD_DIR ${ZSTD_SOURCE_DIR}/contrib/pzstd) INCLUDE_DIRECTORIES(${PROGRAMS_DIR} ${LIBRARY_DIR} ${LIBRARY_DIR}/common ${PZSTD_DIR}) ADD_EXECUTABLE(pzstd ${PZSTD_DIR}/main.cpp ${PZSTD_DIR}/Options.cpp ${PZSTD_DIR}/Pzstd.cpp ${PZSTD_DIR}/SkippableFrame.cpp) -TARGET_LINK_LIBRARIES(pzstd libzstd_shared pthread) SET_TARGET_PROPERTIES(pzstd PROPERTIES COMPILE_DEFINITIONS "NDEBUG") SET_TARGET_PROPERTIES(pzstd PROPERTIES COMPILE_OPTIONS "-Wno-shadow") +SET(THREADS_PREFER_PTHREAD_FLAG ON) +FIND_PACKAGE(Threads REQUIRED) +IF (CMAKE_USE_PTHREADS_INIT) + TARGET_LINK_LIBRARIES(pzstd libzstd_shared ${CMAKE_THREAD_LIBS_INIT}) +ELSE() + MESSAGE(SEND_ERROR "ZSTD currently does not support thread libraries other than pthreads") +ENDIF() + INSTALL(TARGETS pzstd RUNTIME DESTINATION "bin") diff --git a/build/cmake/programs/CMakeLists.txt b/build/cmake/programs/CMakeLists.txt index 3f8c3b0f2..bc20a265f 100644 --- a/build/cmake/programs/CMakeLists.txt +++ b/build/cmake/programs/CMakeLists.txt @@ -43,8 +43,12 @@ IF (ZSTD_MULTITHREAD_SUPPORT) ADD_EXECUTABLE(zstdmt ${PROGRAMS_DIR}/zstdcli.c ${PROGRAMS_DIR}/fileio.c ${PROGRAMS_DIR}/bench.c ${PROGRAMS_DIR}/datagen.c ${PROGRAMS_DIR}/dibio.c ${PlatformDependResources}) SET_TARGET_PROPERTIES(zstdmt PROPERTIES COMPILE_DEFINITIONS "ZSTD_MULTITHREAD") TARGET_LINK_LIBRARIES(zstdmt libzstd_shared) - IF (UNIX) - TARGET_LINK_LIBRARIES(zstdmt pthread) - ENDIF (UNIX) - INSTALL(TARGETS zstdmt RUNTIME DESTINATION "bin") + + SET(THREADS_PREFER_PTHREAD_FLAG ON) + FIND_PACKAGE(Threads REQUIRED) + IF (CMAKE_USE_PTHREADS_INIT) + TARGET_LINK_LIBRARIES(zstdmt ${CMAKE_THREAD_LIBS_INIT}) + ELSE() + MESSAGE(SEND_ERROR "ZSTD currently does not support thread libraries other than pthreads") + ENDIF() ENDIF (ZSTD_MULTITHREAD_SUPPORT) From 8d562311c1869f5b081b8fe34cb8b142ad7b73c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Fri, 17 Mar 2017 14:42:44 +0100 Subject: [PATCH 12/18] Test new cmake stuff --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 518ea5c2d..985bff587 100644 --- a/Makefile +++ b/Makefile @@ -106,6 +106,7 @@ clean: #------------------------------------------------------------------------------ ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU FreeBSD DragonFly NetBSD)) HOST_OS = POSIX +CMAKE_PARAMS = -DZSTD_BUILD_CONTRIB:BOOL=ON .PHONY: install uninstall travis-install clangtest gpptest armtest usan asan uasan install: @@ -263,7 +264,7 @@ endif ifneq (,$(filter MSYS%,$(shell uname))) HOST_OS = MSYS -CMAKE_PARAMS = -G"MSYS Makefiles" +CMAKE_PARAMS = -G"MSYS Makefiles" -DZSTD_MULTITHREAD_SUPPORT:BOOL=OFF endif From f0076adccb5c6750283aba478d83efb52741a475 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Fri, 17 Mar 2017 15:36:37 +0100 Subject: [PATCH 13/18] Add_extra_compilation_flags macro needs to run before adding sources Also adding comments in the top-level CMakeLists.txt --- build/cmake/CMakeLists.txt | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/build/cmake/CMakeLists.txt b/build/cmake/CMakeLists.txt index d0f6daade..7fa8bbc79 100644 --- a/build/cmake/CMakeLists.txt +++ b/build/cmake/CMakeLists.txt @@ -11,6 +11,15 @@ PROJECT(zstd) CMAKE_MINIMUM_REQUIRED(VERSION 2.8.7) SET(ZSTD_SOURCE_DIR "${CMAKE_SOURCE_DIR}/../..") +#----------------------------------------------------------------------------- +# Add extra compilation flags +#----------------------------------------------------------------------------- +INCLUDE(CMakeModules/AddExtraCompilationFlags.cmake) +ADD_EXTRA_COMPILATION_FLAGS() + +#----------------------------------------------------------------------------- +# Options +#----------------------------------------------------------------------------- OPTION(ZSTD_LEGACY_SUPPORT "LEGACY SUPPORT" OFF) OPTION(ZSTD_MULTITHREAD_SUPPORT "MULTITHREADING SUPPORT" ON) OPTION(ZSTD_BUILD_CONTRIB "BUILD CONTRIB" OFF) @@ -23,6 +32,9 @@ ELSE (ZSTD_LEGACY_SUPPORT) ADD_DEFINITIONS(-DZSTD_LEGACY_SUPPORT=0) ENDIF (ZSTD_LEGACY_SUPPORT) +#----------------------------------------------------------------------------- +# Add source directories +#----------------------------------------------------------------------------- ADD_SUBDIRECTORY(lib) ADD_SUBDIRECTORY(programs) ADD_SUBDIRECTORY(tests) @@ -31,11 +43,8 @@ IF (ZSTD_BUILD_CONTRIB) ENDIF (ZSTD_BUILD_CONTRIB) #----------------------------------------------------------------------------- -# Add extra compilation flags +# Add clean-all target #----------------------------------------------------------------------------- -INCLUDE(CMakeModules/AddExtraCompilationFlags.cmake) -ADD_EXTRA_COMPILATION_FLAGS() - ADD_CUSTOM_TARGET(clean-all COMMAND ${CMAKE_BUILD_TOOL} clean COMMAND rm -rf ${CMAKE_BINARY_DIR}/ From 16f771dfb152e09801adeccb857ea6e4c666feed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Mon, 20 Mar 2017 15:47:02 +0100 Subject: [PATCH 14/18] Install forgotten zstdmt tool and zstd.1 man page --- build/cmake/programs/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build/cmake/programs/CMakeLists.txt b/build/cmake/programs/CMakeLists.txt index bc20a265f..b3cd1d129 100644 --- a/build/cmake/programs/CMakeLists.txt +++ b/build/cmake/programs/CMakeLists.txt @@ -34,6 +34,8 @@ TARGET_LINK_LIBRARIES(zstd libzstd_shared) INSTALL(TARGETS zstd RUNTIME DESTINATION "bin") IF (UNIX) + INSTALL(FILES ${PROGRAMS_DIR}/zstd.1 DESTINATION "share/man/man1") + ADD_EXECUTABLE(zstd-frugal ${PROGRAMS_DIR}/zstdcli.c ${PROGRAMS_DIR}/fileio.c) TARGET_LINK_LIBRARIES(zstd-frugal libzstd_shared) SET_TARGET_PROPERTIES(zstd-frugal PROPERTIES COMPILE_DEFINITIONS "ZSTD_NOBENCH;ZSTD_NODICT") @@ -51,4 +53,6 @@ IF (ZSTD_MULTITHREAD_SUPPORT) ELSE() MESSAGE(SEND_ERROR "ZSTD currently does not support thread libraries other than pthreads") ENDIF() + + INSTALL(TARGETS zstdmt RUNTIME DESTINATION "bin") ENDIF (ZSTD_MULTITHREAD_SUPPORT) From 01d7ea27e9430248522b848d43fbf38c81413608 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Mon, 20 Mar 2017 15:47:28 +0100 Subject: [PATCH 15/18] Added options for building programs, static library and tests --- build/cmake/CMakeLists.txt | 17 +++++++++++++++-- build/cmake/lib/CMakeLists.txt | 25 +++++++++++++++++-------- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/build/cmake/CMakeLists.txt b/build/cmake/CMakeLists.txt index 7fa8bbc79..e338e6cc1 100644 --- a/build/cmake/CMakeLists.txt +++ b/build/cmake/CMakeLists.txt @@ -22,7 +22,9 @@ ADD_EXTRA_COMPILATION_FLAGS() #----------------------------------------------------------------------------- OPTION(ZSTD_LEGACY_SUPPORT "LEGACY SUPPORT" OFF) OPTION(ZSTD_MULTITHREAD_SUPPORT "MULTITHREADING SUPPORT" ON) +OPTION(ZSTD_BUILD_PROGRAMS "BUILD PROGRAMS" ON) OPTION(ZSTD_BUILD_CONTRIB "BUILD CONTRIB" OFF) +OPTION(ZSTD_BUILD_TESTS "BUILD TESTS" OFF) IF (ZSTD_LEGACY_SUPPORT) MESSAGE(STATUS "ZSTD_LEGACY_SUPPORT defined!") @@ -36,8 +38,19 @@ ENDIF (ZSTD_LEGACY_SUPPORT) # Add source directories #----------------------------------------------------------------------------- ADD_SUBDIRECTORY(lib) -ADD_SUBDIRECTORY(programs) -ADD_SUBDIRECTORY(tests) + +IF (ZSTD_BUILD_PROGRAMS) + ADD_SUBDIRECTORY(programs) +ENDIF (ZSTD_BUILD_PROGRAMS) + +IF (ZSTD_BUILD_TESTS) + IF (NOT ZSTD_BUILD_STATIC) + MESSAGE(SEND_ERROR "You need to build static library to build tests") + ENDIF (NOT ZSTD_BUILD_STATIC) + + ADD_SUBDIRECTORY(tests) +ENDIF (ZSTD_BUILD_TESTS) + IF (ZSTD_BUILD_CONTRIB) ADD_SUBDIRECTORY(contrib) ENDIF (ZSTD_BUILD_CONTRIB) diff --git a/build/cmake/lib/CMakeLists.txt b/build/cmake/lib/CMakeLists.txt index 874111287..7a345bf56 100644 --- a/build/cmake/lib/CMakeLists.txt +++ b/build/cmake/lib/CMakeLists.txt @@ -14,6 +14,7 @@ PROJECT(libzstd) INCLUDE(${CMAKE_SOURCE_DIR}/CMakeModules/GetLibraryVersion.cmake) SET(CMAKE_INCLUDE_CURRENT_DIR TRUE) +OPTION(ZSTD_BUILD_STATIC "BUILD STATIC LIBRARIES" OFF) # Define library directory, where sources and header files are located SET(LIBRARY_DIR ${ZSTD_SOURCE_DIR}/lib) @@ -89,13 +90,17 @@ IF (MSVC) ENDIF (MSVC) # Split project to static and shared libraries build -ADD_LIBRARY(libzstd_static STATIC ${Sources} ${Headers}) ADD_LIBRARY(libzstd_shared SHARED ${Sources} ${Headers} ${PlatformDependResources}) +IF (ZSTD_BUILD_STATIC) + ADD_LIBRARY(libzstd_static STATIC ${Sources} ${Headers}) +ENDIF (ZSTD_BUILD_STATIC) # Add specific compile definitions for MSVC project IF (MSVC) - SET_TARGET_PROPERTIES(libzstd_static PROPERTIES COMPILE_DEFINITIONS "ZSTD_HEAPMODE=0;_CRT_SECURE_NO_WARNINGS") SET_TARGET_PROPERTIES(libzstd_shared PROPERTIES COMPILE_DEFINITIONS "ZSTD_DLL_EXPORT=1;ZSTD_HEAPMODE=0;_CONSOLE;_CRT_SECURE_NO_WARNINGS") + IF (ZSTD_BUILD_STATIC) + SET_TARGET_PROPERTIES(libzstd_static PROPERTIES COMPILE_DEFINITIONS "ZSTD_HEAPMODE=0;_CRT_SECURE_NO_WARNINGS") + ENDIF (ZSTD_BUILD_STATIC) ENDIF (MSVC) # Define library base name @@ -111,22 +116,26 @@ ELSE () ENDIF (MSVC) # Define static and shared library names -SET_TARGET_PROPERTIES( - libzstd_static - PROPERTIES - OUTPUT_NAME ${LIBRARY_BASE_NAME}) - SET_TARGET_PROPERTIES( libzstd_shared PROPERTIES OUTPUT_NAME ${LIBRARY_BASE_NAME} SOVERSION ${LIBVER_MAJOR}.${LIBVER_MINOR}.${LIBVER_RELEASE}) +IF (ZSTD_BUILD_STATIC) + SET_TARGET_PROPERTIES( + libzstd_static + PROPERTIES + OUTPUT_NAME ${LIBRARY_BASE_NAME}) +ENDIF (ZSTD_BUILD_STATIC) + IF (UNIX) # install target INSTALL(FILES ${LIBRARY_DIR}/zstd.h ${LIBRARY_DIR}/deprecated/zbuff.h ${LIBRARY_DIR}/dictBuilder/zdict.h DESTINATION "include") - INSTALL(TARGETS libzstd_static ARCHIVE DESTINATION "lib") INSTALL(TARGETS libzstd_shared LIBRARY DESTINATION "lib") + IF (ZSTD_BUILD_STATIC) + INSTALL(TARGETS libzstd_static ARCHIVE DESTINATION "lib") + ENDIF (ZSTD_BUILD_STATIC) # uninstall target CONFIGURE_FILE( From 0d09c778a525530f21eaaa3dbf2c85ca12db8874 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Mon, 20 Mar 2017 15:57:08 +0100 Subject: [PATCH 16/18] Add build of new cmake branches to Makefile --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 985bff587..81cf51670 100644 --- a/Makefile +++ b/Makefile @@ -106,7 +106,7 @@ clean: #------------------------------------------------------------------------------ ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU FreeBSD DragonFly NetBSD)) HOST_OS = POSIX -CMAKE_PARAMS = -DZSTD_BUILD_CONTRIB:BOOL=ON +CMAKE_PARAMS = -DZSTD_BUILD_CONTRIB:BOOL=ON -DZSTD_BUILD_STATIC:BOOL=ON -DZSTD_BUILD_TESTS:BOOL=ON .PHONY: install uninstall travis-install clangtest gpptest armtest usan asan uasan install: @@ -264,7 +264,7 @@ endif ifneq (,$(filter MSYS%,$(shell uname))) HOST_OS = MSYS -CMAKE_PARAMS = -G"MSYS Makefiles" -DZSTD_MULTITHREAD_SUPPORT:BOOL=OFF +CMAKE_PARAMS = -G"MSYS Makefiles" -DZSTD_MULTITHREAD_SUPPORT:BOOL=OFF -DZSTD_BUILD_STATIC:BOOL=ON -DZSTD_BUILD_TESTS:BOOL=ON endif From a2286a333c3d1f40c2da1e7e5ad9fc187bdc693f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Mon, 20 Mar 2017 22:58:02 +0100 Subject: [PATCH 17/18] Install zstdcat and unzstd symlinks by cmake --- build/cmake/programs/CMakeLists.txt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/build/cmake/programs/CMakeLists.txt b/build/cmake/programs/CMakeLists.txt index b3cd1d129..a481a8e1d 100644 --- a/build/cmake/programs/CMakeLists.txt +++ b/build/cmake/programs/CMakeLists.txt @@ -31,10 +31,19 @@ ENDIF (MSVC) ADD_EXECUTABLE(zstd ${PROGRAMS_DIR}/zstdcli.c ${PROGRAMS_DIR}/fileio.c ${PROGRAMS_DIR}/bench.c ${PROGRAMS_DIR}/datagen.c ${PROGRAMS_DIR}/dibio.c ${PlatformDependResources}) TARGET_LINK_LIBRARIES(zstd libzstd_shared) +ADD_CUSTOM_COMMAND(TARGET zstd POST_BUILD COMMAND ${CMAKE_COMMAND} -E create_symlink zstd zstdcat COMMENT "Creating zstdcat symlink") +ADD_CUSTOM_COMMAND(TARGET zstd POST_BUILD COMMAND ${CMAKE_COMMAND} -E create_symlink zstd unzstd COMMENT "Creating unzstd symlink") INSTALL(TARGETS zstd RUNTIME DESTINATION "bin") +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/zstdcat DESTINATION "bin") +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/unzstd DESTINATION "bin") IF (UNIX) - INSTALL(FILES ${PROGRAMS_DIR}/zstd.1 DESTINATION "share/man/man1") + FILE(COPY ${PROGRAMS_DIR}/zstd.1 DESTINATION .) + ADD_CUSTOM_COMMAND(TARGET zstd POST_BUILD COMMAND ${CMAKE_COMMAND} -E create_symlink zstd.1 zstdcat.1 COMMENT "Creating zstdcat.1 symlink") + ADD_CUSTOM_COMMAND(TARGET zstd POST_BUILD COMMAND ${CMAKE_COMMAND} -E create_symlink zstd.1 unzstd.1 COMMENT "Creating unzstd.1 symlink") + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/zstd.1 DESTINATION "share/man/man1") + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/zstdcat.1 DESTINATION "share/man/man1") + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/unzstd.1 DESTINATION "share/man/man1") ADD_EXECUTABLE(zstd-frugal ${PROGRAMS_DIR}/zstdcli.c ${PROGRAMS_DIR}/fileio.c) TARGET_LINK_LIBRARIES(zstd-frugal libzstd_shared) From 5b3a9cbed2c8459b0127a8453aacb9b485d4f7b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20=C5=A0ev=C4=8D=C3=ADk?= Date: Tue, 21 Mar 2017 13:00:05 +0100 Subject: [PATCH 18/18] Remove multithreading support by default on non UNIX platforms --- build/cmake/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/build/cmake/CMakeLists.txt b/build/cmake/CMakeLists.txt index e338e6cc1..9ce52ed21 100644 --- a/build/cmake/CMakeLists.txt +++ b/build/cmake/CMakeLists.txt @@ -21,7 +21,11 @@ ADD_EXTRA_COMPILATION_FLAGS() # Options #----------------------------------------------------------------------------- OPTION(ZSTD_LEGACY_SUPPORT "LEGACY SUPPORT" OFF) -OPTION(ZSTD_MULTITHREAD_SUPPORT "MULTITHREADING SUPPORT" ON) +IF (UNIX) + OPTION(ZSTD_MULTITHREAD_SUPPORT "MULTITHREADING SUPPORT" ON) +ELSE (UNIX) + OPTION(ZSTD_MULTITHREAD_SUPPORT "MULTITHREADING SUPPORT" OFF) +ENDIF (UNIX) OPTION(ZSTD_BUILD_PROGRAMS "BUILD PROGRAMS" ON) OPTION(ZSTD_BUILD_CONTRIB "BUILD CONTRIB" OFF) OPTION(ZSTD_BUILD_TESTS "BUILD TESTS" OFF)