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:
68
mac/env/makefile.env
vendored
Normal file
68
mac/env/makefile.env
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
# mac/env/makefile.env — single cross-platform build environment for Klammertext.
|
||||
#
|
||||
# Included identically by every component Makefile:
|
||||
# include $(KLAMMERTEXT_HOME)/mac/env/makefile.env
|
||||
#
|
||||
# The platform is auto-detected with uname; the compiler is chosen with
|
||||
# make COMPILER=gcc (default)
|
||||
# make COMPILER=clang
|
||||
# There is no per-host/per-OS file and no DESKTOP_SESSION/HOST/SITE selector.
|
||||
|
||||
ifndef KLAMMERTEXT_HOME
|
||||
$(error KLAMMERTEXT_HOME is not set -- source mac/env/runtime.env first)
|
||||
endif
|
||||
|
||||
include $(KLAMMERTEXT_HOME)/mac/env/optimize.env
|
||||
|
||||
UNAME_S := $(shell uname -s)
|
||||
CPP_VERSION := c++20
|
||||
# Default compiler: clang on macOS, gcc elsewhere. gcc-built Klammertext
|
||||
# binaries crash at runtime on macOS (a documented gcc/macOS codegen issue), so
|
||||
# gcc there is only a compile-time conformance check (via `./dbg/rebuild.sh
|
||||
# gcc`, which compiles under g++ then rebuilds with clang). Override with
|
||||
# `make COMPILER=...`.
|
||||
ifeq ($(UNAME_S),Darwin)
|
||||
COMPILER ?= clang # gcc | clang
|
||||
else
|
||||
COMPILER ?= gcc # gcc | clang
|
||||
endif
|
||||
|
||||
# Python: version- and platform-agnostic, no hardcoded paths.
|
||||
PYTHON_INC := $(shell python3-config --includes)
|
||||
PYTHON_LIB := $(shell python3-config --ldflags --embed)
|
||||
|
||||
# Flags common to all platforms.
|
||||
CPPFLAGS = -I$(KLAMMERTEXT_HOME)/mac $(PYTHON_INC)
|
||||
CXXFLAGS = -Wall -Wextra -Weffc++ -Wshadow -std=$(CPP_VERSION) -fPIC $(OPTIMIZE) $(SANITIZE)
|
||||
|
||||
ifeq ($(UNAME_S),Darwin)
|
||||
# ---------- macOS (Apple Silicon) ----------
|
||||
# Package-manager prefix, auto-detected: Homebrew (/opt/homebrew) or MacPorts
|
||||
# (/opt/local). Override with `make MACOS_PREFIX=...`. Only the prefix differs
|
||||
# between the two: the compiler is Apple Clang either way, and all Python flags
|
||||
# come from python3-config (prefix-agnostic), so nothing else is PM-specific.
|
||||
MACOS_PREFIX ?= $(shell test -d /opt/homebrew && echo /opt/homebrew || (test -d /opt/local && echo /opt/local || echo /opt/homebrew))
|
||||
# Newest optional gcc (conformance check only): Homebrew g++-NN or MacPorts g++-mp-NN.
|
||||
GCC := $(shell g=$$(ls $(MACOS_PREFIX)/bin/g++-[0-9]* $(MACOS_PREFIX)/bin/g++-mp-[0-9]* 2>/dev/null | sort -V | tail -1); echo $${g:-g++})
|
||||
CLANG := clang++ # Apple clang (or brew/port llvm)
|
||||
CPPFLAGS += -I$(MACOS_PREFIX)/include
|
||||
LDFLAGS = -L$(MACOS_PREFIX)/lib
|
||||
LDLIBS = $(if $(NOPYTHON),,$(PYTHON_LIB))
|
||||
SHARED = -dynamiclib
|
||||
SONAME = -install_name @rpath/$(notdir $@)
|
||||
ORIGIN := @loader_path
|
||||
EXPORT_DYNAMIC = -Wl,-export_dynamic
|
||||
else
|
||||
# ---------- Linux ----------
|
||||
GCC := /usr/bin/g++
|
||||
CLANG := $(shell command -v clang++-18 2>/dev/null || command -v clang++ 2>/dev/null)
|
||||
LDFLAGS = -L/usr/lib/x86_64-linux-gnu
|
||||
LDLIBS = -ldl $(if $(NOPYTHON),,$(PYTHON_LIB))
|
||||
SHARED = -shared
|
||||
SONAME = -Wl,-soname,$(notdir $@)
|
||||
ORIGIN := $$ORIGIN
|
||||
EXPORT_DYNAMIC = -rdynamic
|
||||
endif
|
||||
|
||||
# Resolve the compiler choice (gcc by default; clang with COMPILER=clang).
|
||||
CXX := $(if $(filter clang,$(COMPILER)),$(CLANG),$(GCC))
|
||||
Reference in New Issue
Block a user