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

124 lines
3.0 KiB
Makefile
Executable File

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