Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support true parallel builds #225

Closed
wants to merge 10 commits into from
17 changes: 13 additions & 4 deletions makefiles/common.mk
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
all::

# Block sudo. This is a common way users create more permissions problems than they already had.
ifeq ($(notdir $(firstword $(SUDO_COMMAND))),make)
$(error Do not use 'sudo make')
endif

# We use bash for all subshells. Force SHELL to bash if it’s currently set to sh.
ifeq ($(SHELL),/bin/sh)
export SHELL = bash
endif
Expand Down Expand Up @@ -203,8 +205,14 @@ ifneq ($(GO_EASY_ON_ME),1)
_THEOS_INTERNAL_CFLAGS += -Werror
endif

ifeq ($(call __theos_bool,$(or $(FORCE_COLOR),$(_THEOS_FALSE))),$(_THEOS_TRUE))
# If FORCE_COLOR hasn’t already been set, determine whether we’re a tty (a graphical terminal) and
# enable color if so. We need to detect this ourselves because output is buffered by make when
# running rules in parallel, so clang doesn’t see stderr as a tty.
FORCE_COLOR ?= $(shell [ -t 2 ] && echo $(_THEOS_TRUE))

ifeq ($(call __theos_bool,$(FORCE_COLOR)),$(_THEOS_TRUE))
_THEOS_INTERNAL_CFLAGS += -fcolor-diagnostics
_THEOS_INTERNAL_SWIFTFLAGS += -fcolor-diagnostics
_THEOS_INTERNAL_LDFLAGS += -fcolor-diagnostics
endif

Expand Down Expand Up @@ -240,10 +248,11 @@ FW_PACKAGE_STAGING_DIR = $(THEOS_STAGING_DIR)$(warning FW_PACKAGE_STAGING_DIR is
THEOS_SUBPROJECT_PRODUCT = subproject.o

include $(THEOS_MAKE_PATH)/messages.mk

_THEOS_MAKEFLAGS := --no-keep-going FORCE_COLOR=$(FORCE_COLOR)

ifeq ($(_THEOS_VERBOSE),$(_THEOS_FALSE))
_THEOS_NO_PRINT_DIRECTORY_FLAG := --no-print-directory
else
_THEOS_NO_PRINT_DIRECTORY_FLAG :=
_THEOS_MAKEFLAGS += --no-print-directory
endif

unexport THEOS_CURRENT_INSTANCE _THEOS_CURRENT_TYPE
Expand Down
4 changes: 2 additions & 2 deletions makefiles/instance/appex.mk
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ ifeq ($(_THEOS_MAKE_PARALLEL_BUILDING), no)
internal-appex-all_:: $(_OBJ_DIR_STAMPS) shared-instance-bundle-all $(THEOS_OBJ_DIR)/$(_LOCAL_INSTANCE_TARGET)
else
internal-appex-all_:: $(_OBJ_DIR_STAMPS) shared-instance-bundle-all
$(ECHO_NOTHING)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going \
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) \
internal-appex-compile \
_THEOS_CURRENT_TYPE=$(_THEOS_CURRENT_TYPE) THEOS_CURRENT_INSTANCE=$(THEOS_CURRENT_INSTANCE) _THEOS_CURRENT_OPERATION=compile \
THEOS_BUILD_DIR="$(THEOS_BUILD_DIR)" _THEOS_MAKE_PARALLEL=yes$(ECHO_END)
THEOS_BUILD_DIR="$(THEOS_BUILD_DIR)" _THEOS_MAKE_PARALLEL=yes

internal-appex-compile: $(THEOS_OBJ_DIR)/$(_LOCAL_INSTANCE_TARGET)
endif
Expand Down
4 changes: 2 additions & 2 deletions makefiles/instance/application.mk
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ ifeq ($(_THEOS_MAKE_PARALLEL_BUILDING), no)
internal-application-all_:: $(_OBJ_DIR_STAMPS) shared-instance-bundle-all $(THEOS_OBJ_DIR)/$(_LOCAL_INSTANCE_TARGET)
else
internal-application-all_:: $(_OBJ_DIR_STAMPS) shared-instance-bundle-all
$(ECHO_NOTHING)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going \
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) \
internal-application-compile \
_THEOS_CURRENT_TYPE=$(_THEOS_CURRENT_TYPE) THEOS_CURRENT_INSTANCE=$(THEOS_CURRENT_INSTANCE) _THEOS_CURRENT_OPERATION=compile \
THEOS_BUILD_DIR="$(THEOS_BUILD_DIR)" _THEOS_MAKE_PARALLEL=yes$(ECHO_END)
THEOS_BUILD_DIR="$(THEOS_BUILD_DIR)" _THEOS_MAKE_PARALLEL=yes

