X-Git-Url: http://deadsoftware.ru/gitweb?p=odcread.git;a=blobdiff_plain;f=Makefile;h=b1fac089f138b1ae207a0a16fec379fe5e6e6f2c;hp=415e3250cebaf0cde6ad7c7995e9f02e2ba2c42a;hb=HEAD;hpb=cf88fc04686af2b4a34f9ccebc9f517cd83be491 diff --git a/Makefile b/Makefile index 415e325..b1fac08 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,8 @@ # * $(MODULE)/*.cc -- module source files MODULES := main reader store alien typeregister textmodel fold typepath -CFLAGS := -I. +CXXFLAGS = -I. +CXX = g++ # Variables for the modules to write to SRCS := @@ -16,10 +17,11 @@ include $(patsubst %,%/Make.inc,$(MODULES)) # This rule just links the object files together odcread: $(SRCS:.cc=.o) - g++ -o $@ $^ + $(CXX) -liconv -o $@ $^ +# This rule build an object (.o) from a source (.cc). %.o: %.cc - g++ $(CFLAGS) $< -c -o $@ + $(CXX) $(CXXFLAGS) $< -c -o $@ # For each implementation header (.ih) generate a dependency (.d) file which # will ensure that the compiled header (.ih.gch) is rebuilt whenever the header @@ -32,22 +34,21 @@ odcread: $(SRCS:.cc=.o) # The .d file is not an explicit target because it will need to be (re-)built # if and only if the .ih.gch needs to be rebuilt. %.ih.gch: %.ih - g++ $(CFLAGS) -x c++-header $< -MM -MF $(dir $@)module.d -MP -MT $@ - g++ $(CFLAGS) -x c++-header $< -o $@ + $(CXX) $(CXXFLAGS) -x c++-header $< -MM -MF $*.d -MP -MT $@ + $(CXX) $(CXXFLAGS) -x c++-header $< -o $@ -# This rule build an object (.o) from a source (.cc). # Each module has a .ih file that should be *the only* include from the .cc # files. These .ih files are pre-compiled to .ih.gch, and dependency caching # is based on the .ih files, not the .cc files. define depend_on_compiled_header -$(patsubst %.cc,%.o,$(1)) : $(dir $(1))$(patsubst %/,%,$(dir $(1))).ih.gch +$(patsubst %.cc,%.o,$(1)) : $(dir $(1))module.ih.gch endef $(foreach src,$(SRCS),$(eval $(call depend_on_compiled_header,$(src)))) clean: - rm -f odcread *.o */*.o */*.d */*.ih.gch + rm -f */*.o */module.d */module.ih.gch +dist-clean: clean + rm -f odcread # Include the generated dependency files (if they exist) -include $(patsubst %,%/module.d,$(MODULES)) - -# TODO: rename all %/%.ih files to %/module.ih for simplicity of matching rules