summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormark%moxienet.com <devnull@localhost>2006-01-05 15:40:16 +0000
committermark%moxienet.com <devnull@localhost>2006-01-05 15:40:16 +0000
commit13f44afb35c8e4d48819ea2eb63132e38abc954a (patch)
treee2c737a7acc06f55d631bff8c4afd0e8069a279c
parent09768d708b0b68345e06f3683010028dfbbdf628 (diff)
downloadnss-hg-13f44afb35c8e4d48819ea2eb63132e38abc954a.tar.gz
302212 Mac OS X x86 and Xcode 2.2/gcc 4.0.1 builds can't target SDKs. Use -isysroot and -Wl,-syslibroot with gcc 4.0.0, -isysroot only with gcc 4.0.1. Core r=josh r=cls sr=bryner, NSPR and NSS r=josh sr=wtchang, all portions a=bsmedberg for 1.8.1 and 1.8.0.1.
-rw-r--r--security/coreconf/Darwin.mk41
1 files changed, 24 insertions, 17 deletions
diff --git a/security/coreconf/Darwin.mk b/security/coreconf/Darwin.mk
index 5af93e699..a8e434821 100644
--- a/security/coreconf/Darwin.mk
+++ b/security/coreconf/Darwin.mk
@@ -51,30 +51,37 @@ OS_REL_CFLAGS = -Dppc
CPU_ARCH = ppc
endif
-ifneq (,$(NEXT_ROOT))
+ifneq (,$(MACOS_SDK_DIR))
GCC_VERSION_FULL := $(shell $(CC) -v 2>&1 | grep "gcc version" | sed -e "s/^.*gcc version[ ]*//" | awk '{ print $$1 }')
GCC_VERSION_MAJOR := $(shell echo $(GCC_VERSION_FULL) | awk -F. '{ print $$1 }')
GCC_VERSION_MINOR := $(shell echo $(GCC_VERSION_FULL) | awk -F. '{ print $$2 }')
- GCC_VERSION := $(GCC_VERSION_MAJOR).$(GCC_VERSION_MINOR)
-
- DARWIN_SDK_CFLAGS := -nostdinc
+ GCC_VERSION = $(GCC_VERSION_MAJOR).$(GCC_VERSION_MINOR)
ifeq (,$(filter-out 2 3,$(GCC_VERSION_MAJOR)))
# GCC <= 3
- DARWIN_TARGET_ARCH_LIB := darwin
- DARWIN_SDK_CFLAGS += -isystem $(NEXT_ROOT)/usr/include/gcc/darwin/$(GCC_VERSION)
+ DARWIN_SDK_FRAMEWORKS = -F$(MACOS_SDK_DIR)/System/Library/Frameworks
+ ifneq (,$(shell find $(MACOS_SDK_DIR)/Library/Frameworks -maxdepth 0))
+ DARWIN_SDK_FRAMEWORKS += -F$(MACOS_SDK_DIR)/Library/Frameworks
+ endif
+ DARWIN_SDK_CFLAGS = -nostdinc -isystem $(MACOS_SDK_DIR)/usr/include/gcc/darwin/$(GCC_VERSION) -isystem $(MACOS_SDK_DIR)/usr/include $(DARWIN_SDK_FRAMEWORKS)
+ DARWIN_SDK_LDFLAGS = -L$(MACOS_SDK_DIR)/usr/lib/gcc/darwin -L$(MACOS_SDK_DIR)/usr/lib/gcc/darwin/$(GCC_VERSION_FULL) -L$(MACOS_SDK_DIR)/usr/lib
+ DARWIN_SDK_DSOFLAGS = $(DARWIN_SDK_LDFLAGS) $(DARWIN_SDK_FRAMEWORKS)
+ NEXT_ROOT = $(MACOS_SDK_DIR)
+ export NEXT_ROOT
else
# GCC >= 4
- CPU_ARCH_LONG := $(shell uname -p)
- DARWIN_TARGET_ARCH_LIB := $(CPU_ARCH_LONG)-apple-darwin$(shell echo $NEXT_ROOT | perl -pe 's/MacOSX10\.([\d]*)//;if ($$1) {$$_=$$1+4;} else {$$_="'${OS_RELEASE}'";s/(\d+)//;$$_=$$1;}')
- DARWIN_SDK_CFLAGS += -isystem $(NEXT_ROOT)/usr/lib/gcc/$(DARWIN_TARGET_ARCH_LIB)/$(GCC_VERSION_FULL)/include
- endif
-
- DARWIN_SDK_CFLAGS += -isystem $(NEXT_ROOT)/usr/include -F$(NEXT_ROOT)/System/Library/Frameworks
- DARWIN_SDK_LDFLAGS := -L$(NEXT_ROOT)/usr/lib/gcc/$(DARWIN_TARGET_ARCH_LIB) -L$(NEXT_ROOT)/usr/lib/gcc/$(DARWIN_TARGET_ARCH_LIB)/$(GCC_VERSION_FULL) -L$(NEXT_ROOT)/usr/lib
-
- ifneq (,$(shell find $(NEXT_ROOT)/Library/Frameworks -maxdepth 0))
- DARWIN_SDK_CFLAGS += -F$(NEXT_ROOT)/Library/Frameworks
+ DARWIN_SDK_CFLAGS = -isysroot $(MACOS_SDK_DIR)
+ ifneq (4.0.0,$(GCC_VERSION_FULL))
+ # gcc > 4.0.0 passes -syslibroot to ld based on -isysroot.
+ # Don't add -isysroot to DARWIN_SDK_LDFLAGS, because the programs
+ # that are linked with those flags also get DARWIN_SDK_CFLAGS.
+ DARWIN_SDK_DSOFLAGS = -isysroot $(MACOS_SDK_DIR)
+ else
+ # gcc 4.0.0 doesn't pass -syslibroot to ld, it needs to be
+ # explicit.
+ DARWIN_SDK_LDFLAGS = -Wl,-syslibroot,$(MACOS_SDK_DIR)
+ DARWIN_SDK_DSOFLAGS = $(DARWIN_SDK_LDFLAGS)
+ endif
endif
LDFLAGS += $(DARWIN_SDK_LDFLAGS)
@@ -99,7 +106,7 @@ endif
ARCH = darwin
# May override this with -bundle to create a loadable module.
-DSO_LDOPTS = -dynamiclib -compatibility_version 1 -current_version 1 -install_name @executable_path/$(notdir $@) -headerpad_max_install_names $(DARWIN_SDK_LDFLAGS)
+DSO_LDOPTS = -dynamiclib -compatibility_version 1 -current_version 1 -install_name @executable_path/$(notdir $@) -headerpad_max_install_names $(DARWIN_SDK_DSOFLAGS)
MKSHLIB = $(CC) -arch $(CPU_ARCH) $(DSO_LDOPTS)
DLL_SUFFIX = dylib