internal-application-compile: $(THEOS_OBJ_DIR)/$(_LOCAL_INSTANCE_TARGET)
endif
Expand Down
4 changes: 2 additions & 2 deletions makefiles/instance/bundle.mk
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ ifeq ($(_THEOS_MAKE_PARALLEL_BUILDING), no)
internal-bundle-all_:: $(_OBJ_DIR_STAMPS) shared-instance-bundle-all $(THEOS_OBJ_DIR)/$(_LOCAL_INSTANCE_TARGET)
else
internal-bundle-all_:: $(_OBJ_DIR_STAMPS) shared-instance-bundle-all
$(ECHO_NOTHING)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going \
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) \
internal-bundle-compile \
_THEOS_CURRENT_TYPE=$(_THEOS_CURRENT_TYPE) THEOS_CURRENT_INSTANCE=$(THEOS_CURRENT_INSTANCE) _THEOS_CURRENT_OPERATION=compile \
THEOS_BUILD_DIR="$(THEOS_BUILD_DIR)" _THEOS_MAKE_PARALLEL=yes$(ECHO_END)
THEOS_BUILD_DIR="$(THEOS_BUILD_DIR)" _THEOS_MAKE_PARALLEL=yes

internal-bundle-compile: $(THEOS_OBJ_DIR)/$(_LOCAL_INSTANCE_TARGET)
endif
Expand Down
4 changes: 2 additions & 2 deletions makefiles/instance/framework.mk
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ ifeq ($(_THEOS_MAKE_PARALLEL_BUILDING), no)
internal-framework-all_:: $(_OBJ_DIR_STAMPS) shared-instance-bundle-all $(THEOS_OBJ_DIR)/$(_LOCAL_INSTANCE_TARGET)
else
internal-framework-all_:: $(_OBJ_DIR_STAMPS) shared-instance-bundle-all
$(ECHO_NOTHING)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going \
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) \
internal-framework-compile \
_THEOS_CURRENT_TYPE=$(_THEOS_CURRENT_TYPE) THEOS_CURRENT_INSTANCE=$(THEOS_CURRENT_INSTANCE) _THEOS_CURRENT_OPERATION=compile \
THEOS_BUILD_DIR="$(THEOS_BUILD_DIR)" _THEOS_MAKE_PARALLEL=yes$(ECHO_END)
THEOS_BUILD_DIR="$(THEOS_BUILD_DIR)" _THEOS_MAKE_PARALLEL=yes

internal-framework-compile: $(THEOS_OBJ_DIR)/$(_LOCAL_INSTANCE_TARGET)
endif
Expand Down
4 changes: 2 additions & 2 deletions makefiles/instance/library.mk
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ ifeq ($(_THEOS_MAKE_PARALLEL_BUILDING), no)
internal-library-all_:: $(_OBJ_DIR_STAMPS) $(THEOS_OBJ_DIR)/$(THEOS_CURRENT_INSTANCE)$(_LOCAL_LIBRARY_EXTENSION)
else
internal-library-all_:: $(_OBJ_DIR_STAMPS)
$(ECHO_NOTHING)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going \
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) \
internal-library-compile \
_THEOS_CURRENT_TYPE=$(_THEOS_CURRENT_TYPE) THEOS_CURRENT_INSTANCE=$(THEOS_CURRENT_INSTANCE) _THEOS_CURRENT_OPERATION=compile \
THEOS_BUILD_DIR="$(THEOS_BUILD_DIR)" _THEOS_MAKE_PARALLEL=yes$(ECHO_END)
THEOS_BUILD_DIR="$(THEOS_BUILD_DIR)" _THEOS_MAKE_PARALLEL=yes

internal-library-compile: $(THEOS_OBJ_DIR)/$(THEOS_CURRENT_INSTANCE)$(_LOCAL_LIBRARY_EXTENSION)
endif
Expand Down
2 changes: 1 addition & 1 deletion makefiles/instance/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ ifeq ($(THEOS_CURRENT_ARCH),)

