flatten 20260225

This commit is contained in:
Timothy Prepscius
2026-02-25 12:34:54 -05:00
commit 46185db8f0
24 changed files with 1220 additions and 0 deletions

61
tjp/Make/Makefile Executable file
View File

@@ -0,0 +1,61 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
#
# Todo: make the ifeq (Darwin...) go away
#
include $(dir $(realpath $(lastword $(MAKEFILE_LIST))))/Makefile.base
.PHONY: all
all:
$(MAKE) build
ifeq ("Darwin-YES","$(SYS_NAME)-$(BUILD_ALL)")
SYS_SDK=Darwin SYS_NAME=iOS SYS_PLATFORM=simulate $(MAKE) build
SYS_SDK=Darwin SYS_NAME=iOS SYS_PLATFORM=arm64 $(MAKE) build
endif
.PHONY: build
build:
$(MAKE) _debug
$(MAKE) _release
$(MAKE) _release_log
.PHONY: clean
clean:
$(MAKE) remove
ifeq ("Darwin-YES","$(SYS_NAME)-$(BUILD_ALL)")
SYS_SDK=Darwin SYS_NAME=iOS SYS_PLATFORM=simulate $(MAKE) remove
SYS_SDK=Darwin SYS_NAME=iOS SYS_PLATFORM=arm64 $(MAKE) remove
endif
.PHONY: remove
remove:
$(RM) $(OUTPATH)/Debug.$(EXT)
$(RM) $(OUTPATH)/Release.$(EXT)
$(RM) $(OUTPATH)/ReleaseLog.$(EXT)
ifeq ("YES","$(DELETE_ALL)")
$(RM) $(OUTPATH)
endif
MAKE_PROJECT_FILE ?= Makefile.project
.PHONY: _debug
_debug :
$(MAKE_MULTI) -f $(MAKE_PROJECT_FILE) CONFIG=Debug BUILD_PCH=true MAKEDIR=$(MAKEDIR) build
$(MAKE_MULTI) -f $(MAKE_PROJECT_FILE) CONFIG=Debug MAKEDIR=$(MAKEDIR) build
.PHONY: _release
_release :
$(MAKE_MULTI) -f $(MAKE_PROJECT_FILE) CONFIG=Release BUILD_PCH=true MAKEDIR=$(MAKEDIR) build
$(MAKE_MULTI) -f $(MAKE_PROJECT_FILE) CONFIG=Release MAKEDIR=$(MAKEDIR) build
.PHONY: _release_log
_release_log :
$(MAKE_MULTI) -f $(MAKE_PROJECT_FILE) CONFIG=ReleaseLog BUILD_PCH=true MAKEDIR=$(MAKEDIR) build
$(MAKE_MULTI) -f $(MAKE_PROJECT_FILE) CONFIG=ReleaseLog MAKEDIR=$(MAKEDIR) build

15
tjp/Make/Makefile-all Normal file
View File

@@ -0,0 +1,15 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
TOPTARGETS := all clean _debug _release _release_log
SUBDIRS := $(filter-out make.cpp/,$(dir $(wildcard */Makefile.project)))
$(TOPTARGETS): $(SUBDIRS)
$(SUBDIRS):
$(MAKE) -C $@ $(MAKECMDGOALS)
.PHONY: $(TOPTARGETS) $(SUBDIRS)

123
tjp/Make/Makefile.base Executable file
View File

