Update build system

This commit is contained in:
apio 2022-10-02 17:01:30 +02:00
parent e483f6d1e6
commit 6bacded5cf
7 changed files with 60 additions and 58 deletions

View File

@ -5,20 +5,20 @@ AR := x86_64-luna-ar
LD := x86_64-luna-ld LD := x86_64-luna-ld
build: build:
@make -C kernel build @$(MAKE) -C kernel build
@make -C apps build @$(MAKE) -C apps build
@make -C libs build @$(MAKE) -C libs build
clean: initrd-clean clean: initrd-clean
@make -C kernel clean @$(MAKE) -C kernel clean
@make -C apps clean @$(MAKE) -C apps clean
@make -C libs clean @$(MAKE) -C libs clean
initrd-clean: initrd-clean:
rm -f $(LUNA_ROOT)/initrd/boot/moon.elf $(LUNA_ROOT)/Luna.iso rm -f $(LUNA_ROOT)/initrd/boot/moon.elf $(LUNA_ROOT)/Luna.iso
rm -rf $(LUNA_ROOT)/initrd/bin rm -rf $(LUNA_ROOT)/initrd/bin
install: install:
@make -C kernel install @$(MAKE) -C kernel install
@make -C apps install @$(MAKE) -C apps install
@make -C libs install @$(MAKE) -C libs install

View File

@ -4,21 +4,15 @@ APPS_DIR := $(LUNA_ROOT)/apps
APPS_OBJ := $(APPS_DIR)/lib APPS_OBJ := $(APPS_DIR)/lib
APPS_BIN := $(APPS_DIR)/bin 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)) REAL_APPS := $(patsubst %, $(APPS_BIN)/%, $(APPS))
ASMFLAGS := -felf64 ASMFLAGS := -felf64
APP_LDFLAGS := -nostdlib LDFLAGS := -nostdlib
$(APPS_OBJ)/%.o: $(APPS_DIR)/%.asm $(APPS_OBJ)/%.o: $(APPS_DIR)/%.asm
@mkdir -p $(@D) @mkdir -p $(@D)
nasm $(ASMFLAGS) -o $@ $^ $(ASM) $(ASMFLAGS) -o $@ $^
$(APPS_BIN)/%: $(APPS_OBJ)/%.o $(APPS_BIN)/%: $(APPS_OBJ)/%.o
@mkdir -p $(@D) @mkdir -p $(@D)

View File

@ -3,15 +3,9 @@ MOON_SRC := $(MOON_DIR)/src
MOON_OBJ := $(MOON_DIR)/lib MOON_OBJ := $(MOON_DIR)/lib
MOON_BIN := $(MOON_DIR)/bin MOON_BIN := $(MOON_DIR)/bin
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 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 CXXFLAGS := -fno-rtti -fno-exceptions
NASMFLAGS := -felf64 ASMFLAGS := -felf64
LDFLAGS := -T$(MOON_DIR)/moon.ld -nostdlib -lgcc -Wl,--build-id=none -z max-page-size=0x1000 LDFLAGS := -T$(MOON_DIR)/moon.ld -nostdlib -lgcc -Wl,--build-id=none -z max-page-size=0x1000
ifneq ($(MOON_BUILD_STABLE), 1) ifneq ($(MOON_BUILD_STABLE), 1)
@ -56,7 +50,7 @@ $(MOON_OBJ)/%.c.o: $(MOON_SRC)/%.c
$(MOON_OBJ)/%.asm.o: $(MOON_SRC)/%.asm $(MOON_OBJ)/%.asm.o: $(MOON_SRC)/%.asm
@mkdir -p $(@D) @mkdir -p $(@D)
nasm $(NASMFLAGS) -o $@ $^ $(ASM) $(ASMFLAGS) -o $@ $^
build: $(OBJS) build: $(OBJS)
@mkdir -p $(@D) @mkdir -p $(@D)

View File

