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
build:
@make -C kernel build
@make -C apps build
@make -C libs 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
@$(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:
@make -C kernel install
@make -C apps install
@make -C libs install
@$(MAKE) -C kernel install
@$(MAKE) -C apps install
@$(MAKE) -C libs install

View File

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

View File

@ -3,15 +3,9 @@ MOON_SRC := $(MOON_DIR)/src
MOON_OBJ := $(MOON_DIR)/lib
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
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
ifneq ($(MOON_BUILD_STABLE), 1)
@ -56,7 +50,7 @@ $(MOON_OBJ)/%.c.o: $(MOON_SRC)/%.c
$(MOON_OBJ)/%.asm.o: $(MOON_SRC)/%.asm
@mkdir -p $(@D)
nasm $(NASMFLAGS) -o $@ $^
$(ASM) $(ASMFLAGS) -o $@ $^
build: $(OBJS)
@mkdir -p $(@D)

View File

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

View File

@ -1,3 +1,10 @@
#!/bin/sh
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 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)