]> git.saurik.com Git - apple/libsystem.git/blame - Makefile
Libsystem-111.1.3.tar.gz
[apple/libsystem.git] / Makefile
CommitLineData
c9e8bbd6
A
1NAME0 = libSystem
2NAME = $(NAME0).$(VersionLetter)
3
4# for now, use the default compiler
5GCC := $(CC)
6GCCLIBS = -lgcc -lgcc_eh
7NARCHS != echo $(RC_ARCHS) | wc -w
8.ifdef ALTUSRLOCALLIBSYSTEM
9LIBSYS = $(ALTUSRLOCALLIBSYSTEM)
10.else
11LIBSYS = $(SDKROOT)/usr/local/lib/system
12.endif
13SLFS_F_PH = $(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders
14.ifdef SDKROOT
15SDKROOTCFLAGS = -isysroot '$(SDKROOT)'
16SDKROOTLDFLAGS = -syslibroot '$(SDKROOT)'
17.endif
18.if !empty(FEATURE_ORDER_FILE)
19ORDERFILES = -Wl,-order_file,$(SRCROOT)/SystemInit.order -Wl,-order_file,$(SRCROOT)/System.order
20.endif
7a301563
A
21LIBS = -lc -lcommonCrypto -ldyldapis\
22 -linfo -ldns_sd -lm -lmacho\
c9e8bbd6
A
23 -lnotify -lkeymgr -llaunch \
24 -lcopyfile -lsandbox -lremovefile
25CONDITIONALLIBS = unc quarantine
26.for L in $(CONDITIONALLIBS)
27# the following should be replaced with tconf when 5784037 is complete
28.if exists($(LIBSYS)/lib$(L).a)
29LIBS += -l$(L)
30.endif
31.endfor # CONDITIONALLIBS
435227b9 32
c9e8bbd6
A
33# These variables are to guarantee that the left-hand side of an expression is
34# always a variable
35dynamic = dynamic
36
37all: build
38
39build: build-debug build-dynamic build-profile
40
41# These are the non B&I defaults
42.ifndef RC_ProjectName
43install: installhdrs install-all
44
45.else # RC_ProjectName
46
47.for F in $(FORMS)
48install: BI-install-$(F)
49.endfor # FORMS
50.endif # RC_ProjectName
51
52.for A in $(RC_ARCHS)
53OBJS-$(A) = $(OBJROOT)/$(A)/SystemMath.o $(OBJROOT)/$(A)/System_vers.o
54.endfor # RC_ARCHS
55
56.for F in $(FORMS)
57.if $(dynamic) == $(F)
58SUFFIX$(F) =
59.else
60SUFFIX$(F) = _$(F)
61.endif
62.if !empty(FEATURE_LIBMATHCOMMON)
63LIBMATHCOMMON$(F) = -L/usr/lib/system -sub_library libmathCommon$(SUFFIX$(F)) -lmathCommon$(SUFFIX$(F))
64.endif
65LIPOARGS$(F) != perl -e 'printf "%s\n", join(" ", map(qq(-arch $$_ \"$(OBJROOT)/$$_/$(F)/$(NAME)$(SUFFIX$(F)).dylib\"), qw($(RC_ARCHS))))'
66
67.for A in $(RC_ARCHS)
68build-$(F): build-$(A)-$(F)
69.endfor # RC_ARCHS
70build-$(F):
71.if $(NARCHS) == 1
72 cp -p "$(OBJROOT)/$(RC_ARCHS)/$(F)/$(NAME)$(SUFFIX$(F)).dylib" "$(SYMROOT)"
73.else
74 lipo -create $(LIPOARGS$(F)) -output "$(SYMROOT)/$(NAME)$(SUFFIX$(F)).dylib"
75.endif
76 dsymutil "$(SYMROOT)/$(NAME)$(SUFFIX$(F)).dylib"
77
78.for A in $(RC_ARCHS)
79build-$(A)-$(F): $(OBJROOT)/$(A)/$(F) $(OBJROOT)/$(A)/CommPageSymbols.o $(OBJS-$(A))
80 $(GCC) -dynamiclib -arch $(A) -pipe \
81 -o '$(OBJROOT)/$(A)/$(F)/$(NAME)$(SUFFIX$(F)).dylib' \
82 -compatibility_version 1 -current_version $(Version) \
83 -install_name /usr/lib/$(NAME)$(SUFFIX$(F)).dylib \
84 -nodefaultlibs -all_load -multi_module -Wl,-search_paths_first \
85 -segcreate __DATA __commpage $(OBJROOT)/$(A)/CommPageSymbols.o \
86 $(ORDERFILES) $(SKDROOTLDFLAGS) $(OBJS-$(A)) \
87 -L$(DSTROOT)/usr/local/lib/system -L$(LIBSYS) $(LIBMATHCOMMON$(F)) \
88 $(LIBS:C/$/$(SUFFIX$(F))/) $(GCCLIBS)
89
90$(OBJROOT)/$(A)/$(F):
91 mkdir -p '$(.TARGET)'
92
93.endfor # RC_ARCHS
94.endfor # FORMS
95
96SEG1ADDR_i386 = 0xffff0000
97SEG1ADDR_ppc = 0xffff8000
98SEG1ADDR_ppc64 = 0xffffffffffff8000
99SEG1ADDR_x86_64 = 0x00007fffffe00000
100SEG1ADDR_arm = 0xffff8000
101
102CFLAGS = -g -Os -Wall -Werror -I'$(SLFS_F_PH)' -fno-common $(SDKROOTCFLAGS)
103
104$(OBJROOT)/System_vers.c:
105 vers_string -c System | \
106 sed -e 's/SGS_VERS/SYSTEM_VERS_STRING/' -e 's/VERS_NUM/SYSTEM_VERS_NUM/' > $(.TARGET)
435227b9 107
c9e8bbd6
A
108.for A in $(RC_ARCHS)
109$(OBJROOT)/$(A)/CommPageSymbols.o: $(SRCROOT)/CommPageSymbols.st
110 $(GCC) -c -o '$(.TARGET:R)_intermediate.$(.TARGET:E)' -arch $(A) -x assembler-with-cpp $(CFLAGS) '$(.ALLSRC)'
111 ld -arch $(A) -r -seg1addr $(SEG1ADDR_$(A:C/^armv.*$/arm/)) '$(.TARGET:R)_intermediate.$(.TARGET:E)' -o '$(.TARGET)'
435227b9 112
c9e8bbd6
A
113$(OBJROOT)/$(A)/SystemMath.o: $(SRCROOT)/SystemMath.s
114 $(GCC) -c -o '$(.TARGET)' -arch $(A) $(CFLAGS) '$(.ALLSRC)'
435227b9 115
c9e8bbd6
A
116$(OBJROOT)/$(A)/System_vers.o: $(OBJROOT)/System_vers.c
117 $(GCC) -c -o '$(.TARGET)' -arch $(A) $(CFLAGS) '$(.ALLSRC)'
435227b9 118
c9e8bbd6 119.endfor # RC_ARCHS
435227b9 120
c9e8bbd6 121installhdrs:
435227b9 122
c9e8bbd6
A
123.for F in $(FORMS)
124BI-install-$(F): build-$(F)
125 mkdir -p "$(DSTROOT)/usr/lib"
126 @echo "===== Installing $(NAME)$(SUFFIX$(F)).dylib ====="
127 install "$(SYMROOT)/$(NAME)$(SUFFIX$(F)).dylib" "$(DSTROOT)/usr/lib"
128 strip -S "$(DSTROOT)/usr/lib/$(NAME)$(SUFFIX$(F)).dylib"
129 chmod a-w "$(DSTROOT)/usr/lib/$(NAME)$(SUFFIX$(F)).dylib"
130 ln -sf "$(NAME)$(SUFFIX$(F)).dylib" "$(DSTROOT)/usr/lib/$(NAME0)$(SUFFIX$(F)).dylib"
131.endfor # FORMS
435227b9 132
c9e8bbd6
A
133install-all: build
134.for F in $(FORMS)
135install-all: BI-install-$(F)
136.endfor # FORMS
435227b9 137
c9e8bbd6
A
138clean:
139.for A in $(RC_ARCHS)
140 rm -rf $(OBJROOT)/$(A)
141.endfor # RC_ARCHS