blob: 2e8032d266d1ba06514cbe3d8e4b1d47411b880e [file] [log] [blame]
# 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 set of rules for a header list
# This makefile is included for each component definition so clear out
# any variables used by this makefile
def_header_path :=
def_header_output_path :=
header_file :=
header_name :=
def_header_file :=
header_alias :=
dest_path :=
header_goal_list :=
# Figure out the include path for this component definition
def_header_path := $(def_path)/$(def_include_subdir)
def_header_output_path := $(header_output_path)/$(name)
define header_file_rule
$$(call debug_info,header specified: $(1))
header_file := $(1)
header_name := $$(notdir $$(header_file))
def_header_file := $$(def_header_path)/$$(header_file)
header_alias := $$(name)/$$(header_name)
header_goal_list := $$(header_alias) $$(header_goal_list)
directory_list := $$(dest_path) $$(directory_list)
# Define an alias for the header file so the user can do
# "make name/header.h" on the command line
vpath $$(header_alias) $$(header_output_path)
# Set the target specific variables and dependencies for this header
$$(header_alias) : header_path := $$(header_path)
$$(header_alias) : def_header_file := $$(def_header_file)
$$(header_alias) : header_alias := $$(header_alias)
$$(header_alias) : $$(def_deps)
$$(header_alias) : $$(def_header_file)
endef
# Expand the header file rule for each header specified
$(foreach file,$(header_list),$(eval $(call header_file_rule,$(file))))
# Add the output header directory to the list of directories we need to build
directory_list := $(def_header_output_path) $(directory_list)
# Add the list of header goals as a dependency of the component definition's
# headers target
$(name)_def_headers : $(header_goal_list)
# Define the actual recipe for a header
$(header_goal_list) : | $(def_header_output_path)
$(call print_progress,$(header_alias))
$(call soft_copy,$(def_header_file),$(header_output_path)/$(header_alias))
.PHONY : clean_$(name)_def_headers
clean_$(name)_def_headers : header_output_path := $(header_output_path)
clean_$(name)_def_headers : header_goal_list := $(header_goal_list)
clean_$(name)_def_headers :
$(call print_progress,$@)
$(call remove_files,$(addprefix $(header_output_path)/,$(header_goal_list)))