Index: native_client_sdk/src/tools/host_gcc.mk |
diff --git a/native_client_sdk/src/tools/host_gcc.mk b/native_client_sdk/src/tools/host_gcc.mk |
index 18160ea653157e07dbda6c40737f3c8f336a61d8..7d71de33a191bb57c5e2d6e6778cacd6aea2b5ae 100644 |
--- a/native_client_sdk/src/tools/host_gcc.mk |
+++ b/native_client_sdk/src/tools/host_gcc.mk |
@@ -17,14 +17,23 @@ |
CC ?= $(NACL_COMPILER_PREFIX) gcc |
CXX ?= $(NACL_COMPILER_PREFIX) g++ |
LINK ?= $(CXX) |
-LIB ?= ar |
+AR ?= ar |
+ARFLAGS = -crs |
STRIP ?= strip |
+ |
+ifneq ($(OSNAME),mac) |
# Adding -Wl,-Bsymbolic means that symbols defined within the module are always |
-# used by the moulde, and not shadowed by symbols already loaded in, for |
+# used by the module, and not shadowed by symbols already loaded in, for |
# exmaple, libc. Without this the libc symbols (or anything injected with |
# LD_PRELOAD will take precedence). |
-HOST_LDFLAGS ?= -Wl,-Map,$(OUTDIR)/$(TARGET).map -Wl,-Bsymbolic |
+# -pthread is not needed on mac (libpthread is a symlink to libSystem) and |
+# in fact generated a warning if passed at link time. |
+HOST_LDFLAGS ?= -Wl,-Map,$(OUTDIR)/$(TARGET).map -Wl,-Bsymbolic -pthread |
+else |
+HOST_LDFLAGS ?= -Wl,-map -Wl,$(OUTDIR)/$(TARGET).map |
+endif |
+ |
ifeq (,$(findstring gcc,$(shell $(WHICH) gcc))) |
$(warning To skip the host build use:) |
@@ -45,14 +54,14 @@ HOST_CFLAGS = -fPIC -pthread $(HOST_WARNINGS) -I$(NACL_SDK_ROOT)/include -I$(NAC |
define C_COMPILER_RULE |
-include $(call SRC_TO_DEP,$(1)) |
$(call SRC_TO_OBJ,$(1)): $(1) $(TOP_MAKE) | $(dir $(call SRC_TO_OBJ,$(1)))dir.stamp |
- $(call LOG,CC ,$$@,$(CC) -o $$@ -c $$< -fPIC $(POSIX_FLAGS) $(HOST_CFLAGS) $(2)) |
+ $(call LOG,CC ,$$@,$(CC) -o $$@ -c $$< -fPIC $(POSIX_CFLAGS) $(HOST_CFLAGS) $(2)) |
@$(FIXDEPS) $(call SRC_TO_DEP_PRE_FIXUP,$(1)) |
endef |
define CXX_COMPILER_RULE |
-include $(call SRC_TO_DEP,$(1)) |
$(call SRC_TO_OBJ,$(1)): $(1) $(TOP_MAKE) | $(dir $(call SRC_TO_OBJ,$(1)))dir.stamp |
- $(call LOG,CXX ,$$@,$(CXX) -o $$@ -c $$< -fPIC $(POSIX_FLAGS) $(HOST_CFLAGS) $(2)) |
+ $(call LOG,CXX ,$$@,$(CXX) -o $$@ -c $$< -fPIC $(POSIX_CFLAGS) $(HOST_CFLAGS) $(2)) |
@$(FIXDEPS) $(call SRC_TO_DEP_PRE_FIXUP,$(1)) |
endef |
@@ -99,7 +108,7 @@ all: $(LIBDIR)/$(OSNAME)_host/$(CONFIG)/lib$(1).a |
$(LIBDIR)/$(OSNAME)_host/$(CONFIG)/lib$(1).a: $(foreach src,$(2),$(call SRC_TO_OBJ,$(src))) |
$(MKDIR) -p $$(dir $$@) |
$(RM) -f $$@ |
- $(call LOG,LIB,$$@,$(LIB) -cr $$@ $$^) |
+ $(call LOG,LIB,$$@,$(AR) $(ARFLAGS) $$@ $$^) |
endef |
@@ -117,13 +126,13 @@ ifdef STANDALONE |
define LINKER_RULE |
all: $(1) |
$(1): $(2) $(foreach dep,$(4),$(STAMPDIR)/$(dep).stamp) |
- $(call LOG,LINK,$$@,$(LINK) -o $(1) $(2) $(HOST_LDFLAGS) $(NACL_LDFLAGS) $(LDFLAGS) $(foreach path,$(5),-L$(path)/$(OSNAME)_host)/$(CONFIG) $(foreach lib,$(3),-l$(lib)) $(6)) |
+ $(call LOG,LINK,$$@,$(LINK) -o $(1) $(2) $(HOST_LDFLAGS) $(LDFLAGS) $(foreach path,$(5),-L$(path)/$(OSNAME)_host)/$(CONFIG) $(foreach lib,$(3),-l$(lib)) $(6)) |
endef |
else |
define LINKER_RULE |
all: $(1) |
$(1): $(2) $(foreach dep,$(4),$(STAMPDIR)/$(dep).stamp) |
- $(call LOG,LINK,$$@,$(LINK) -shared -o $(1) $(2) $(HOST_LDFLAGS) $(NACL_LDFLAGS) $(LDFLAGS) $(foreach path,$(5),-L$(path)/$(OSNAME)_host)/$(CONFIG) $(foreach lib,$(3),-l$(lib)) $(6)) |
+ $(call LOG,LINK,$$@,$(LINK) -shared -o $(1) $(2) $(HOST_LDFLAGS) $(LDFLAGS) $(foreach path,$(5),-L$(path)/$(OSNAME)_host)/$(CONFIG) $(foreach lib,$(3),-l$(lib)) $(6)) |
endef |
endif |
@@ -147,8 +156,8 @@ all: $(LIB_LIST) $(DEPS_LIST) |
# |
# Strip Macro |
-# The host build makes shared libraries, so the best we can do is strip-debug. |
-# We cannot strip the symbol names. |
+# The host build makes shared libraries, so the best we can do is -S, which |
+# only strip debug symbols. We don't strip the symbol names. |
# |
# $1 = Target Name |
# $2 = Input Name |
@@ -156,7 +165,7 @@ all: $(LIB_LIST) $(DEPS_LIST) |
define STRIP_RULE |
all: $(OUTDIR)/$(1)$(HOST_EXT) |
$(OUTDIR)/$(1)$(HOST_EXT): $(OUTDIR)/$(2)$(HOST_EXT) |
- $(call LOG,STRIP,$$@,$(STRIP) --strip-debug -o $$@ $$^) |
+ $(call LOG,STRIP,$$@,$(STRIP) -S -o $$@ $$^) |
endef |