ARCH_FILES_TO_LINK := $(addsuffix /$(1),$(addprefix $(THEOS_OBJ_DIR)/,$(TARGET_ARCHS)))
$$(THEOS_OBJ_DIR)/%/$(1): $(__ALL_FILES)
@ \
+@ \
mkdir -p $(THEOS_OBJ_DIR)/$$*; \
$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going \
internal-$(_THEOS_CURRENT_TYPE)-$(_THEOS_CURRENT_OPERATION) \
Expand Down
4 changes: 2 additions & 2 deletions makefiles/instance/simbltweak.mk
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ ifeq ($(_THEOS_MAKE_PARALLEL_BUILDING), no)
internal-simbltweak-all_:: $(_OBJ_DIR_STAMPS) shared-instance-bundle-all $(THEOS_OBJ_DIR)/$(_LOCAL_INSTANCE_TARGET)
else
internal-simbltweak-all_:: $(_OBJ_DIR_STAMPS) shared-instance-bundle-all
$(ECHO_NOTHING)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going \
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) \
internal-simbltweak-compile \
_THEOS_CURRENT_TYPE=$(_THEOS_CURRENT_TYPE) THEOS_CURRENT_INSTANCE=$(THEOS_CURRENT_INSTANCE) _THEOS_CURRENT_OPERATION=compile \
THEOS_BUILD_DIR="$(THEOS_BUILD_DIR)" _THEOS_MAKE_PARALLEL=yes$(ECHO_END)
THEOS_BUILD_DIR="$(THEOS_BUILD_DIR)" _THEOS_MAKE_PARALLEL=yes

internal-simbltweak-compile: $(THEOS_OBJ_DIR)/$(_LOCAL_INSTANCE_TARGET)
endif
Expand Down
4 changes: 2 additions & 2 deletions makefiles/instance/subproject.mk
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ ifeq ($(_THEOS_MAKE_PARALLEL_BUILDING), no)
internal-subproject-all_:: $(_OBJ_DIR_STAMPS) $(THEOS_OBJ_DIR)/$(THEOS_CURRENT_INSTANCE).$(THEOS_SUBPROJECT_PRODUCT)
else
internal-subproject-all_:: $(_OBJ_DIR_STAMPS)
$(ECHO_NOTHING)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going \
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) \
internal-subproject-compile \
_THEOS_CURRENT_TYPE=$(_THEOS_CURRENT_TYPE) THEOS_CURRENT_INSTANCE=$(THEOS_CURRENT_INSTANCE) _THEOS_CURRENT_OPERATION=compile \
THEOS_BUILD_DIR="$(THEOS_BUILD_DIR)" _THEOS_MAKE_PARALLEL=yes$(ECHO_END)
THEOS_BUILD_DIR="$(THEOS_BUILD_DIR)" _THEOS_MAKE_PARALLEL=yes

internal-subproject-compile: $(THEOS_OBJ_DIR)/$(THEOS_CURRENT_INSTANCE).$(THEOS_SUBPROJECT_PRODUCT)
endif
Expand Down
4 changes: 2 additions & 2 deletions makefiles/instance/tool.mk
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ ifeq ($(_THEOS_MAKE_PARALLEL_BUILDING), no)
internal-tool-all_:: $(_OBJ_DIR_STAMPS) $(THEOS_OBJ_DIR)/$(THEOS_CURRENT_INSTANCE)$(TARGET_EXE_EXT)
else
internal-tool-all_:: $(_OBJ_DIR_STAMPS)
$(ECHO_NOTHING)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going \
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) \
internal-tool-compile \
_THEOS_CURRENT_TYPE=$(_THEOS_CURRENT_TYPE) THEOS_CURRENT_INSTANCE=$(THEOS_CURRENT_INSTANCE) _THEOS_CURRENT_OPERATION=compile \
THEOS_BUILD_DIR="$(THEOS_BUILD_DIR)" _THEOS_MAKE_PARALLEL=yes$(ECHO_END)
THEOS_BUILD_DIR="$(THEOS_BUILD_DIR)" _THEOS_MAKE_PARALLEL=yes

