Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(201)

Unified Diff: native_client_sdk/src/tools/common.mk

Issue 11725003: Update make for hello examples (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 45917dcebd08b330c87c2521741405f65f68837b..5797755eebac55d09e7b9d2dca5a6ab8a6c3dc17 100644
--- a/native_client_sdk/src/tools/common.mk
+++ b/native_client_sdk/src/tools/common.mk
@@ -128,6 +128,9 @@ X86_LINK?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/bin/i686-nacl-g++ -Wl,-as-needed
ARM_CXX?=$(TC_PATH)/$(OSNAME)_arm_$(TOOLCHAIN)/bin/arm-nacl-g++
ARM_LINK?=$(TC_PATH)/$(OSNAME)_arm_$(TOOLCHAIN)/bin/arm-nacl-g++ -Wl,-as-needed
+PNACL_CXX?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/newlib/bin/pnacl-clang++ -c
+PNACL_LINK?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/newlib/bin/pnacl-clang++
+
#
# Rules for output directories.
@@ -147,6 +150,18 @@ OUTDIR:=$(TOOLCHAIN)/$(CONFIG)
#
+# Dependency Macro
+#
+# $1 = Name of dependency
+#
+define DEPEND_RULE
+.PHONY: $(1)
+$(1):
+ +$(MAKE) -C $(NACL_SDK_ROOT)/src/$(1)
+DEPS_LIST+=$(1)
+endef
+
+#
# Compile Macro
#
# $1 = Source Name
@@ -170,6 +185,9 @@ $(OUTDIR)/$(basename $(1))_x86_64.o : $(1) $(THIS_MAKE) | $(OUTDIR)
$(OUTDIR)/$(basename $(1))_arm.o : $(1) $(THIS_MAKE) | $(OUTDIR)
$(ARM_CXX) -o $$@ -c $$< $(OPT_FLAGS) $(CXX_FLAGS) $(NACL_WARNINGS)
+
+$(OUTDIR)/$(basename $(1))_pnacl.o : $(1) $(THIS_MAKE) | $(OUTDIR)
+ $(PNACL_CXX) -o $$@ -c $$< $(OPT_FLAGS) $(CXX_FLAGS) $(NACL_WARNINGS)
endef
@@ -205,9 +223,14 @@ $(OUTDIR)/$(1)_x86_64.nexe : $(foreach src,$(2),$(OUTDIR)/$(basename $(src))_x86
NMF_TARGETS+=$(OUTDIR)/$(1)_arm.nexe
$(OUTDIR)/$(1)_arm.nexe : $(foreach src,$(2),$(OUTDIR)/$(basename $(src))_arm.o)
$(ARM_LINK) -o $$@ $$^ $(LD_ARM) $(LD_FLAGS) $(foreach lib,$(LIBS),-l$(lib))
+
+NMF_TARGETS+=$(OUTDIR)/$(1).pexe
+$(OUTDIR)/$(1).pexe : $(foreach src,$(2),$(OUTDIR)/$(basename $(src))_pnacl.o)
+ $(PNACL_LINK) -o $$@ $$^ $(LD_PNACL) $(LD_FLAGS) $(foreach lib,$(LIBS),-l$(lib))
endef
+
#
# Generate NMF_TARGETS
#
@@ -215,6 +238,11 @@ ARCHES=x86_32 x86_64
ifeq "newlib" "$(TOOLCHAIN)"
ARCHES+=arm
endif
+NMF_ARCHES:=$(foreach arch,$(ARCHES),_$(arch).nexe)
+
+ifeq "pnacl" "$(TOOLCHAIN)"
+NMF_ARCHES:=.pexe
+endif
#
@@ -234,9 +262,51 @@ GLIBC_PATHS:=-L $(TC_PATH)/$(OSNAME)_x86_glibc/x86_64-nacl/lib32
GLIBC_PATHS+=-L $(TC_PATH)/$(OSNAME)_x86_glibc/x86_64-nacl/lib
define NMF_RULE
-$(OUTDIR)/$(1).nmf : $(foreach arch,$(ARCHES),$(OUTDIR)/$(1)_$(arch).nexe)
- $(NMF) -o $$@ $$^ -D $(GLIBC_DUMP) $(GLIBC_PATHS) $(2)
+$(OUTDIR)/$(1).nmf : $(foreach arch,$(NMF_ARCHES),$(OUTDIR)/$(1)$(arch))
+ $(NMF) -o $$@ $$^ -D $(GLIBC_DUMP) $(GLIBC_PATHS) -s $(OUTDIR) $(2)
-all : $(OUTDIR)/$(1).nmf
+all : $(DEPS_LIST) $(OUTDIR)/$(1).nmf
endef
+
+#
+# Verify we can find the Chrome executable if we need to launch it.
+#
+.PHONY: CHECK_FOR_CHROME RUN LAUNCH
+CHECK_FOR_CHROME:
+ifeq (,$(wildcard $(CHROME_PATH)))
+ $(warning No valid Chrome found at CHROME_PATH=$(CHROME_PATH))
binji 2013/01/02 21:02:26 tabs...? Actually, most of this seems to be untabb
noelallen1 2013/01/07 20:01:30 Strange, should be tabs. It's a tab in my source.
+ $(error Set CHROME_PATH via an environment variable, or command-line.)
+else
+ $(warning Using chrome at: $(CHROME_PATH))
+endif
+
+
+#
+# Variables for running examples with Chrome.
+#
+RUN_PY:=python $(NACL_SDK_ROOT)/tools/run.py
+
+# Add this to launch Chrome with additional environment variables defined.
+# Each element should be specified as KEY=VALUE, with whitespace separating
+# key-value pairs. e.g.
+# CHROME_ENV=FOO=1 BAR=2 BAZ=3
+CHROME_ENV?=
+
+# Additional arguments to pass to Chrome.
+CHROME_ARGS+=--enable-nacl --enable-pnacl --incognito --ppapi-out-of-process
binji 2013/01/02 21:02:26 I'm starting to wonder about --incognito, actually
noelallen1 2013/01/07 20:01:30 Good question. A "temp" user-data-dir might work
+
+
+CONFIG?=Debug
+PAGE?=index_$(TOOLCHAIN)_$(CONFIG).html
+
+RUN: LAUNCH
+LAUNCH: CHECK_FOR_CHROME all
+ifeq (,$(wildcard $(PAGE)))
+ $(warning No valid HTML page found at $(PAGE))
+ $(error Make sure TOOLCHAIN and CONFIG are properly set)
+endif
+ $(RUN_PY) -C $(THIS_DIR) -P $(PAGE) $(addprefix -E ,$(CHROME_ENV)) -- \
+ $(CHROME_PATH) $(CHROME_ARGS) \
+ --register-pepper-plugins="$(PPAPI_DEBUG),$(PPAPI_RELEASE)"
+

Powered by Google App Engine
This is Rietveld 408576698