diff options
Diffstat (limited to 'src/spdk/intel-ipsec-mb/Makefile')
-rw-r--r-- | src/spdk/intel-ipsec-mb/Makefile | 380 |
1 files changed, 380 insertions, 0 deletions
diff --git a/src/spdk/intel-ipsec-mb/Makefile b/src/spdk/intel-ipsec-mb/Makefile new file mode 100644 index 00000000..2ca9510b --- /dev/null +++ b/src/spdk/intel-ipsec-mb/Makefile @@ -0,0 +1,380 @@ +# +# Copyright (c) 2012-2018, Intel Corporation +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of Intel Corporation nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +LIB = libIPSec_MB +VERSION = 0.49 +SO_VERSION = 0 +SHARED ?= y + +PREFIX ?= /usr +LIB_INSTALL_DIR ?= $(PREFIX)/lib +HDR_DIR ?= $(PREFIX)/include +MAN_DIR ?= $(PREFIX)/man/man7 +MAN1 = libipsec-mb.7 +MAN2 = libipsec-mb-dev.7 +NOLDCONFIG ?= n + +USE_YASM ?= n +YASM ?= yasm +NASM ?= nasm + +OBJ_DIR = obj + +INCLUDE_DIRS := include . +INCLUDES := $(foreach i,$(INCLUDE_DIRS),-I $i) + +CC ?= gcc + +CFLAGS := -DLINUX $(EXTRA_CFLAGS) $(INCLUDES) \ + -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith \ + -Wcast-qual -Wundef -Wwrite-strings \ + -Wformat -Wformat-security \ + -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels \ + -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition + +ifeq ($(DEBUG),y) +CFLAGS += -g -O0 -DDEBUG +LDFLAGS += -g +else +CFLAGS += -O3 -fstack-protector -D_FORTIFY_SOURCE=2 +endif + +# so or static build +ifeq ($(SHARED),y) +CFLAGS += -fPIC +LIBNAME = $(LIB).so.$(VERSION) +LIBPERM = 0755 +LDFLAGS += -z noexecstack -z relro -z now +else +# SPDK crypto needs shared but -fPIC so to make it clear what +# we are doing, we just comment out the CFLAGS below and +# explicitly set them in our relevant makefile. +#CFLAGS += -fPIE +LIBNAME = $(LIB).a +LIBPERM = 0644 +LDFLAGS += -g +endif + +ASM_INCLUDE_DIRS := include . avx avx2 avx512 sse + +YASM_INCLUDES := $(foreach i,$(ASM_INCLUDE_DIRS),-I $i) +YASM_FLAGS := -f x64 -f elf64 -X gnu -g dwarf2 -DLINUX -D__linux__ $(YASM_INCLUDES) + +NASM_INCLUDES := $(foreach i,$(ASM_INCLUDE_DIRS),-I$i/) +NASM_FLAGS := -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ $(NASM_INCLUDES) + +lib_objs := \ + aes128_cbc_dec_by4_sse.o \ + aes128_cbc_dec_by8_avx.o \ + aes128_cntr_by4_sse.o \ + aes128_cntr_by8_avx.o \ + aes128_ecbenc_x3.o \ + aes192_cbc_dec_by4_sse.o \ + aes192_cbc_dec_by8_avx.o \ + aes192_cntr_by4_sse.o \ + aes192_cntr_by8_avx.o \ + aes256_cbc_dec_by4_sse.o \ + aes256_cbc_dec_by8_avx.o \ + aes256_cntr_by4_sse.o \ + aes256_cntr_by8_avx.o \ + aes_cfb_128_sse.o \ + aes_cfb_128_avx.o \ + aes128_cbc_mac_x4.o \ + aes128_cbc_mac_x8.o \ + aes_cbc_enc_128_x4.o \ + aes_cbc_enc_128_x8.o \ + aes_cbc_enc_192_x4.o \ + aes_cbc_enc_192_x8.o \ + aes_cbc_enc_256_x4.o \ + aes_cbc_enc_256_x8.o \ + aes_keyexp_128.o \ + aes_keyexp_192.o \ + aes_keyexp_256.o \ + aes_xcbc_mac_128_x4.o \ + aes_xcbc_mac_128_x8.o \ + aes_cmac_subkey_gen.o \ + mb_mgr_aes192_flush_avx.o \ + mb_mgr_aes192_flush_sse.o \ + mb_mgr_aes192_submit_avx.o \ + mb_mgr_aes192_submit_sse.o \ + mb_mgr_aes256_flush_avx.o \ + mb_mgr_aes256_flush_sse.o \ + mb_mgr_aes256_submit_avx.o \ + mb_mgr_aes256_submit_sse.o \ + mb_mgr_aes_flush_avx.o \ + mb_mgr_aes_flush_sse.o \ + mb_mgr_aes_submit_avx.o \ + mb_mgr_aes_submit_sse.o \ + mb_mgr_aes_xcbc_flush_avx.o \ + mb_mgr_aes_xcbc_flush_sse.o \ + mb_mgr_aes_xcbc_submit_avx.o \ + mb_mgr_aes_xcbc_submit_sse.o \ + mb_mgr_hmac_flush_avx.o \ + mb_mgr_hmac_flush_avx2.o \ + mb_mgr_hmac_flush_sse.o \ + mb_mgr_hmac_flush_ni_sse.o \ + mb_mgr_hmac_flush_avx512.o \ + mb_mgr_hmac_md5_flush_avx.o \ + mb_mgr_hmac_md5_flush_avx2.o \ + mb_mgr_hmac_md5_flush_sse.o \ + mb_mgr_hmac_md5_submit_avx.o \ + mb_mgr_hmac_md5_submit_avx2.o \ + mb_mgr_hmac_md5_submit_sse.o \ + mb_mgr_hmac_sha_224_flush_avx.o \ + mb_mgr_hmac_sha_224_flush_avx2.o \ + mb_mgr_hmac_sha_224_flush_avx512.o \ + mb_mgr_hmac_sha_224_flush_sse.o \ + mb_mgr_hmac_sha_224_flush_ni_sse.o \ + mb_mgr_hmac_sha_224_submit_avx.o \ + mb_mgr_hmac_sha_224_submit_avx2.o \ + mb_mgr_hmac_sha_224_submit_avx512.o \ + mb_mgr_hmac_sha_224_submit_sse.o \ + mb_mgr_hmac_sha_224_submit_ni_sse.o \ + mb_mgr_hmac_sha_256_flush_avx.o \ + mb_mgr_hmac_sha_256_flush_avx2.o \ + mb_mgr_hmac_sha_256_flush_sse.o \ + mb_mgr_hmac_sha_256_flush_ni_sse.o \ + mb_mgr_hmac_sha_256_flush_avx512.o \ + mb_mgr_hmac_sha_256_submit_avx.o \ + mb_mgr_hmac_sha_256_submit_avx2.o \ + mb_mgr_hmac_sha_256_submit_sse.o \ + mb_mgr_hmac_sha_256_submit_ni_sse.o \ + mb_mgr_hmac_sha_256_submit_avx512.o \ + mb_mgr_hmac_sha_384_flush_avx.o \ + mb_mgr_hmac_sha_384_flush_avx2.o \ + mb_mgr_hmac_sha_384_flush_avx512.o \ + mb_mgr_hmac_sha_384_flush_sse.o \ + mb_mgr_hmac_sha_384_submit_avx.o \ + mb_mgr_hmac_sha_384_submit_avx2.o \ + mb_mgr_hmac_sha_384_submit_avx512.o \ + mb_mgr_hmac_sha_384_submit_sse.o \ + mb_mgr_hmac_sha_512_flush_avx.o \ + mb_mgr_hmac_sha_512_flush_avx2.o \ + mb_mgr_hmac_sha_512_flush_avx512.o \ + mb_mgr_hmac_sha_512_flush_sse.o \ + mb_mgr_hmac_sha_512_submit_avx.o \ + mb_mgr_hmac_sha_512_submit_avx2.o \ + mb_mgr_hmac_sha_512_submit_avx512.o \ + mb_mgr_hmac_sha_512_submit_sse.o \ + mb_mgr_hmac_submit_avx.o \ + mb_mgr_hmac_submit_avx2.o \ + mb_mgr_hmac_submit_sse.o \ + mb_mgr_hmac_submit_ni_sse.o \ + mb_mgr_hmac_submit_avx512.o \ + mb_mgr_des_avx512.o \ + md5_x4x2_avx.o \ + md5_x4x2_sse.o \ + md5_x8x2_avx2.o \ + save_xmms.o \ + sha1_mult_avx.o \ + sha1_mult_sse.o \ + sha1_ni_x2_sse.o \ + sha1_one_block_avx.o \ + sha1_one_block_sse.o \ + sha1_x8_avx2.o \ + sha1_x16_avx512.o \ + sha224_one_block_avx.o \ + sha224_one_block_sse.o \ + sha256_oct_avx2.o \ + sha256_one_block_avx.o \ + sha256_one_block_sse.o \ + sha256_ni_x2_sse.o \ + sha256_x16_avx512.o \ + sha384_one_block_avx.o \ + sha384_one_block_sse.o \ + sha512_one_block_avx.o \ + sha512_one_block_sse.o \ + sha512_x2_avx.o \ + sha512_x2_sse.o \ + sha512_x4_avx2.o \ + sha512_x8_avx512.o \ + sha_256_mult_avx.o \ + sha_256_mult_sse.o \ + \ + aes_xcbc_expand_key.o \ + alloc.o \ + mb_mgr_avx.o \ + mb_mgr_avx2.o \ + mb_mgr_avx512.o \ + mb_mgr_sse.o \ + md5_one_block.o \ + des_key.o \ + des_basic.o \ + des_x16_avx512.o + +gcm_objs := gcm128_sse.o gcm192_sse.o gcm256_sse.o \ + gcm128_avx_gen2.o gcm192_avx_gen2.o gcm256_avx_gen2.o \ + gcm128_avx_gen4.o gcm192_avx_gen4.o gcm256_avx_gen4.o + +ifeq ($(NO_GCM), y) +obj2_files := $(lib_objs:%=$(OBJ_DIR)/%) +CFLAGS += -DNO_GCM +else +obj2_files := $(lib_objs:%=$(OBJ_DIR)/%) $(gcm_objs:%=$(OBJ_DIR)/%) +endif + +all: $(LIBNAME) + +$(LIBNAME): $(obj2_files) +ifeq ($(SHARED),y) + $(CC) -shared -Wl,-soname,$(LIB).so.$(SO_VERSION) -o $(LIBNAME) $^ -lc + ln -f -s $(LIBNAME) $(LIB).so.$(SO_VERSION) + ln -f -s $(LIB).so.$(SO_VERSION) $(LIB).so +else + $(AR) -qcs $@ $^ +endif + +.PHONY: install +install: $(LIBNAME) + install -m 0644 intel-ipsec-mb.h $(HDR_DIR) + install -d $(LIB_INSTALL_DIR) + install -m $(LIBPERM) $(LIBNAME) $(LIB_INSTALL_DIR) + install -d $(MAN_DIR) + install -m 0444 $(MAN1) $(MAN_DIR) + install -m 0444 $(MAN2) $(MAN_DIR) +ifeq ($(SHARED),y) + cd $(LIB_INSTALL_DIR); \ + ln -f -s $(LIB).so.$(VERSION) $(LIB).so.$(SO_VERSION); \ + ln -f -s $(LIB).so.$(SO_VERSION) $(LIB).so +ifneq ($(NOLDCONFIG),y) + ldconfig +endif +endif + +.PHONY: uninstall +uninstall: $(LIBNAME) + -rm -f $(HDR_DIR)/intel-ipsec-mb.h + -rm -f $(LIB_INSTALL_DIR)/$(LIBNAME) + -rm -f $(MAN_DIR)/$(MAN1) + -rm -f $(MAN_DIR)/$(MAN2) +ifeq ($(SHARED),y) + -rm -f $(LIB_INSTALL_DIR)/$(LIB).so.$(SO_VERSION) + -rm -f $(LIB_INSTALL_DIR)/$(LIB).so +endif + + +$(obj2_files): | $(OBJ_DIR) + +$(OBJ_DIR)/%.o:%.c + @ echo "Making object file $@ " + $(CC) -c $(CFLAGS) $< -o $@ + +$(OBJ_DIR)/%.o:%.asm + @ echo "Making object file $@ " +ifeq ($(USE_YASM),y) + $(YASM) $(YASM_FLAGS) $< -o $@ +else + $(NASM) -o $@ $(NASM_FLAGS) $< +endif + +$(OBJ_DIR)/%.o:sse/%.c + @ echo "Making object file $@ " + $(CC) -c $(CFLAGS) $< -o $@ + +$(OBJ_DIR)/%.o:sse/%.asm + @ echo "Making object file $@ " +ifeq ($(USE_YASM),y) + $(YASM) $(YASM_FLAGS) $< -o $@ +else + $(NASM) -o $@ $(NASM_FLAGS) $< +endif + +$(OBJ_DIR)/%.o:avx/%.c + @ echo "Making object file $@ " + $(CC) -c $(CFLAGS) $< -o $@ + +$(OBJ_DIR)/%.o:avx/%.asm + @ echo "Making object file $@ " +ifeq ($(USE_YASM),y) + $(YASM) $(YASM_FLAGS) $< -o $@ +else + $(NASM) -o $@ $(NASM_FLAGS) $< +endif + +$(OBJ_DIR)/%.o:avx2/%.c + @ echo "Making object file $@ " + $(CC) -c $(CFLAGS) $< -o $@ + +$(OBJ_DIR)/%.o:avx2/%.asm + @ echo "Making object file $@ " +ifeq ($(USE_YASM),y) + $(YASM) $(YASM_FLAGS) $< -o $@ +else + $(NASM) -o $@ $(NASM_FLAGS) $< +endif + +$(OBJ_DIR)/%.o:avx512/%.c + @ echo "Making object file $@ " + $(CC) -c $(CFLAGS) $< -o $@ + +$(OBJ_DIR)/%.o:avx512/%.asm + @ echo "Making object file $@ " +ifeq ($(USE_YASM),y) + $(YASM) $(YASM_FLAGS) $< -o $@ +else + $(NASM) -o $@ $(NASM_FLAGS) $< +endif + +$(OBJ_DIR)/%.o:include/%.asm + @ echo "Making object file $@ " +ifeq ($(USE_YASM),y) + $(YASM) $(YASM_FLAGS) $< -o $@ +else + $(NASM) -o $@ $(NASM_FLAGS) $< +endif + +$(OBJ_DIR): + mkdir $(OBJ_DIR) + +.PHONY: TAGS +TAGS: + find ./ -name '*.[ch]' | etags - + find ./ -name '*.asm' | etags -a - + find ./ -name '*.inc' | etags -a - + +.PHONY: clean +clean: + rm -Rf $(obj2_files) + rm -f $(LIB).a $(LIB).so* + +SOURCES_DIRS := . sse avx avx2 avx512 include +SOURCES := $(foreach dir,$(SOURCES_DIRS),$(wildcard $(dir)/*.[ch]) $(wildcard $(dir)/*.asm) $(wildcard $(dir)/*.inc)) +SOURCES_STYLE := $(foreach infile,$(SOURCES),-f $(infile)) +CHECKPATCH?=checkpatch.pl +# SPACING - produces false positives with tyepdefs and * +# CONSTANT_COMPARISON - forbids defensive programming technique +# USE_FUNC - produces false positives for Windows target +# INITIALISED_STATIC, LEADING_SPACE, SPLIT_STRING, CODE_INDENT, +# PREFER_ALIGNED, UNSPECIFIED_INT, ARRAY_SIZE, GLOBAL_INITIALISERS, +# NEW_TYPEDEFS, AVOID_EXTERNS, COMPLEX_MACRO, BLOCK_COMMENT_STYLE +# - found obsolete in this project +.PHONY: style +style: + $(CHECKPATCH) --no-tree --no-signoff --emacs --no-color \ +--ignore CODE_INDENT,INITIALISED_STATIC,LEADING_SPACE,SPLIT_STRING,\ +UNSPECIFIED_INT,ARRAY_SIZE,BLOCK_COMMENT_STYLE,GLOBAL_INITIALISERS,\ +NEW_TYPEDEFS,AVOID_EXTERNS,COMPLEX_MACRO,PREFER_ALIGNED,USE_FUNC,\ +CONSTANT_COMPARISON,SPACING $(SOURCES_STYLE) |