Update build system
This commit is contained in:
parent
e483f6d1e6
commit
6bacded5cf
18
Makefile
18
Makefile
@ -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
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
|
@ -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
|
@ -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
11
tools/sync-libc.sh
Executable 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)
|
Loading…
Reference in New Issue
Block a user