32_bit_os/programs/stdlib/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