# Makefile for libloader

include ../../mk/arch.mk
CXX := $(TOOLCHAIN_PREFIX)g++
AR := $(TOOLCHAIN_PREFIX)ar

override CXXFLAGS := \
    -std=gnu++20 \
    -g -O2 -pipe \
    -Wall \
    -Wextra \
    -ffreestanding \
    -fno-stack-protector \
    -fno-stack-check \
    -fno-rtti \
    -fno-exceptions \
    -ffunction-sections \
    -fdata-sections \
    $(ARCH_NOFP_FLAGS) \
    -I ../../include \
    -isystem ../../include/libc \
    -isystem ../../include/montauk

LIBDIR := ../../lib/libloader
LEGACY_BINDIR := ../../bin$(ARCH_SUFFIX)

.PHONY: all clean remove-legacy

all: remove-legacy $(LIBDIR)/$(ARCH_OUT)liblibloader.a

remove-legacy:
	rm -f $(LEGACY_BINDIR)/liblibloader.a

$(LIBDIR)/$(ARCH_OUT)liblibloader.a: libloader.cpp
	@mkdir -p $(LIBDIR)/$(ARCH_OUT)
	$(CXX) $(CXXFLAGS) -c libloader.cpp -o libloader.o
	$(AR) rcs $(LIBDIR)/$(ARCH_OUT)liblibloader.a libloader.o
	rm -f libloader.o

clean:
	rm -f $(LIBDIR)/$(ARCH_OUT)liblibloader.a $(LEGACY_BINDIR)/$(ARCH_OUT)liblibloader.a
