96 lines
2.6 KiB
Makefile
96 lines
2.6 KiB
Makefile
#
|
|
# Copyright(c) 2012-2021 Intel Corporation
|
|
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
#
|
|
|
|
VERSION_FILE := $(M)/../.metadata/cas_version
|
|
|
|
check_cflag=$(shell echo "" | \
|
|
gcc -c -xc ${1} -o /dev/null - 2>/dev/null; \
|
|
if [ $$? -eq 0 ]; then echo 1; else echo 0; fi; )
|
|
|
|
-include $(VERSION_FILE)
|
|
EXTRA_CFLAGS += -DCAS_VERSION_MAIN=$(CAS_VERSION_MAIN)
|
|
EXTRA_CFLAGS += -DCAS_VERSION_MAJOR=$(CAS_VERSION_MAJOR)
|
|
EXTRA_CFLAGS += -DCAS_VERSION_MINOR=$(CAS_VERSION_MINOR)
|
|
EXTRA_CFLAGS += -DCAS_VERSION=\"$(CAS_VERSION)\"
|
|
EXTRA_CFLAGS += -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security
|
|
|
|
EXTRA_CFLAGS += -I$(M)
|
|
EXTRA_CFLAGS += -I$(M)/cas_cache
|
|
EXTRA_CFLAGS += -I$(M)/include
|
|
EXTRA_CFLAGS += -DCAS_KERNEL=\"$(KERNELRELEASE)\"
|
|
|
|
check_header=$(shell echo "\#include <${1}>" | \
|
|
gcc -c -xc -o /dev/null - 2>/dev/null; \
|
|
if [ $$? -eq 0 ]; then echo 1; else echo 0; fi; )
|
|
|
|
INCDIR = $(PWD)/include
|
|
|
|
NVME_FULL = 0
|
|
|
|
SLES ?= $(shell cat /etc/SuSE-release 2>/dev/null)
|
|
ifneq ($(SLES),)
|
|
EXTRA_CFLAGS += -DCAS_UAPI_LINUX_NVME_IOCTL
|
|
EXTRA_CFLAGS += -DCAS_SLES
|
|
SLES_VERSION := $(shell cat /etc/os-release |\
|
|
sed -n 's/VERSION="\([0-9]\+\)-\(.\+\)"/\1\2/p')
|
|
EXTRA_CFLAGS += -DCAS_SLES$(SLES_VERSION)
|
|
INCDIR = ""
|
|
NVME_PARTIAL = 1
|
|
endif
|
|
|
|
ifeq ($(call check_header,$(INCDIR)/uapi/nvme.h), 1)
|
|
EXTRA_CFLAGS += -DCAS_UAPI_NVME_IOCTL
|
|
EXTRA_CFLAGS += -DCAS_UAPI_NVME
|
|
NVME_PARTIAL = 1
|
|
endif
|
|
|
|
ifeq ($(call check_header,$(INCDIR)/uapi/linux/nvme.h), 1)
|
|
EXTRA_CFLAGS += -DCAS_UAPI_LINUX_NVME
|
|
NVME_PARTIAL = 1
|
|
endif
|
|
|
|
ifeq ($(call check_header,$(INCDIR)/uapi/linux/nvme_ioctl.h), 1)
|
|
EXTRA_CFLAGS += -DCAS_UAPI_LINUX_NVME_IOCTL
|
|
NVME_PARTIAL = 1
|
|
ifeq ($(shell cat /etc/redhat-release 2>/dev/null | grep "\(Red Hat\|CentOS\) [a-zA-Z ]* 7\.[45]" | wc -l), 1)
|
|
NVME_FULL = 1
|
|
endif
|
|
endif
|
|
|
|
KERNEL_VERSION = $(shell echo $(KERNELRELEASE) | cut -d'.' -f1)
|
|
KERNEL_MAJOR = $(shell echo $(KERNELRELEASE) | cut -d'.' -f2)
|
|
|
|
ifeq ($(shell expr $(KERNEL_VERSION) \> 4 \| $(KERNEL_VERSION) \== 4 \& $(KERNEL_MAJOR) \> 11),1)
|
|
NVME_FULL = 0
|
|
endif
|
|
|
|
ifeq ($(shell expr $(KERNEL_VERSION) \> 5 \| $(KERNEL_VERSION) \== 5 \& $(KERNEL_MAJOR) \> 7),1)
|
|
NVME_PARTIAL = 0
|
|
endif
|
|
|
|
ifeq ($(NVME_PARTIAL),1)
|
|
EXTRA_CFLAGS += -DCAS_NVME_PARTIAL
|
|
endif
|
|
|
|
ifeq ($(NVME_FULL),1)
|
|
EXTRA_CFLAGS += -DCAS_NVME_FULL
|
|
endif
|
|
|
|
EXTRA_CFLAGS += -Werror
|
|
|
|
EXTRA_LDFLAGS += -z noexecstack -z relro -z now
|
|
|
|
# workaround for missing objtool in kernel devel package
|
|
ifeq ($(shell expr $(KERNEL_VERSION) == 4 \& $(KERNEL_MAJOR) == 14),1)
|
|
ifeq ($(CONFIG_STACK_VALIDATION), y)
|
|
OBJTOOL=$(shell [ -f tools/objtool/objtool ] && echo "y")
|
|
ifneq ($(OBJTOOL), y)
|
|
CONFIG_STACK_VALIDATION=
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
-include $(M)/extra.mk
|