124 lines
3.0 KiB
Makefile
Executable File
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)
|