diff --git a/mozilla/js/src/Makefile.in b/mozilla/js/src/Makefile.in index 79b9eca7390..1198200e3e4 100644 --- a/mozilla/js/src/Makefile.in +++ b/mozilla/js/src/Makefile.in @@ -373,14 +373,32 @@ ifdef HOST_NSPR_MDCPUCFG HOST_CC := $(HOST_CC) -DMDCPUCFG=$(TARGET_NSPR_MDCPUCFG) endif +ifdef CROSS_COMPILE +# jscpucfg needs to know when it's supposed to produce a config for the target +JSCPUCFG_DEFINES = -DCROSS_COMPILE=1 + +# This is incredibly hacky. Darwin NSPR uses the same MDCPUCFG for multiple +# processors, and determines which processor to configure for based on +# #ifdef i386. This macro is among the NSPR defines, but is also automatically +# defined by the compiler when building for i386. It therefore needs to be +# defined here if targeting i386, and explicitly undefined otherwise. +ifeq ($(OS_ARCH),Darwin) +ifeq ($(TARGET_CPU),powerpc) +DEFINES += -Ui386 +else +DEFINES += -Di386=1 +endif +endif +endif + ifeq ($(OS_ARCH),QNX) ifneq ($(OS_TARGET),NTO) # QNX's compiler apparently can't build a binary directly from a source file. jscpucfg.o: jscpucfg.c Makefile.in - $(HOST_CC) $(HOST_CFLAGS) -c $(DEFINES) $(NSPR_CFLAGS) -o $@ $< + $(HOST_CC) $(HOST_CFLAGS) -c $(JSCPUCFG_DEFINES) $(DEFINES) $(NSPR_CFLAGS) -o $@ $< jscpucfg: jscpucfg.o - $(HOST_CC) $(HOST_CFLAGS) $(DEFINES) -o $@ $< + $(HOST_CC) $(HOST_CFLAGS) $(JSCPUCFG_DEFINES) $(DEFINES) -o $@ $< endif else ifeq ($(OS_ARCH),WINCE) @@ -388,7 +406,7 @@ jscpucfg$(HOST_BIN_SUFFIX): echo no need to build jscpucfg $< else jscpucfg$(HOST_BIN_SUFFIX): jscpucfg.c Makefile.in - $(HOST_CC) $(HOST_CFLAGS) $(DEFINES) $(NSPR_CFLAGS) $(OUTOPTION)$@ $< + $(HOST_CC) $(HOST_CFLAGS) $(JSCPUCFG_DEFINES) $(DEFINES) $(NSPR_CFLAGS) $(OUTOPTION)$@ $< endif endif