internal-tool-compile: $(THEOS_OBJ_DIR)/$(THEOS_CURRENT_INSTANCE)$(TARGET_EXE_EXT)
endif
Expand Down
4 changes: 2 additions & 2 deletions makefiles/master/aggregate.mk
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ internal-stage internal-after-install:: _OPERATION = $@
internal-all internal-clean internal-stage internal-after-install:: _OPERATION_NAME = $(subst internal-,,$@)

internal-all internal-clean internal-stage internal-after-install::
@abs_build_dir=$(_THEOS_ABSOLUTE_BUILD_DIR); \
+@abs_build_dir=$(_THEOS_ABSOLUTE_BUILD_DIR); \
for d in $(SUBPROJECTS); do \
$(PRINT_FORMAT_MAKING) "Making $(_OPERATION_NAME) in $$d"; \
if [[ "$${abs_build_dir}" = "." ]]; then \
lbuilddir="."; \
else \
lbuilddir="$${abs_build_dir}/$$d"; \
fi; \
if $(MAKE) -C $$d -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_NO_PRINT_DIRECTORY_FLAG) --no-keep-going $(_OPERATION) \
if $(MAKE) -C $$d -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-keep-going $(_OPERATION) \
THEOS_BUILD_DIR="$$lbuilddir" \
; then\
:; \
Expand Down
2 changes: 1 addition & 1 deletion makefiles/master/appex.mk
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ internal-clean:: $(APPEXS_WITH_SUBPROJECTS:=.clean.appex.subprojects)
endif

$(APPEX_NAME):
@$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going $@.all.appex.variables
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) $@.all.appex.variables

$(eval $(call __mod,master/appex.mk))
2 changes: 1 addition & 1 deletion makefiles/master/application.mk
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ internal-clean:: $(APPLICATIONS_WITH_SUBPROJECTS:=.clean.application.subprojects
endif

$(APPLICATION_NAME):
@$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going $@.all.application.variables
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) $@.all.application.variables

$(eval $(call __mod,master/application.mk))
2 changes: 1 addition & 1 deletion makefiles/master/bundle.mk
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ internal-clean:: $(BUNDLES_WITH_SUBPROJECTS:=.clean.bundle.subprojects)
endif

$(BUNDLE_NAME):
@$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going $@.all.bundle.variables
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) $@.all.bundle.variables

$(eval $(call __mod,master/bundle.mk))
2 changes: 1 addition & 1 deletion makefiles/master/framework.mk
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ internal-clean:: $(FRAMEWORKS_WITH_SUBPROJECTS:=.clean.framework.subprojects)
endif

$(FRAMEWORK_NAME):
@$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going $@.all.framework.variables
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) $@.all.framework.variables

$(eval $(call __mod,master/framework.mk))
2 changes: 1 addition & 1 deletion makefiles/master/library.mk
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ internal-clean:: $(LIBRARYS_WITH_SUBPROJECTS:=.clean.library.subprojects)
endif

$(LIBRARY_NAME):
@$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going $@.all.library.variables
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) $@.all.library.variables

$(eval $(call __mod,master/library.mk))
2 changes: 1 addition & 1 deletion makefiles/master/null.mk
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ internal-clean:: $(NULLS_WITH_SUBPROJECTS:=.clean.null.subprojects)
endif

$(NULL_NAME):
@$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going $@.all.null.variables
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) $@.all.null.variables

$(eval $(call __mod,master/null.mk))
28 changes: 22 additions & 6 deletions makefiles/master/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,22 @@ all::
@exit 1
endif

# Determine whether we are on a modern enough version of make for us to enable parallel building.
# --output-sync was added in make 4.0; output is hard to read without it. Xcode includes make 3.81.
ifeq ($(THEOS_USE_PARALLEL_BUILDING),)
THEOS_USE_PARALLEL_BUILDING := $(call __simplify,THEOS_USE_PARALLEL_BUILDING,$(shell $(THEOS_BIN_PATH)/vercmp.pl $(MAKE_VERSION) gt 4.0))
endif

ifeq ($(call __theos_bool,$(THEOS_USE_PARALLEL_BUILDING)),$(_THEOS_TRUE))
# If jobs haven’t already been specified, and we know how to get the number of logical cores on this
# platform, set jobs to the logical core count (CPU cores multiplied by threads per core).
ifneq ($(_THEOS_PLATFORM_GET_LOGICAL_CORES),)
ifeq ($(findstring --jobserver-auth=,$(MAKEFLAGS)),)
MAKEFLAGS += -j$(shell $(_THEOS_PLATFORM_GET_LOGICAL_CORES)) -Otarget
endif
endif
endif

