The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/zstd/lib/libzstd.mk

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 # ################################################################
    2 # Copyright (c) Yann Collet, Facebook, Inc.
    3 # All rights reserved.
    4 #
    5 # This source code is licensed under both the BSD-style license (found in the
    6 # LICENSE file in the root directory of this source tree) and the GPLv2 (found
    7 # in the COPYING file in the root directory of this source tree).
    8 # You may select, at your option, one of the above-listed licenses.
    9 # ################################################################
   10 
   11 ##################################################################
   12 # Input Variables
   13 ##################################################################
   14 
   15 # Zstd lib directory
   16 LIBZSTD ?= ./
   17 
   18 # Legacy support
   19 ZSTD_LEGACY_SUPPORT ?= 5
   20 ZSTD_LEGACY_MULTITHREADED_API ?= 0
   21 
   22 # Build size optimizations
   23 HUF_FORCE_DECOMPRESS_X1 ?= 0
   24 HUF_FORCE_DECOMPRESS_X2 ?= 0
   25 ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT ?= 0
   26 ZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG ?= 0
   27 ZSTD_NO_INLINE ?= 0
   28 ZSTD_STRIP_ERROR_STRINGS ?= 0
   29 
   30 # Assembly support
   31 ZSTD_NO_ASM ?= 0
   32 
   33 ##################################################################
   34 # libzstd helpers
   35 ##################################################################
   36 
   37 VOID ?= /dev/null
   38 
   39 # Make 4.3 doesn't support '\#' anymore (https://lwn.net/Articles/810071/)
   40 NUM_SYMBOL := \#
   41 
   42 # define silent mode as default (verbose mode with V=1 or VERBOSE=1)
   43 $(V)$(VERBOSE).SILENT:
   44 
   45 # When cross-compiling from linux to windows,
   46 # one might need to specify TARGET_SYSTEM as "Windows."
   47 # Building from Fedora fails without it.
   48 # (but Ubuntu and Debian don't need to set anything)
   49 TARGET_SYSTEM ?= $(OS)
   50 
   51 # Version numbers
   52 LIBVER_SRC := $(LIBZSTD)/zstd.h
   53 LIBVER_MAJOR_SCRIPT:=`sed -n '/define ZSTD_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LIBVER_SRC)`
   54 LIBVER_MINOR_SCRIPT:=`sed -n '/define ZSTD_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LIBVER_SRC)`
   55 LIBVER_PATCH_SCRIPT:=`sed -n '/define ZSTD_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < $(LIBVER_SRC)`
   56 LIBVER_SCRIPT:= $(LIBVER_MAJOR_SCRIPT).$(LIBVER_MINOR_SCRIPT).$(LIBVER_PATCH_SCRIPT)
   57 LIBVER_MAJOR := $(shell echo $(LIBVER_MAJOR_SCRIPT))
   58 LIBVER_MINOR := $(shell echo $(LIBVER_MINOR_SCRIPT))
   59 LIBVER_PATCH := $(shell echo $(LIBVER_PATCH_SCRIPT))
   60 LIBVER := $(shell echo $(LIBVER_SCRIPT))
   61 CCVER := $(shell $(CC) --version)
   62 ZSTD_VERSION?= $(LIBVER)
   63 
   64 # ZSTD_LIB_MINIFY is a helper variable that
   65 # configures a bunch of other variables to space-optimized defaults.
   66 ZSTD_LIB_MINIFY ?= 0
   67 ifneq ($(ZSTD_LIB_MINIFY), 0)
   68   HAVE_CC_OZ ?= $(shell echo "" | $(CC) -Oz -x c -c - -o /dev/null 2> /dev/null && echo 1 || echo 0)
   69   ZSTD_LEGACY_SUPPORT ?= 0
   70   ZSTD_LIB_DEPRECATED ?= 0
   71   HUF_FORCE_DECOMPRESS_X1 ?= 1
   72   ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT ?= 1
   73   ZSTD_NO_INLINE ?= 1
   74   ZSTD_STRIP_ERROR_STRINGS ?= 1
   75 ifneq ($(HAVE_CC_OZ), 0)
   76     # Some compilers (clang) support an even more space-optimized setting.
   77     CFLAGS += -Oz
   78 else
   79     CFLAGS += -Os
   80 endif
   81   CFLAGS += -fno-stack-protector -fomit-frame-pointer -fno-ident \
   82             -DDYNAMIC_BMI2=0 -DNDEBUG
   83 else
   84   CFLAGS ?= -O3
   85 endif
   86 
   87 DEBUGLEVEL ?= 0
   88 CPPFLAGS += -DXXH_NAMESPACE=ZSTD_ -DDEBUGLEVEL=$(DEBUGLEVEL)
   89 ifeq ($(TARGET_SYSTEM),Windows_NT)   # MinGW assumed
   90   CPPFLAGS += -D__USE_MINGW_ANSI_STDIO   # compatibility with %zu formatting
   91 endif
   92 DEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
   93             -Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
   94             -Wstrict-prototypes -Wundef -Wpointer-arith \
   95             -Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \
   96             -Wredundant-decls -Wmissing-prototypes -Wc++-compat
   97 CFLAGS   += $(DEBUGFLAGS) $(MOREFLAGS)
   98 ASFLAGS  += $(DEBUGFLAGS) $(MOREFLAGS) $(CFLAGS)
   99 LDFLAGS  += $(MOREFLAGS)
  100 FLAGS     = $(CPPFLAGS) $(CFLAGS) $(ASFLAGS) $(LDFLAGS)
  101 
  102 ifndef ALREADY_APPENDED_NOEXECSTACK
  103 export ALREADY_APPENDED_NOEXECSTACK := 1
  104 ifeq ($(shell echo "int main(int argc, char* argv[]) { (void)argc; (void)argv; return 0; }" | $(CC) $(FLAGS) -z noexecstack -x c -Werror - -o $(VOID) 2>$(VOID) && echo 1 || echo 0),1)
  105 LDFLAGS += -z noexecstack
  106 endif
  107 ifeq ($(shell echo | $(CC) $(FLAGS) -Wa,--noexecstack -x assembler -Werror -c - -o $(VOID) 2>$(VOID) && echo 1 || echo 0),1)
  108 CFLAGS  += -Wa,--noexecstack
  109 # CFLAGS are also added to ASFLAGS
  110 else ifeq ($(shell echo | $(CC) $(FLAGS) -Qunused-arguments -Wa,--noexecstack -x assembler -Werror -c - -o $(VOID) 2>$(VOID) && echo 1 || echo 0),1)
  111 # See e.g.: https://github.com/android/ndk/issues/171
  112 CFLAGS  += -Qunused-arguments -Wa,--noexecstack
  113 # CFLAGS are also added to ASFLAGS
  114 endif
  115 endif
  116 
  117 HAVE_COLORNEVER = $(shell echo a | grep --color=never a > /dev/null 2> /dev/null && echo 1 || echo 0)
  118 GREP_OPTIONS ?=
  119 ifeq ($HAVE_COLORNEVER, 1)
  120   GREP_OPTIONS += --color=never
  121 endif
  122 GREP = grep $(GREP_OPTIONS)
  123 SED_ERE_OPT ?= -E
  124 
  125 ZSTD_COMMON_FILES := $(sort $(wildcard $(LIBZSTD)/common/*.c))
  126 ZSTD_COMPRESS_FILES := $(sort $(wildcard $(LIBZSTD)/compress/*.c))
  127 ZSTD_DECOMPRESS_FILES := $(sort $(wildcard $(LIBZSTD)/decompress/*.c))
  128 ZSTD_DICTBUILDER_FILES := $(sort $(wildcard $(LIBZSTD)/dictBuilder/*.c))
  129 ZSTD_DEPRECATED_FILES := $(sort $(wildcard $(LIBZSTD)/deprecated/*.c))
  130 ZSTD_LEGACY_FILES :=
  131 
  132 ZSTD_DECOMPRESS_AMD64_ASM_FILES := $(sort $(wildcard $(LIBZSTD)/decompress/*_amd64.S))
  133 
  134 ifneq ($(ZSTD_NO_ASM), 0)
  135   CPPFLAGS += -DZSTD_DISABLE_ASM
  136 else
  137   # Unconditionally add the ASM files they are disabled by
  138   # macros in the .S file.
  139   ZSTD_DECOMPRESS_FILES += $(ZSTD_DECOMPRESS_AMD64_ASM_FILES)
  140 endif
  141 
  142 ifneq ($(HUF_FORCE_DECOMPRESS_X1), 0)
  143   CFLAGS += -DHUF_FORCE_DECOMPRESS_X1
  144 endif
  145 
  146 ifneq ($(HUF_FORCE_DECOMPRESS_X2), 0)
  147   CFLAGS += -DHUF_FORCE_DECOMPRESS_X2
  148 endif
  149 
  150 ifneq ($(ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT), 0)
  151   CFLAGS += -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT
  152 endif
  153 
  154 ifneq ($(ZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG), 0)
  155   CFLAGS += -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG
  156 endif
  157 
  158 ifneq ($(ZSTD_NO_INLINE), 0)
  159   CFLAGS += -DZSTD_NO_INLINE
  160 endif
  161 
  162 ifneq ($(ZSTD_STRIP_ERROR_STRINGS), 0)
  163   CFLAGS += -DZSTD_STRIP_ERROR_STRINGS
  164 endif
  165 
  166 ifneq ($(ZSTD_LEGACY_MULTITHREADED_API), 0)
  167   CFLAGS += -DZSTD_LEGACY_MULTITHREADED_API
  168 endif
  169 
  170 ifneq ($(ZSTD_LEGACY_SUPPORT), 0)
  171 ifeq ($(shell test $(ZSTD_LEGACY_SUPPORT) -lt 8; echo $$?), 0)
  172   ZSTD_LEGACY_FILES += $(shell ls $(LIBZSTD)/legacy/*.c | $(GREP) 'v0[$(ZSTD_LEGACY_SUPPORT)-7]')
  173 endif
  174 endif
  175 CPPFLAGS  += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT)
  176 
  177 UNAME := $(shell uname)
  178 
  179 ifndef BUILD_DIR
  180 ifeq ($(UNAME), Darwin)
  181   ifeq ($(shell md5 < /dev/null > /dev/null; echo $$?), 0)
  182     HASH ?= md5
  183   endif
  184 else ifeq ($(UNAME), FreeBSD)
  185   HASH ?= gmd5sum
  186 else ifeq ($(UNAME), NetBSD)
  187   HASH ?= md5 -n
  188 else ifeq ($(UNAME), OpenBSD)
  189   HASH ?= md5
  190 endif
  191 HASH ?= md5sum
  192 
  193 HASH_DIR = conf_$(shell echo $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(ZSTD_FILES) | $(HASH) | cut -f 1 -d " " )
  194 HAVE_HASH :=$(shell echo 1 | $(HASH) > /dev/null && echo 1 || echo 0)
  195 ifeq ($(HAVE_HASH),0)
  196   $(info warning : could not find HASH ($(HASH)), needed to differentiate builds using different flags)
  197   BUILD_DIR := obj/generic_noconf
  198 endif
  199 endif # BUILD_DIR
  200 
  201 ZSTD_SUBDIR := $(LIBZSTD)/common $(LIBZSTD)/compress $(LIBZSTD)/decompress $(LIBZSTD)/dictBuilder $(LIBZSTD)/legacy $(LIBZSTD)/deprecated
  202 vpath %.c $(ZSTD_SUBDIR)
  203 vpath %.S $(ZSTD_SUBDIR)

Cache object: 462e73a75188e46edbedeed914532c56


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.