diff --git a/CMakeLists.txt b/CMakeLists.txt index 843abc67d9664e0da8af11be94c05b213defa356..1fdbe0cd3b868c7d77093b5f36b1639979233a29 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -143,12 +143,14 @@ foreach(CURR_FLAG IN LISTS BUILD_FLAGS_RUST) endforeach() add_custom_target(syscare ALL - COMMAND cargo build --release --target-dir ${RUST_TARGET_DIR} + COMMAND ${CMAKE_COMMAND} -E env + "BUILD_VERSION=${BUILD_VERSION}" + "RUSTFLAGS=${RUST_FLAGS}" + cargo build --release --target-dir "${RUST_TARGET_DIR}" WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} ) set_target_properties(syscare PROPERTIES - ENVIRONMENT "RUSTFLAGS=${RUST_FLAGS};BUILD_VERSION=${BUILD_VERSION}" ADDITIONAL_CLEAN_FILES "${RUST_TARGET_DIR}" ) diff --git a/upatch-manage/CMakeLists.txt b/upatch-manage/CMakeLists.txt index 996b49702d89db11918547e9060690275cf10786..516cfe67843cfa298a0bad9856b476e41e721304 100644 --- a/upatch-manage/CMakeLists.txt +++ b/upatch-manage/CMakeLists.txt @@ -2,23 +2,21 @@ set(UPATCH_MANAGE_KMOD "upatch_manage.ko") -if (DEFINED ENABLE_GCOV) - set(ENABLE_GCOV "ENABLE_GCOV=1") +if (DEFINED KERNEL_VERSION) + set(KERNEL_SRC /lib/modules/${KERNEL_VERSION}/build) + set(KMOD_KERNEL "KERNEL_SRC=${KERNEL_SRC}") endif() -if (DEFINED KERNEL_VERSION) - set(KERNEL_BUILD_DIR /lib/modules/${KERNEL_VERSION}/build) - set(KMOD_CLEAN_CMD ${CMAKE_MAKE_PROGRAM} clean KERNEL_SRC=${KERNEL_BUILD_DIR} V=1) - set(KMOD_BUILD_CMD ${CMAKE_MAKE_PROGRAM} KERNEL_SRC=${KERNEL_BUILD_DIR} MODULE_VERSION=${BUILD_VERSION} ENABLE_GCOV=${ENABLE_GCOV} V=1) -else() - set(KMOD_CLEAN_CMD ${CMAKE_MAKE_PROGRAM} clean V=1) - set(KMOD_BUILD_CMD ${CMAKE_MAKE_PROGRAM} MODULE_VERSION=${BUILD_VERSION} ENABLE_GCOV=${ENABLE_GCOV} V=1) +if (DEFINED BUILD_VERSION) + set(KMOD_VERSION "MODULE_VERSION=${BUILD_VERSION}") +endif() + +if (DEFINED ENABLE_GCOV) + set(KMOD_GCOV "GCOV=1") endif() add_custom_target(upatch-manage ALL - COMMAND ${KMOD_CLEAN_CMD} - COMMAND ${KMOD_BUILD_CMD} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND make -C ${CMAKE_CURRENT_SOURCE_DIR} ${KMOD_KERNEL} ${KMOD_VERSION} ${KMOD_GCOV} ) install( diff --git a/upatch-manage/Makefile b/upatch-manage/Makefile index b3c3cca3820bbe0c9639af46746d6c8f73b822db..df2bc094191a607e4a232880fe310542fab6094b 100644 --- a/upatch-manage/Makefile +++ b/upatch-manage/Makefile @@ -1,35 +1,37 @@ # SPDX-License-Identifier: GPL-2.0 -MODULE_NAME = upatch_manage -ifndef MODULE_VERSION - MODULE_VERSION := dev -endif - -ifeq ($(ENABLE_GCOV), 1) - GCOV_PROFILE := y -endif +MODULE_NAME ?= upatch_manage +MODULE_VERSION ?= 1.0.0-dev -ifndef KERNEL_SRC - KERNEL_SRC := /lib/modules/$(shell uname -r)/build -endif -MODULE_SRC := $(shell pwd) +KERNEL_SRC ?= /lib/modules/$(shell uname -r)/build +MODULE_SRC ?= $(shell pwd) -ccflags-y += -D__KERNEL__ -DMODULE -DMODNAME=\"${MODULE_NAME}\" -DMODVER=\"${MODULE_VERSION}\" +ccflags-y += -D__KERNEL__ -DMODULE -DMODNAME=\"$(MODULE_NAME)\" -DMODVER=\"$(MODULE_VERSION)\" ccflags-y += -D_FORTIFY_SOURCE=2 -DSECUREC_SUPPORT_FORMAT_WARNING=1 ccflags-y += -O2 -Wall -pipe -obj-m += ${MODULE_NAME}.o -${MODULE_NAME}-objs := main.o ioctl_dev.o -${MODULE_NAME}-objs += patch_entity.o target_entity.o process_entity.o -${MODULE_NAME}-objs += patch_load.o arch/$(ARCH)/patch_load.o symbol_resolve.o -${MODULE_NAME}-objs += patch_manage.o kernel_compat.o +ifdef DEBUG + ccflags-y += -g -DDEBUG +endif + +ifdef GCOV + GCOV_PROFILE := y +endif + +obj-m += $(MODULE_NAME).o +$(MODULE_NAME)-objs := main.o ioctl_dev.o +$(MODULE_NAME)-objs += patch_entity.o target_entity.o process_entity.o +$(MODULE_NAME)-objs += patch_load.o arch/$(ARCH)/patch_load.o symbol_resolve.o +$(MODULE_NAME)-objs += patch_manage.o kernel_compat.o ifeq ($(ARCH), arm64) - ${MODULE_NAME}-objs += arch/$(ARCH)/insn.o + $(MODULE_NAME)-objs += arch/$(ARCH)/insn.o endif -all: - make -C $(KERNEL_SRC) M=$(MODULE_SRC) modules -j +.PHONY: module + +module: + make -C $(KERNEL_SRC) M=$(MODULE_SRC) modules clean: make -C $(KERNEL_SRC) M=$(MODULE_SRC) clean