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

5
.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
.DS_Store
*.pyc
xcuserdata
.bin
transfer-to-*

View File

@@ -0,0 +1,195 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 77;
objects = {
/* Begin PBXFileReference section */
F68F48702E6DBCD2007C3E32 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
F6F858C52E7C3119002A1971 /* ReadMe.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = ReadMe.md; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedRootGroup section */
F6F10D612E38053A0082E9D9 /* tjp */ = {
isa = PBXFileSystemSynchronizedRootGroup;
explicitFileTypes = {
Make/Makefile.bin = sourcecode.make;
};
path = tjp;
sourceTree = "<group>";
};
/* End PBXFileSystemSynchronizedRootGroup section */
/* Begin PBXGroup section */
F6F10D3C2E3804C90082E9D9 = {
isa = PBXGroup;
children = (
F68F48702E6DBCD2007C3E32 /* LICENSE */,
F6F858C52E7C3119002A1971 /* ReadMe.md */,
F6F10D612E38053A0082E9D9 /* tjp */,
);
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXProject section */
F6F10D3D2E3804C90082E9D9 /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = 1;
LastUpgradeCheck = 1630;
};
buildConfigurationList = F6F10D402E3804C90082E9D9 /* Build configuration list for PBXProject "Core_Make" */;
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = F6F10D3C2E3804C90082E9D9;
minimizedProjectReferenceProxies = 1;
preferredProjectObjectVersion = 77;
productRefGroup = F6F10D3C2E3804C90082E9D9;
projectDirPath = "";
projectRoot = "";
targets = (
);
};
/* End PBXProject section */
/* Begin XCBuildConfiguration section */
F6F10D472E3804C90082E9D9 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = T2M28D3T75;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MACOSX_DEPLOYMENT_TARGET = 15.4;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
F6F10D482E3804C90082E9D9 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = T2M28D3T75;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MACOSX_DEPLOYMENT_TARGET = 15.4;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = macosx;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
F6F10D402E3804C90082E9D9 /* Build configuration list for PBXProject "Core_Make" */ = {
isa = XCConfigurationList;
buildConfigurations = (
F6F10D472E3804C90082E9D9 /* Debug */,
F6F10D482E3804C90082E9D9 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = F6F10D3D2E3804C90082E9D9 /* Project object */;
}

26
LICENSE Executable file
View File

@@ -0,0 +1,26 @@
MIT NON-AI License
Copyright (c) 2025, Timothy Prepscius
Permission is hereby granted, free of charge, to any person obtaining a copy of the software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions.
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
In addition, the following restrictions apply:
1. The Software and any modifications made to it may not be used for the purpose of training or improving machine learning algorithms,
including but not limited to artificial intelligence, natural language processing, or data mining. This condition applies to any derivatives,
modifications, or updates based on the Software code. Any usage of the Software in an AI-training dataset is considered a breach of this License.
2. The Software may not be included in any dataset used for training or improving machine learning algorithms,
including but not limited to artificial intelligence, natural language processing, or data mining.
3. Any person or organization found to be in violation of these restrictions will be subject to legal action and may be held liable
for any damages resulting from such use.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

141
ReadMe.md Executable file
View File

@@ -0,0 +1,141 @@
# Core_Zero
Basic foundational classes
## Building
Most of Core_Zero is header-only.
To enable header-only use:
`#define TJP_CORE_HEADER_ONLY`
The entire Core_Zero project will be converted to header only compatible soon.
To build all of the project use these steps.
```
mkdir my_project
cd my_project
git clone http://github.com/timprepscius/Core_Libraries
git clone http://github.com/timprepscius/Core_Zero
git clone http://github.com/timprepscius/Core_Make
cd Core_Zero
make
cd tests
make
.bin/Core_Zero_Tests.exe
```
## How to use
### Locks
```
// ----------------------------------------
// example for locks
// ----------------------------------------
void example_lock_tjp()
{
Mutex mutex;
auto lock = lock_of(mutex);
do_something();
auto should_send_signal = true;
if (should_send_signal)
{
auto unlock = unlock_of(mutex);
do_something();
}
}
// using std
void example_lock_cpp()
{
std::mutex mutex;
std::lock_guard<std::mutex> lock(mutex);
do_something();
auto should_send_signal = true;
if (should_send_signal)
{
try
{
mutex.unlock();
do_something();
mutex.lock();
}
catch (...)
{
mutex.lock();
}
}
}
```
### Maps
```
// ----------------------------------------
// example for maps
// ----------------------------------------
void example_map_tjp()
{
Map<int, int> map;
if (auto value = map_value(map, 42))
do_something_with(*value);
if (auto value = map_value_erase(map, 42))
do_something_with(*value);
}
// using std
void example_map_cpp()
{
std::map<int, int> map;
auto i = map.find(42);
if (i != map.end())
{
do_something_with(*i);
}
auto j = map.find(42);
if (j != map.end())
{
auto v = std::move(j->second);
map.erase(j);
do_something_with(v);
}
}
```
### Range iteration
```
// ----------------------------------------
// example for range
// ----------------------------------------
void example_range_tjp()
{
for (auto i: range(42))
do_something_with(i);
}
// using std
void example_range_cpp()
{
for (auto k=0; k<42; ++k)
do_something_with(k);
}
```
### Other examples
Look at `Core_Zero/Examples.cpp` for more examples on how to use this library.

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.
###################################