Files
core_make/tjp/Make/Makefile.src
Timothy Prepscius 46185db8f0 flatten 20260225
2026-02-25 12:34:54 -05:00

137 lines
3.9 KiB
Makefile
Executable File

###################################
# 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 $@