From f8a72f15c82721b9089c775cd6de9aa7f6288f4a Mon Sep 17 00:00:00 2001 From: apio Date: Sun, 2 Oct 2022 12:44:32 +0200 Subject: [PATCH] Adjust build system to be more flexible and to work with the new toolchain --- .gitignore | 3 ++- Makefile | 25 ++++++++++++++++++------- apps/Makefile | 18 +++++++++++------- apps/apps.ld | 22 ---------------------- kernel/Makefile | 30 ++++++++++++------------------ libs/Makefile | 8 ++++++++ libs/libc/Makefile | 34 ++++++++++++++++++---------------- libs/libc/bin/libc.a | Bin 7858 -> 0 bytes 8 files changed, 69 insertions(+), 71 deletions(-) delete mode 100644 apps/apps.ld create mode 100644 libs/Makefile delete mode 100644 libs/libc/bin/libc.a diff --git a/.gitignore b/.gitignore index 1fb154f7..12b6bd37 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ initrd/sys/moon.sym initrd/bin/** apps/bin/** base/usr/include/** -base/usr/lib/** \ No newline at end of file +base/usr/lib/** +**/*.a \ No newline at end of file diff --git a/Makefile b/Makefile index e06ab762..87ba859c 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,24 @@ -build: $(LUNA_ROOT)/kernel/bin/moon.elf apps-build libc-build +CC := x86_64-luna-gcc +CXX := x86_64-luna-g++ +ASM := nasm +AR := x86_64-luna-ar +LD := x86_64-luna-ld -clean: moon-clean initrd-clean apps-clean libc-clean +build: + @make -C kernel build + @make -C apps build + @make -C libs build + +clean: initrd-clean + @make -C kernel clean + @make -C apps clean + @make -C libs clean initrd-clean: rm -f $(LUNA_ROOT)/initrd/boot/moon.elf $(LUNA_ROOT)/Luna.iso rm -rf $(LUNA_ROOT)/initrd/bin -install: $(LUNA_ROOT)/initrd/boot/moon.elf apps-install libc-install - -include kernel/Makefile -include apps/Makefile -include libs/libc/Makefile \ No newline at end of file +install: + @make -C kernel install + @make -C apps install + @make -C libs install \ No newline at end of file diff --git a/apps/Makefile b/apps/Makefile index f9011ba6..72c40912 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -4,28 +4,32 @@ APPS_DIR := $(LUNA_ROOT)/apps APPS_OBJ := $(APPS_DIR)/lib APPS_BIN := $(APPS_DIR)/bin +CC := x86_64-luna-gcc +CXX := x86_64-luna-g++ +ASM := nasm +AR := x86_64-luna-ar +LD := x86_64-luna-ld + REAL_APPS := $(patsubst %, $(APPS_BIN)/%, $(APPS)) -ASMC := nasm ASMFLAGS := -felf64 -LD := x86_64-elf-ld -APP_LDFLAGS := -T$(APPS_DIR)/apps.ld -nostdlib -z max-page-size=0x1000 +APP_LDFLAGS := -nostdlib $(APPS_OBJ)/%.o: $(APPS_DIR)/%.asm @mkdir -p $(@D) - $(ASMC) $(ASMFLAGS) -o $@ $^ + nasm $(ASMFLAGS) -o $@ $^ $(APPS_BIN)/%: $(APPS_OBJ)/%.o @mkdir -p $(@D) $(LD) $(APP_LDFLAGS) -o $@ $^ -apps-build: $(REAL_APPS) +build: $(REAL_APPS) -apps-install: $(REAL_APPS) +install: $(REAL_APPS) @mkdir -p $(LUNA_ROOT)/initrd/bin cp $(REAL_APPS) $(LUNA_ROOT)/initrd/bin -apps-clean: +clean: rm -f $(APPS_OBJ)/* rm -f $(APPS_BIN)/* \ No newline at end of file diff --git a/apps/apps.ld b/apps/apps.ld deleted file mode 100644 index 406d4127..00000000 --- a/apps/apps.ld +++ /dev/null @@ -1,22 +0,0 @@ -ENTRY(_start) -OUTPUT_FORMAT(elf64-x86-64) - -. = 0x2f00000000; - -SECTIONS -{ - .text : ALIGN(16) { - KEEP(*(.text.boot)) *(.text .text.*) /* code */ - *(.rodata .rodata.*) /* data */ - } - .data : ALIGN(16) { - *(.data .data.*) - } - .bss (NOLOAD) : { /* bss */ - . = ALIGN(16); - *(.bss .bss.*) - *(COMMON) - } - - /DISCARD/ : { *(.eh_frame) *(.comment) } -} diff --git a/kernel/Makefile b/kernel/Makefile index 340ea91d..ba7e0173 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -3,15 +3,15 @@ MOON_SRC := $(MOON_DIR)/src MOON_OBJ := $(MOON_DIR)/lib MOON_BIN := $(MOON_DIR)/bin -CC := x86_64-elf-gcc -CXX := x86_64-elf-g++ -AS := x86_64-elf-as -NASM := nasm +CC := x86_64-luna-gcc +CXX := x86_64-luna-g++ +ASM := nasm +AR := x86_64-luna-ar +LD := x86_64-luna-ld CFLAGS := -Wall -Wextra -Werror -Os -ffreestanding -fstack-protector-all -fno-omit-frame-pointer -mno-red-zone -mno-mmx -mno-sse -mno-sse2 -fshort-wchar -mcmodel=kernel -I$(MOON_DIR)/include -isystem $(MOON_DIR)/include/std CXXFLAGS := -fno-rtti -fno-exceptions NASMFLAGS := -felf64 -ASFLAGS := LDFLAGS := -T$(MOON_DIR)/moon.ld -nostdlib -lgcc -Wl,--build-id=none -z max-page-size=0x1000 ifneq ($(MOON_BUILD_STABLE), 1) @@ -26,12 +26,10 @@ rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(su CXX_SRC = $(call rwildcard,$(MOON_SRC),*.cpp) C_SRC = $(call rwildcard,$(MOON_SRC),*.c) -AS_SRC = $(call rwildcard,$(MOON_SRC),*.S) NASM_SRC = $(call rwildcard,$(MOON_SRC),*.asm) OBJS = $(patsubst $(MOON_SRC)/%.cpp, $(MOON_OBJ)/%.cpp.o, $(CXX_SRC)) OBJS += $(patsubst $(MOON_SRC)/%.c, $(MOON_OBJ)/%.c.o, $(C_SRC)) -OBJS += $(patsubst $(MOON_SRC)/%.S, $(MOON_OBJ)/%.S.o, $(AS_SRC)) OBJS += $(patsubst $(MOON_SRC)/%.asm, $(MOON_OBJ)/%.asm.o, $(NASM_SRC)) default: $(MOON_BIN)/moon.elf @@ -56,23 +54,19 @@ $(MOON_OBJ)/%.c.o: $(MOON_SRC)/%.c @mkdir -p $(@D) $(CC) $(CFLAGS) -o $@ -c $^ -$(MOON_OBJ)/%.S.o: $(MOON_SRC)/%.S - @mkdir -p $(@D) - $(AS) $(ASFLAGS) -o $@ $^ - $(MOON_OBJ)/%.asm.o: $(MOON_SRC)/%.asm @mkdir -p $(@D) - $(NASM) $(NASMFLAGS) -o $@ $^ + nasm $(NASMFLAGS) -o $@ $^ -$(MOON_BIN)/moon.elf: $(OBJS) +build: $(OBJS) @mkdir -p $(@D) - $(CC) $(OBJS) $(CFLAGS) $(LDFLAGS) -o $@ + $(CC) $(OBJS) $(CFLAGS) $(LDFLAGS) -o $(MOON_BIN)/moon.elf -moon-clean: +clean: rm -rf $(MOON_OBJ)/* rm -rf $(MOON_BIN)/* -$(LUNA_ROOT)/initrd/boot/moon.elf: $(MOON_BIN)/moon.elf +install: $(MOON_BIN)/moon.elf @mkdir -p $(@D) - cp $^ $@ - tools/generate-symbols.sh \ No newline at end of file + cp $^ $(LUNA_ROOT)/initrd/boot/moon.elf + $(LUNA_ROOT)/tools/generate-symbols.sh \ No newline at end of file diff --git a/libs/Makefile b/libs/Makefile new file mode 100644 index 00000000..50dec626 --- /dev/null +++ b/libs/Makefile @@ -0,0 +1,8 @@ +build: + @make -C libc build + +install: + @make -C libc install + +clean: + @make -C libc clean \ No newline at end of file diff --git a/libs/libc/Makefile b/libs/libc/Makefile index e48f0f1d..956396bf 100644 --- a/libs/libc/Makefile +++ b/libs/libc/Makefile @@ -3,12 +3,13 @@ LIBC_SRC := $(LIBC_DIR)/src LIBC_OBJ := $(LIBC_DIR)/lib LIBC_BIN := $(LIBC_DIR)/bin -LIBC_CC := x86_64-elf-gcc -LIBC_CXX := x86_64-elf-g++ -LIBC_NASM := nasm -LIBC_AR := x86_64-elf-ar +CC := x86_64-luna-gcc +CXX := x86_64-luna-g++ +ASM := nasm +AR := x86_64-luna-ar +LD := x86_64-luna-ld -LIBC_CFLAGS := -Wall -Wextra -Werror -Os -ffreestanding -nostdlib -fno-omit-frame-pointer -mno-mmx -mno-sse -mno-sse2 -I$(LIBC_DIR)/include -isystem $(LIBC_DIR)/include +LIBC_CFLAGS := -Wall -Wextra -Werror -Os -nostdlib -fno-omit-frame-pointer -mno-mmx -mno-sse -mno-sse2 -I$(LIBC_DIR)/include -isystem $(LIBC_DIR)/include LIBC_CXXFLAGS := -fno-rtti -fno-exceptions LIBC_NASMFLAGS := -felf64 @@ -24,33 +25,33 @@ LIBC_OBJS += $(patsubst $(LIBC_SRC)/%.asm, $(LIBC_OBJ)/%.asm.o, $(LIBC_NASM_SRC) $(LIBC_OBJ)/%.cpp.o: $(LIBC_SRC)/%.cpp @mkdir -p $(@D) - $(LIBC_CXX) $(LIBC_CFLAGS) $(LIBC_CXXFLAGS) -o $@ -c $^ + $(CXX) $(LIBC_CFLAGS) $(LIBC_CXXFLAGS) -o $@ -c $^ $(LIBC_OBJ)/%.c.o: $(LIBC_SRC)/%.c @mkdir -p $(@D) - $(LIBC_CC) $(LIBC_CFLAGS) -o $@ -c $^ + $(CC) $(LIBC_CFLAGS) -o $@ -c $^ $(LIBC_OBJ)/%.asm.o: $(LIBC_SRC)/%.asm @mkdir -p $(@D) - $(LIBC_NASM) $(LIBC_NASMFLAGS) -o $@ $^ + $(ASM) $(LIBC_NASMFLAGS) -o $@ $^ $(LIBC_BIN)/libc.a: $(LIBC_OBJS) @mkdir -p $(@D) - $(LIBC_AR) rcs $@ $(LIBC_OBJS) + $(AR) rcs $@ $(LIBC_OBJS) $(LIBC_BIN)/crt0.o: $(LIBC_DIR)/crt0.asm @mkdir -p $(@D) - $(LIBC_NASM) $(LIBC_NASMFLAGS) -o $@ $^ + $(ASM) $(LIBC_NASMFLAGS) -o $@ $^ $(LIBC_BIN)/crti.o: $(LIBC_DIR)/crti.asm @mkdir -p $(@D) - $(LIBC_NASM) $(LIBC_NASMFLAGS) -o $@ $^ + $(ASM) $(LIBC_NASMFLAGS) -o $@ $^ $(LIBC_BIN)/crtn.o: $(LIBC_DIR)/crtn.asm @mkdir -p $(@D) - $(LIBC_NASM) $(LIBC_NASMFLAGS) -o $@ $^ + $(ASM) $(LIBC_NASMFLAGS) -o $@ $^ -libc-build: $(LIBC_BIN)/crt0.o $(LIBC_BIN)/crti.o $(LIBC_BIN)/crtn.o $(LIBC_BIN)/libc.a +build: $(LIBC_BIN)/crt0.o $(LIBC_BIN)/crti.o $(LIBC_BIN)/crtn.o $(LIBC_BIN)/libc.a $(LUNA_ROOT)/base/usr/lib/libc.a: $(LIBC_BIN)/libc.a @mkdir -p $(@D) @@ -68,9 +69,10 @@ $(LUNA_ROOT)/base/usr/lib/crtn.o: $(LIBC_BIN)/crtn.o @mkdir -p $(@D) cp $^ $@ -libc-install: $(LUNA_ROOT)/base/usr/lib/libc.a $(LUNA_ROOT)/base/usr/lib/crt0.o $(LUNA_ROOT)/base/usr/lib/crti.o $(LUNA_ROOT)/base/usr/lib/crtn.o +install: $(LUNA_ROOT)/base/usr/lib/libc.a $(LUNA_ROOT)/base/usr/lib/crt0.o $(LUNA_ROOT)/base/usr/lib/crti.o $(LUNA_ROOT)/base/usr/lib/crtn.o -libc-clean: +clean: rm -rf $(LIBC_OBJ)/* rm -rf $(LIBC_BIN)/* - rm -f $(LUNA_ROOT)/base/usr/lib/libc.a \ No newline at end of file + rm -f $(LUNA_ROOT)/base/usr/lib/libc.a + rm -f $(LUNA_ROOT)/base/usr/lib/crt*.o \ No newline at end of file diff --git a/libs/libc/bin/libc.a b/libs/libc/bin/libc.a deleted file mode 100644 index e9905a6c478ae3301c50dec87d1b5a8ea8a27a68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7858 zcmdT}O>9(E6u#xRK#LU(0rBTGqJo-Xrj*(e#8Li+gcvk7=>kHh!yDQ#{mIM&i!l)+ zF_grFg$ougSh!$eT)S|AsX<(rpmD*{n3#}|7<8dsnAG##cfL2bxAR~IjggbSckcb} zIp^Mc?!D*SH|^e4td>T1uih3cq+DNLZ{Ln=b|4!B@+aiJgJ65MPZfq&8)F_frtNg& zr~P?jI`*eO>wY$-nP=nY#?+tjaJ)2i#t5s0k*P)1N;m-q5Ugmy(rDEjJ61bWD-|o1 ztSOF6RwENmk42^!DVrQKe9O~G(FES;9_LrN=#Kx8jNsk;zXu2 zHI4q^(Vy9#fmyZR$0m#(c4~Ue4QM-mEdJ zO<`s(_ibU|`=~R2Vb|LH`CaXW`LAyOI-B6D^5=Uk_B*h%{U%yon7?}akHXfu*};P| zbA_2d3p2mmg2_WO-xNMN+@|HLM`s7wQfQmIu)Z*V?c5L1%JW^&zjMu?@1wK1tFz|7 zo;^E*EeBp7+#2M1GPz9Fm`CjxWe>gcrfHk*YTMMYvi+h=tV?j&UY0f}2PP_(s0VDX zVh<~a-jJ39@K@J%eYoUc=ZZlwE>*No0~gwimu=tEx#C#d4x5*N3pwtL0q>19SZ02k z_h4IH+F*q`q-C9hb8e3)&N}D!nBp&5i^gz{-HN}gc%XcX;zzY^=O^WDiodUTGOzlk z#Ib7fbjg~kon^w8%k$TKOm8_j`XD~y;I4e2_!8lGNWEGhPQS2U;`GZAPo92x*TdNz!BR)h%xsf zblXbo?i6`9b|-x}PI50EfervmwP63FgqWM#pCun zc}nFeNB)H3>s0~g0JK>i*vGvU#CdI%GH~dD=!1-ufj?={x;)Mn@NN&6k0@?B{jhVt z^zQz72U9qUAdD9e@2Bek3i)_o(Ktr9ablN;(=S6FPXAOqoc=lM;q=eP9!~#U@o@U* zLA$qNpSZ;RKrHRvI<1S4RYAl==z@cARzYd^*5h&WqPO3F+P$?|{j_^4_3xFN((bL( zI`S{P8F2oD)9$TT)PLMZ&}-%1npH=&D`yU3|MWj`j)%No`{(%~?)yLO-g;OA%0VhB z_w^-Aj7`>4Q<9td1{&X6bAA2sPhCOtxv6VeeGqwDjPI?;LYj#jR$y`hZ}d}0Q@@3< zOXLoo0Tm0f9OIEIcea5X;}GwHu*bdQ>VB!ZTnEVA@a$=I5ra-EISjED zxq-xaA%+8IoqVI>+@lcXI{WUr?N}p1wj1fIMOuh<5s= z44g5YGr^e$j{ZR$4{~0-nH&E?+3YWqfwj6gm-Tu$`z?4l{ddH}>Axutr~l4*IQ@6Y z!|A`zJe>Z!>f!X?j~-6{-7P2npT4u6*71{ZKd{~{1z_Ai#7iuA+}BV0&T3X4xezw9 zUO&{oS1wEY&YD(xKY4b!&j_b|XYn_fJ1W@fch-#?iydBBHT!y4&Gg!mS z)!gs+j4NGYpL@y0=m!@YQm-(kYIPBV&sxbL9U_ldOJbkR<`BvUY6tc}$vEqa7XK5d z;eUjT39Qz?ACozr2PFpLjJQ-^nHcRB2277kBKk&BT3GP)(_&z=`e`wc`u7_HM|Ifb zoCRYL>uE9YvQBhZ1zU}QH&pM6a`f9u44l^faW`_w_dnLxUpp(WaffH0HhlfR0k|xf A3;+NC