+BUILD_DIR := build
+PREBUILT_DIR := $(BUILD_DIR)/prebuilt
+DIRS := $(BUILD_DIR) $(PREBUILT_DIR)
+
+#USE_CLANG := YES
+
+ifdef USE_CLANG
+
+CXX := clang++
+CXXFLAGS := \
+ -std=c++2b -stdlib=libc++ \
+ -fimplicit-modules -fimplicit-module-maps \
+ -fprebuilt-module-path=$(PREBUILT_DIR) \
+ -fmodules-cache-path=$(PREBUILT_DIR)
+# -fmodule-map-file=/usr/include/c++/v1/module.modulemap
+# -fbuiltin-module-map
+
+MODFLAGS := -Xclang -emit-module-interface
+
+else # COMPILER != clang
+
+CXX := g++
+CXXFLAGS := -std=c++2b -fmodules-ts
+MODFLAGS :=
+
+# libstdc++ 12.2 does not bundle pre-built modules:
+# g++ -std=c++2b -fmodules-ts -fmodule-header=system -x c++-system-header string iostream
+
+endif