blob: 94b47a290217df51628fae6f0cd8509fbee628f8 [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 is the entry point into the weld build system. This file should
# be included by a project's root level makefile'
# Weld doesn't use implicit rules so turn them off
.SUFFIXES :
# Figure out the path of this makefile
weld_makefile := $(lastword $(MAKEFILE_LIST))
weld_path := $(dir $(weld_makefile))
# If a config file is specified, include it
-include $(config_file)
# Set the defaults
include $(weld_path)/config.mk
# Verify the config file has set all the necessary variables
ifeq ($(source_path),)
$(error csdk_path is not set)
endif
ifeq ($(build_path),)
$(error build_path is not set)
endif
ifeq ($(arch),)
$(error arch is not set)
endif
ifeq ($(mode),)
$(error mode is not set)
endif
ifeq ($(shell_name),)
$(error shell_name is not set)
endif
ifeq ($(platform),)
$(error platform is not set)
endif
ifeq ($(c_toolchain),)
$(error c_toolchain is not set)
endif
# Set derived path values
include $(weld_path)/paths.mk
# Include shell functions and standard utility functions
include $(weld_path)/shell/$(shell_name).mk
include $(weld_path)/utils.mk
# Discover and include all the specified component definitions found
# for this project
include $(weld_path)/def.mk
include $(weld_path)/disc.mk
# Define the top level targets
.DEFAULT_GOAL := build
.PHONY : build
build : $(build_target_list)
.PHONE : headers
headers : $(headers_target_list)
.PHONY : clean
clean : $(clean_target_list)
.PHONE : clean_headers
clean_headers : $(clean_headers_target_list)
$(sort $(directory_list)) :
$(call make_directory,$@)