.PHONY: all before-all internal-all after-all \
clean before-clean internal-clean after-clean update-theos
ifeq ($(THEOS_BUILD_DIR),.)
Expand Down Expand Up @@ -87,7 +103,7 @@ endif
%.variables: _TYPE = $(subst -,_,$(subst .,,$(suffix $*)))
%.variables: __SUBPROJECTS = $(strip $(call __schema_var_all,$(_INSTANCE)_,SUBPROJECTS))
%.variables:
@ \
+@ \
abs_build_dir=$(_THEOS_ABSOLUTE_BUILD_DIR); \
if [[ "$(__SUBPROJECTS)" != "" ]]; then \
$(PRINT_FORMAT_MAKING) "Making $(_OPERATION) in subprojects of $(_TYPE) $(_INSTANCE)"; \
Expand All @@ -98,7 +114,7 @@ if [[ "$(__SUBPROJECTS)" != "" ]]; then \
else \
lbuilddir="$${abs_build_dir}/$$d"; \
fi; \
if $(MAKE) -C $$d -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_NO_PRINT_DIRECTORY_FLAG) --no-keep-going $(_OPERATION) \
if $(MAKE) -C $$d -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) $(_OPERATION) \
THEOS_BUILD_DIR="$$lbuilddir" \
; then\
:; \
Expand All @@ -107,7 +123,7 @@ if [[ "$(__SUBPROJECTS)" != "" ]]; then \
done; \
fi; \
$(PRINT_FORMAT_MAKING) "Making $(_OPERATION) for $(_TYPE) $(_INSTANCE)"; \
$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going \
$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) \
internal-$(_TYPE)-$(_OPERATION) \
_THEOS_CURRENT_TYPE="$(_TYPE)" \
THEOS_CURRENT_INSTANCE="$(_INSTANCE)" \
Expand All @@ -119,7 +135,7 @@ $(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going
%.subprojects: _TYPE = $(subst -,_,$(subst .,,$(suffix $*)))
%.subprojects: __SUBPROJECTS = $(strip $(call __schema_var_all,$(_INSTANCE)_,SUBPROJECTS))
%.subprojects:
@ \
+@ \
abs_build_dir=$(_THEOS_ABSOLUTE_BUILD_DIR); \
if [[ "$(__SUBPROJECTS)" != "" ]]; then \
$(PRINT_FORMAT_MAKING) "Making $(_OPERATION) in subprojects of $(_TYPE) $(_INSTANCE)"; \
Expand All @@ -130,7 +146,7 @@ if [[ "$(__SUBPROJECTS)" != "" ]]; then \
else \
lbuilddir="$${abs_build_dir}/$$d"; \
fi; \
if $(MAKE) -C $$d -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_NO_PRINT_DIRECTORY_FLAG) --no-keep-going $(_OPERATION) \
if $(MAKE) -C $$d -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) $(_OPERATION) \
THEOS_BUILD_DIR="$$lbuilddir" \
; then\
:; \
Expand Down Expand Up @@ -166,7 +182,7 @@ troubleshoot::

ifeq ($(call __executable,ghost),$(_THEOS_TRUE))
@$(PRINT_FORMAT) "Creating a Ghostbin containing the output of \`make clean all messages=yes\`…"
$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going clean all messages=yes FORCE_COLOR=yes 2>&1 | ghost -x 2w - ansi
+$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going clean all messages=yes FORCE_COLOR=yes 2>&1 | ghost -x 2w - ansi
else
@$(PRINT_FORMAT_ERROR) "You don't have ghost installed. For more information, refer to https://github.com/theos/theos/wiki/Installation#prerequisites." >&2; exit 1
endif
Expand Down
2 changes: 1 addition & 1 deletion makefiles/master/simbltweak.mk
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ internal-clean:: $(SIMBLTWEAKS_WITH_SUBPROJECTS:=.clean.simbltweak.subprojects)
endif

$(SIMBLTWEAK_NAME):
@$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going $@.all.simbltweak.variables
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) $@.all.simbltweak.variables

