1#!/usr/bin/make -f 2 3#variables are set by configure 4prefix = @prefix@ 5installdir = $(prefix)/ 6epidinstalldir = $(installdir)/epid-sdk 7CC = @CC@ 8CXX = @CXX@ 9CFLAGS = @CFLAGS@ 10LDFLAGS = @LDFLAGS@ 11RANLIB = @RANLIB@ 12TSS_PATH = @TSS_PATH@ 13TINY = @TINY@ 14 15#set performance affecting flags 16SIZE_CFLAGS := -O2 17 18#gcc flags 19CC_FLAGS := $(CFLAGS) $(SIZE_CFLAGS) -Werror -Wall -Wextra -Wno-missing-braces \ 20 -Wno-missing-field-initializers -Wno-unknown-pragmas -Wno-unused-function \ 21 -fno-strict-aliasing -Wno-unused-but-set-variable -Wno-comment -Wformat \ 22 -Wformat-security -fstack-protector -DNDEBUG -D_FORTIFY_SOURCE=2 23 24#intel c compiler flags 25ICC_FLAGS := $(CFLAGS) $(SIZE_CFLAGS) -Werror -Wall -Wextra -DNDEBUG \ 26 -fstack-protector -D_FORTIFY_SOURCE=2 \ 27 -Wformat -Wformat-security 28 29ifneq ($(OS),Windows_NT) 30 CC_FLAGS += -fPIC 31 ICC_FLAGS += -fPIC 32 CXX11_FLAG = -std=c++0x 33 EXE_EXTENSION = 34else 35 CC_FLAGS += -D__int64='long long' 36 CXX11_FLAG = -std=gnu++11 37 EXE_EXTENSION = .exe 38endif 39 40#g++ flags 41CXX_FLAGS := $(CC_FLAGS) $(CXX11_FLAG) 42 43#intel c++ compiler flags 44ICPC_FLAGS := $(ICC_FLAGS) $(CXX11_FLAG) 45 46#check if architecture was specified 47#or take it by shell command 48ifeq ($(findstring -m32,$(CFLAGS)),-m32) 49 ARCH = x86 50 CXXFLAGS += -m32 51 LDFLAGS += -m32 52else ifeq ($(findstring -m64,$(CFLAGS)),-m64) 53 ARCH = x86_64 54 CXXFLAGS += -m64 55 LDFLAGS += -m64 56else 57 ifeq ($(findstring arm-,$(CC)),arm-) 58 ARCH = arm 59 60 ifneq (,$(findstring gnueabihf,$(CC))) 61 ARCH := $(addsuffix hf,$(ARCH)) 62 endif 63 64 else 65 ARCH := $(shell uname -m) 66 endif 67endif 68 69#set ippflags 70IPP_FLAGS := -D_IPP_v50_ -D_IPP_DEBUG -D_DISABLE_ALG_MD5_ -D_DISABLE_ALG_SM3_ 71 72#set tools and flags depending on specified compiler 73ifeq ($(findstring icc,$(CC)),icc) 74 CFLAGS := $(ICC_FLAGS) 75 CXXFLAGS := $(ICPC_FLAGS) 76 AR = $(subst icc,xiar,$(CC)) 77else 78 CFLAGS := $(CC_FLAGS) 79 CXXFLAGS := $(CXX_FLAGS) 80endif 81 82# ld flags 83LDFLAGS += -fstack-protector 84ifneq ($(OS),Windows_NT) 85 LDFLAGS += -z noexecstack -z relro -z now -pie 86endif 87 88#gtest defines 89GTEST_DEFINES := -DGTEST_HAS_PTHREAD=0 -D_VARIADIC_MAX=10 90 91#set flags for unit tests executables 92GTEST_FLAGS = --gtest_color=yes \ 93 --gtest_print_time=1 \ 94 --gtest_output=xml 95 96export CC LDFLAGS ARCH CFLAGS 97export CXX CXXFLAGS 98export AR RANLIB 99export epidinstalldir 100export GTEST_FLAGS GTEST_DEFINES IPP_FLAGS 101export EXE_EXTENSION 102export TSS_PATH 103export TINY 104 105#output of the main parameters 106$(info $$ccompiler is [${CC}]) 107$(info $$cxxcompiler is [${CXX}]) 108$(info $$architecture is [${ARCH}]) 109#targets part 110all: 111 $(MAKE) ipp common member verifier argtable3 examples_util 112 $(MAKE) examples epid_tools 113 114clean: 115 $(MAKE) -C ./ext/ipp/sources/ippcp clean 116 $(MAKE) -C ./epid/common/ clean 117 $(MAKE) -C ./epid/member/ clean 118 $(MAKE) -C ./epid/verifier/ clean 119 $(MAKE) -C ./example/util/ clean 120 $(MAKE) -C ./example/ clean 121 $(MAKE) -C ./tools/ clean 122 $(MAKE) -C ./ext/gtest/ clean 123 $(MAKE) -C ./epid/common-testhelper/ clean 124 $(MAKE) -C ./ext/argtable3/ clean 125ifneq ("$(wildcard ./ext/google_benchmark)","") 126 $(MAKE) -C ./ext/google_benchmark/ clean 127endif 128 129install: 130 $(MAKE) -C ./ext/ipp/sources/ippcp install 131 $(MAKE) -C ./epid/common/ install 132 $(MAKE) -C ./epid/member/ install 133 $(MAKE) -C ./epid/verifier/ install 134 $(MAKE) -C ./example/ install 135 $(MAKE) -C ./tools/ install 136 $(MAKE) -C ./epid/common-testhelper/ install 137 138uninstall: 139 rm -rf $(epidinstalldir) 140 141ipp: 142 $(MAKE) -C ./ext/ipp/sources/ippcp all 143 144common-testhelper: 145 $(MAKE) -C ./epid/common-testhelper/ all 146 147common-testhelper_utest: 148 $(MAKE) -C ./epid/common-testhelper/ utest 149 150common: 151 $(MAKE) -C ./epid/common/ all 152 153common_utest: 154 $(MAKE) -C ./epid/common/ utest 155 156member: 157 $(MAKE) -C ./epid/member/ all 158 159member_utest: 160 $(MAKE) -C ./epid/member/ utest 161 162verifier: 163 $(MAKE) -C ./epid/verifier/ all 164 165verifier_utest: 166 $(MAKE) -C ./epid/verifier/ utest 167 168gtest: 169 $(MAKE) -C ./ext/gtest/ all 170 171argtable3: 172 $(MAKE) -C ./ext/argtable3/ all 173 174examples_util: 175 $(MAKE) -C ./example/util/ all 176 177utest: 178 $(MAKE) gtest common-testhelper 179 $(MAKE) common-testhelper_utest common_utest member_utest verifier_utest 180 181run_utest: 182 $(MAKE) -C ./epid/common-testhelper/ run_utest 183 $(MAKE) -C ./epid/common/ run_utest 184 $(MAKE) -C ./epid/member/ run_utest 185 $(MAKE) -C ./epid/verifier/ run_utest 186 187check: 188 $(MAKE) utest 189 $(MAKE) run_utest 190 191examples: 192 $(MAKE) -C ./example/ all 193 194epid_tools: 195 $(MAKE) -C ./tools/ all 196 197perf: 198ifneq ("$(wildcard ./ext/google_benchmark/)","") 199 $(MAKE) -C ./ext/google_benchmark/ all 200 $(MAKE) -C ./ext/google_benchmark/ utest 201 $(MAKE) -C ./ext/google_benchmark/ run_utest 202endif 203 204build: 205 $(MAKE) all 206 $(MAKE) check 207 $(MAKE) install 208