Kaydet (Commit) 0d6f8e5c authored tarafından David Tardon's avatar David Tardon

allow setting runtime deps of executables in one place

Change-Id: I325287cba773df848a8797486c149502abae9c9d
üst ecc9896c
......@@ -31,10 +31,20 @@
# defined by platform
# gb_Executable_Executable_platform
$(dir $(call gb_Executable_get_runtime_target,%)).dir :
$(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
$(dir $(call gb_Executable_get_runtime_target,%))%/.dir :
$(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
$(call gb_Executable_get_runtime_target,%) : $(call gb_Executable_get_target,%)
touch $@
.PHONY : $(call gb_Executable_get_clean_target,%)
$(call gb_Executable_get_clean_target,%) :
$(call gb_Helper_abbreviate_dirs,\
rm -f $(call gb_Executable_get_target,$*) \
$(call gb_Executable_get_runtime_target,$*) \
$(AUXTARGETS))
define gb_Executable_Executable
......@@ -52,6 +62,7 @@ $(call gb_LinkTarget_set_targettype,$(2),Executable)
$(call gb_LinkTarget_add_libs,$(2),$(gb_STDLIBS))
$(call gb_Executable_get_target,$(1)) : $(call gb_LinkTarget_get_target,$(2)) \
| $(dir $(call gb_Executable_get_target,$(1))).dir
$(call gb_Executable_get_runtime_target,$(1)) :| $(dir $(call gb_Executable_get_runtime_target,$(1))).dir
$(call gb_Executable_get_clean_target,$(1)) : $(call gb_LinkTarget_get_clean_target,$(2))
$(call gb_Executable_get_clean_target,$(1)) : AUXTARGETS :=
$(call gb_Executable_Executable_platform,$(1),$(2))
......@@ -148,4 +159,39 @@ $(eval $(foreach method,\
$(call gb_Executable_forward_to_Linktarget,$(method))\
))
# Run-time use
# Add dependencies needed for running the executable
#
# gb_Executable_add_runtime_dependencies executable dependencies
define gb_Executable_add_runtime_dependencies
$(call gb_Executable_get_runtime_target,$(1)) : $(2)
endef
# Get dependencies needed for running the executable
#
# This is not strictly necessary, but it makes the use more similar to
# ExternalExecutable.
#
# gb_Executable_get_runtime_dependencies executable
define gb_Executable_get_runtime_dependencies
$(call gb_Executable_get_runtime_target,$(1))
endef
define gb_Executable__get_command
$(if $(filter NONE,$(gb_Executable_VALIDGROUPS)),,$(call gb_Output_error,executable group NONE does not exist!))
$(if $(filter $(1),$(gb_Executable_NONE)),,$(gb_Helper_set_ld_path)) \
$(call gb_Executable_get_target_for_build,$(1))
endef
# Get complete command-line for running the executable
#
# This includes setting library path, if necessary.
#
# gb_Executable_get_command executable
define gb_Executable_get_command
$(strip $(call gb_Executable__get_command,$(1)))
endef
# vim: set noet sw=4:
......@@ -133,6 +133,14 @@ gb_Jar_KNOWN := $$(foreach group,$$(gb_Jar_VALIDGROUPS),$$(gb_Jar_$$(group)))
endef
define gb_Helper_process_executable_registrations
$(foreach group,$(gb_Executable_VALIDGROUPS),\
$(foreach executable,$(gb_Executable_$(group)),\
$(if $(filter-out undefined,$(origin gb_Executable__register_$(executable))),\
$(call gb_Executable__register_$(executable)))))
endef
define gb_Helper_register_executables
ifeq ($$(filter $(1),$$(gb_Executable_VALIDGROUPS)),)
$$(eval $$(call gb_Output_error,$(1) is not a valid group for executables. Valid groups are: $$(gb_Executable_VALIDGROUPS)))
......@@ -198,7 +206,7 @@ $(foreach def,$(1),$(if $(filter TRUE YES,$($(def))),-D$(def)))
endef
define gb_Helper_execute
$(gb_Helper_set_ld_path) $(OUTDIR_FOR_BUILD)/bin/$(1)
$(call gb_Executable_get_command,$(1))
endef
# gb_Helper_OUTDIRLIBDIR is set by the platform to the path the dynamic linker need to use
......
......@@ -106,6 +106,7 @@ gb_CxxObject_get_target = $(WORKDIR)/CxxObject/$(1).o
gb_GenCxxObject_get_target = $(WORKDIR)/GenCxxObject/$(1).o
gb_Executable_get_external_headers_target = $(WORKDIR)/ExternalHeaders/Executable/$(1)
gb_Executable_get_headers_target = $(WORKDIR)/Headers/Executable/$(1)
gb_Executable_get_runtime_target = $(WORKDIR)/Executable/$(1).run
gb_ExtensionTarget_get_target = $(WORKDIR)/ExtensionTarget/$(1).oxt
gb_ExtensionTarget_get_rootdir = $(WORKDIR)/ExtensionTarget/$(1)/root
gb_ExtensionTarget_get_workdir = $(WORKDIR)/ExtensionTarget/$(1)
......
......@@ -337,6 +337,8 @@ include $(foreach class, \
InstallScript \
,$(GBUILDDIR)/$(class).mk)
$(eval $(call gb_Helper_process_executable_registrations))
# optional extensions that should never be essential
ifneq ($(wildcard $(GBUILDDIR)/extensions/post_*.mk),)
include $(wildcard $(GBUILDDIR)/extensions/post_*.mk)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment