Initial commit: Klammertext source distribution
Curated source subset assembled by klammertext-dev's doc/make_dist.sh: the Klammermachine (mac), the Standard Klammer Set (sks), the commands (com), editor plugins and install guides (doc), a test subset (tst), and lib/bin placeholders. Builds with 'make -C com'. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
101
com/Makefile
Normal file
101
com/Makefile
Normal file
@@ -0,0 +1,101 @@
|
||||
# Klammertext com/ Makefile
|
||||
# Improved version with automatic header dependency tracking
|
||||
|
||||
K := $(KLAMMERTEXT_HOME)
|
||||
KS := $(K)/sks
|
||||
KM := $(K)/mac
|
||||
|
||||
include $(KM)/env/makefile.env
|
||||
|
||||
# Commands to build
|
||||
COMMANDS := kdiag kdesc ktext
|
||||
|
||||
# Build output directory: commands are linked directly into ../bin, so there is
|
||||
# exactly one copy of each (no redundant executables in com/) and make still
|
||||
# tracks them by path for incremental builds.
|
||||
BINDIR := ../bin
|
||||
BINCOMMANDS := $(addprefix $(BINDIR)/,$(COMMANDS))
|
||||
|
||||
# System install location (out-of-tree). Override on the command line, e.g.
|
||||
# make install PREFIX=/opt DESTDIR=/tmp/stage
|
||||
PREFIX ?= /usr/local
|
||||
DESTDIR ?=
|
||||
|
||||
# Shared library location
|
||||
LIBDIR := ../lib
|
||||
LIBRARY := $(LIBDIR)/libklammertext.so
|
||||
|
||||
# Linker flags for commands
|
||||
COM_LDFLAGS := $(EXPORT_DYNAMIC) -Wl,-rpath,'$(ORIGIN)/../lib' -L$(LIBDIR)
|
||||
|
||||
# Dependency files for command sources
|
||||
DEPFILES := $(addsuffix .d,$(COMMANDS))
|
||||
|
||||
# Compiler flags for dependency generation ($(@F) keeps the .d files in com/,
|
||||
# not in the ../bin output directory).
|
||||
DEPFLAGS = -MMD -MP -MF $(@F).d
|
||||
|
||||
.PHONY: all clean redo clang mac sks install
|
||||
|
||||
# Default target: build dependencies first, then commands
|
||||
all : | mac sks
|
||||
$(MAKE) commands
|
||||
|
||||
# Separate target to build commands (called after dependencies are ready)
|
||||
.PHONY: commands
|
||||
commands : $(BINCOMMANDS)
|
||||
|
||||
# Ensure the output directory exists before linking into it.
|
||||
$(BINDIR) :
|
||||
mkdir -p $@
|
||||
|
||||
# Build mac/ objects
|
||||
mac :
|
||||
$(MAKE) -C $(KM) -j
|
||||
|
||||
# Build sks/ components (depends on mac)
|
||||
sks : | mac
|
||||
$(MAKE) -C $(KS)/kutil -j
|
||||
$(MAKE) -C $(KS)/target -j
|
||||
$(MAKE) -C $(KS)/document
|
||||
|
||||
# Explicit rules for each command - link against shared library, output to bin/
|
||||
$(BINDIR)/kdiag : kdiag.cpp $(LIBRARY) | $(BINDIR)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(DEPFLAGS) $(COM_LDFLAGS) $(LDFLAGS) $< -o $@ -lklammertext $(LDLIBS)
|
||||
|
||||
$(BINDIR)/kdesc : kdesc.cpp $(LIBRARY) | $(BINDIR)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(DEPFLAGS) $(COM_LDFLAGS) $(LDFLAGS) $< -o $@ -lklammertext $(LDLIBS)
|
||||
|
||||
$(BINDIR)/ktext : ktext.cpp $(LIBRARY) | $(BINDIR)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(DEPFLAGS) $(COM_LDFLAGS) $(LDFLAGS) $< -o $@ -lklammertext $(LDLIBS)
|
||||
|
||||
# Out-of-tree system install (copies; the build tree stays intact). The
|
||||
# installed commands still need KLAMMERTEXT_HOME pointing at a Klammertext tree
|
||||
# for sks/ and the Python modules; their rpath finds libklammertext.so in
|
||||
# $(PREFIX)/lib.
|
||||
install : all
|
||||
install -d $(DESTDIR)$(PREFIX)/bin $(DESTDIR)$(PREFIX)/lib
|
||||
install -m755 $(BINCOMMANDS) $(DESTDIR)$(PREFIX)/bin
|
||||
install -m755 $(LIBRARY) $(DESTDIR)$(PREFIX)/lib
|
||||
|
||||
clean :
|
||||
rm -f $(BINCOMMANDS) $(DEPFILES) *~
|
||||
|
||||
redo :
|
||||
ifneq ($(filter clang,$(MAKECMDGOALS)),)
|
||||
@:
|
||||
else
|
||||
$(MAKE) -C $(KM) clean
|
||||
$(MAKE) -C $(KS)/kutil clean
|
||||
$(MAKE) -C $(KS)/target clean
|
||||
$(MAKE) -C $(KS)/document clean
|
||||
$(MAKE) clean
|
||||
$(MAKE) 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)
|
||||
Reference in New Issue
Block a user