LIBSTDCPP_SOURCES = euler/stream.cpp strings/strlen.cpp euler/syscall.asm \
  euler/entry.cpp io/fopen.cpp euler/gcc.asm memory/delete.cpp euler/heap.cpp \
  memory/new.cpp io/fclose.cpp io/fread.cpp strings/memcpy.cpp io/fseek.cpp

clean:
	rm -rf build

build/%.asm.o: source/%.asm
	@mkdir -p $(@D)
	$(HILBERT_NASM) $^ -o $@

build/%.cpp.o: source/%.cpp
	@mkdir -p $(@D)
	$(HILBERT_CC) -c $^ -o $@

build/crt0.o: build/empty.asm.o
	cp $^ $@

build/libc.a: build/empty.asm.o
	$(HILBERT_AR) rcs $@ $^

build/libg.a: build/empty.asm.o
	$(HILBERT_AR) rcs $@ $^

build/libm.a: build/empty.asm.o
	$(HILBERT_AR) rcs $@ $^

build/libstdc++.a: ${LIBSTDCPP_SOURCES:%=build/%.o}
	$(HILBERT_AR) rcs $@ $^
