# Klammertext mac/ Makefile # Improved version with automatic header dependency tracking K := $(KLAMMERTEXT_HOME) KS := $(K)/sks include $(K)/env/makefile.env # Source files BASENAMES := util error locator file argv character ktype katom katom_list \ log show command argument argument_set argtype argtype_registry \ state eval eval_python eval_cpp klammer klammer_registry klammerset klammerset_registry deftype \ target target_registry machine font_store SOURCES := $(addsuffix .cpp,$(BASENAMES)) OBJECTS := $(addsuffix .o,$(BASENAMES)) HEADERS := $(addsuffix .h,$(BASENAMES)) DEPFILES := $(addsuffix .d,$(BASENAMES)) # Shared library LIBDIR := ../lib LIBRARY := $(LIBDIR)/libklammertext.so # Compiler flags for dependency generation DEPFLAGS = -MMD -MP -MF $(@:.o=.d) # Pattern rule for object files with automatic dependency generation %.o : %.cpp $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $(DEPFLAGS) $< -o $@ # Default target .PHONY: all sks clean redo clang all : $(LIBRARY) $(MAKE) sks # Create lib directory $(LIBDIR): mkdir -p $(LIBDIR) # Build shared library $(LIBRARY): $(OBJECTS) | $(LIBDIR) $(CXX) $(CXXFLAGS) $(LDFLAGS) $(SHARED) $(SONAME) -o $@ $(OBJECTS) $(LDLIBS) # Build sks components sks : $(MAKE) -C $(KS)/kutil $(MAKE) -C $(KS)/target $(MAKE) -C $(KS)/document clean : rm -f $(OBJECTS) $(DEPFILES) $(LIBRARY) *~ redo : ifneq ($(filter clang,$(MAKECMDGOALS)),) @: else $(MAKE) clean $(MAKE) -j all endif # "make clang" = incremental build; "make clang redo" = full clean rebuild clang : $(MAKE) $(or $(filter-out clang,$(MAKECMDGOALS)),all) COMPILER=clang # Include generated dependency files (if they exist) -include $(DEPFILES)