2022-12-13 20:21:28 +00:00
|
|
|
KERNEL_EXEC := socks_kernel
|
|
|
|
|
|
2023-02-25 17:58:23 +00:00
|
|
|
SOCKS_ARCH ?= x86_64
|
2022-12-13 20:21:28 +00:00
|
|
|
|
2022-12-21 08:27:32 +00:00
|
|
|
MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
|
|
|
|
|
ROOT_DIR := $(patsubst %/,%,$(dir $(MAKEFILE_PATH)))
|
|
|
|
|
|
2022-12-13 20:21:28 +00:00
|
|
|
include tools/make/gcc-cross-compile.mk
|
|
|
|
|
|
2022-12-21 08:27:32 +00:00
|
|
|
BUILD_DIR := build
|
2023-03-13 21:41:33 +00:00
|
|
|
CONFIG_DIR := .config
|
2022-12-21 08:27:32 +00:00
|
|
|
|
2023-04-08 09:27:21 +01:00
|
|
|
####################################
|
|
|
|
|
# If the user has selected some kernel extensions to include
|
|
|
|
|
# in the kernel image, include the file that describes the
|
|
|
|
|
# extension source files to build
|
|
|
|
|
####################################
|
|
|
|
|
|
|
|
|
|
-include $(CONFIG_DIR)/extensions.mk
|
|
|
|
|
|
2022-12-21 08:27:32 +00:00
|
|
|
####################################
|
|
|
|
|
# Architecture-specific source files
|
|
|
|
|
####################################
|
2022-12-13 20:21:28 +00:00
|
|
|
|
2023-02-25 17:58:23 +00:00
|
|
|
include arch/$(SOCKS_ARCH)/config.mk
|
2022-12-21 08:27:32 +00:00
|
|
|
|
|
|
|
|
####################################
|
|
|
|
|
# Platform-independent kernel source files
|
|
|
|
|
####################################
|
2022-12-13 20:21:28 +00:00
|
|
|
|
2023-04-08 09:27:21 +01:00
|
|
|
KERNEL_SRC_DIRS := init kernel vm ds util obj sched dev test kxld
|
2022-12-21 08:27:32 +00:00
|
|
|
KERNEL_C_FILES := $(foreach dir,$(KERNEL_SRC_DIRS),$(wildcard $(dir)/*.c))
|
2023-03-20 20:41:39 +00:00
|
|
|
KERNEL_CXX_FILES := $(foreach dir,$(KERNEL_SRC_DIRS),$(wildcard $(dir)/*.cpp))
|
|
|
|
|
KERNEL_OBJ := $(addprefix $(BUILD_DIR)/,$(KERNEL_C_FILES:.c=.o) $(KERNEL_CXX_FILES:.cpp=.o))
|
2022-12-21 08:27:32 +00:00
|
|
|
|
|
|
|
|
####################################
|
|
|
|
|
# Kernel libc source files
|
|
|
|
|
####################################
|
|
|
|
|
|
|
|
|
|
LIBC_SRC_DIRS := stdio string ctype
|
|
|
|
|
LIBC_C_FILES := $(foreach dir,$(LIBC_SRC_DIRS),$(wildcard libc/$(dir)/*.c))
|
|
|
|
|
LIBC_OBJ := $(addprefix $(BUILD_DIR)/,$(LIBC_C_FILES:.c=.o))
|
2022-12-13 20:21:28 +00:00
|
|
|
|
2023-04-04 09:59:25 +01:00
|
|
|
BUILD_ID := $(shell tools/socks.buildid --arch $(SOCKS_ARCH))
|
2022-12-13 22:22:04 +00:00
|
|
|
|
2023-03-24 14:17:56 +00:00
|
|
|
CWARNINGS := -Wall -Werror -pedantic -Wno-language-extension-token -Wno-unused-function -Wno-gnu-statement-expression
|
|
|
|
|
|
2023-03-24 14:39:09 +00:00
|
|
|
OPTIMISATION_LEVEL := -O2
|
|
|
|
|
|
|
|
|
|
CFLAGS := $(CFLAGS) -DBUILD_ID=\"$(BUILD_ID)\" $(OPTIMISATION_LEVEL) -g -fPIC -std=gnu17 \
|
2023-06-09 19:30:01 +01:00
|
|
|
-Iinclude -Iarch/$(SOCKS_ARCH)/include -Ilibc/include $(CWARNINGS) \
|
|
|
|
|
$(INTERNAL_KEXT_INCLUDES) $(INTERNAL_KEXT_DEFINES)
|
2023-03-24 14:17:56 +00:00
|
|
|
|
2023-04-08 09:27:21 +01:00
|
|
|
KERNEL_DEFINES := -DSOCKS_INTERNAL=1
|
|
|
|
|
|
2023-03-24 14:39:09 +00:00
|
|
|
CXXFLAGS := $(CXXFLAGS) -DBUILD_ID=\"$(BUILD_ID)\" $(OPTIMISATION_LEVEL) -g -fPIC -std=gnu++17 \
|
2023-06-09 19:30:01 +01:00
|
|
|
-Iinclude -Iarch/$(SOCKS_ARCH)/include -Ilibc/include -Wno-language-extension-token $(CWARNINGS) \
|
|
|
|
|
$(INTERNAL_KEXT_INCLUDES) $(INTERNAL_KEXT_DEFINES)
|
2022-12-21 08:27:32 +00:00
|
|
|
|
2022-12-14 21:45:24 +00:00
|
|
|
ASMFLAGS := $(ASMFLAGS) -DBUILD_ID=\"$(BUILD_ID)\"
|
2023-03-24 14:39:09 +00:00
|
|
|
LDFLAGS := $(LDFLAGS) -g -lgcc $(OPTIMISATION_LEVEL)
|
2022-12-13 22:22:04 +00:00
|
|
|
|
2023-04-08 09:27:21 +01:00
|
|
|
ALL_KERNEL_OBJECT_FILES := $(KERNEL_OBJ) $(ARCH_OBJ) $(LIBC_OBJ) $(INTERNAL_KEXT_OBJ)
|
2023-02-01 13:58:15 +00:00
|
|
|
ALL_KERNEL_DEPS := $(ALL_KERNEL_OBJECT_FILES:.o=.d)
|
|
|
|
|
|
2023-02-07 11:25:33 +00:00
|
|
|
all: $(BUILD_DIR)/$(KERNEL_EXEC) tools
|
2022-12-27 08:43:42 +00:00
|
|
|
|
2023-02-01 15:04:10 +00:00
|
|
|
-include $(ALL_KERNEL_DEPS)
|
|
|
|
|
|
2022-12-21 08:27:32 +00:00
|
|
|
$(BUILD_DIR)/$(KERNEL_EXEC): $(ALL_KERNEL_OBJECT_FILES)
|
2022-12-27 08:43:42 +00:00
|
|
|
@printf " \033[1;36mLD\033[0m \033[1mbuild/\033[35m$(KERNEL_EXEC)\033[0m\n"
|
2022-12-13 20:21:28 +00:00
|
|
|
@mkdir -p $(@D)
|
|
|
|
|
@$(LD) $^ -o $@ $(LDFLAGS) $(ARCH_LDFLAGS)
|
2023-02-08 20:22:54 +00:00
|
|
|
@cp $@ $@.dbg
|
|
|
|
|
@$(STRIP) $@
|
2022-12-13 20:21:28 +00:00
|
|
|
|
2022-12-21 08:27:32 +00:00
|
|
|
$(BUILD_DIR)/%.o: %.S
|
2022-12-27 08:43:42 +00:00
|
|
|
@printf " \033[1;32mAS\033[0m \033[35m$(KERNEL_EXEC)\033[0m/$<\n"
|
2022-12-13 20:21:28 +00:00
|
|
|
@mkdir -p $(@D)
|
2023-02-01 13:58:15 +00:00
|
|
|
@$(ASM) $< -o $@ -c $(ASMFLAGS) $(ARCH_ASMFLAGS) -MMD
|
2022-12-13 20:21:28 +00:00
|
|
|
|
2022-12-21 08:27:32 +00:00
|
|
|
$(BUILD_DIR)/%.o: %.c
|
2022-12-27 08:43:42 +00:00
|
|
|
@printf " \033[1;32mCC\033[0m \033[35m$(KERNEL_EXEC)\033[0m/$<\n"
|
2022-12-13 20:21:28 +00:00
|
|
|
@mkdir -p $(@D)
|
2023-04-08 09:27:21 +01:00
|
|
|
@$(CC) $< -o $@ -c $(CFLAGS) $(ARCH_CFLAGS) -MMD $(KERNEL_DEFINES)
|
2022-12-13 20:21:28 +00:00
|
|
|
|
2023-03-20 20:41:39 +00:00
|
|
|
$(BUILD_DIR)/%.o: %.cpp
|
|
|
|
|
@printf " \033[1;32mCXX\033[0m \033[35m$(KERNEL_EXEC)\033[0m/$<\n"
|
|
|
|
|
@mkdir -p $(@D)
|
2023-05-03 19:19:21 +01:00
|
|
|
@$(CXX) $< -o $@ -c $(CXXFLAGS) $(ARCH_CFLAGS) -MMD $(KERNEL_DEFINES)
|
2023-03-20 20:41:39 +00:00
|
|
|
|
2022-12-13 20:21:28 +00:00
|
|
|
clean:
|
2022-12-27 08:43:42 +00:00
|
|
|
@printf " \033[1;93mRM\033[0m Deleting build files.\n"
|
2022-12-21 08:27:32 +00:00
|
|
|
@rm -rf $(BUILD_DIR)
|
|
|
|
|
|
2023-03-19 20:33:27 +00:00
|
|
|
$(BUILD_DIR)/compile_commands.json:
|
2022-12-24 17:42:33 +00:00
|
|
|
@printf " \033[1;93mGEN\033[0m Generating compiler database.\n"
|
2022-12-13 20:21:28 +00:00
|
|
|
|
2023-04-04 09:59:25 +01:00
|
|
|
@./tools/socks.compiledb
|
2022-12-13 20:21:28 +00:00
|
|
|
|
2023-05-07 12:21:25 +01:00
|
|
|
cd: $(BUILD_DIR)/socks-kernel.iso
|
|
|
|
|
|
|
|
|
|
install-cd: $(BUILD_DIR)/socks-kernel.iso
|
|
|
|
|
@./tools/socks.install-cd
|
|
|
|
|
|
2022-12-21 08:27:32 +00:00
|
|
|
compile-db: $(BUILD_DIR)/compile_commands.json
|
2022-12-13 20:21:28 +00:00
|
|
|
|
2023-05-08 18:17:14 +01:00
|
|
|
kext-list:
|
|
|
|
|
@./tools/socks.kexttool list
|
|
|
|
|
|
|
|
|
|
kext-config:
|
|
|
|
|
@./tools/socks.kexttool select
|
|
|
|
|
|
2023-02-07 11:25:33 +00:00
|
|
|
tools:
|
|
|
|
|
@$(MAKE) --no-print-directory -C tools
|
|
|
|
|
|
2023-02-25 17:58:23 +00:00
|
|
|
include arch/$(SOCKS_ARCH)/extra.mk
|
2022-12-13 20:21:28 +00:00
|
|
|
|
2023-02-08 16:46:59 +00:00
|
|
|
.PHONY: all tools compile-db $(BUILD_DIR)/compile_commands.json
|
2022-12-13 20:21:28 +00:00
|
|
|
|
|
|
|
|
.INTERMEDIATE: $(ARCH_TEMP_FILES)
|