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
|
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
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
@ -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
|
@ -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
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