$(eval $(call __mod,master/simbltweak.mk))
2 changes: 1 addition & 1 deletion makefiles/master/subproject.mk
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ internal-clean:: $(SUBPROJECTS_WITH_SUBPROJECTS:=.clean.subproject.subprojects)
endif

$(SUBPROJECT_NAME):
@$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going $@.all.subproject.variables
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) $@.all.subproject.variables

$(eval $(call __mod,master/subproject.mk))
2 changes: 1 addition & 1 deletion makefiles/master/tool.mk
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ internal-clean:: $(TOOLS_WITH_SUBPROJECTS:=.clean.tool.subprojects)
endif

$(TOOL_NAME):
@$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going $@.all.tool.variables
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) $@.all.tool.variables

$(eval $(call __mod,master/tool.mk))
2 changes: 1 addition & 1 deletion makefiles/master/tweak.mk
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ internal-clean:: $(TWEAKS_WITH_SUBPROJECTS:=.clean.tweak.subprojects)
endif

$(TWEAK_NAME):
@$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going $@.all.tweak.variables
$(ECHO_MAKE)$(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) $(_THEOS_MAKEFLAGS) $@.all.tweak.variables

$(eval $(call __mod,master/tweak.mk))
2 changes: 2 additions & 0 deletions makefiles/messages.mk
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ _THEOS_VERBOSE := $(call __theos_bool,$(or $(messages),$(MESSAGES)))
ifeq ($(_THEOS_VERBOSE),$(_THEOS_TRUE))
ECHO_BEGIN = (
ECHO_NOTHING = $(ECHO_PIPEFAIL) (
ECHO_MAKE = +
ECHO_END = )

ifeq ($(call __executable,unbuffer),$(_THEOS_TRUE))
Expand All @@ -20,6 +21,7 @@ ifeq ($(_THEOS_VERBOSE),$(_THEOS_TRUE))
else
ECHO_BEGIN = @(
ECHO_NOTHING = @(
ECHO_MAKE = +@
ECHO_UNBUFFERED =
ECHO_END = )

Expand Down
1 change: 1 addition & 0 deletions makefiles/platform/Darwin-arm.mk
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ _THEOS_PLATFORM_DPKG_DEB := dpkg-deb
_THEOS_PLATFORM_DU_EXCLUDE := --exclude
_THEOS_PLATFORM_MD5SUM := md5sum
_THEOS_PLATFORM_LIPO = lipo
_THEOS_PLATFORM_GET_LOGICAL_CORES := sysctl -n hw.ncpu
endif
1 change: 1 addition & 0 deletions makefiles/platform/Darwin.mk
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,5 @@ _THEOS_PLATFORM_MD5SUM := md5
_THEOS_PLATFORM_LIPO = xcrun lipo
THEOS_SUDO_COMMAND ?= sudo
_THEOS_PLATFORM_SHOW_IN_FILE_MANAGER := open -R
_THEOS_PLATFORM_GET_LOGICAL_CORES := sysctl -n hw.ncpu
endif
1 change: 1 addition & 0 deletions makefiles/platform/Linux.mk
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ _THEOS_PLATFORM_MD5SUM := md5sum
_THEOS_PLATFORM_LIPO = $(THEOS)/toolchain/$(THEOS_PLATFORM_NAME)/iphone/bin/$(SDKTARGET)-lipo
# TODO: Find some better way to determine _THEOS_PLATFORM_SHOW_IN_FILE_MANAGER, as not all desktop environments use Nautilus as the file manager
_THEOS_PLATFORM_SHOW_IN_FILE_MANAGER := nautilus
_THEOS_PLATFORM_GET_LOGICAL_CORES := nproc
endif
1 change: 1 addition & 0 deletions makefiles/platform/Windows.mk
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ _THEOS_PLATFORM_MD5SUM := md5sum
# TODO: Figure out if hardcoding "/iphone/" in _THEOS_PLATFORM_LIPO's path is a good idea or not
_THEOS_PLATFORM_LIPO = $(THEOS)/toolchain/$(THEOS_PLATFORM_NAME)/iphone/bin/$(SDKTARGET)-lipo
_THEOS_PLATFORM_SHOW_IN_FILE_MANAGER := explorer /select,
_THEOS_PLATFORM_GET_LOGICAL_CORES := nproc
endif