summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-09-17 15:03:22 -0400
committerIan Moffett <ian@osmora.org>2025-09-17 15:03:22 -0400
commit5c40e61a6035315d4341ed508171bf68f3bc1955 (patch)
tree0988fdbc5b978fe35d2955364818c2b6088abdf4
parent61aaead7e2904a2756ed72a71e36eeeb21591733 (diff)
build: Add test program to src/cmd/
Add a testing program for ELF loading purposes. This is to be removed in later versions of Lunos Signed-off-by: Ian Moffett <ian@osmora.org>
-rw-r--r--src/Makefile10
-rw-r--r--src/cmd/Makefile10
-rw-r--r--src/cmd/test/Makefile15
-rw-r--r--src/cmd/test/test.c6
4 files changed, 39 insertions, 2 deletions
diff --git a/src/Makefile b/src/Makefile
index c29402b..53b2d5e 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -2,7 +2,7 @@ TARGET = amd64
KBIN = sys/l5
SHIMDIR = shim
SHIMBIN = BOOTX64.EFI
-SYSROOT = root
+SYSROOT = $(shell pwd)/root
OMAR = tools/omar/bin/omar
ISO = lunos.iso
@@ -18,17 +18,23 @@ QEMU_FLAGS = --enable-kvm -serial stdio -cdrom $(ISO) \
-M q35 -cpu host -smp 4 -m 2G
.PHONY: all
-all: root sys image
+all: root user sys image
.PHONY: sys
sys:
cd sys/; make CC=$(CC) AS=$(AS) LD=$(LD) TARGET=$(TARGET) CONF=$(CONF)
cp $(KBIN) root/boot/
+.PHONY: user
+user:
+ cd cmd/; make CC=$(CC) AS=$(AS) LD=$(LD) TARGET=$(TARGET) \
+ SYSROOT=$(SYSROOT)
+
root:
mkdir -p $(SYSROOT)/
mkdir -p $(SYSROOT)/boot/
mkdir -p $(SYSROOT)/usr/include/
+ mkdir -p $(SYSROOT)/usr/bin/
mkdir -p sys/target/header/
rsync -av sys/include/arch/$(TARGET)/ sys/target/header/machine/
diff --git a/src/cmd/Makefile b/src/cmd/Makefile
new file mode 100644
index 0000000..2d1c7f8
--- /dev/null
+++ b/src/cmd/Makefile
@@ -0,0 +1,10 @@
+LDSCRIPT=../../sys/arch/$(TARGET)/conf/user.ld
+
+.PHONY: all
+all:
+ cd test/; LDSCRIPT=$(LDSCRIPT) CC=$(CC) ASM=$(ASM) \
+ LD=$(ASM) SYSROOT=$(SYSROOT) make
+
+.PHONY: clean
+clean:
+ cd test/; make clean
diff --git a/src/cmd/test/Makefile b/src/cmd/test/Makefile
new file mode 100644
index 0000000..d1488b5
--- /dev/null
+++ b/src/cmd/test/Makefile
@@ -0,0 +1,15 @@
+include ../../data/build/user.mk
+
+CFILES = $(shell find . -name "*.c")
+CFILES = $(shell find . -name "*.c")
+OBJECTS = $(CFILES:%.c=%.o)
+
+$(SYSROOT)/usr/bin/test: $(OBJECTS)
+ $(LD) $(OBJECTS) -o $@ $(INTERNAL_CFLAGS)
+
+%.o: %.c
+ $(CC) $(INTERNAL_CFLAGS) -c $(CFLAGS) $< -o $@
+
+.PHONY: clean
+clean:
+ rm -f *.o *.d
diff --git a/src/cmd/test/test.c b/src/cmd/test/test.c
new file mode 100644
index 0000000..693fb65
--- /dev/null
+++ b/src/cmd/test/test.c
@@ -0,0 +1,6 @@
+__attribute__((naked))
+void
+_start(void)
+{
+ for (;;);
+}