acrn-hypervisor/misc/tools/acrn-crashlog/Makefile

159 lines
5.1 KiB
Makefile

#
# ACRN-Crashlog Makefile
#
include ../../../paths.make
BASEDIR := $(shell pwd)
OUT_DIR ?= $(BASEDIR)
BUILDDIR := $(OUT_DIR)/acrn-crashlog
CC ?= gcc
RM = rm
RELEASE ?= 0
ifeq ($(RELEASE),0)
CFLAGS += -DDEBUG_ACRN_CRASHLOG
endif
CFLAGS := -g -O0 -std=gnu11
CFLAGS += -D_GNU_SOURCE
CFLAGS += -m64
CFLAGS += -Wall -ffunction-sections
CFLAGS += -Werror
CFLAGS += -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
CFLAGS += -Wformat -Wformat-security -fno-strict-aliasing
CFLAGS += -fpie
CFLAGS += -Wall -Wextra -pedantic
CFLAGS += -I$(BASEDIR)/include
CFLAGS += -I$(BASEDIR)/include/public
GCC_MAJOR=$(shell echo __GNUC__ | $(CC) -E -x c - | tail -n 1)
GCC_MINOR=$(shell echo __GNUC_MINOR__ | $(CC) -E -x c - | tail -n 1)
#enable stack overflow check
STACK_PROTECTOR := 1
ifdef STACK_PROTECTOR
ifeq (true, $(shell [ $(GCC_MAJOR) -gt 4 ] && echo true))
CFLAGS += -fstack-protector-strong
else
ifeq (true, $(shell [ $(GCC_MAJOR) -eq 4 ] && [ $(GCC_MINOR) -ge 9 ] && echo true))
CFLAGS += -fstack-protector-strong
else
CFLAGS += -fstack-protector
endif
endif
endif
LDFLAGS += -Wl,-z,noexecstack
LDFLAGS += -Wl,-z,relro,-z,now
LDFLAGS += -pie
INCLUDE := -I $(BASEDIR)/common/include
export INCLUDE
export BUILDDIR
export CC
export RM
PKG_CONFIG_PATH := $(PKG_CONFIG_PATH):$(SYSROOT)/usr/lib/pkgconfig
PKG_CONFIG_PATH := $(PKG_CONFIG_PATH):$(SYSROOT)/usr/share/pkgconfig
PKG_CONFIG_PATH := $(PKG_CONFIG_PATH):$(SYSROOT)/usr/local/lib/pkgconfig
PKG_CONFIG_PATH := $(PKG_CONFIG_PATH):$(SYSROOT)/usr/local/share/pkgconfig
PKG_CONFIG_PATH := $(PKG_CONFIG_PATH):$(SYSROOT)/usr/lib32/pkgconfig
PKG_CONFIG_PATH := $(PKG_CONFIG_PATH):$(SYSROOT)/usr/lib64/pkgconfig
EXTRA_LIBS = -lsystemd-journal
PKG_CONFIG := $(shell export PKG_CONFIG_PATH=$(PKG_CONFIG_PATH); \
pkg-config --libs libsystemd)
LIB_EXIST := $(findstring lsystemd, $(PKG_CONFIG))
ifeq ($(strip $(LIB_EXIST)),lsystemd)
EXTRA_LIBS := -lsystemd
endif
PKG_CONFIG := $(shell export PKG_CONFIG_PATH=$(PKG_CONFIG_PATH); \
pkg-config --libs libtelemetry)
LIB_EXIST := $(findstring ltelemetry, $(PKG_CONFIG))
ifeq ($(strip $(LIB_EXIST)),ltelemetry)
CFLAGS += -DHAVE_TELEMETRICS_CLIENT
EXTRA_LIBS += -ltelemetry
endif
export CFLAGS
export LDFLAGS
export EXTRA_LIBS
.PHONY:all
all:
$(MAKE) -C common
$(MAKE) -C acrnprobe
$(MAKE) -C usercrash
.PHONY:clean
clean:
$(MAKE) -C common clean
$(MAKE) -C acrnprobe clean
$(MAKE) -C usercrash clean
@if [ -d "$(BUILDDIR)" ]; then \
$(RM) -rf $(BUILDDIR); \
fi
.PHONY:install
install:
@install -d $(DESTDIR)$(bindir)/
@install -p -D -m 0755 $(BUILDDIR)/acrnprobe/bin/acrnprobe $(DESTDIR)$(bindir)/
@install -p -D -m 0755 $(BUILDDIR)/usercrash/bin/debugger $(DESTDIR)$(bindir)/
@install -p -D -m 0755 $(BUILDDIR)/usercrash/bin/usercrash_c $(DESTDIR)$(bindir)/
@install -p -D -m 0755 $(BUILDDIR)/usercrash/bin/usercrash_s $(DESTDIR)$(bindir)/
@install -p -D -m 0755 data/crashlogctl $(DESTDIR)$(bindir)/
@install -p -D -m 0755 data/usercrash-wrapper $(DESTDIR)$(bindir)/
@install -d $(DESTDIR)$(datadir)/acrn/crashlog
@install -p -D -m 0644 data/40-watchdog.conf $(DESTDIR)$(datadir)/acrn/crashlog
@install -p -D -m 0644 data/80-coredump.conf $(DESTDIR)$(datadir)/acrn/crashlog
@install -d $(DESTDIR)$(datadir)/defaults/telemetrics/
@install -p -D -m 0644 data/acrnprobe.xml $(DESTDIR)$(datadir)/defaults/telemetrics/
@install -d $(DESTDIR)$(systemd_unitdir)/system/
@install -p -D -m 0644 data/acrnprobe.service $(DESTDIR)$(systemd_unitdir)/system/
@install -p -D -m 0644 data/usercrash.service $(DESTDIR)$(systemd_unitdir)/system/
@install -d $(DESTDIR)$(libdir)/tmpfiles.d
@install -p -D -m 0644 data/acrn-crashlog-dirs.conf $(DESTDIR)$(libdir)/tmpfiles.d/
.PHONY:uninstall
uninstall:
@if [ -e "$(DESTDIR)$(bindir)/acrnprobe" ];then \
$(RM) $(DESTDIR)$(bindir)/acrnprobe; \
fi
@if [ -e "$(DESTDIR)$(bindir)/crashlogctl" ];then \
$(DESTDIR)$(bindir)/crashlogctl disable && \
$(RM) $(DESTDIR)$(bindir)/crashlogctl; \
fi
@if [ -e "$(DESTDIR)$(bindir)/debugger" ];then \
$(RM) $(DESTDIR)$(bindir)/debugger; \
fi
@if [ -e "$(DESTDIR)$(bindir)/usercrash_c" ];then \
$(RM) $(DESTDIR)$(bindir)/usercrash_c; \
fi
@if [ -e "$(DESTDIR)$(bindir)/usercrash_s" ];then \
$(RM) $(DESTDIR)$(bindir)/usercrash_s; \
fi
@if [ -e "$(DESTDIR)$(bindir)/usercrash-wrapper" ];then \
$(RM) $(DESTDIR)$(bindir)/usercrash-wrapper; \
fi
@if [ -e "$(DESTDIR)$(datadir)/acrn/crashlog/40-watchdog.conf" ];then \
$(RM) $(DESTDIR)$(datadir)/acrn/crashlog/40-watchdog.conf; \
fi
@if [ -e "$(DESTDIR)$(datadir)/acrn/crashlog/80-coredump.conf" ];then \
$(RM) $(DESTDIR)$(datadir)/acrn/crashlog/80-coredump.conf; \
fi
@if [ -e "$(DESTDIR)$(datadir)/defaults/telemetrics/acrnprobe.xml" ];then \
$(RM) $(DESTDIR)$(datadir)/defaults/telemetrics/acrnprobe.xml; \
fi
@if [ -e "$(DESTDIR)$(systemd_unitdir)/system/acrnprobe.service" ];then \
$(RM) $(DESTDIR)$(systemd_unitdir)/system/acrnprobe.service; \
fi
@if [ -e "$(DESTDIR)$(systemd_unitdir)/system/usercrash.service" ];then \
$(RM) $(DESTDIR)$(systemd_unitdir)/system/usercrash.service; \
fi
@if [ -e "$(DESTDIR)$(libdir)/tmpfiles.d/acrn-crashlog-dirs.conf" ];then \
$(RM) $(DESTDIR)$(libdir)/tmpfiles.d/acrn-crashlog-dirs.conf; \
fi