# Makefile for fetch (HTTP/HTTPS client) on MontaukOS # Copyright (c) 2025-2026 Daniel Hammer MAKEFLAGS += -rR .SUFFIXES: # ---- Toolchain ---- include ../../mk/arch.mk ifeq ($(wildcard $(TOOLCHAIN_PREFIX)gcc),) CXX = $(error $(TOOLCHAIN_MISSING)) else CXX := $(TOOLCHAIN_PREFIX)g++ endif # ---- Paths ---- BEARSSL := ../../lib/bearssl TLS_LIB := ../../lib/tls LIBC_LIB := ../../lib/libc LIBC_INC := ../../include/libc PROG_INC := ../../include LINK_LD := ../../link.ld BINDIR := ../../bin$(ARCH_SUFFIX) OBJDIR := obj$(ARCH_SUFFIX) # ---- Compiler flags ---- CXXFLAGS := \ -std=gnu++20 \ -g -O2 -pipe \ -Wall \ -Wextra \ -Wno-unused-parameter \ -ffreestanding \ -fno-stack-protector \ -fno-stack-check \ -fno-rtti \ -fno-exceptions \ -ffunction-sections \ -fdata-sections \ $(ARCH_NOFP_FLAGS) \ -I $(PROG_INC) \ -isystem $(LIBC_INC) \ -I $(BEARSSL)/inc # ---- Linker flags ---- LDFLAGS := \ -nostdlib \ -Wl,--gc-sections \ -T $(LINK_LD) # ---- Libraries ---- LIBS := $(TLS_LIB)/$(ARCH_OUT)libtls.a $(BEARSSL)/build$(ARCH_SUFFIX)/libbearssl.a $(LIBC_LIB)/$(ARCH_OUT)liblibc.a # ---- Target ---- TARGET := $(BINDIR)/os/fetch.elf .PHONY: all clean all: $(TARGET) $(TARGET): $(OBJDIR)/main.o $(LIBS) $(LINK_LD) Makefile mkdir -p $(BINDIR)/os $(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJDIR)/main.o $(LIBS) -o $@ $(OBJDIR)/main.o: main.cpp Makefile mkdir -p $(OBJDIR) $(CXX) $(CXXFLAGS) -MMD -MP -c $< -o $@ clean: rm -rf $(OBJDIR) $(TARGET) # Auto-generated header dependency tracking (-MMD -MP). -include $(OBJDIR)/main.d