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 DSTROOT='$(DSTROOT)' \
97 OBJROOT='$(OBJROOT)/libc' \
98 SRCROOT='$(SRCROOT)' \
102 $(MKDIR) '$(OBJROOT)/libSystem'
104 FEATURE_LIBMATHCOMMON=$(FEATURE_LIBMATHCOMMON) \
105 PLATFORM_ORDER_FILE=$(PLATFORM_ORDER_FILE) \
108 VersionLetter=$(VersionLetter) \
109 DSTROOT='$(DSTROOT)' \
110 OBJROOT='$(OBJROOT)/libSystem' \
111 SRCROOT='$(SRCROOT)' \