CC       ?= gcc
CFLAGS   ?= -O2 -Wall -Wextra
CXX      ?= g++
CXXFLAGS ?= -std=c++17 -O2 -Wall -Wextra

TARGET        = kk
CPP_SOURCES   = $(wildcard kk-*.cpp)
C_SOURCES     = $(wildcard kk-*.c)
CPP_COMMANDS  = $(CPP_SOURCES:.cpp=)
C_COMMANDS    = $(C_SOURCES:.c=)
COMMANDS      = $(CPP_COMMANDS) $(C_COMMANDS)

all: $(TARGET) $(COMMANDS)

$(TARGET): kk.cpp
	$(CXX) $(CXXFLAGS) -o $@ $<

# Regra genérica: cada kk-<comando>.cpp vira o executável kk-<comando>.
$(CPP_COMMANDS): %: %.cpp
	$(CXX) $(CXXFLAGS) -o $@ $<

# Regra genérica: cada kk-<comando>.c vira o executável kk-<comando>.
$(C_COMMANDS): %: %.c
	$(CC) $(CFLAGS) -o $@ $<

clean:
	rm -f $(TARGET) $(COMMANDS)

.PHONY: all clean
