1 ##---------------------------------------------------------------------
 
   2 # Makefile for Libsystem
 
   3 # Call Makefile to do the work, but for the install case, we need to
 
   4 # call Makefile for each arch separately, and create fat dylibs at the
 
   5 # end.  This is because the comm page symbols are added as a special segment,
 
   6 # which the linker will not thin, so we have to build thin and combine.
 
   7 ##---------------------------------------------------------------------
 
  11 # Remove any NEXT_ROOT argument
 
  12 override MAKEOVERRIDES := $(filter-out NEXT_ROOT=%,$(MAKEOVERRIDES))
 
  13 override MAKEFILEPATH := $(subst $(NEXT_ROOT),,$(MAKEFILEPATH))
 
  16 include $(MAKEFILEPATH)/CoreOS/ReleaseControl/Common.make
 
  19 ifdef RC_ProjectSourceVersion
 
  20 Version = $(RC_ProjectSourceVersion)
 
  27 ifndef RC_TARGET_CONFIG
 
  28 export RC_TARGET_CONFIG = MacOSX
 
  31 # Default platform order file.  The platform Makefile.inc can override.
 
  32 PLATFORM_ORDER_FILE = $(SRCROOT)/Platforms/$(RC_TARGET_CONFIG)/System.order
 
  34 include Platforms/$(RC_TARGET_CONFIG)/Makefile.inc
 
  36 ##---------------------------------------------------------------------
 
  37 # For each arch, we setup the independent OBJROOT and DSTROOT, and adjust
 
  38 # the other flags.  After all the archs are built, we copy over one on
 
  39 # time (for the non-dylib files), and then call lipo to create fat files
 
  40 # for the three dylibs.
 
  41 ##---------------------------------------------------------------------
 
  42 NARCHS = $(words $(RC_ARCHS))
 
  44 ifdef ALTUSRLOCALLIBSYSTEM
 
  45 LIBSYS = $(ALTUSRLOCALLIBSYSTEM)
 
  47 LIBSYS = $(SDKROOT)/usr/local/lib/system
 
  51 ifdef FEATURE_DEBUG_DYLIB
 
  55 ifdef FEATURE_PROFILE_DYLIB
 
  59 BSD_LIBS = c info m pthread dbm poll dl rpcsvc proc
 
  60 FPATH = /System/Library/Frameworks/System.framework
 
  62 build:: fake libSystem
 
  64         cd $(DSTROOT)/usr/lib && \
 
  65         for i in $(BSD_LIBS); do \
 
  66             $(LN) -sf libSystem.dylib lib$$i.dylib || exit 1; \
 
  68         $(FIND) $(DSTROOT) -type l ! -perm 755 | $(XARGS) chmod -hv 755
 
  69         $(INSTALL_DIRECTORY) $(DSTROOT)$(FPATH)/Versions/$(VersionLetter)/Resources
 
  71         cd $(DSTROOT)$(FPATH) && \
 
  72         $(LN) -sf Versions/Current/PrivateHeaders && \
 
  73         $(LN) -sf Versions/Current/Resources && \
 
  74         for S in $(SUFFIX); do \
 
  75             $(LN) -sf Versions/Current/System$$S || exit 1; \
 
  78         $(LN) -sf $(VersionLetter) Current && \
 
  79         cd $(VersionLetter) && \
 
  80         for S in $(SUFFIX); do \
 
  81             $(LN) -sf ../../../../../../usr/lib/libSystem.$(VersionLetter)$$S.dylib System$$S || exit 1; \
 
  83         $(CP) $(SRCROOT)/Info.plist Resources
 
  85 # 4993197: force dependency generation for libsyscall.a
 
  89         $(ECHO) 'main() { __getpid(); return 0; }' > fake.c && \
 
  90         $(CC) -c $(RC_CFLAGS) fake.c && \
 
  91         $(LD) -r -o fake $(foreach ARCH,$(RC_ARCHS),-arch $(ARCH)) fake.o -lsyscall -L$(LIBSYS)
 
  94         $(MKDIR) '$(OBJROOT)/libc'
 
  95         $(BSDMAKE) -C libsys install \
 
  96         FEATURE_DEBUG_DYLIB=$(FEATURE_DEBUG_DYLIB) \
 
  97         FEATURE_PROFILE_DYLIB=$(FEATURE_PROFILE_DYLIB) \
 
  98         DSTROOT='$(DSTROOT)' \
 
  99         OBJROOT='$(OBJROOT)/libc' \
 
 100         SRCROOT='$(SRCROOT)' \
 
 104         $(MKDIR) '$(OBJROOT)/libSystem'
 
 106         FEATURE_LIBMATHCOMMON=$(FEATURE_LIBMATHCOMMON) \
 
 107         PLATFORM_ORDER_FILE=$(PLATFORM_ORDER_FILE) \
 
 110         VersionLetter=$(VersionLetter) \
 
 111         DSTROOT='$(DSTROOT)' \
 
 112         OBJROOT='$(OBJROOT)/libSystem' \
 
 113         SRCROOT='$(SRCROOT)' \