123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- __THEOS_RULES_MK_VERSION := 1k
- ifneq ($(__THEOS_RULES_MK_VERSION),$(__THEOS_COMMON_MK_VERSION))
- all::
- @echo "Theos version mismatch! common.mk [version $(or $(__THEOS_COMMON_MK_VERSION),0)] loaded in tandem with rules.mk [version $(or $(__THEOS_RULES_MK_VERSION),0)] Check that \$$\(THEOS\) is set properly!" >&2
- @exit 1
- endif
- .PHONY: all before-all internal-all after-all \
- clean before-clean internal-clean after-clean update-theos
- ifeq ($(THEOS_BUILD_DIR),.)
- all:: $(_THEOS_BUILD_SESSION_FILE) before-all internal-all after-all
- else
- all:: $(THEOS_BUILD_DIR) $(_THEOS_BUILD_SESSION_FILE) before-all internal-all after-all
- endif
- clean:: before-clean internal-clean after-clean
- do:: all package install
- before-all::
- ifneq ($(SYSROOT),)
- @[ -d "$(SYSROOT)" ] || { $(PRINT_FORMAT_ERROR) "Your current SYSROOT, \"$(SYSROOT)\", appears to be missing." >&2; exit 1; }
- endif
- internal-all::
- after-all::
- before-clean::
- internal-clean::
- $(ECHO_CLEANING)rm -rf "$(THEOS_OBJ_DIR)"$(ECHO_END)
- ifeq ($(shell [ -f "$(_THEOS_BUILD_SESSION_FILE)" ] && echo 1),1)
- $(ECHO_NOTHING)rm "$(_THEOS_BUILD_SESSION_FILE)"$(ECHO_END)
- endif
- ifeq ($(MAKELEVEL),0)
- $(ECHO_NOTHING)rm -rf "$(THEOS_STAGING_DIR)"$(ECHO_END)
- endif
- after-clean::
- ifeq ($(MAKELEVEL),0)
- ifneq ($(THEOS_BUILD_DIR),.)
- _THEOS_ABSOLUTE_BUILD_DIR = $(call __clean_pwd,$(THEOS_BUILD_DIR))
- else
- _THEOS_ABSOLUTE_BUILD_DIR = .
- endif
- else
- _THEOS_ABSOLUTE_BUILD_DIR = $(strip $(THEOS_BUILD_DIR))
- endif
- clean-packages:: before-clean-packages internal-clean-packages after-clean-packages
- before-clean-packages::
- internal-clean-packages::
- $(ECHO_NOTHING)rm -rf $(THEOS_PACKAGE_DIR)/$(THEOS_PACKAGE_NAME)_*-*_$(THEOS_PACKAGE_ARCH).deb$(ECHO_END)
- $(ECHO_NOTHING)rm -rf $(THEOS_PACKAGE_DIR)/$(THEOS_PACKAGE_NAME)-*-*.$(THEOS_PACKAGE_ARCH).rpm$(ECHO_END)
- after-clean-packages::
- $(_THEOS_BUILD_SESSION_FILE):
- @mkdir -p $(_THEOS_LOCAL_DATA_DIR)
- ifeq ($(shell [ -f "$(_THEOS_BUILD_SESSION_FILE)" ] || echo 0),0)
- @touch $(_THEOS_BUILD_SESSION_FILE)
- endif
- .PRECIOUS: %.variables %.subprojects
- %.variables: _INSTANCE = $(basename $(basename $*))
- %.variables: _OPERATION = $(subst .,,$(suffix $(basename $*)))
- %.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)"; \
- for d in $(__SUBPROJECTS); do \
- d="$${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) \
- THEOS_BUILD_DIR="$$lbuilddir" \
- ; then\
- :; \
- else exit $$?; \
- fi; \
- done; \
- fi; \
- $(PRINT_FORMAT_MAKING) "Making $(_OPERATION) for $(_TYPE) $(_INSTANCE)"; \
- $(MAKE) -f $(_THEOS_PROJECT_MAKEFILE_NAME) --no-print-directory --no-keep-going \
- internal-$(_TYPE)-$(_OPERATION) \
- _THEOS_CURRENT_TYPE="$(_TYPE)" \
- THEOS_CURRENT_INSTANCE="$(_INSTANCE)" \
- _THEOS_CURRENT_OPERATION="$(_OPERATION)" \
- THEOS_BUILD_DIR="$(_THEOS_ABSOLUTE_BUILD_DIR)"
- %.subprojects: _INSTANCE = $(basename $(basename $*))
- %.subprojects: _OPERATION = $(subst .,,$(suffix $(basename $*)))
- %.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)"; \
- for d in $(__SUBPROJECTS); do \
- d="$${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) \
- THEOS_BUILD_DIR="$$lbuilddir" \
- ; then\
- :; \
- else exit $$?; \
- fi; \
- done; \
- fi
- update-theos::
- @if [ ! -d "$(THEOS)/.git" ]; then \
- $(PRINT_FORMAT_ERROR) "$(THEOS) is not a Git repository. For more information, refer to https://github.com/kirb/theos/wiki/Installation#updating." >&2; \
- exit 1; \
- fi
- @cd $(THEOS) && git pull origin master && ./git-submodule-recur.sh init
- troubleshoot::
- @$(PRINT_FORMAT) "Be sure to check the troubleshooting page at https://github.com/kirb/theos/wiki/Troubleshooting first."
- @$(PRINT_FORMAT) "For support with build errors, ask on IRC: http://iphonedevwiki.net/index.php/IRC. If you think you've found a bug in Theos, check the issue tracker at https://github.com/kirb/theos/issues."
- @echo
- 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 336h - ansi
- else
- @$(PRINT_FORMAT_ERROR) "You don't have ghost installed. For more information, refer to https://github.com/kirb/theos/wiki/Installation#prerequisites." >&2; exit 1
- endif
- $(eval $(call __mod,master/rules.mk))
- ifeq ($(_THEOS_TOP_INVOCATION_DONE),)
- export _THEOS_TOP_INVOCATION_DONE = 1
- endif
|