CXX = g++
CC = gcc
CFLAGS  := -fsanitize=address -g -Wall -O0 -Wextra -I.
CXXFLAGS := -fsanitize=address -g -Wall -std=c++17

# your “library” modules + driver
# SRC := solver.c linear.c nonlinear.c add_component.c newton.c \
#        input_funcs.c main.cpp

# TEST_SRCS := $(wildcard tests/test_*.c)
# TESTS     := $(patsubst tests/%.c,%,$(TEST_SRCS))

# .PHONY: all clean

# all: $(TESTS)

# # each test links *all* the SRC plus its own test_*.c
# $(TESTS): %: tests/%.c $(SRC)
# 	$(CC) $(CFLAGS) -o $@ $(SRC) $<

# clean:
# 	rm -f $(TESTS) *.o

C_SRCS := solver.c linear.c nonlinear.c add_component.c newton.c
CXX_SRCS := main.cpp

OBJS := $(C_SRCS:.c=.o) $(CXX_SRCS:.cpp=.o)

TARGET := driver
all: $(TARGET)

$(TARGET): $(OBJS)
	$(CXX) $(CXXFLAGS) -o $@ $^

%.o: %.c
	$(CC) $(CFLAGS) -c -o $@ $<

%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c -o $@ $<

.PHONY: all clean

clean:
	rm -f $(TARGET) $(OBJS) *.o