@ -1,8 +1,8 @@
build: build:
@make -C libc build @$(MAKE) -C libc build
install: install:
@make -C libc install @$(MAKE) -C libc install
clean: clean:
@make -C libc clean @$(MAKE) -C libc clean

View File

@ -3,76 +3,72 @@ LIBC_SRC := $(LIBC_DIR)/src
LIBC_OBJ := $(LIBC_DIR)/lib LIBC_OBJ := $(LIBC_DIR)/lib
LIBC_BIN := $(LIBC_DIR)/bin LIBC_BIN := $(LIBC_DIR)/bin
CC := x86_64-luna-gcc DESTDIR ?= $(LUNA_BASE)/usr/lib
CXX := x86_64-luna-g++
ASM := nasm
AR := x86_64-luna-ar
LD := x86_64-luna-ld
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 CFLAGS := -Wall -Wextra -Werror -Os -nostdlib -fno-omit-frame-pointer -mno-mmx -mno-sse -mno-sse2
LIBC_CXXFLAGS := -fno-rtti -fno-exceptions CXXFLAGS := -fno-rtti -fno-exceptions
LIBC_NASMFLAGS := -felf64 ASMFLAGS := -felf64
rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d)) rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d))
LIBC_CXX_SRC = $(call rwildcard,$(LIBC_SRC),*.cpp) CXX_SRC = $(call rwildcard,$(LIBC_SRC),*.cpp)
LIBC_C_SRC = $(call rwildcard,$(LIBC_SRC),*.c) C_SRC = $(call rwildcard,$(LIBC_SRC),*.c)
LIBC_NASM_SRC = $(call rwildcard,$(LIBC_SRC),*.asm) ASM_SRC = $(call rwildcard,$(LIBC_SRC),*.asm)
LIBC_OBJS = $(patsubst $(LIBC_SRC)/%.cpp, $(LIBC_OBJ)/%.cpp.o, $(LIBC_CXX_SRC)) OBJS = $(patsubst $(LIBC_SRC)/%.cpp, $(LIBC_OBJ)/%.cpp.o, $(CXX_SRC))
LIBC_OBJS += $(patsubst $(LIBC_SRC)/%.c, $(LIBC_OBJ)/%.c.o, $(LIBC_C_SRC)) OBJS += $(patsubst $(LIBC_SRC)/%.c, $(LIBC_OBJ)/%.c.o, $(C_SRC))
LIBC_OBJS += $(patsubst $(LIBC_SRC)/%.asm, $(LIBC_OBJ)/%.asm.o, $(LIBC_NASM_SRC)) OBJS += $(patsubst $(LIBC_SRC)/%.asm, $(LIBC_OBJ)/%.asm.o, $(ASM_SRC))
$(LIBC_OBJ)/%.cpp.o: $(LIBC_SRC)/%.cpp $(LIBC_OBJ)/%.cpp.o: $(LIBC_SRC)/%.cpp
@mkdir -p $(@D) @mkdir -p $(@D)
$(CXX) $(LIBC_CFLAGS) $(LIBC_CXXFLAGS) -o $@ -c $^ $(CXX) $(CFLAGS) $(CXXFLAGS) -o $@ -c $^
$(LIBC_OBJ)/%.c.o: $(LIBC_SRC)/%.c $(LIBC_OBJ)/%.c.o: $(LIBC_SRC)/%.c
@mkdir -p $(@D) @mkdir -p $(@D)
$(CC) $(LIBC_CFLAGS) -o $@ -c $^ $(CC) $(CFLAGS) -o $@ -c $^
$(LIBC_OBJ)/%.asm.o: $(LIBC_SRC)/%.asm $(LIBC_OBJ)/%.asm.o: $(LIBC_SRC)/%.asm
@mkdir -p $(@D) @mkdir -p $(@D)
$(ASM) $(LIBC_NASMFLAGS) -o $@ $^ $(ASM) $(ASMFLAGS) -o $@ $^
$(LIBC_BIN)/libc.a: $(LIBC_OBJS) $(LIBC_BIN)/libc.a: $(OBJS)
@mkdir -p $(@D) @mkdir -p $(@D)
$(AR) rcs $@ $(LIBC_OBJS) $(AR) rcs $@ $(OBJS)
$(LIBC_BIN)/crt0.o: $(LIBC_DIR)/crt0.asm $(LIBC_BIN)/crt0.o: $(LIBC_DIR)/crt0.asm
@mkdir -p $(@D) @mkdir -p $(@D)
$(ASM) $(LIBC_NASMFLAGS) -o $@ $^ $(ASM) $(ASMFLAGS) -o $@ $^
$(LIBC_BIN)/crti.o: $(LIBC_DIR)/crti.asm $(LIBC_BIN)/crti.o: $(LIBC_DIR)/crti.asm
@mkdir -p $(@D) @mkdir -p $(@D)
$(ASM) $(LIBC_NASMFLAGS) -o $@ $^ $(ASM) $(ASMFLAGS) -o $@ $^
$(LIBC_BIN)/crtn.o: $(LIBC_DIR)/crtn.asm $(LIBC_BIN)/crtn.o: $(LIBC_DIR)/crtn.asm
@mkdir -p $(@D) @mkdir -p $(@D)
$(ASM) $(LIBC_NASMFLAGS) -o $@ $^ $(ASM) $(ASMFLAGS) -o $@ $^
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 $(DESTDIR)/libc.a: $(LIBC_BIN)/libc.a
@mkdir -p $(@D) @mkdir -p $(@D)
cp $^ $@ cp $^ $@
$(LUNA_ROOT)/base/usr/lib/crt0.o: $(LIBC_BIN)/crt0.o $(DESTDIR)/crt0.o: $(LIBC_BIN)/crt0.o
@mkdir -p $(@D) @mkdir -p $(@D)
cp $^ $@ cp $^ $@
$(LUNA_ROOT)/base/usr/lib/crti.o: $(LIBC_BIN)/crti.o $(DESTDIR)/crti.o: $(LIBC_BIN)/crti.o
@mkdir -p $(@D) @mkdir -p $(@D)
cp $^ $@ cp $^ $@
$(LUNA_ROOT)/base/usr/lib/crtn.o: $(LIBC_BIN)/crtn.o $(DESTDIR)/crtn.o: $(LIBC_BIN)/crtn.o
@mkdir -p $(@D) @mkdir -p $(@D)
cp $^ $@ cp $^ $@
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: $(DESTDIR)/libc.a $(DESTDIR)/crt0.o $(DESTDIR)/crti.o $(DESTDIR)/crtn.o
clean: clean:
rm -rf $(LIBC_OBJ)/* rm -rf $(LIBC_OBJ)/*
rm -rf $(LIBC_BIN)/* rm -rf $(LIBC_BIN)/*
rm -f $(LUNA_ROOT)/base/usr/lib/libc.a rm -f $(DESTDIR)/libc.a
rm -f $(LUNA_ROOT)/base/usr/lib/crt*.o rm -f $(DESTDIR)/crt*.o

View File

@ -1,3 +1,10 @@
#!/bin/sh #!/bin/sh
export LUNA_ROOT=$(realpath $(dirname $0)/..) export LUNA_ROOT=$(realpath $(dirname $0)/..)
export LUNA_BASE=$LUNA_ROOT/base
export PATH=$LUNA_ROOT/toolchain/x86-64-luna/bin:$LUNA_ROOT/toolchain/dist:$PATH export PATH=$LUNA_ROOT/toolchain/x86-64-luna/bin:$LUNA_ROOT/toolchain/dist:$PATH
export CC=x86_64-luna-gcc
export CXX=x86_64-luna-g++
export LD=x86_64-luna-ld
export AR=x86_64-luna-ar
export ASM=nasm

11
tools/sync-libc.sh Executable file
View File

@ -0,0 +1,11 @@
#!/bin/sh
set -e
source $(dirname $0)/env.sh
cd $LUNA_ROOT
tools/install-headers.sh
make -C libs/libc build -j$(nproc)
make -C libs/libc install -j$(nproc)