mirror of
https://github.com/AuxXxilium/redpill-lkm5.git
synced 2024-11-23 23:11:02 +07:00
98 lines
5.1 KiB
Makefile
98 lines
5.1 KiB
Makefile
PWD := $(shell pwd)
|
|
|
|
ifeq ($(LINUX_SRC),)
|
|
LINUX_SRC := "$(PWD)/../linux-3.10.x-bromolow-25426"
|
|
endif
|
|
|
|
SRCS-$(DBG_EXECVE) += debug/debug_execve.c
|
|
ccflags-$(DBG_EXECVE) += -DRPDBG_EXECVE
|
|
SRCS-y += compat/string_compat.c \
|
|
\
|
|
internal/helper/math_helper.c internal/helper/memory_helper.c internal/helper/symbol_helper.c \
|
|
internal/scsi/scsi_toolbox.c internal/scsi/scsi_notifier_list.c internal/scsi/scsi_notifier.c \
|
|
internal/override/override_symbol.c internal/override/override_syscall.c internal/intercept_execve.c \
|
|
internal/call_protected.c internal/intercept_driver_register.c internal/stealth/sanitize_cmdline.c \
|
|
internal/stealth.c internal/virtual_pci.c internal/uart/uart_swapper.c internal/uart/vuart_virtual_irq.c \
|
|
internal/uart/virtual_uart.c \
|
|
\
|
|
config/cmdline_delegate.c config/runtime_config.c \
|
|
\
|
|
shim/boot_dev/boot_shim_base.c shim/boot_dev/usb_boot_shim.c shim/boot_dev/fake_sata_boot_shim.c \
|
|
shim/boot_dev/native_sata_boot_shim.c shim/boot_device_shim.c \
|
|
\
|
|
shim/storage/smart_shim.c shim/storage/sata_port_shim.c shim/storage/scsi_disk_serial.c \
|
|
shim/bios/bios_hwcap_shim.c shim/bios/bios_hwmon_shim.c shim/bios/rtc_proxy.c \
|
|
shim/bios/bios_shims_collection.c shim/bios/bios_psu_status_shim.c shim/bios_shim.c \
|
|
shim/block_fw_update_shim.c shim/disable_exectutables.c shim/pci_shim.c shim/pmu_shim.c shim/uart_fixer.c \
|
|
\
|
|
redpill_main.c
|
|
OBJS = $(SRCS-y:.c=.o)
|
|
#this module name CAN NEVER be the same as the main file (or it will get weird ;)) and the main file has to be included
|
|
# in object file. So here we say the module file(s) which will create .ko(s) is "redpill.o" and that other objects which
|
|
# must be linked (redpill-objs variable)
|
|
obj-m += redpill.o
|
|
redpill-objs := $(OBJS)
|
|
ccflags-y += -std=gnu99 -fgnu89-inline -Wno-declaration-after-statement
|
|
ccflags-y += -I$(src)/compat/toolkit/include
|
|
|
|
ifndef RP_VERSION_POSTFIX
|
|
RP_VERSION_POSTFIX := $(shell git rev-parse --is-inside-work-tree 1>/dev/null 2>/dev/null && echo -n "git-" && git log -1 --pretty='%h' 2>/dev/null || date '+at-%Y_%m_%d-%H_%M_%S')
|
|
endif
|
|
ccflags-y += -DRP_VERSION_POSTFIX="\"$(RP_VERSION_POSTFIX)\""
|
|
|
|
# Optimization settings per-target. Since LKM makefiles are evaluated twice (first with the specified target and second
|
|
# time with target "modules") we need to set the custom target variable during first parsing and based on that variable
|
|
# set additional CC-flags when the makefile is parsed for the second time
|
|
ifdef RP_MODULE_TARGET
|
|
ccflags-dev = -g -fno-inline -DDEBUG
|
|
ccflags-test = -O3
|
|
ccflags-prod = -O3
|
|
ccflags-y += -DRP_MODULE_TARGET_VER=${RP_MODULE_TARGET_VER} # this is assumed to be defined when target is specified
|
|
|
|
$(info RP-TARGET SPECIFIED AS ${RP_MODULE_TARGET} v${RP_MODULE_TARGET_VER})
|
|
|
|
# stealth mode can always be overridden but there are sane per-target defaults (see above)
|
|
ifneq ($(STEALTH_MODE),)
|
|
$(info STEATLH MODE OVERRIDE: ${STEALTH_MODE})
|
|
ccflags-y += -DSTEALTH_MODE=$(STEALTH_MODE)
|
|
else
|
|
ccflags-dev += -DSTEALTH_MODE=1
|
|
ccflags-test += -DSTEALTH_MODE=2
|
|
ccflags-prod += -DSTEALTH_MODE=3
|
|
endif
|
|
|
|
ccflags-y += ${ccflags-${RP_MODULE_TARGET}}
|
|
else
|
|
# during the first read of the makefile we don't get the RP_MODULE_TARGET - if for some reason we didn't get it during
|
|
# the actual build phase it should explode (and it will if an unknown GCC flag is specified). We cannot sue makefile
|
|
# error here as we don't know if the file is parsed for the first time or the second time. Just Kbuild peculiarities ;)
|
|
ccflags-y = --bogus-flag-which-should-not-be-called-NO_RP_MODULE_TARGER_SPECIFIED
|
|
endif
|
|
|
|
# this MUST be last after all other options to force GNU89 for the file being a workaround for GCC bug #275674
|
|
# see internal/scsi/scsi_notifier_list.h for detailed explanation
|
|
CFLAGS_scsi_notifier_list.o += -std=gnu89
|
|
|
|
# do NOT move this target - make <3.80 doesn't have a way to specify default target and takes the first one found
|
|
default_error:
|
|
$(error You need to specify one of the following targets: dev-v6, dev-v7, test-v6, test-v7, prod-v6, prod-v7, clean)
|
|
|
|
# All v6 targets
|
|
dev-v6: # kernel running in v6.2+ OS, all symbols included, debug messages included
|
|
$(MAKE) -C $(LINUX_SRC) M=$(PWD) RP_MODULE_TARGET="dev" RP_MODULE_TARGET_VER="6" modules
|
|
test-v6: # kernel running in v6.2+ OS, fully stripped with only warning & above (no debugs or info)
|
|
$(MAKE) -C $(LINUX_SRC) M=$(PWD) RP_MODULE_TARGET="test" RP_MODULE_TARGET_VER="6" modules
|
|
prod-v6: # kernel running in v6.2+ OS, fully stripped with no debug messages
|
|
$(MAKE) -C $(LINUX_SRC) M=$(PWD) RP_MODULE_TARGET="prod" RP_MODULE_TARGET_VER="6" modules
|
|
|
|
# All v7 targets
|
|
dev-v7: # kernel running in v6.2+ OS, all symbols included, debug messages included
|
|
$(MAKE) -C $(LINUX_SRC) M=$(PWD) RP_MODULE_TARGET="dev" RP_MODULE_TARGET_VER="7" modules
|
|
test-v7: # kernel running in v6.2+ OS, fully stripped with only warning & above (no debugs or info)
|
|
$(MAKE) -C $(LINUX_SRC) M=$(PWD) RP_MODULE_TARGET="test" RP_MODULE_TARGET_VER="7" modules
|
|
prod-v7: # kernel running in v6.2+ OS, fully stripped with no debug messages
|
|
$(MAKE) -C $(LINUX_SRC) M=$(PWD) RP_MODULE_TARGET="prod" RP_MODULE_TARGET_VER="7" modules
|
|
|
|
clean:
|
|
$(MAKE) -C $(LINUX_SRC) M=$(PWD) clean
|