git subrepo clone https://github.com/agottem/weld.git weld
subrepo:
subdir: "weld"
merged: "d0cd07b"
upstream:
origin: "https://github.com/agottem/weld.git"
branch: "master"
commit: "d0cd07b"
git-subrepo:
version: "0.3.1"
origin: "???"
commit: "???"
Change-Id: I109553651e97fd93e00aa555d171ca9d04ce8585
diff --git a/weld/def.mk b/weld/def.mk
new file mode 100644
index 0000000..fa45475
--- /dev/null
+++ b/weld/def.mk
@@ -0,0 +1,156 @@
+# Copyright 2015 Andrew Gottemoller.
+#
+# This software is a copyrighted work licensed under the terms of the
+# Weld license. Please consult the file "WELD_LICENSE" for
+# details.
+
+# This makefile defines the rule to expand for each component
+# definition file found
+
+
+define def_file_rule
+
+ # Clear out all possible variables a component definition file
+ # may define
+ def_file :=
+ def_path :=
+ def_deps :=
+ def_include_subdir :=
+ def_source_subdir :=
+ def_resource_subdir :=
+ name :=
+ type :=
+ lang :=
+ header_list :=
+ resource_list :=
+ source_list :=
+ definition_list :=
+ source_lib_list :=
+ lib_list :=
+ static_lib_list :=
+ lib_path_list :=
+ include_path_list :=
+ compiler_flag_list :=
+ link_flag_list :=
+
+
+ $$(call debug_info,including def: $(1))
+
+ def_file := $(1)
+ def_path := $$(call def_file_to_root_path,$$(def_file))
+ def_deps := $$(def_file) $$(config_file) $$(def_deps)
+
+
+ ifeq ($$(def_include_subdir),)
+ def_include_subdir := $$(include_subdir)
+ endif
+
+ ifeq ($$(def_source_subdir),)
+ def_source_subdir := $$(source_subdir)
+ endif
+
+ ifeq ($$(def_resource_subdir),)
+ def_resource_subdir := $$(resource_subdir)
+ endif
+
+
+ # Include the found component definition file
+ include $$(def_file)
+
+ # Custom component definition files might not bother with a name so skip the below stuff if
+ # that's the case'
+ ifneq ($$(name),)
+ ifneq ($$(filter $$(name), $$(build_target_list)),)
+ $$(call def_error,duplicate component name used here: $$($$(name).def_file))
+ endif
+
+ $$(name).def_file := $$(def_file)
+
+ # Include the config file again after including the definition file.
+ # This way a config file could specify component-specific settings
+ -include $$(config_file)
+
+
+ # If a header list was specified, include header rules
+ ifneq ($$(header_list),)
+ include $$(weld_path)/headers.mk
+ endif
+
+ # If a resource list was specified, include resourcerules
+ ifneq ($$(resource_list),)
+ include $$(weld_path)/resources.mk
+ endif
+
+ # If the type is set to bin or lib include the compilation rules for the
+ # specified language
+ ifneq ($$(filter bin lib,$$(type)),)
+ include $$(weld_path)/lang/$$(lang).mk
+ endif
+
+ # Add the found component to the standard set of build targets
+ build_target_list := $$(name) $$(build_target_list)
+ headers_target_list := $$(name)_headers $$(headers_target_list)
+ clean_target_list := clean_$$(name) $$(clean_target_list)
+ clean_headers_target_list := clean_$$(name)_headers
+
+
+ # Declare default targets for this component. Various component rules
+ # may add build steps as dependencies to these targets
+ .PHONY : $$(name)_headers
+ $$(name)_headers : $$(name)_def_headers
+ $$(name)_headers :
+
+ .PHONY : $$(name)_def_headers
+ $$(name)_def_headers :
+
+ .PHONY : clean_$$(name)_headers
+ clean_$$(name)_headers : clean_$$(name)_def_headers
+ clean_$$(name)_headers :
+
+ .PHONY : clean_$$(name)_def_headers
+ clean_$$(name)_def_headers :
+
+ .PHONY : $$(name)_compile
+ $$(name)_compile : $$(name)_def_compile
+ $$(name)_compile :
+
+ .PHONY : $$(name)_def_compile
+ $$(name)_def_compile :
+
+ .PHONY : clean_$$(name)_compile
+ clean_$$(name)_compile : clean_$$(name)_def_compile
+ clean_$$(name)_compile :
+
+ .PHONY : clean_$$(name)_def_compile
+ clean_$$(name)_def_compile :
+
+ .PHONY : $$(name)_resources
+ $$(name)_resources : $$(name)_def_resources
+ $$(name)_resources :
+
+ .PHONY : $$(name)_def_resources
+ $$(name)_def_resources :
+
+ .PHONY : clean_$$(name)_resources
+ clean_$$(name)_resources : clean_$$(name)_def_resources
+ clean_$$(name)_resources :
+
+ .PHONY : clean_$$(name)_def_resources
+ clean_$$(name)_def_resources :
+
+ # Define the "make <name>" target for the component. This target
+ # should build the entire component
+ .PHONY : $$(name)
+ $$(name) : $$(name)_headers
+ $$(name) : $$(name)_compile
+ $$(name) : $$(name)_resources
+ $$(name) :
+
+ .PHONY : clean_$$(name)
+ clean_$$(name) : clean_$$(name)_headers
+ clean_$$(name) : clean_$$(name)_compile
+ clean_$$(name) : clean_$$(name)_resources
+ clean_$$(name) :
+ endif
+
+endef