add config support
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
EXEC = simple simplecpp
|
||||
|
||||
# set up CFLAGS / CXXFLAGS
|
||||
CFLAGS = -std=c17 -Wmissing-declarations -Wall -Wextra -MMD
|
||||
|
||||
ifdef DEBUG
|
||||
CFLAGS += -O0 -g -fsanitize=address,undefined
|
||||
else
|
||||
CFLAGS += -O3 -DNDEBUG
|
||||
endif
|
||||
# Add -fpic only for non-Windows platforms
|
||||
ifneq ($(OS), Windows_NT)
|
||||
CFLAGS += -fpic
|
||||
endif
|
||||
|
||||
CXXFLAGS = $(subst -std=c17,-std=c++20,$(CFLAGS))
|
||||
|
||||
# Test if C++ is available
|
||||
HAVE_CXX := $(shell command -v $(CXX) 2> /dev/null)
|
||||
|
||||
# Test for C++20 support
|
||||
CXX20_SUPPORT := $(shell echo "int main(){}" | $(CXX) -std=c++20 -x c++ -c - -o /dev/null 2>/dev/null && echo yes || echo no)
|
||||
|
||||
|
||||
|
||||
all: $(EXEC)
|
||||
|
||||
simple: simple.c ../src/libtomlc17.a
|
||||
$(CC) $(CFLAGS) -o $@ $@.c -L../src -ltomlc17
|
||||
|
||||
repro: repro.c ../src/libtomlc17.a
|
||||
$(CC) $(CFLAGS) -o $@ $@.c -L../src -ltomlc17
|
||||
|
||||
|
||||
simplecpp: simplecpp.cpp ../src/libtomlc17.a
|
||||
ifndef HAVE_CXX
|
||||
@echo "INFO: skipping $@ because no $(CXX) compiler found"
|
||||
else ifeq ($(CXX20_SUPPORT),no)
|
||||
@echo "INFO: skipping $@ because $(CXX) does not support C++20"
|
||||
else
|
||||
$(CXX) $(CXXFLAGS) -o $@ $@.cpp -L ../src -l tomlc17
|
||||
endif
|
||||
|
||||
-include simple.d simplecpp.d
|
||||
|
||||
test: all
|
||||
./simple > /dev/null
|
||||
[ ! -x ./simplecpp ] || ./simplecpp > /dev/null
|
||||
|
||||
clean:
|
||||
rm -f *.o *.d *.a $(EXEC)
|
||||
|
||||
distclean: clean
|
||||
|
||||
format:
|
||||
clang-format -i *.[ch] *.cpp
|
||||
|
||||
.PHONY: all clean distclean format
|
||||
|
||||
Reference in New Issue
Block a user