diff options
Diffstat (limited to 'src/compat/Kbuild.include')
-rw-r--r-- | src/compat/Kbuild.include | 67 |
1 files changed, 47 insertions, 20 deletions
diff --git a/src/compat/Kbuild.include b/src/compat/Kbuild.include index 94159fc..db4b0a6 100644 --- a/src/compat/Kbuild.include +++ b/src/compat/Kbuild.include @@ -1,52 +1,69 @@ # SPDX-License-Identifier: GPL-2.0 # -# Copyright (C) 2015-2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. +# Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. -ifeq ($(wildcard $(src)/compat/compat.h),) -cmd_include_path_prefix := $(srctree)/$(src) -else -cmd_include_path_prefix := $(src) -endif +kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src)) -ccflags-y += -include $(cmd_include_path_prefix)/compat/compat.h -asflags-y += -include $(cmd_include_path_prefix)/compat/compat-asm.h +ccflags-y += -include $(kbuild-dir)/compat/compat.h +asflags-y += -include $(kbuild-dir)/compat/compat-asm.h ifeq ($(wildcard $(srctree)/include/linux/ptr_ring.h),) -ccflags-y += -I$(src)/compat/ptr_ring/include +ccflags-y += -I$(kbuild-dir)/compat/ptr_ring/include endif ifeq ($(wildcard $(srctree)/include/linux/siphash.h),) -ccflags-y += -I$(src)/compat/siphash/include +ccflags-y += -I$(kbuild-dir)/compat/siphash/include wireguard-y += compat/siphash/siphash.o endif ifeq ($(wildcard $(srctree)/include/net/dst_cache.h),) -ccflags-y += -I$(src)/compat/dst_cache/include +ccflags-y += -I$(kbuild-dir)/compat/dst_cache/include wireguard-y += compat/dst_cache/dst_cache.o endif -ifeq ($(wildcard $(srctree)/arch/x86/include/asm/intel-family.h),) -ccflags-y += -I$(src)/compat/intel-family/include +ifeq ($(wildcard $(srctree)/arch/x86/include/asm/intel-family.h)$(CONFIG_X86),y) +ccflags-y += -I$(kbuild-dir)/compat/intel-family-x86/include +endif + +ifeq ($(wildcard $(srctree)/arch/x86/include/asm/fpu/api.h)$(CONFIG_X86),y) +ccflags-y += -I$(kbuild-dir)/compat/fpu-x86/include endif -ifeq ($(wildcard $(srctree)/arch/x86/include/asm/fpu/api.h),) -ccflags-y += -I$(src)/compat/fpu/include +ifeq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/simd.h)$(shell grep -s -F "generic-y += simd.h" "$(srctree)/arch/$(SRCARCH)/Kbuild" "$(srctree)/arch/$(SRCARCH)/Makefile"),) +ccflags-y += -I$(kbuild-dir)/compat/simd-asm/include endif -ifeq ($(wildcard $(srctree)/arch/x86/include/asm/simd.h),) -ccflags-y += -I$(src)/compat/simd/include +ifeq ($(wildcard $(srctree)/include/linux/simd.h),) +ccflags-y += -I$(kbuild-dir)/compat/simd/include endif ifeq ($(wildcard $(srctree)/include/net/udp_tunnel.h),) -ccflags-y += -I$(src)/compat/udp_tunnel/include +ccflags-y += -I$(kbuild-dir)/compat/udp_tunnel/include wireguard-y += compat/udp_tunnel/udp_tunnel.o endif -ifeq ($(shell grep -F "int crypto_memneq" "$(srctree)/include/crypto/algapi.h"),) -ccflags-y += -include $(cmd_include_path_prefix)/compat/memneq/include.h +ifeq ($(shell grep -s -F "int crypto_memneq" "$(srctree)/include/crypto/algapi.h"),) +ccflags-y += -include $(kbuild-dir)/compat/memneq/include.h wireguard-y += compat/memneq/memneq.o endif +ifeq ($(shell grep -s -F "addr_gen_mode" "$(srctree)/include/linux/ipv6.h"),) +ccflags-y += -DCOMPAT_CANNOT_USE_DEV_CNF +endif + +ifdef CONFIG_HZ +ifeq ($(wildcard $(srctree)/include/generated/timeconst.h),) +ccflags-y += $(shell echo 'define gcd(a,b){auto t;while(b){t=b;b=a%b;a=t;};return a;};hz=$(CONFIG_HZ);cd=gcd(hz,1000000);print "-DHZ_TO_USEC_NUM=",1000000/cd," -DHZ_TO_USEC_DEN=",hz/cd;halt;' | bc -q) +endif +endif + +ifeq ($(wildcard $(srctree)/arch/arm/include/asm/neon.h)$(CONFIG_ARM),y) +ccflags-y += -I$(kbuild-dir)/compat/neon-arm/include +endif +ifeq ($(wildcard $(srctree)/arch/arm64/include/asm/neon.h)$(CONFIG_ARM64),y) +ccflags-y += -I$(kbuild-dir)/compat/neon-arm/include +endif + ifeq ($(CONFIG_X86_64),y) ifeq ($(ssse3_instr),) ssse3_instr := $(call as-instr,pshufb %xmm0$(comma)%xmm0,-DCONFIG_AS_SSSE3=1) @@ -68,4 +85,14 @@ ifeq ($(CONFIG_X86_64),y) ccflags-y += $(avx512_instr) asflags-y += $(avx512_instr) endif + ifeq ($(bmi2_instr),) + bmi2_instr :=$(call as-instr,mulx %rax$(comma)%rax$(comma)%rax,-DCONFIG_AS_BMI2=1) + ccflags-y += $(bmi2_instr) + asflags-y += $(bmi2_instr) + endif + ifeq ($(adx_instr),) + adx_instr :=$(call as-instr,adcx %rax$(comma)%rax,-DCONFIG_AS_ADX=1) + ccflags-y += $(adx_instr) + asflags-y += $(adx_instr) + endif endif |