Implemented support for building host binaries to test kernel features
This commit is contained in:
8
Makefile
8
Makefile
@@ -60,9 +60,10 @@ $(BUILD_DIR)/%.o: %.c
|
|||||||
@$(CC) $< -o $@ -c $(CFLAGS) $(ARCH_CFLAGS)
|
@$(CC) $< -o $@ -c $(CFLAGS) $(ARCH_CFLAGS)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@printf " \033[1;93mRM\033[0m Deleting build artefacts.\n"
|
@printf " \033[1;93mRM\033[0m Deleting kernel build artefacts.\n"
|
||||||
@rm -rf $(BUILD_DIR)
|
@rm -rf $(BUILD_DIR)
|
||||||
|
|
||||||
|
@$(MAKE) -C sandbox clean
|
||||||
|
|
||||||
all: $(BUILD_DIR)/$(KERNEL_EXEC)
|
all: $(BUILD_DIR)/$(KERNEL_EXEC)
|
||||||
|
|
||||||
@@ -73,10 +74,13 @@ $(BUILD_DIR)/compile_commands.json:
|
|||||||
|
|
||||||
@./tools/make/generate_compile_commands.py
|
@./tools/make/generate_compile_commands.py
|
||||||
|
|
||||||
|
sandbox:
|
||||||
|
@$(MAKE) -C sandbox
|
||||||
|
|
||||||
compile-db: $(BUILD_DIR)/compile_commands.json
|
compile-db: $(BUILD_DIR)/compile_commands.json
|
||||||
|
|
||||||
include arch/$(ARCH)/extra.mk
|
include arch/$(ARCH)/extra.mk
|
||||||
|
|
||||||
.PHONY: all compile-db
|
.PHONY: all compile-db sandbox
|
||||||
|
|
||||||
.INTERMEDIATE: $(ARCH_TEMP_FILES)
|
.INTERMEDIATE: $(ARCH_TEMP_FILES)
|
||||||
|
|||||||
13
sandbox/Makefile
Normal file
13
sandbox/Makefile
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
SANDBOX_DIR_LIST := hello
|
||||||
|
|
||||||
|
all:
|
||||||
|
@for prog in $(SANDBOX_DIR_LIST); do \
|
||||||
|
$(MAKE) -C $$prog; \
|
||||||
|
done
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@for prog in $(SANDBOX_DIR_LIST); do \
|
||||||
|
$(MAKE) -C $$prog clean; \
|
||||||
|
done
|
||||||
|
|
||||||
|
.PHONY: all clean
|
||||||
4
sandbox/hello/Makefile
Normal file
4
sandbox/hello/Makefile
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
SANDBOX_PROG_NAME := hello
|
||||||
|
|
||||||
|
include ../sandbox-config.mk
|
||||||
|
include ../sandbox-template.mk
|
||||||
7
sandbox/hello/main.c
Normal file
7
sandbox/hello/main.c
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(int argc, const char **argv)
|
||||||
|
{
|
||||||
|
printf("Hello, world\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
8
sandbox/sandbox-config.mk
Normal file
8
sandbox/sandbox-config.mk
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
|
||||||
|
SANDBOX_DIR := $(patsubst %/,%,$(dir $(MAKEFILE_PATH)))
|
||||||
|
|
||||||
|
include $(SANDBOX_DIR)/../tools/make/gcc-host.mk
|
||||||
|
|
||||||
|
SANDBOX_BUILD_DIR := $(SANDBOX_DIR)/../build/sandbox
|
||||||
|
BUILD_DIR := $(SANDBOX_BUILD_DIR)/$(SANDBOX_PROG_NAME)
|
||||||
22
sandbox/sandbox-template.mk
Normal file
22
sandbox/sandbox-template.mk
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
BUILD_DIR := $(SANDBOX_BUILD_DIR)/$(SANDBOX_PROG_NAME)
|
||||||
|
|
||||||
|
SRC := $(wildcard *.c)
|
||||||
|
OBJ := $(addprefix $(BUILD_DIR)/,$(SRC:.c=.o))
|
||||||
|
|
||||||
|
$(BUILD_DIR)/$(SANDBOX_PROG_NAME): $(OBJ)
|
||||||
|
@mkdir -p $(@D)
|
||||||
|
|
||||||
|
@printf " \033[1;36mHOSTLD\033[0m \033[1msandbox/$(SANDBOX_PROG_NAME)\033[0m\n"
|
||||||
|
@$(CC) $< -o $@ $(CFLAGS) $(LDFLAGS)
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.o: %.c
|
||||||
|
@printf " \033[1;32mHOSTCC\033[0m $(SANDBOX_PROG_NAME)/$^\n"
|
||||||
|
@mkdir -p $(@D)
|
||||||
|
|
||||||
|
@$(CC) $< -o $@ -c $(CFLAGS)
|
||||||
|
|
||||||
|
all: $(SANDBOX_PROG_NAME)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@printf " \033[1;93mRM\033[0m Deleting sandbox/$(SANDBOX_PROG_NAME)\n"
|
||||||
|
@rm -rf $(BUILD_DIR)
|
||||||
7
tools/make/gcc-host.mk
Normal file
7
tools/make/gcc-host.mk
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
LD := gcc
|
||||||
|
CC := gcc
|
||||||
|
ASM := gcc
|
||||||
|
|
||||||
|
CFLAGS := -Wall -Werror -pedantic
|
||||||
|
ASMFLAGS := $(CFLAGS)
|
||||||
|
LDFLAGS := -O2
|
||||||
Reference in New Issue
Block a user