From 46185db8f04f31beb2e1f342449001a97eed41df Mon Sep 17 00:00:00 2001 From: Timothy Prepscius Date: Wed, 25 Feb 2026 12:34:54 -0500 Subject: [PATCH] flatten 20260225 --- .gitignore | 5 + Core_Make.xcodeproj/project.pbxproj | 195 ++++++++++++++++++++++++++++ LICENSE | 26 ++++ ReadMe.md | 141 ++++++++++++++++++++ tjp/Make/Makefile | 61 +++++++++ tjp/Make/Makefile-all | 15 +++ tjp/Make/Makefile.base | 123 ++++++++++++++++++ tjp/Make/Makefile.base.android | 34 +++++ tjp/Make/Makefile.base.cuda | 39 ++++++ tjp/Make/Makefile.base.darwin | 42 ++++++ tjp/Make/Makefile.base.ios | 80 ++++++++++++ tjp/Make/Makefile.base.jobs | 34 +++++ tjp/Make/Makefile.base.linux | 38 ++++++ tjp/Make/Makefile.base.llvm | 31 +++++ tjp/Make/Makefile.bin | 20 +++ tjp/Make/Makefile.build_bin | 43 ++++++ tjp/Make/Makefile.build_lib | 21 +++ tjp/Make/Makefile.build_pch | 37 ++++++ tjp/Make/Makefile.build_shared_lib | 43 ++++++ tjp/Make/Makefile.lib | 19 +++ tjp/Make/Makefile.none | 12 ++ tjp/Make/Makefile.shared_lib | 19 +++ tjp/Make/Makefile.src | 136 +++++++++++++++++++ tjp/Make/makefile.def | 6 + 24 files changed, 1220 insertions(+) create mode 100644 .gitignore create mode 100644 Core_Make.xcodeproj/project.pbxproj create mode 100755 LICENSE create mode 100755 ReadMe.md create mode 100755 tjp/Make/Makefile create mode 100644 tjp/Make/Makefile-all create mode 100755 tjp/Make/Makefile.base create mode 100755 tjp/Make/Makefile.base.android create mode 100755 tjp/Make/Makefile.base.cuda create mode 100755 tjp/Make/Makefile.base.darwin create mode 100755 tjp/Make/Makefile.base.ios create mode 100755 tjp/Make/Makefile.base.jobs create mode 100755 tjp/Make/Makefile.base.linux create mode 100755 tjp/Make/Makefile.base.llvm create mode 100755 tjp/Make/Makefile.bin create mode 100755 tjp/Make/Makefile.build_bin create mode 100755 tjp/Make/Makefile.build_lib create mode 100755 tjp/Make/Makefile.build_pch create mode 100755 tjp/Make/Makefile.build_shared_lib create mode 100755 tjp/Make/Makefile.lib create mode 100644 tjp/Make/Makefile.none create mode 100755 tjp/Make/Makefile.shared_lib create mode 100755 tjp/Make/Makefile.src create mode 100755 tjp/Make/makefile.def diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..962c6bd --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.DS_Store +*.pyc +xcuserdata +.bin +transfer-to-* diff --git a/Core_Make.xcodeproj/project.pbxproj b/Core_Make.xcodeproj/project.pbxproj new file mode 100644 index 0000000..d489843 --- /dev/null +++ b/Core_Make.xcodeproj/project.pbxproj @@ -0,0 +1,195 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 77; + objects = { + +/* Begin PBXFileReference section */ + F68F48702E6DBCD2007C3E32 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + F6F858C52E7C3119002A1971 /* ReadMe.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = ReadMe.md; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFileSystemSynchronizedRootGroup section */ + F6F10D612E38053A0082E9D9 /* tjp */ = { + isa = PBXFileSystemSynchronizedRootGroup; + explicitFileTypes = { + Make/Makefile.bin = sourcecode.make; + }; + path = tjp; + sourceTree = ""; + }; +/* End PBXFileSystemSynchronizedRootGroup section */ + +/* Begin PBXGroup section */ + F6F10D3C2E3804C90082E9D9 = { + isa = PBXGroup; + children = ( + F68F48702E6DBCD2007C3E32 /* LICENSE */, + F6F858C52E7C3119002A1971 /* ReadMe.md */, + F6F10D612E38053A0082E9D9 /* tjp */, + ); + sourceTree = ""; + }; +/* 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 */; +} diff --git a/LICENSE b/LICENSE new file mode 100755 index 0000000..f1db21f --- /dev/null +++ b/LICENSE @@ -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. diff --git a/ReadMe.md b/ReadMe.md new file mode 100755 index 0000000..7b9e256 --- /dev/null +++ b/ReadMe.md @@ -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 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 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 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. diff --git a/tjp/Make/Makefile b/tjp/Make/Makefile new file mode 100755 index 0000000..8f68747 --- /dev/null +++ b/tjp/Make/Makefile @@ -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 + + diff --git a/tjp/Make/Makefile-all b/tjp/Make/Makefile-all new file mode 100644 index 0000000..d1c0249 --- /dev/null +++ b/tjp/Make/Makefile-all @@ -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) diff --git a/tjp/Make/Makefile.base b/tjp/Make/Makefile.base new file mode 100755 index 0000000..a33f26b --- /dev/null +++ b/tjp/Make/Makefile.base @@ -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) diff --git a/tjp/Make/Makefile.base.android b/tjp/Make/Makefile.base.android new file mode 100755 index 0000000..658fe99 --- /dev/null +++ b/tjp/Make/Makefile.base.android @@ -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 diff --git a/tjp/Make/Makefile.base.cuda b/tjp/Make/Makefile.base.cuda new file mode 100755 index 0000000..366fb18 --- /dev/null +++ b/tjp/Make/Makefile.base.cuda @@ -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 diff --git a/tjp/Make/Makefile.base.darwin b/tjp/Make/Makefile.base.darwin new file mode 100755 index 0000000..d64572b --- /dev/null +++ b/tjp/Make/Makefile.base.darwin @@ -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 diff --git a/tjp/Make/Makefile.base.ios b/tjp/Make/Makefile.base.ios new file mode 100755 index 0000000..c342486 --- /dev/null +++ b/tjp/Make/Makefile.base.ios @@ -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 diff --git a/tjp/Make/Makefile.base.jobs b/tjp/Make/Makefile.base.jobs new file mode 100755 index 0000000..9e8e452 --- /dev/null +++ b/tjp/Make/Makefile.base.jobs @@ -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 + diff --git a/tjp/Make/Makefile.base.linux b/tjp/Make/Makefile.base.linux new file mode 100755 index 0000000..1b7576b --- /dev/null +++ b/tjp/Make/Makefile.base.linux @@ -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 diff --git a/tjp/Make/Makefile.base.llvm b/tjp/Make/Makefile.base.llvm new file mode 100755 index 0000000..246e610 --- /dev/null +++ b/tjp/Make/Makefile.base.llvm @@ -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 diff --git a/tjp/Make/Makefile.bin b/tjp/Make/Makefile.bin new file mode 100755 index 0000000..cd38ed8 --- /dev/null +++ b/tjp/Make/Makefile.bin @@ -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 + + diff --git a/tjp/Make/Makefile.build_bin b/tjp/Make/Makefile.build_bin new file mode 100755 index 0000000..1e0346e --- /dev/null +++ b/tjp/Make/Makefile.build_bin @@ -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 diff --git a/tjp/Make/Makefile.build_lib b/tjp/Make/Makefile.build_lib new file mode 100755 index 0000000..a5ef420 --- /dev/null +++ b/tjp/Make/Makefile.build_lib @@ -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 diff --git a/tjp/Make/Makefile.build_pch b/tjp/Make/Makefile.build_pch new file mode 100755 index 0000000..7a3e659 --- /dev/null +++ b/tjp/Make/Makefile.build_pch @@ -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 diff --git a/tjp/Make/Makefile.build_shared_lib b/tjp/Make/Makefile.build_shared_lib new file mode 100755 index 0000000..7e893e4 --- /dev/null +++ b/tjp/Make/Makefile.build_shared_lib @@ -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 diff --git a/tjp/Make/Makefile.lib b/tjp/Make/Makefile.lib new file mode 100755 index 0000000..67fd7e2 --- /dev/null +++ b/tjp/Make/Makefile.lib @@ -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 + + diff --git a/tjp/Make/Makefile.none b/tjp/Make/Makefile.none new file mode 100644 index 0000000..f8b6692 --- /dev/null +++ b/tjp/Make/Makefile.none @@ -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 diff --git a/tjp/Make/Makefile.shared_lib b/tjp/Make/Makefile.shared_lib new file mode 100755 index 0000000..a9d6455 --- /dev/null +++ b/tjp/Make/Makefile.shared_lib @@ -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 + + diff --git a/tjp/Make/Makefile.src b/tjp/Make/Makefile.src new file mode 100755 index 0000000..dc68604 --- /dev/null +++ b/tjp/Make/Makefile.src @@ -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 $@ diff --git a/tjp/Make/makefile.def b/tjp/Make/makefile.def new file mode 100755 index 0000000..cc81464 --- /dev/null +++ b/tjp/Make/makefile.def @@ -0,0 +1,6 @@ +################################### +# License: Modified MIT (NON-AI) +# Copyright 2025 Timothy Prepscius +# See the LICENSE file in the root directory for license information. +################################### +