mirror of
https://github.com/GerbilSoft/rom-properties.git
synced 2025-06-18 11:35:38 -04:00
196 lines
5.8 KiB
CMake
Vendored
196 lines
5.8 KiB
CMake
Vendored
# zstd: Fast compression library.
|
|
PROJECT(zstd VERSION 1.5.7 LANGUAGES C ASM)
|
|
|
|
# rom-properties: Enable multithreading.
|
|
SET(ZSTD_MULTITHREAD ON)
|
|
|
|
ADD_DEFINITIONS(-DXXH_NAMESPACE=ZSTD_)
|
|
|
|
# Always build with high optimizations.
|
|
IF(MSVC)
|
|
# Remove some CFLAGS for MSVC builds:
|
|
# - /Ob0: Conflicts with /Ob2.
|
|
# - /Od: Conflicts with /O2.
|
|
# - /RTC1: Conflicts with /O2.
|
|
STRING(REPLACE "/Ob0" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
|
|
STRING(REPLACE "/Od" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
|
|
STRING(REPLACE "/RTC1" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
|
|
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /Ob2 /O2")
|
|
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Ob2 /O2")
|
|
|
|
# Append 'd' to the DLL filename for debug builds.
|
|
SET(CMAKE_DEBUG_POSTFIX "d")
|
|
ELSE(MSVC)
|
|
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O3")
|
|
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3")
|
|
ENDIF(MSVC)
|
|
|
|
FILE(GLOB ZSTDCOMMON_FILES common/*.c)
|
|
FILE(GLOB ZSTDCOMP_FILES compress/*.c)
|
|
FILE(GLOB ZSTDDECOMP_FILES decompress/*.c decompress/*.S)
|
|
FILE(GLOB ZDICT_FILES dictBuilder/*.c)
|
|
FILE(GLOB ZDEPR_FILES deprecated/*.c)
|
|
|
|
SET(ZSTD_FILES ${ZSTDCOMMON_FILES})
|
|
|
|
# Modules
|
|
SET(ZSTD_LIB_COMPRESSION ON)
|
|
SET(ZSTD_LIB_DECOMPRESSION ON)
|
|
SET(ZSTD_LIB_DICTBUILDER OFF)
|
|
SET(ZSTD_LIB_DEPRECATED OFF)
|
|
|
|
# Enable zstd multithreading on pthread systems.
|
|
FIND_PACKAGE(Threads)
|
|
IF(CMAKE_USE_PTHREADS_INIT)
|
|
SET(ZSTD_MULTITHREAD ON)
|
|
ENDIF(CMAKE_USE_PTHREADS_INIT)
|
|
|
|
# Legacy support
|
|
SET(ZSTD_LEGACY_SUPPORT 0)
|
|
SET(ZSTD_LEGACY_MULTITHREADED_API OFF)
|
|
|
|
# Build size optimizations
|
|
SET(HUF_FORCE_DECOMPRESS_X1 OFF)
|
|
SET(HUF_FORCE_DECOMPRESS_X2 OFF)
|
|
SET(ZSTD_FORCE_DECOMPRESS_SHORT OFF)
|
|
SET(ZSTD_FORCE_DECOMPRESS_LONG OFF)
|
|
SET(ZSTD_NO_INLINE OFF)
|
|
SET(ZSTD_STRIP_ERROR_STRINGS OFF)
|
|
|
|
IF(NOT ZSTD_LIB_COMPRESSION)
|
|
SET(ZSTD_LIB_DICTBUILDER OFF)
|
|
SET(ZSTD_LIB_DEPRECATED OFF)
|
|
ENDIF(NOT ZSTD_LIB_COMPRESSION)
|
|
|
|
IF(NOT ZSTD_LIB_DECOMPRESSION)
|
|
SET(ZSTD_LEGACY_SUPPORT OFF)
|
|
SET(ZSTD_LIB_DEPRECATED OFF)
|
|
ENDIF(NOT ZSTD_LIB_DECOMPRESSION)
|
|
|
|
IF(ZSTD_LIB_COMPRESSION)
|
|
SET(ZSTD_FILES ${ZSTD_FILES} ${ZSTDCOMP_FILES})
|
|
ENDIF(ZSTD_LIB_COMPRESSION)
|
|
|
|
IF(ZSTD_LIB_DECOMPRESSION)
|
|
SET(ZSTD_FILES ${ZSTD_FILES} ${ZSTDDECOMP_FILES})
|
|
ENDIF(ZSTD_LIB_DECOMPRESSION)
|
|
|
|
IF(ZSTD_LIB_DEPRECATED)
|
|
SET(ZSTD_FILES ${ZSTD_FILES} ${ZDEPR_FILES})
|
|
ENDIF(ZSTD_LIB_DEPRECATED)
|
|
|
|
IF(ZSTD_LIB_DICTBUILDER)
|
|
SET(ZSTD_FILES ${ZSTD_FILES} ${ZDICT_FILES})
|
|
ENDIF(ZSTD_LIB_DICTBUILDER)
|
|
|
|
IF(HUF_FORCE_DECOMPRESS_X1)
|
|
ADD_DEFINITIONS(-DHUF_FORCE_DECOMPRESS_X1)
|
|
ENDIF(HUF_FORCE_DECOMPRESS_X1)
|
|
|
|
IF(HUF_FORCE_DECOMPRESS_X2)
|
|
ADD_DEFINITIONS(-DHUF_FORCE_DECOMPRESS_X2)
|
|
ENDIF(HUF_FORCE_DECOMPRESS_X2)
|
|
|
|
IF(ZSTD_FORCE_DECOMPRESS_SHORT)
|
|
ADD_DEFINITIONS(-DZSTD_FORCE_DECOMPRESS_SHORT)
|
|
ENDIF(ZSTD_FORCE_DECOMPRESS_SHORT)
|
|
|
|
IF(ZSTD_FORCE_DECOMPRESS_LONG)
|
|
ADD_DEFINITIONS(-DZSTD_FORCE_DECOMPRESS_LONG)
|
|
ENDIF(ZSTD_FORCE_DECOMPRESS_LONG)
|
|
|
|
IF(ZSTD_NO_INLINE)
|
|
ADD_DEFINITIONS(-DZSTD_NO_INLINE)
|
|
ENDIF(ZSTD_NO_INLINE)
|
|
|
|
IF(ZSTD_STRIP_ERROR_STRINGS)
|
|
ADD_DEFINITIONS(-DZSTD_STRIP_ERROR_STRINGS)
|
|
ENDIF(ZSTD_STRIP_ERROR_STRINGS)
|
|
|
|
IF(ZSTD_LEGACY_MULTITHREADED_API)
|
|
ADD_DEFINITIONS(-DZSTD_LEGACY_MULTITHREADED_API)
|
|
ENDIF(ZSTD_LEGACY_MULTITHREADED_API)
|
|
|
|
# FIXME: Legacy support.
|
|
IF(ZSTD_LEGACY_SUPPORT)
|
|
#ifeq ($(shell test $(ZSTD_LEGACY_SUPPORT) -lt 8; echo $$?), 0)
|
|
# ZSTD_FILES += $(shell ls legacy/*.c | $(GREP) 'v0[$(ZSTD_LEGACY_SUPPORT)-7]')
|
|
#endif
|
|
ENDIF(ZSTD_LEGACY_SUPPORT)
|
|
ADD_DEFINITIONS(-DZSTD_LEGACY_SUPPORT=${ZSTD_LEGACY_SUPPORT})
|
|
|
|
IF(WIN32)
|
|
# Add the Win32 resource file.
|
|
SET(ZSTD_FILES ${ZSTD_FILES} windres/libzstd-dll.rc)
|
|
ENDIF(WIN32)
|
|
|
|
IF(BUILD_SHARED_LIBS)
|
|
ADD_LIBRARY(zstd SHARED ${ZSTD_FILES})
|
|
TARGET_COMPILE_DEFINITIONS(zstd
|
|
PRIVATE -DZSTD_DLL_EXPORT
|
|
INTERFACE -DZSTD_DLL_IMPORT
|
|
)
|
|
TARGET_INCLUDE_DIRECTORIES(zstd
|
|
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
|
|
)
|
|
DO_SPLIT_DEBUG(zstd)
|
|
SET_WINDOWS_SUBSYSTEM(zstd WIN32)
|
|
ENDIF(BUILD_SHARED_LIBS)
|
|
|
|
IF(BUILD_STATIC_LIBS)
|
|
ADD_LIBRARY(zstdstatic STATIC ${ZSTD_FILES})
|
|
TARGET_INCLUDE_DIRECTORIES(zstdstatic
|
|
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
|
|
)
|
|
DO_SPLIT_DEBUG(zstdstatic)
|
|
ENDIF(BUILD_STATIC_LIBS)
|
|
|
|
IF(ZSTD_MULTITHREAD AND CMAKE_THREAD_LIBS_INIT)
|
|
IF(BUILD_SHARED_LIBS)
|
|
TARGET_LINK_LIBRARIES(zstd PRIVATE ${CMAKE_THREAD_LIBS_INIT})
|
|
ENDIF(BUILD_SHARED_LIBS)
|
|
IF(BUILD_STATIC_LIBS)
|
|
TARGET_LINK_LIBRARIES(zstdstatic PRIVATE ${CMAKE_THREAD_LIBS_INIT})
|
|
ENDIF(BUILD_STATIC_LIBS)
|
|
ENDIF(ZSTD_MULTITHREAD AND CMAKE_THREAD_LIBS_INIT)
|
|
|
|
# Install DLLs.
|
|
IF(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
|
|
INSTALL(TARGETS zstd
|
|
RUNTIME DESTINATION "${INSTALL_BIN_DIR}" )
|
|
#ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
|
|
#LIBRARY DESTINATION "${INSTALL_LIB_DIR}"
|
|
#BUNDLE DESTINATION "${INSTALL_BIN_DIR}" )
|
|
IF(INSTALL_DEBUG)
|
|
# FIXME: Generator expression $<TARGET_PROPERTY:${_target},PDB> didn't work with CPack-3.6.1.
|
|
INCLUDE(DirInstallPaths)
|
|
GET_TARGET_PROPERTY(DEBUG_FILENAME zstd PDB)
|
|
IF(WIN32)
|
|
# TODO: Test on MinGW.
|
|
# FIXME: Generator PDB expression doesn't have the debug postfix for some reason,
|
|
# so cpack fails in debug builds if we get the PDB property.
|
|
SET(PDB_FILENAME_D "$<TARGET_FILE_DIR:zstd>/zstd${CMAKE_DEBUG_POSTFIX}.pdb")
|
|
SET(PDB_FILENAME_R "$<TARGET_FILE_DIR:zstd>/zstd${CMAKE_RELEASE_POSTFIX}.pdb")
|
|
INSTALL(FILES "${PDB_FILENAME_D}" "${PDB_FILENAME_R}"
|
|
DESTINATION "${DIR_INSTALL_DLL_DEBUG}"
|
|
COMPONENT "debug"
|
|
OPTIONAL
|
|
)
|
|
UNSET(PDB_FILENAME_D)
|
|
UNSET(PDB_FILENAME_R)
|
|
ELSE(WIN32)
|
|
INSTALL(FILES "${DEBUG_FILENAME}"
|
|
DESTINATION "${DIR_INSTALL_DLL_DEBUG}"
|
|
COMPONENT "debug"
|
|
)
|
|
ENDIF(WIN32)
|
|
UNSET(DEBUG_FILENAME)
|
|
ENDIF(INSTALL_DEBUG)
|
|
ENDIF(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
|
|
|
|
# Clang: zstd uses __declspec() regardless of compiler or OS.
|
|
IF(CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?Clang")
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdeclspec")
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdeclspec")
|
|
ENDIF(CMAKE_CXX_COMPILER_ID MATCHES "(Apple)?Clang")
|