blob: f7ed5d0218ba2f42be3826b57b67f449479e0a94 [file] [log] [blame] [edit]
# Makefile for GNU make
# Always rebuild all targets.
.PHONY: all clean main-c.out main-cpp.out
all: main-c.out main-cpp.out
clean:
rm -f main-c.out main-cpp.out
# Enable all but a few warnings, then also enable a few extras that clang on Mac
# forces off by default even with -Weverything
CLANG_WARNINGS = -Werror -Weverything \
-Wno-unused-variable \
-Wno-padded -Wno-poison-system-directories -Wno-c++98-compat-pedantic \
-Wc99-designator \
-Welaborated-enum-base \
-Wenum-enum-conversion \
-Wenum-float-conversion \
-Wextra-semi-stmt \
-Wfinal-dtor-non-final-class \
-Wgnu-folding-constant \
-Wimplicit-fallthrough \
-Wimplicit-int-float-conversion \
-Wmisleading-indentation \
-Wquoted-include-in-framework-header \
-Wreorder-init-list \
-Wreserved-identifier \
# phew.
GCC_WARNINGS = -Werror -Wall -Wextra \
-Wno-unused-variable -Wno-unused-but-set-variable
main-c.out: main.c main.inl ../../webgpu.h Makefile
# Compile as C
clang -o $@ $< -std=c99 $(CLANG_WARNINGS)
gcc -o $@ $< -std=c99 $(GCC_WARNINGS)
clang -o $@ $< -std=c11 $(CLANG_WARNINGS)
gcc -o $@ $< -std=c11 $(GCC_WARNINGS)
clang -o $@ $< -std=c17 $(CLANG_WARNINGS)
gcc -o $@ $< -std=c17 $(GCC_WARNINGS)
# Pre-release C23
clang -o $@ $< -std=c2x $(CLANG_WARNINGS)
gcc -o $@ $< -std=c2x $(GCC_WARNINGS)
main-cpp.out: main.cpp main.inl ../../webgpu.h Makefile
# Compile as C++
clang++ -o $@ $< -std=c++98 $(CLANG_WARNINGS) -Wno-c++11-long-long
g++ -o $@ $< -std=c++98 $(GCC_WARNINGS)
clang++ -o $@ $< -std=c++03 $(CLANG_WARNINGS) -Wno-c++11-long-long
g++ -o $@ $< -std=c++03 $(GCC_WARNINGS)
clang++ -o $@ $< -std=c++11 $(CLANG_WARNINGS)
g++ -o $@ $< -std=c++11 $(GCC_WARNINGS)
clang++ -o $@ $< -std=c++14 $(CLANG_WARNINGS)
g++ -o $@ $< -std=c++14 $(GCC_WARNINGS)
clang++ -o $@ $< -std=c++17 $(CLANG_WARNINGS)
g++ -o $@ $< -std=c++17 $(GCC_WARNINGS)
clang++ -o $@ $< -std=c++20 $(CLANG_WARNINGS)
g++ -o $@ $< -std=c++20 $(GCC_WARNINGS)
# Pre-release C++23
clang++ -o $@ $< -std=c++2b $(CLANG_WARNINGS)
g++ -o $@ $< -std=c++2b $(GCC_WARNINGS)