Merge pull request #669 from ligfx/friendlycmake
CMake improvements when embedding in another project
This commit is contained in:
@@ -9,13 +9,14 @@
|
|||||||
|
|
||||||
PROJECT(zstd)
|
PROJECT(zstd)
|
||||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9)
|
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
|
# Add extra compilation flags
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
INCLUDE(CMakeModules/AddExtraCompilationFlags.cmake)
|
INCLUDE(AddZstdCompilationFlags)
|
||||||
ADD_EXTRA_COMPILATION_FLAGS()
|
ADD_ZSTD_COMPILATION_FLAGS()
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# Options
|
# Options
|
||||||
|
|||||||
+14
-26
@@ -2,24 +2,25 @@ include(CheckCXXCompilerFlag)
|
|||||||
include(CheckCCompilerFlag)
|
include(CheckCCompilerFlag)
|
||||||
|
|
||||||
function(EnableCompilerFlag _flag _C _CXX)
|
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)
|
if (_C)
|
||||||
CHECK_C_COMPILER_FLAG(${_flag} C_FLAG)
|
CHECK_C_COMPILER_FLAG(${_flag} C_FLAG_${varname})
|
||||||
if (C_FLAG)
|
if (C_FLAG_${varname})
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flag}" CACHE INTERNAL "C Flags")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flag}" PARENT_SCOPE)
|
||||||
endif ()
|
endif ()
|
||||||
unset(C_FLAG CACHE)
|
|
||||||
endif ()
|
endif ()
|
||||||
if (_CXX)
|
if (_CXX)
|
||||||
CHECK_CXX_COMPILER_FLAG(${_flag} CXX_FLAG)
|
CHECK_CXX_COMPILER_FLAG(${_flag} CXX_FLAG_${varname})
|
||||||
if (CXX_FLAG)
|
if (CXX_FLAG_${varname})
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flag}" CACHE INTERNAL "CXX Flags")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flag}" PARENT_SCOPE)
|
||||||
endif ()
|
endif ()
|
||||||
unset(CXX_FLAG CACHE)
|
|
||||||
endif ()
|
endif ()
|
||||||
endfunction()
|
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
|
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" OR MINGW) #Not only UNIX but also WIN32 for MinGW
|
||||||
#Set c++11 by default
|
#Set c++11 by default
|
||||||
EnableCompilerFlag("-std=c++11" false true)
|
EnableCompilerFlag("-std=c++11" false true)
|
||||||
@@ -68,8 +69,7 @@ MACRO(ADD_EXTRA_COMPILATION_FLAGS)
|
|||||||
separate_arguments(${flag_var})
|
separate_arguments(${flag_var})
|
||||||
list(REMOVE_DUPLICATES ${flag_var})
|
list(REMOVE_DUPLICATES ${flag_var})
|
||||||
string(REPLACE ";" " " ${flag_var} "${${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)
|
if (MSVC)
|
||||||
# Replace /MT to /MD flag
|
# Replace /MT to /MD flag
|
||||||
@@ -80,19 +80,7 @@ MACRO(ADD_EXTRA_COMPILATION_FLAGS)
|
|||||||
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
||||||
STRING(REGEX REPLACE "/MT" "/MD" ${flag_var} "${${flag_var}}")
|
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)
|
ENDFOREACH (flag_var)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "Updated flags" FORCE)
|
ENDMACRO(ADD_ZSTD_COMPILATION_FLAGS)
|
||||||
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)
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
function(GetLibraryVersion _header _major _minor _release)
|
function(GetZstdLibraryVersion _header _major _minor _release)
|
||||||
# Read file content
|
# Read file content
|
||||||
FILE(READ ${_header} CONTENT)
|
FILE(READ ${_header} CONTENT)
|
||||||
|
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
|
|
||||||
PROJECT(gen_html)
|
PROJECT(gen_html)
|
||||||
INCLUDE(${CMAKE_SOURCE_DIR}/CMakeModules/GetLibraryVersion.cmake)
|
INCLUDE(GetZstdLibraryVersion)
|
||||||
|
|
||||||
SET(CMAKE_INCLUDE_CURRENT_DIR TRUE)
|
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)
|
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}")
|
SET(LIBVERSION "${VMAJOR}.${VMINOR}.${VRELEASE}")
|
||||||
ADD_CUSTOM_TARGET(zstd_manual.html ALL
|
ADD_CUSTOM_TARGET(zstd_manual.html ALL
|
||||||
${GENHTML_BINARY} "${LIBVERSION}" "${LIBRARY_DIR}/zstd.h" "${PROJECT_BINARY_DIR}/zstd_manual.html"
|
${GENHTML_BINARY} "${LIBVERSION}" "${LIBRARY_DIR}/zstd.h" "${PROJECT_BINARY_DIR}/zstd_manual.html"
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
# ################################################################
|
# ################################################################
|
||||||
|
|
||||||
PROJECT(libzstd)
|
PROJECT(libzstd)
|
||||||
INCLUDE(${CMAKE_SOURCE_DIR}/CMakeModules/GetLibraryVersion.cmake)
|
|
||||||
|
|
||||||
SET(CMAKE_INCLUDE_CURRENT_DIR TRUE)
|
SET(CMAKE_INCLUDE_CURRENT_DIR TRUE)
|
||||||
OPTION(ZSTD_BUILD_STATIC "BUILD STATIC LIBRARIES" OFF)
|
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)
|
INCLUDE_DIRECTORIES(${LIBRARY_DIR} ${LIBRARY_DIR}/common)
|
||||||
|
|
||||||
# Parse version
|
# 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}")
|
MESSAGE("ZSTD VERSION ${LIBVER_MAJOR}.${LIBVER_MINOR}.${LIBVER_RELEASE}")
|
||||||
|
|
||||||
SET(Sources
|
SET(Sources
|
||||||
@@ -138,7 +138,7 @@ IF (UNIX)
|
|||||||
ADD_CUSTOM_TARGET(libzstd.pc ALL
|
ADD_CUSTOM_TARGET(libzstd.pc ALL
|
||||||
${CMAKE_COMMAND} -DIN="${LIBRARY_DIR}/libzstd.pc.in" -DOUT="libzstd.pc"
|
${CMAKE_COMMAND} -DIN="${LIBRARY_DIR}/libzstd.pc.in" -DOUT="libzstd.pc"
|
||||||
-DPREFIX="${PREFIX}" -DLIBDIR="${LIBDIR}" -DINCLUDEDIR="${INCLUDEDIR}" -DVERSION="${VERSION}"
|
-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")
|
COMMENT "Creating pkg-config file")
|
||||||
|
|
||||||
# install target
|
# install target
|
||||||
@@ -151,10 +151,10 @@ IF (UNIX)
|
|||||||
|
|
||||||
# uninstall target
|
# uninstall target
|
||||||
CONFIGURE_FILE(
|
CONFIGURE_FILE(
|
||||||
"${CMAKE_SOURCE_DIR}/cmake_uninstall.cmake.in"
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
|
||||||
"${CMAKE_BINARY_DIR}/cmake_uninstall.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
|
||||||
IMMEDIATE @ONLY)
|
IMMEDIATE @ONLY)
|
||||||
|
|
||||||
ADD_CUSTOM_TARGET(uninstall
|
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)
|
ENDIF (UNIX)
|
||||||
|
|||||||
Reference in New Issue
Block a user