1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
# compiler executables --------------------------------------------------------
CC = gcc
CXX = g++
FC = gfortran
# language standard -----------------------------------------------------------
# CSTD = -std=c89
CSTD = -std=c99
CXXSTD = -std=c++98
# CXXSTD = -std=c++11
FSTD = -std=f2018 -ffree-form -Wno-c-binding-type
# common compiler options -----------------------------------------------------
OPTFLAGS = -O3
FLAGS = $(OPTFLAGS) -fPIC -pedantic -Wall -Wextra
LDFLAGS =
SOFLAGS =
# OpenMP compiler options -----------------------------------------------------
# do not comment out; use "make ZFP_WITH_OPENMP=0" to disable OpenMP
OMPFLAGS = -fopenmp
# Apple clang OpenMP options
# OMPFLAGS = -Xclang -fopenmp
# optional compiler macros ----------------------------------------------------
# use smaller bit stream word type for finer rate granularity;
# can bet set on command line, e.g., "make BIT_STREAM_WORD_TYPE=uint8"
# DEFS += -DBIT_STREAM_WORD_TYPE=uint8
# DEFS += -DBIT_STREAM_WORD_TYPE=uint16
# DEFS += -DBIT_STREAM_WORD_TYPE=uint32
# DEFS += -DBIT_STREAM_WORD_TYPE=uint64
# reduce bias and slack in errors; can be set on command line, e.g.,
# "make ZFP_ROUNDING_MODE=ZFP_ROUND_FIRST"
# DEFS += -DZFP_ROUNDING_MODE=ZFP_ROUND_NEVER
# DEFS += -DZFP_ROUNDING_MODE=ZFP_ROUND_FIRST
# DEFS += -DZFP_ROUNDING_MODE=ZFP_ROUND_LAST
# DEFS += -DZFP_WITH_TIGHT_ERROR
# treat subnormals as zero to avoid overflow; can be set on command line, e.g.,
# "make ZFP_WITH_DAZ=1"
# DEFS += -DZFP_WITH_DAZ
# use long long for 64-bit types
# DEFS += -DZFP_INT64='long long' -DZFP_INT64_SUFFIX='ll'
# DEFS += -DZFP_UINT64='unsigned long long' -DZFP_UINT64_SUFFIX='ull'
# cache alignment
# DEFS += -DZFP_CACHE_LINE_SIZE=256
# enable strided access for progressive zfp streams
# DEFS += -DBIT_STREAM_STRIDED
# use aligned memory allocation
# DEFS += -DZFP_WITH_ALIGNED_ALLOC
# use two-way skew-associative cache
# DEFS += -DZFP_WITH_CACHE_TWOWAY
# use faster but more collision prone hash function
# DEFS += -DZFP_WITH_CACHE_FAST_HASH
# count cache misses
# DEFS += -DZFP_WITH_CACHE_PROFILE
# build targets ---------------------------------------------------------------
# default targets
BUILD_CFP = 0
BUILD_ZFORP = 0
BUILD_UTILITIES = 1
BUILD_EXAMPLES = 0
BUILD_TESTING = 1
BUILD_SHARED_LIBS = 0
# build all targets?
ifdef BUILD_ALL
ifneq ($(BUILD_ALL),0)
BUILD_CFP = 1
BUILD_ZFORP = 1
BUILD_UTILITIES = 1
BUILD_EXAMPLES = 1
BUILD_TESTING = 1
endif
endif
# build shared libraries?
ifneq ($(BUILD_SHARED_LIBS),0)
LIBRARY = shared
LIBZFP = libzfp.so
LIBCFP = libcfp.so
else
LIBRARY = static
LIBZFP = libzfp.a
LIBCFP = libcfp.a
endif
# operating system and compiler dependent flags -------------------------------
# macOS configuration; compile with "make OS=mac"
ifeq ($(OS),mac)
SOFLAGS += -undefined dynamic_lookup
endif
# suppress unused function warnings when compiling C89
ifeq ($(CSTD),-std=c89)
FLAGS += -Wno-unused-function
endif
# process macros set on the command line --------------------------------------
# bit stream word type
ifdef BIT_STREAM_WORD_TYPE
DEFS += -DBIT_STREAM_WORD_TYPE=$(BIT_STREAM_WORD_TYPE)
endif
# enable OpenMP?
ifdef ZFP_WITH_OPENMP
ifneq ($(ZFP_WITH_OPENMP),0)
ifneq ($(ZFP_WITH_OPENMP),OFF)
FLAGS += $(OMPFLAGS)
endif
endif
endif
# treat subnormals as zero to avoid overflow
ifdef ZFP_WITH_DAZ
ifneq ($(ZFP_WITH_DAZ),0)
FLAGS += -DZFP_WITH_DAZ
endif
endif
# rounding mode and slack in error
ifdef ZFP_ROUNDING_MODE
FLAGS += -DZFP_ROUNDING_MODE=$(ZFP_ROUNDING_MODE)
ifneq ($(ZFP_ROUNDING_MODE),0)
# tight error bound requires round-first or round-last mode
ifdef ZFP_WITH_TIGHT_ERROR
ifneq ($(ZFP_WITH_TIGHT_ERROR),0)
FLAGS += -DZFP_WITH_TIGHT_ERROR
endif
endif
endif
endif
# chroma mode for ppm example
ifdef PPM_CHROMA
PPM_FLAGS += -DPPM_CHROMA=$(PPM_CHROMA)
endif
# compiler options ------------------------------------------------------------
CFLAGS = $(CSTD) $(FLAGS) $(DEFS)
CXXFLAGS = $(CXXSTD) $(FLAGS) $(DEFS)
FFLAGS = $(FSTD) $(FLAGS) $(DEFS)
|