Index: native_client_sdk/src/tools/common.mk |
diff --git a/native_client_sdk/src/tools/common.mk b/native_client_sdk/src/tools/common.mk |
index a5cb6e4a631d5c9e2fc3f23b5a5b395b8c94cbbc..3e3388cc28fc2d614a1ef747441174a7a4d277f1 100644 |
--- a/native_client_sdk/src/tools/common.mk |
+++ b/native_client_sdk/src/tools/common.mk |
@@ -29,8 +29,8 @@ TOP_MAKE:=$(word 1,$(MAKEFILE_LIST)) |
# Verify we selected a valid toolchain for this example |
# |
ifeq (,$(findstring $(TOOLCHAIN),$(VALID_TOOLCHAINS))) |
-$(warning Availbile choices are: $(VALID_TOOLCHAINS)) |
-$(error Can not use TOOLCHAIN=$(TOOLCHAIN) on this example.) |
+ $(warning Availbile choices are: $(VALID_TOOLCHAINS)) |
+ $(error Can not use TOOLCHAIN=$(TOOLCHAIN) on this example.) |
endif |
@@ -44,12 +44,11 @@ endif |
CONFIG?=Debug |
- |
# Note for Windows: |
-# Both GCC and LLVM bases tools (include the version of Make.exe that comes |
-# with the SDK) both expect and are capable of dealing with the '/' seperator. |
-# For that reason, the tools in the SDK, including build, compilers, scripts |
-# all have a preference for POSIX style command-line arguments. |
+# The GCC and LLVM toolchains (include the version of Make.exe that comes |
+# with the SDK) expect and are capable of dealing with the '/' seperator. |
+# For this reason, the tools in the SDK, including Makefiles and build scripts |
+# have a preference for POSIX style command-line arguments. |
# |
# Keep in mind however that the shell is responsible for command-line escaping, |
# globbing, and variable expansion, so those may change based on which shell |
@@ -58,17 +57,17 @@ CONFIG?=Debug |
# |
# Disable DOS PATH warning when using Cygwin based NaCl tools on Windows. |
# |
-CYGWIN?=nodosfilewarning |
-export CYGWIN |
+ifeq ($(OSNAME),win) |
+ CYGWIN?=nodosfilewarning |
+ export CYGWIN |
+endif |
# |
# If NACL_SDK_ROOT is not already set, then set it relative to this makefile. |
# |
THIS_MAKEFILE:=$(CURDIR)/$(lastword $(MAKEFILE_LIST)) |
-ifndef NACL_SDK_ROOT |
- NACL_SDK_ROOT:=$(realpath $(dir $(THIS_MAKEFILE))/..) |
-endif |
+NACL_SDK_ROOT?=$(realpath $(dir $(THIS_MAKEFILE))/..) |
# |
@@ -160,7 +159,7 @@ endef |
# |
USABLE_TOOLCHAINS=$(filter $(OSNAME) newlib glibc pnacl,$(VALID_TOOLCHAINS)) |
-ifeq (1,$(NO_HOST_BUILDS)) |
+ifeq ($(NO_HOST_BUILDS),1) |
USABLE_TOOLCHAINS:=$(filter-out $(OSNAME),$(USABLE_TOOLCHAINS)) |
endif |
@@ -205,7 +204,7 @@ clean: |
# $3 = Extra Settings |
# |
define DEPEND_RULE |
-ifeq (,$(IGNORE_DEPS)) |
+ifndef $(IGNORE_DEPS) |
.PHONY : rebuild_$(1) |
rebuild_$(1) :| $(STAMPDIR)/dir.stamp |
@@ -227,8 +226,7 @@ endif |
endef |
- |
-ifeq ('win','$(TOOLCHAIN)') |
+ifeq ($(TOOLCHAIN),win) |
HOST_EXT=.dll |
else |
HOST_EXT=.so |
@@ -238,7 +236,7 @@ endif |
# |
# Common Compile Options |
# |
-ifeq ('Release','$(CONFIG)') |
+ifeq ($(CONFIG),Release) |
POSIX_FLAGS?=-g -O2 -pthread -MMD |
else |
POSIX_FLAGS?=-g -O0 -pthread -MMD |
@@ -288,6 +286,28 @@ endif |
# |
+# Convert a source path to a object file path. |
+# |
+# $1 = Source Name |
+# $2 = Arch suffix |
+# |
+define SRC_TO_OBJ |
+$(OUTDIR)/$(basename $(subst ..,__,$(1)))$(2).o |
+endef |
+ |
+ |
+# |
+# Convert a source path to a dependency file path. |
+# |
+# $1 = Source Name |
+# $2 = Arch suffix |
+# |
+define SRC_TO_DEP |
+$(patsubst %.o,%.d,$(call SRC_TO_OBJ,$(1),$(2))) |
+endef |
+ |
+ |
+# |
# If the requested toolchain is a NaCl or PNaCl toolchain, the use the |
# macros and targets defined in nacl.mk, otherwise use the host sepecific |
# macros and targets. |
@@ -320,9 +340,7 @@ endif |
# |
# Assign a sensible default to CHROME_PATH. |
# |
-ifndef CHROME_PATH |
-CHROME_PATH:=$(shell python $(NACL_SDK_ROOT)/tools/getos.py --chrome 2> $(DEV_NULL)) |
-endif |
+CHROME_PATH?=$(shell python $(NACL_SDK_ROOT)/tools/getos.py --chrome 2> $(DEV_NULL)) |
# |
# Verify we can find the Chrome executable if we need to launch it. |