Merge pull request #926 from EvanLloyd/win_make_4

Minor makefile fixes
diff --git a/Makefile b/Makefile
index b59d785..b644b20 100644
--- a/Makefile
+++ b/Makefile
@@ -629,18 +629,18 @@
 ifneq (${GENERATE_COT},0)
 fwu_certificates: ${FWU_CRT_DEPS} ${CRTTOOL}
 	${Q}${CRTTOOL} ${FWU_CRT_ARGS}
-	@echo
+	@${ECHO_BLANK_LINE}
 	@echo "Built $@ successfully"
 	@echo "FWU certificates can be found in ${BUILD_PLAT}"
-	@echo
+	@${ECHO_BLANK_LINE}
 endif
 
 ${BUILD_PLAT}/${FWU_FIP_NAME}: ${FWU_FIP_DEPS} ${FIPTOOL}
 	${Q}${FIPTOOL} create ${FWU_FIP_ARGS} $@
 	${Q}${FIPTOOL} info $@
-	@echo
+	@${ECHO_BLANK_LINE}
 	@echo "Built $@ successfully"
-	@echo
+	@${ECHO_BLANK_LINE}
 
 fiptool: ${FIPTOOL}
 fip: ${BUILD_PLAT}/${FIP_NAME}
diff --git a/make_helpers/build_macros.mk b/make_helpers/build_macros.mk
index 2d23ef8..36f220e 100644
--- a/make_helpers/build_macros.mk
+++ b/make_helpers/build_macros.mk
@@ -284,14 +284,16 @@
         $(eval BL_LINKERFILE := $(BL$(call uppercase,$(1))_LINKERFILE))
         # We use sort only to get a list of unique object directory names.
         # ordering is not relevant but sort removes duplicates.
-        $(eval TEMP_OBJ_DIRS := $(sort $(BUILD_DIR)/ $(dir ${OBJS} ${LINKERFILE})))
+        $(eval TEMP_OBJ_DIRS := $(sort $(dir ${OBJS} ${LINKERFILE})))
         # The $(dir ) function leaves a trailing / on the directory names
         # Rip off the / to match directory names with make rule targets.
         $(eval OBJ_DIRS   := $(patsubst %/,%,$(TEMP_OBJ_DIRS)))
 
 # Create generators for object directory structure
 
-$(eval $(foreach objd,${OBJ_DIRS},$(call MAKE_PREREQ_DIR,${objd},)))
+$(eval $(call MAKE_PREREQ_DIR,${BUILD_DIR},))
+
+$(eval $(foreach objd,${OBJ_DIRS},$(call MAKE_PREREQ_DIR,${objd},${BUILD_DIR})))
 
 .PHONY : bl${1}_dirs
 
@@ -321,9 +323,9 @@
 $(BIN): $(ELF)
 	@echo "  BIN     $$@"
 	$$(Q)$$(OC) -O binary $$< $$@
-	@echo
+	@${ECHO_BLANK_LINE}
 	@echo "Built $$@ successfully"
-	@echo
+	@${ECHO_BLANK_LINE}
 
 .PHONY: bl$(1)
 bl$(1): $(BIN) $(DUMP)
diff --git a/make_helpers/unix.mk b/make_helpers/unix.mk
index 61b1368..17f8a7c 100644
--- a/make_helpers/unix.mk
+++ b/make_helpers/unix.mk
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
+# Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
 #
 # SPDX-License-Identifier: BSD-3-Clause
 #
@@ -43,11 +43,14 @@
 
     # ${1} is the directory to be generated.
     # ${2} is optional, and allows a prerequisite to be specified.
+    # Do nothing if $1 == $2, to ignore self dependencies.
     define MAKE_PREREQ_DIR
+        ifneq (${1},${2})
 
 ${1} : ${2}
 	${Q}mkdir -p  "${1}"
 
+        endif
     endef
 
     define SHELL_REMOVE_DIR
diff --git a/make_helpers/windows.mk b/make_helpers/windows.mk
index f6e8d55..69f6a01 100644
--- a/make_helpers/windows.mk
+++ b/make_helpers/windows.mk
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
+# Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
 #
 # SPDX-License-Identifier: BSD-3-Clause
 #
@@ -51,12 +51,15 @@
 
     # ${1} is the directory to be generated.
     # ${2} is optional, and allows prerequisites to be specified.
+    # Do nothing if $1 == $2, to ignore self dependencies.
     define MAKE_PREREQ_DIR
+        ifneq (${1},${2})
 
 ${1} : ${2}
 	$(eval tmp_dir:=$(subst /,\,${1}))
 	-@if not exist "$(tmp_dir)"  mkdir "${tmp_dir}"
 
+        endif
     endef
 
     # ${1} is the directory to be removed.