mirror of
https://github.com/ValveSoftware/Proton.git
synced 2025-04-16 06:12:36 +03:00
build: Introduce rules-source macro.
This commit is contained in:
parent
3273dc2de0
commit
49cfbe9870
@ -36,6 +36,7 @@ ifeq ($(SRCDIR),)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
include $(SRC)/make/utility.mk
|
include $(SRC)/make/utility.mk
|
||||||
|
include $(SRC)/make/rules-source.mk
|
||||||
|
|
||||||
# If CC is coming from make's defaults or nowhere, use our own default. Otherwise respect environment.
|
# If CC is coming from make's defaults or nowhere, use our own default. Otherwise respect environment.
|
||||||
ifeq ($(ENABLE_CCACHE),1)
|
ifeq ($(ENABLE_CCACHE),1)
|
||||||
@ -489,12 +490,12 @@ redist: dist | $(filter-out dist deploy install redist,$(MAKECMDGOALS))
|
|||||||
|
|
||||||
.PHONY: module32 module64 module
|
.PHONY: module32 module64 module
|
||||||
|
|
||||||
module32: SHELL = $(CONTAINER_SHELL)
|
module32: private SHELL := $(CONTAINER_SHELL)
|
||||||
module32:
|
module32: all-source
|
||||||
+$(MAKE) -C $(WINE_OBJ32)/dlls/$(module)
|
+$(MAKE) -C $(WINE_OBJ32)/dlls/$(module)
|
||||||
|
|
||||||
module64: SHELL = $(CONTAINER_SHELL)
|
module64: private SHELL := $(CONTAINER_SHELL)
|
||||||
module64:
|
module64: all-source
|
||||||
+$(MAKE) -C $(WINE_OBJ64)/dlls/$(module)
|
+$(MAKE) -C $(WINE_OBJ64)/dlls/$(module)
|
||||||
|
|
||||||
module: module32 module64
|
module: module32 module64
|
||||||
|
56
make/rules-source.mk
Normal file
56
make/rules-source.mk
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
# parameters:
|
||||||
|
# $(1): lowercase package name
|
||||||
|
# $(2): uppercase package name
|
||||||
|
# $(3): source directory
|
||||||
|
#
|
||||||
|
# inputs:
|
||||||
|
# $(PKG): variable, package source folder
|
||||||
|
#
|
||||||
|
# outputs:
|
||||||
|
# $($(2)_SRC): variable, absolute rsynced source folder
|
||||||
|
# $(1)-rebuild: target, call it to force package rebuild
|
||||||
|
# $(1)-source: target, tracking package source changes
|
||||||
|
# $(1)-clean: target, clean package and force rebuild
|
||||||
|
#
|
||||||
|
define create-rules-source
|
||||||
|
$(2)_SRC = $$(OBJ)/src-$(1)
|
||||||
|
|
||||||
|
ifeq ($(CONTAINER),)
|
||||||
|
$(1)-rebuild:
|
||||||
|
.PHONY: $(1)-rebuild
|
||||||
|
|
||||||
|
$$(OBJ)/.$(1)-source: SHELL := $$(SHELL)
|
||||||
|
$$(OBJ)/.$(1)-source: $$(if $$(NO_MAKEFILE_DEPENDENCY),,$$(MAKEFILE_LIST))
|
||||||
|
$$(OBJ)/.$(1)-source: $$(shell echo -n 'syncing $(1)... ' >&2 && \
|
||||||
|
rsync --dry-run --filter=:C --exclude '*~' --exclude .git $$($(2)_SOURCE_ARGS) --info=name -Oarx --delete "$$(abspath $(3))/" "$$($(2)_SRC)" | \
|
||||||
|
grep -v -e ^$$$$ | grep -q ^ && echo $(1)-rebuild && \
|
||||||
|
echo 'done, dirty' >&2 || echo 'done' >&2)
|
||||||
|
rsync --filter=:C --exclude '*~' --exclude .git $$($(2)_SOURCE_ARGS) --info=name -Oarx --delete "$$(abspath $(3))/" "$$($(2)_SRC)"
|
||||||
|
touch $$@
|
||||||
|
|
||||||
|
$$(OBJ)/.$(1)-post-source: $$(OBJ)/.$(1)-source
|
||||||
|
container-build: $$(OBJ)/.$(1)-post-source
|
||||||
|
|
||||||
|
$(1)-source: $$(OBJ)/.$(1)-post-source
|
||||||
|
.PHONY: $(1)-source
|
||||||
|
|
||||||
|
all-source: $(1)-source
|
||||||
|
.PHONY: all-source
|
||||||
|
|
||||||
|
all: all-source
|
||||||
|
.PHONY: all
|
||||||
|
|
||||||
|
$(1)-clean::
|
||||||
|
$(1)-distclean::
|
||||||
|
rm -rf $$($(2)_SRC)
|
||||||
|
|
||||||
|
clean: $(1)-clean
|
||||||
|
distclean: $(1)-distclean
|
||||||
|
.PHONY: clean distclean
|
||||||
|
endif
|
||||||
|
endef
|
||||||
|
|
||||||
|
rules-source = $(call create-rules-source,$(1),$(call toupper,$(1)),$(2))
|
||||||
|
|
||||||
|
$(OBJ)/.%-post-source:
|
||||||
|
touch $@
|
Loading…
x
Reference in New Issue
Block a user