36 lines
1.2 KiB
Makefile
36 lines
1.2 KiB
Makefile
C_SRC=$(wildcard src/*.c)
|
|
ASM_SRC=$(wildcard src/*.asm)
|
|
FILES=$(C_SRC:src/%.c=build/%.o)
|
|
FILES+=$(ASM_SRC:src/%.asm=build/%.asm.o)
|
|
TEST_SRC=$(wildcard test/*.c)
|
|
TEST_FILES=$(TEST_SRC:test/%.c=test_build/%.o)
|
|
INCLUDES=
|
|
TEST_INCLUDES=-Isrc $(INCLUDES)
|
|
#TODO remove -ffreestanding?
|
|
FLAGS= -g -ffreestanding -falign-jumps -falign-functions -falign-labels -falign-loops -fstrength-reduce -fomit-frame-pointer -finline-functions -Wno-unused-function -fno-builtin -Werror -Wno-unused-label -Wno-cpp -Wno-unused-parameter -nostdlib -nostartfiles -nodefaultlibs -Wall -O0 -Iinc
|
|
TEST_FLAGS= $(FLAGS) -DUNITY_EXCLUDE_SETJMP_H -DUNITY_EXCLUDE_MATH_H -DUNITY_EXCLUDE_STDINT_H -DUNITY_INCLUDE_PRINT_FORMATTED
|
|
all: stdlib.elf testlib.elf
|
|
|
|
testlib.elf: stdlib.elf $(TEST_FILES)
|
|
i686-elf-gcc -g -T ../linker.ld -o $@ -ffreestanding -O0 -nostdlib -fpic -g $^
|
|
|
|
stdlib.elf: $(FILES)
|
|
i686-elf-ld -m elf_i386 -relocatable $^ -o $@
|
|
|
|
build/%.asm.o: src/%.asm
|
|
mkdir -p build
|
|
nasm -f elf $< -o $@
|
|
|
|
test_build/%.o: test/%.c
|
|
mkdir -p test_build
|
|
i686-elf-gcc $(TEST_INCLUDES) $(TEST_FLAGS) -std=gnu99 -c -o $@ $<
|
|
|
|
build/%.o: src/%.c
|
|
mkdir -p build
|
|
i686-elf-gcc $(INCLUDES) $(FLAGS) -std=gnu99 -c -o $@ $<
|
|
|
|
clean:
|
|
rm -rf stdlib.elf testlib.elf $(FILES) $(TEST_FILES)
|
|
|
|
.PHONY: all clean
|