2 PREBUILT_DIR := $(BUILD_DIR)/prebuilt
3 DIRS := $(BUILD_DIR) $(PREBUILT_DIR)
11 -std=c++2b -stdlib=libc++ \
12 -fimplicit-modules -fimplicit-module-maps \
13 -fprebuilt-module-path=$(PREBUILT_DIR) \
14 -fmodules-cache-path=$(PREBUILT_DIR)
15 # -fmodule-map-file=/usr/include/c++/v1/module.modulemap
16 # -fbuiltin-module-map
18 MODFLAGS := -Xclang -emit-module-interface
20 else # COMPILER != clang
23 CXXFLAGS := -std=c++2b -fmodules-ts
26 # libstdc++ 12.2 does not bundle pre-built modules:
27 # g++ -std=c++2b -fmodules-ts -fmodule-header=system -x c++-system-header string iostream
33 SRCS = main.cc helloworld.cc
36 OBJS = $(patsubst %.cc, build/%.o, $(SRCS))
37 PCMS = $(patsubst %, $(PREBUILT_DIR)/%.pcm, $(MODS))
45 rm -rf $(PREBUILT_DIR)
51 $(APP): $(OBJS) $(PCMS)
52 $(CXX) $(CXXFLAGS) -o $@ $(OBJS)
54 $(BUILD_DIR)/%.o: %.cc $(PCMS)
55 $(CXX) $(CXXFLAGS) -o $@ -c $<
57 $(PREBUILT_DIR)/%.pcm: %.cc
58 $(CXX) $(MODFLAGS) $(CXXFLAGS) -o $@ -c $<