diff options
author | mark%moxienet.com <devnull@localhost> | 2006-01-05 15:40:18 +0000 |
---|---|---|
committer | mark%moxienet.com <devnull@localhost> | 2006-01-05 15:40:18 +0000 |
commit | fd93fdffd004a0481ee1e70d7862322434a22f04 (patch) | |
tree | e2c737a7acc06f55d631bff8c4afd0e8069a279c | |
parent | 7e9700e660ba54294ab0096153cc199dc274818b (diff) | |
download | nss-hg-fd93fdffd004a0481ee1e70d7862322434a22f04.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.mk | 41 |
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 |