@@ -0,0 +1,123 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
MAKEDIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
ROOTDIR := $(or $(ROOTDIR), $(realpath $(dir $(firstword $(MAKEFILE_LIST)))..))
GIT_VERSION := $(shell git describe --abbrev=4 --dirty --always)
IS_DEBUG := true
ifeq (,$(findstring Debug,$(CONFIG)))
IS_DEBUG := false
endif
UNAME_S := $(shell uname -s)
UNAME_M := $(shell uname -m)
SYS_NAME ?= $(UNAME_S)
SYS_SDK ?= $(SYS_NAME)
SYS_PLATFORM ?= $(UNAME_M)
SIMULATE ?= yes
#############################
MAKE := make ROOTDIR="$(ROOTDIR)"
RM := rm -rf
#RM := echo
COPY = cp
# TIMEIT := time
TIMEIT :=
#############################
CFLAGS ?=
CPPFLAGS ?=
MMFLAGS ?=
MFLAGS ?=
_FLAGS ?=
LDFLAGS ?=
VISIBILITY_FLAGS_C ?=
VISIBILITY_FLAGS_CPP ?=
BUILD_FLAGS ?=
BUILD_PCH_FLAGS ?=
EXT ?= $(SYS_NAME)-$(SYS_PLATFORM)
BUILD_ALL ?= YES
SECTIONS_FLAGS_C ?= -ffunction-sections -fdata-sections
#############################
BIN := .bin
OUTPATH := $(BIN)
OBJDIR := $(CONFIG).$(EXT)
OBJPATH := $(OUTPATH)/$(OBJDIR)
#############################
-include $(ROOTDIR)/*/Libraries.def
LIBRARIES ?= $(ROOTDIR)/Core_Libraries
LIBRARIES_PROJECT ?= $(LIBRARIES)/project
$(info LIBRARIES = $(LIBRARIES))
#############################
include $(MAKEDIR)/Makefile.base.*
#############################
USE_ASAN ?= false
ifeq ($(USE_ASAN),true)
_FLAGS += -fsanitize=address
LDFLAGS += -fsanitize=address -static-libasan
endif
#############################
MAKE_MULTI := $(MAKE) -j $(JOBS)
#############################
_FLAGS += -c
# -ftime-trace \
# -g
USE_DEPENDENCIES ?= 1
############################
# USE dependencies
ifeq ($(USE_DEPENDENCIES),1)
DEPENDENCY_FLAGS := -MMD
endif
_FLAGS += $(DEPENDENCY_FLAGS)
VISIBILITY_FLAGS_C := $(VISIBILITY_FLAGS_C) -fvisibility=hidden
VISIBILITY_FLAGS_CPP := $(VISIBILITY_FLAGS_CPP) -fvisibility-inlines-hidden -fno-rtti
# allow data areas to be removed
VISIBILITY_FLAGS_C := $(VISIBILITY_FLAGS_C) $(SECTIONS_FLAGS_C)
CPP_VERSION ?= -std=c++17
CFLAGS := $(CFLAGS) $(VISIBILITY_FLAGS_C)
CPPFLAGS := $(CPPFLAGS) $(CPP_VERSION) -fpermissive $(VISIBILITY_FLAGS_C) $(VISIBILITY_FLAGS_CPP) -Wno-invalid-offsetof
MMFLAGS := $(MMFLAGS) $(CPP_VERSION) -fpermissive -fobjc-arc $(VISIBILITY_FLAGS_C) $(VISIBILITY_FLAGS_CPP) -Wno-invalid-offsetof
MFLAGS := $(MFLAGS) -fpermissive -fobjc-arc $(VISIBILITY_FLAGS_C)
BUILD_PCH_FLAGS += -x c++-header
###########################################################
ifeq ($(IS_DEBUG),false)
_FLAGS += -O3 -DNDEBUG
OBJDIR_NOLOG := Release.$(EXT)
ifeq (,$(findstring Log,$(CONFIG)))
else
_FLAGS += -DLOG_DEBUG
endif
else
_FLAGS += -g -D_DEBUG -O0 -DDEBUG=1
OBJDIR_NOLOG := Debug.$(EXT)
endif
###########################################################
#MAKEFILE_LIST_SAVE := $(MAKEFILE_LIST)
$(info ROOTDIR = $(ROOTDIR))
-include $(ROOTDIR)/*/Makefile.def
-include $(LIBRARIES)/ext/*/Makefile.def
#MAKEFILE_LIST := $(MAKEFILE_LIST_SAVE)

34
tjp/Make/Makefile.base.android Executable file
View File

@@ -0,0 +1,34 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
ifeq (Android,$(SYS_NAME))
TOOLS := $(NDK)/toolchains/llvm/prebuilt/$(HOST_TAG)/bin
AR := $(TOOLS)/llvm-ar
CC := $(TIMEIT) $(TOOLS)/clang
CPP := $(TIMEIT) $(TOOLS)/clang++
MM := $(TIMEIT) $(TOOLS)/clang++
M := $(TIMEIT) $(TOOLS)/clang
LINK := $(TIMEIT) $(TOOLS)/llvm-link
SHARED_LINK := $(TIMEIT) $(TOOLS)/ld
TARGET := aarch64-none-linux-android26
SYSROOT := $(NDK)/toolchains/llvm/prebuilt/$(HOST_TAG)/sysroot
CPPFLAGS += -stdlib=libc++
MMFLAGS += -stdlib=libc++
_FLAGS += \
-Wno-null-conversion \
-Wno-extra-tokens \
-Wno-int-to-void-pointer-cast \
-Wno-deprecated-register \
-target $(TARGET) \
--sysroot=$(SYSROOT) \
-D SYS_ANDROID -D SYS_ARM64 \
-fPIC \
-D VULKAN_MINIMAL
endif

39
tjp/Make/Makefile.base.cuda Executable file
View File

@@ -0,0 +1,39 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
ifeq (Cuda,$(SYS_NAME))
# Somehow on linux dockers, under colima, dependencies
# cause problems -
# USE_DEPENDENCIES := 0
GCCC := nvcc
AR := ar
CC := ${GCCC}
CPP := ${GCCC}
MM := ${GCCC}
M := ${GCCC}
LINK := ${GCCC}
_FLAGS += \
-DSYS_LINUX \
-DSYS_X86 \
-DUSE_CUDA \
-ldl -lm -lstdc++ -pthread \
-Wno-stringop-overflow \
-Wno-stringop-overread \
-fno-omit-frame-pointer
# not needed with newer boost
# -DBOOST_NO_CXX98_FUNCTION_BASE=1
# -Wno-changes-meaning does not work
LDFLAGS += -L /usr/local/lib
PLATFORM_LIBS := -ldl -lm -lstdc++ -pthread
endif

42
tjp/Make/Makefile.base.darwin Executable file
View File

@@ -0,0 +1,42 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
ifeq (Darwin,$(SYS_NAME))
ifeq (arm64,$(SYS_PLATFORM))
AR := libtool
ARFLAGS := -c -o
CC := $(TIMEIT) llvm-gcc
CPP := $(TIMEIT) llvm-g++
MM := $(TIMEIT) llvm-gcc
M := $(TIMEIT) llvm-gcc
LINK := $(TIMEIT) llvm-gcc
CPPFLAGS += -stdlib=libc++
MMFLAGS += -stdlib=libc++
_FLAGS += -Wno-null-conversion -Wno-extra-tokens -Wno-int-to-void-pointer-cast -Wno-deprecated-register -target arm64-apple-macos11.0 -arch arm64
_FLAGS += -DSYS_OSX -DSYS_ARM64
else
AR := libtool
ARFLAGS := -c -o
CC := $(TIMEIT) llvm-gcc
CPP := $(TIMEIT) llvm-g++
MM := $(TIMEIT) llvm-gcc
M := $(TIMEIT) llvm-gcc
LINK := $(TIMEIT) llvm-gcc
CPPFLAGS += -stdlib=libc++
MMFLAGS += -stdlib=libc++
_FLAGS += -Wno-null-conversion -Wno-extra-tokens -Wno-int-to-void-pointer-cast -Wno-deprecated-register -target x86_64-apple-macos10.15 -arch x86_64
_FLAGS += -DSYS_OSX -DSYS_X86
endif
endif

80
tjp/Make/Makefile.base.ios Executable file
View File

@@ -0,0 +1,80 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
ifeq (iOS,$(SYS_NAME))
DEVELOPER := /Applications/Xcode.app/Contents/Developer
CPPFLAGS += -stdlib=libc++
MMFLAGS += -stdlib=libc++
_FLAGS += -Wno-null-conversion -Wno-extra-tokens -Wno-int-to-void-pointer-cast -Wno-deprecated-register
###########################################################
# IOS SIMULATOR
ifeq ($(SYS_PLATFORM),simulate)
DEVDIR := $(DEVELOPER)/Toolchains/XcodeDefault.xctoolchain/
CC := $(DEVDIR)/usr/bin/clang -x c
CPP := $(DEVDIR)/usr/bin/clang -x c++
MM := $(DEVDIR)/usr/bin/clang -x objective-c++
M := $(DEVDIR)/usr/bin/clang -x objective-c
LINK := echo
# arm64 architecture for newer macs
_FLAGS += -DSYS_IPHONE -DSYS_ARM64
# _FLAGS += -arch arm64
# x86_64 for older macs
# _FLAGS += -arch x86_64
# _FLAGS += -DSYS_IPHONE -DSYS_X86
# i386 for a long time ago
# _FLAGS += -arch i386
_FLAGS += -DSYS_IPHONE_SIMULATE
_FLAGS += -Wno-import
_FLAGS += -fobjc-abi-version=2
_FLAGS += -fobjc-legacy-dispatch
_FLAGS += -isysroot $(DEVELOPER)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk
_FLAGS += -mios-simulator-version-min=12.0
CFLAGS += -Wno-implicit-function-declaration
AR := libtool
ARFLAGS := -c -o
LDFLAGS += -Xlinker -objc_abi_version -Xlinker 2
LDFLAGS += -lobjc
LDFLAGS += -framework Foundation -framework UIKit -framework CoreGraphics
###########################################################
# IOS PHONE
else
DEVDIR := $(DEVELOPER)/Toolchains/XcodeDefault.xctoolchain/
CC := $(DEVDIR)/usr/bin/clang -x c
CPP := $(DEVDIR)/usr/bin/clang -x c++
MM := $(DEVDIR)/usr/bin/clang -x objective-c++
M := $(DEVDIR)/usr/bin/clang -x objective-c
LINK := $(DEVDIR)/usr/bin/clang
LINK := echo
AR := libtool
ARFLAGS := -c -o
_FLAGS += -DSYS_IPHONE -DSYS_ARM64
_FLAGS += -fembed-bitcode
SECTIONS_FLAGS_C :=
CFLAGS += -Wno-implicit-function-declaration
# _FLAGS += -fembed-bitcode-marker
_FLAGS += -Wno-import
_FLAGS += -arch arm64
_FLAGS += -isysroot $(DEVELOPER)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
_FLAGS += -miphoneos-version-min=12.0
endif
endif

34
tjp/Make/Makefile.base.jobs Executable file
View File

@@ -0,0 +1,34 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
ifeq ($(SYS_NAME),Linux)
HOSTNAME_S := $(shell hostname)
ifeq ($(HOSTNAME_S),320f8287df69)
JOBS ?= 8
else ifeq ($(HOSTNAME_S),lava)
JOBS ?= 8
else ifeq ($(HOSTNAME_S),purple)
JOBS ?= 8
else ifeq ($(HOSTNAME_S),yellow)
JOBS ?= 8
else
JOBS ?= 4
endif
else ifeq ($(SYS_NAME),Darwin)
ifeq ($(SYS_PLATFORM),arm64)
JOBS ?= 16
else
JOBS ?= 4
endif
else
JOBS ?= 2
endif
JOBS ?= 4

38
tjp/Make/Makefile.base.linux Executable file
View File

@@ -0,0 +1,38 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
ifeq (Linux,$(SYS_NAME))
# Somehow on linux dockers, under colima, dependencies
# cause problems -
# USE_DEPENDENCIES := 0
GCCC := gcc
AR := ar
CC := ${GCCC}
CPP := ${GCCC}
MM := ${GCCC}
M := ${GCCC}
LINK := ${GCCC}
_FLAGS += \
-DSYS_LINUX \
-DSYS_X86 \
-ldl -lm -lstdc++ -pthread \
-Wno-stringop-overflow \
-Wno-stringop-overread \
-fno-omit-frame-pointer
# not needed with newer boost
# -DBOOST_NO_CXX98_FUNCTION_BASE=1
# -Wno-changes-meaning does not work
LDFLAGS += -L /usr/local/lib
PLATFORM_LIBS := -ldl -lm -lstdc++ -pthread
endif

31
tjp/Make/Makefile.base.llvm Executable file
View File

@@ -0,0 +1,31 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
ifeq (LLVM,$(SYS_NAME))
DEVELOPER := /Applications/Xcode.app/Contents/Developer
DEVDIR := $(DEVELOPER)/Platforms/iPhoneOS.platform/Developer
AR := ar
CC := clang
CPP := clang++
MM := clang
M := clang
LINK := clang
CPPFLAGS += -stdlib=libc++
MMFLAGS += -stdlib=libc++
MFLAGS += -stdlib=libc++
_FLAGS += -Wno-null-conversion -Wno-extra-tokens -Wno-int-to-void-pointer-cast -Wno-deprecated-register
_FLAGS += -Wno-import
# _FLAGS += -Werror
# _FLAGS += -arch armv6
_FLAGS += -mthumb
_FLAGS += -isysroot $(DEVELOPER)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
_FLAGS += -miphoneos-version-min=11.0
_FLAGS += -DSYS_LLVM
_FLAGS += -emit-llvm -target le32-unknown-nacl
endif

20
tjp/Make/Makefile.bin Executable file
View File

@@ -0,0 +1,20 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
#include $(SELF_DIR)/Makefile.base
include $(SELF_DIR)/Makefile.src
ifdef BUILD_PCH
include $(SELF_DIR)/Makefile.build_pch
else
include $(SELF_DIR)/Makefile.build_bin
endif
all: build

43
tjp/Make/Makefile.build_bin Executable file
View File

@@ -0,0 +1,43 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
EXE := $(OBJPATH)/$(EXEFILE)
LDPATH_NO_L = $(filter-out -L%,$(LDPATH))
LIB_DIRS = $(patsubst -L%,%,$(LDPATH_NO_L))
resolve_lib = $(firstword $(foreach dir,$(LIB_DIRS),$(wildcard $(dir)/lib$1.a $(dir)/lib$1.so)))
LIB_DEPS = $(foreach lib,$(filter -l%,$(LIBS) $(PLATFORM_LIBS)),$(call resolve_lib,$(patsubst -l%,%,$(lib))))
#$(info $$LDPATH is [${LDPATH}])
#$(info $$LDPATH_NO_L is [${LDPATH_NO_L}])
#$(info $$LIB_DIRS is [${LIB_DIRS}])
#$(info $$LIB_DEPS is [${LIB_DEPS}])
$(EXE): $(OBJ) $(LIB_DEPS)
-@mkdir -p $(dir $@)
@while [ ! -e $(dir $@) ]; do sleep 0.1; done
$(LINK) $(LDFLAGS) $(LDPATH) $(OBJ) $(LIBS) $(PLATFORM_LIBS) -o $@
ifneq ("$(COPY_RESOURCES)","")
cp -p -r $(COPY_RESOURCES) $(OBJPATH)/
endif
ifneq ($(COPYTO),)
-@mkdir -p $(COPYTO)/$(OBJDIR)
@while [ ! -e $(COPYTO)/$(OBJDIR) ]; do sleep 0.1; done
cp -p $(EXE) $(COPYTO)/$(OBJDIR)
ifneq ("$(COPY_RESOURCES)","")
cp -p -r $(COPY_RESOURCES) $(COPYTO)/$(OBJDIR)/
endif
endif
exe: $(EXE)
build: exe

21
tjp/Make/Makefile.build_lib Executable file
View File

@@ -0,0 +1,21 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
LIB := $(OBJPATH)/$(LIBFILE)
$(LIB) : $(OBJ)
$(AR) $(ARFLAGS) $(LIB) $(OBJ)
ifneq ($(COPYTO),)
-@mkdir -p $(COPYTO)/$(OBJDIR)
@while [ ! -e $(COPYTO)/$(OBJDIR) ]; do sleep 0.1; done
cp -p $(LIB) $(COPYTO)/$(OBJDIR)
endif
lib : $(LIB)
build: lib

37
tjp/Make/Makefile.build_pch Executable file
View File

@@ -0,0 +1,37 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
ifneq ($(strip $(PCH)),)
PCH_OUT := $(OBJPATH)/Precompile.pch.gch
############################
# USE dependencies
ifeq ($(USE_DEPENDENCIES),1)
PCH_DEPS := $(PCH_OUT:%.gch=%.d)
$(info $$PCH_OUT is [${PCH_OUT}])
#$(info $$PCH_DEPS is [${PCH_DEPS}])
-include $(PCH_DEPS)
endif
$(PCH_OUT): $(PCH)
-@mkdir -p $(dir $@)
@while [ ! -e $(dir $@) ]; do sleep 0.1; done
$(CPP) $(INCPATH) $(BUILD_PCH_FLAGS) $(_FLAGS) $(CPPFLAGS) $< -o $@
lib : $(PCH_OUT)
else
lib:
endif
build: lib

View File

@@ -0,0 +1,43 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
EXE := $(OBJPATH)/$(SHAREDLIBFILE)
LDPATH_NO_L = $(filter-out -L%,$(LDPATH))
LIB_DIRS = $(patsubst -L%,%,$(LDPATH_NO_L))
resolve_lib = $(firstword $(foreach dir,$(LIB_DIRS),$(wildcard $(dir)/lib$1.a $(dir)/lib$1.so)))
LIB_DEPS = $(foreach lib,$(filter -l%,$(LIBS) $(PLATFORM_LIBS)),$(call resolve_lib,$(patsubst -l%,%,$(lib))))
#$(info $$LDPATH is [${LDPATH}])
#$(info $$LDPATH_NO_L is [${LDPATH_NO_L}])
#$(info $$LIB_DIRS is [${LIB_DIRS}])
#$(info $$LIB_DEPS is [${LIB_DEPS}])
$(EXE): $(OBJ) $(LIB_DEPS)
-@mkdir -p $(dir $@)
@while [ ! -e $(dir $@) ]; do sleep 0.1; done
$(SHARED_LINK) $(LDFLAGS) $(LDPATH) $< -shared $(LIBS) $(PLATFORM_LIBS) -o $@
ifneq ("$(COPY_RESOURCES)","")
cp -p -r $(COPY_RESOURCES) $(OBJPATH)/
endif
ifneq ($(COPYTO),)
-@mkdir -p $(COPYTO)/$(OBJDIR)
@while [ ! -e $(COPYTO)/$(OBJDIR) ]; do sleep 0.1; done
cp -p $(EXE) $(COPYTO)/$(OBJDIR)
# must not be indented for a makefile
ifneq ("$(COPY_RESOURCES)","")
cp -p -r $(COPY_RESOURCES) $(COPYTO)/$(OBJDIR)/
endif
endif
exe: $(EXE)
build: exe

19
tjp/Make/Makefile.lib Executable file
View File

@@ -0,0 +1,19 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
include $(SELF_DIR)/Makefile.src
ifdef BUILD_PCH
include $(SELF_DIR)/Makefile.build_pch
else
include $(SELF_DIR)/Makefile.build_lib
endif
all: build

12
tjp/Make/Makefile.none Normal file
View File

@@ -0,0 +1,12 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
.PHONY: build
build:
.PHONY: all
all: build

19
tjp/Make/Makefile.shared_lib Executable file
View File

@@ -0,0 +1,19 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
include $(SELF_DIR)/Makefile.src
ifdef BUILD_PCH
include $(SELF_DIR)/Makefile.build_pch
else
include $(SELF_DIR)/Makefile.build_shared_lib
endif
all: build

136
tjp/Make/Makefile.src Executable file
View File

@@ -0,0 +1,136 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################
#$(info $$PROJECTS is [${PROJECTS}])
SRC_C := $(foreach dir,$(PROJECTS),$(wildcard $(dir)/*.c)) $(SRC_C)
SRC_CPP := $(foreach dir,$(PROJECTS),$(wildcard $(dir)/*.cpp)) $(SRC_CPP)
SRC_CC := $(foreach dir,$(PROJECTS),$(wildcard $(dir)/*.cc)) $(SRC_CC)
SRC_MM := $(foreach dir,$(PROJECTS),$(wildcard $(dir)/*.mm)) $(SRC_MM)
SRC_M := $(foreach dir,$(PROJECTS),$(wildcard $(dir)/*.m)) $(SRC_M)
$(info $$IS_TEST is [${IS_TEST}])
ifneq (true,$(IS_TEST))
FILTER_OUT_C := $(FILTER_OUT_C) %Test.c %Tests.c
FILTER_OUT_CPP := $(FILTER_OUT_CPP) %Test.cpp %Tests.cpp
FILTER_OUT_MM := $(FILTER_OUT_MM) %Test.mm %Tests.mm
FILTER_OUT_M := $(FILTER_OUT_M) %Test.m %Tests.m
endif
ifneq ($(FILTER_CPP),)
SRC_CPP := $(filter $(FILTER_CPP),$(SRC_CPP))
endif
SRC_CPP := $(filter-out $(FILTER_OUT_CPP),$(SRC_CPP))
ifneq ($(FILTER_C),)
SRC_C := $(filter $(FILTER_C),$(SRC_C))
endif
SRC_C := $(filter-out $(FILTER_OUT_C),$(SRC_C))
ifneq ($(FILTER_MM),)
SRC_MM := $(filter $(FILTER_MM),$(SRC_MM))
endif
SRC_MM := $(filter-out $(FILTER_OUT_MM),$(SRC_MM))
ifneq ($(FILTER_M),)
SRC_M := $(filter $(FILTER_M),$(SRC_M))
endif
SRC_M := $(filter-out $(FILTER_OUT_M),$(SRC_M))
SRC := $(SRC_C) $(SRC_CPP) $(SRC_CC) $(SRC_MM) $(SRC_M) $(SRC)
SRC_CPP := $(filter %.cpp,$(SRC))
SRC_C := $(filter %.c,$(SRC))
SRC_MM := $(filter %.mm,$(SRC))
SRC_CC := $(filter %.cc,$(SRC))
SRC_M := $(filter %.m,$(SRC))
OBJ := \
$(SRC_CPP:%.cpp=%.o) \
$(SRC_CC:%.cc=%.o) \
$(SRC_MM:%.mm=%.o) \
$(SRC_C:%.c=%.o) \
$(SRC_M:%.m=%.o)
OBJ := $(patsubst ../%,external/%,$(OBJ))
OBJ := $(addprefix $(OBJPATH)/,$(OBJ))
#$(info $$OBJ is [${OBJ}])
############################
# USE dependencies
ifeq ($(USE_DEPENDENCIES),1)
DEPS := $(wildcard $(OBJ:%.o=%.d))
#$(info $$DEPS is [${DEPS}])
-include $(DEPS)
endif
PCH := $(SRC_PCH)
$(info $$PCH is [${PCH}])
ifneq ($(strip $(PCH)),)
BUILD_FLAGS := $(BUILD_FLAGS) -include $(OBJPATH)/Precompile.pch
endif
SHELL := /bin/bash
INCPATH += $(foreach d, $(includes), -I$d)
$(info $$_FLAGS is [${_FLAGS}])
$(OBJPATH)/%.o : %.cpp
-@mkdir -p $(dir $@)
@while [ ! -e $(dir $@) ]; do sleep 0.1; done
$(CPP) $(INCPATH) $(BUILD_FLAGS) $(_FLAGS) $(CPPFLAGS) $< -o $@
$(OBJPATH)/%.o : %.cc
-@mkdir -p $(dir $@)
@while [ ! -e $(dir $@) ]; do sleep 0.1; done
$(CPP) $(INCPATH) $(BUILD_FLAGS) $(_FLAGS) $(CPPFLAGS) $< -o $@
$(OBJPATH)/%.o : %.mm
-@mkdir -p $(dir $@)
@while [ ! -e $(dir $@) ]; do sleep 0.1; done
$(MM) $(INCPATH) $(BUILD_FLAGS) $(_FLAGS) $(MMFLAGS) $< -o $@
$(OBJPATH)/%.o : %.m
-@mkdir -p $(dir $@)
@while [ ! -e $(dir $@) ]; do sleep 0.1; done
$(M) $(INCPATH) $(BUILD_FLAGS) $(_FLAGS) $(MFLAGS) $< -o $@
$(OBJPATH)/%.o : %.c
-@mkdir -p $(dir $@)
@while [ ! -e $(dir $@) ]; do sleep 0.1; done
$(CC) $(INCPATH) $(BUILD_FLAGS) $(_FLAGS) $(CFLAGS) $< -o $@
## -------------------------------------------
## for externals (which occur for compile tests)
## -------------------------------------------
$(OBJPATH)/external/%.o : ../%.cpp
-@mkdir -p $(dir $@)
@while [ ! -e $(dir $@) ]; do sleep 0.1; done
$(CPP) $(INCPATH) $(BUILD_FLAGS) $(_FLAGS) $(CPPFLAGS) $< -o $@
$(OBJPATH)/external/%.o : ../%.cc
-@mkdir -p $(dir $@)
@while [ ! -e $(dir $@) ]; do sleep 0.1; done
$(CPP) $(INCPATH) $(BUILD_FLAGS) $(_FLAGS) $(CPPFLAGS) $< -o $@
$(OBJPATH)/external/%.o : ../%.mm
-@mkdir -p $(dir $@)
@while [ ! -e $(dir $@) ]; do sleep 0.1; done
$(MM) $(INCPATH) $(BUILD_FLAGS) $(_FLAGS) $(MMFLAGS) $< -o $@
$(OBJPATH)/external/%.o : ../%.m
-@mkdir -p $(dir $@)
@while [ ! -e $(dir $@) ]; do sleep 0.1; done
$(M) $(INCPATH) $(BUILD_FLAGS) $(_FLAGS) $(MFLAGS) $< -o $@
$(OBJPATH)/external/%.o : ../%.c
-@mkdir -p $(dir $@)
@while [ ! -e $(dir $@) ]; do sleep 0.1; done
$(CC) $(INCPATH) $(BUILD_FLAGS) $(_FLAGS) $(CFLAGS) $< -o $@

6
tjp/Make/makefile.def Executable file
View File

@@ -0,0 +1,6 @@
###################################
# License: Modified MIT (NON-AI)
# Copyright 2025 Timothy Prepscius
# See the LICENSE file in the root directory for license information.
###################################