diff --git a/build/cmake/CMakeLists.txt b/build/cmake/CMakeLists.txt index bf6890818..5c4eca61c 100644 --- a/build/cmake/CMakeLists.txt +++ b/build/cmake/CMakeLists.txt @@ -9,13 +9,14 @@ PROJECT(zstd) CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9) -SET(ZSTD_SOURCE_DIR "${CMAKE_SOURCE_DIR}/../..") +SET(ZSTD_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../..") +LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") #----------------------------------------------------------------------------- # Add extra compilation flags #----------------------------------------------------------------------------- -INCLUDE(CMakeModules/AddExtraCompilationFlags.cmake) -ADD_EXTRA_COMPILATION_FLAGS() +INCLUDE(AddZstdCompilationFlags) +ADD_ZSTD_COMPILATION_FLAGS() #----------------------------------------------------------------------------- # Options diff --git a/build/cmake/CMakeModules/AddExtraCompilationFlags.cmake b/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake similarity index 65% rename from build/cmake/CMakeModules/AddExtraCompilationFlags.cmake rename to build/cmake/CMakeModules/AddZstdCompilationFlags.cmake index e099a01da..e812418e3 100644 --- a/build/cmake/CMakeModules/AddExtraCompilationFlags.cmake +++ b/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake @@ -2,24 +2,25 @@ include(CheckCXXCompilerFlag) include(CheckCCompilerFlag) function(EnableCompilerFlag _flag _C _CXX) - message("Checking flag ${_flag}") + string(REGEX REPLACE "\\+" "PLUS" varname "${_flag}") + string(REGEX REPLACE "[^A-Za-z0-9]+" "_" varname "${varname}") + string(REGEX REPLACE "^_+" "" varname "${varname}") + string(TOUPPER "${varname}" varname) if (_C) - CHECK_C_COMPILER_FLAG(${_flag} C_FLAG) - if (C_FLAG) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flag}" CACHE INTERNAL "C Flags") + CHECK_C_COMPILER_FLAG(${_flag} C_FLAG_${varname}) + if (C_FLAG_${varname}) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flag}" PARENT_SCOPE) 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") + CHECK_CXX_COMPILER_FLAG(${_flag} CXX_FLAG_${varname}) + if (CXX_FLAG_${varname}) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flag}" PARENT_SCOPE) endif () - unset(CXX_FLAG CACHE) endif () endfunction() -MACRO(ADD_EXTRA_COMPILATION_FLAGS) +MACRO(ADD_ZSTD_COMPILATION_FLAGS) if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" OR MINGW) #Not only UNIX but also WIN32 for MinGW #Set c++11 by default EnableCompilerFlag("-std=c++11" false true) @@ -68,8 +69,7 @@ MACRO(ADD_EXTRA_COMPILATION_FLAGS) 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) + ENDFOREACH (flag_var) if (MSVC) # Replace /MT to /MD flag @@ -80,19 +80,7 @@ MACRO(ADD_EXTRA_COMPILATION_FLAGS) 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}}") - ENDFOREACH (flag_var) + ENDFOREACH (flag_var) endif () - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "Updated flags" FORCE) - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}" CACHE STRING "Updated flags" FORCE) - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}" CACHE STRING "Updated flags" FORCE) - set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}" CACHE STRING "Updated flags" FORCE) - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}" CACHE STRING "Updated flags" FORCE) - - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "Updated flags" FORCE) - set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}" CACHE STRING "Updated flags" FORCE) - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}" CACHE STRING "Updated flags" FORCE) - set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}" CACHE STRING "Updated flags" FORCE) - set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}" CACHE STRING "Updated flags" FORCE) - -ENDMACRO(ADD_EXTRA_COMPILATION_FLAGS) +ENDMACRO(ADD_ZSTD_COMPILATION_FLAGS) diff --git a/build/cmake/CMakeModules/GetLibraryVersion.cmake b/build/cmake/CMakeModules/GetZstdLibraryVersion.cmake similarity index 86% rename from build/cmake/CMakeModules/GetLibraryVersion.cmake rename to build/cmake/CMakeModules/GetZstdLibraryVersion.cmake index 95d84a89f..8b6f394da 100644 --- a/build/cmake/CMakeModules/GetLibraryVersion.cmake +++ b/build/cmake/CMakeModules/GetZstdLibraryVersion.cmake @@ -1,4 +1,4 @@ -function(GetLibraryVersion _header _major _minor _release) +function(GetZstdLibraryVersion _header _major _minor _release) # Read file content FILE(READ ${_header} CONTENT) diff --git a/build/cmake/contrib/gen_html/CMakeLists.txt b/build/cmake/contrib/gen_html/CMakeLists.txt index dff8c7a11..c10c62b54 100644 --- a/build/cmake/contrib/gen_html/CMakeLists.txt +++ b/build/cmake/contrib/gen_html/CMakeLists.txt @@ -11,7 +11,7 @@ # ################################################################ PROJECT(gen_html) -INCLUDE(${CMAKE_SOURCE_DIR}/CMakeModules/GetLibraryVersion.cmake) +INCLUDE(GetZstdLibraryVersion) SET(CMAKE_INCLUDE_CURRENT_DIR TRUE) @@ -24,7 +24,7 @@ INCLUDE_DIRECTORIES(${PROGRAMS_DIR} ${LIBRARY_DIR} ${LIBRARY_DIR}/common ${GENHT ADD_EXECUTABLE(gen_html ${GENHTML_DIR}/gen_html.cpp) -GetLibraryVersion(${LIBRARY_DIR}/zstd.h VMAJOR VMINOR VRELEASE) +GetZstdLibraryVersion(${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" diff --git a/build/cmake/lib/CMakeLists.txt b/build/cmake/lib/CMakeLists.txt index 5e945ff12..429d49449 100644 --- a/build/cmake/lib/CMakeLists.txt +++ b/build/cmake/lib/CMakeLists.txt @@ -11,7 +11,6 @@ # ################################################################ PROJECT(libzstd) -INCLUDE(${CMAKE_SOURCE_DIR}/CMakeModules/GetLibraryVersion.cmake) SET(CMAKE_INCLUDE_CURRENT_DIR TRUE) OPTION(ZSTD_BUILD_STATIC "BUILD STATIC LIBRARIES" OFF) @@ -21,7 +20,8 @@ SET(LIBRARY_DIR ${ZSTD_SOURCE_DIR}/lib) INCLUDE_DIRECTORIES(${LIBRARY_DIR} ${LIBRARY_DIR}/common) # Parse version -GetLibraryVersion(${LIBRARY_DIR}/zstd.h LIBVER_MAJOR LIBVER_MINOR LIBVER_RELEASE) +INCLUDE(GetZstdLibraryVersion) +GetZstdLibraryVersion(${LIBRARY_DIR}/zstd.h LIBVER_MAJOR LIBVER_MINOR LIBVER_RELEASE) MESSAGE("ZSTD VERSION ${LIBVER_MAJOR}.${LIBVER_MINOR}.${LIBVER_RELEASE}") SET(Sources @@ -138,7 +138,7 @@ IF (UNIX) ADD_CUSTOM_TARGET(libzstd.pc ALL ${CMAKE_COMMAND} -DIN="${LIBRARY_DIR}/libzstd.pc.in" -DOUT="libzstd.pc" -DPREFIX="${PREFIX}" -DLIBDIR="${LIBDIR}" -DINCLUDEDIR="${INCLUDEDIR}" -DVERSION="${VERSION}" - -P "${CMAKE_SOURCE_DIR}/lib/pkgconfig.cmake" + -P "${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig.cmake" COMMENT "Creating pkg-config file") # install target @@ -151,10 +151,10 @@ IF (UNIX) # uninstall target CONFIGURE_FILE( - "${CMAKE_SOURCE_DIR}/cmake_uninstall.cmake.in" - "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake" + "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) ADD_CUSTOM_TARGET(uninstall - COMMAND ${CMAKE_COMMAND} -P ${CMAKE_BINARY_DIR}/cmake_uninstall.cmake) + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) ENDIF (UNIX) diff --git a/build/cmake/cmake_uninstall.cmake.in b/build/cmake/lib/cmake_uninstall.cmake.in similarity index 100% rename from build/cmake/cmake_uninstall.cmake.in rename to build/cmake/lib/cmake_uninstall.cmake.in