]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android-sdk/platform-bionic.git/blob - libc/crt.mk
Kill <machine/exec.h>.
[android-sdk/platform-bionic.git] / libc / crt.mk
1 # Define the libc run-time (crt) support object files that must be built,
2 # which are needed to build all other objects (shared/static libs and
3 # executables)
4 # ==========================================================================
5 # AArch64, ARM, MIPS, and x86 all need crtbegin_so/crtend_so.
6 #
7 # For x86, the .init section must point to a function that calls all
8 # entries in the .ctors section. (on ARM this is done through the
9 # .init_array section instead).
10 #
11 # For all the platforms, the .fini_array section must point to a function
12 # that will call __cxa_finalize(&__dso_handle) in order to ensure that
13 # static C++ destructors are properly called on dlclose().
14 #
15 # Args:
16 #     my_2nd_arch_prefix: set to $(TARGET_2ND_ARCH_VAR_PREFIX) if it's
17 #                         for the 2nd arch; otherwise empty.
19 my_arch := $(TARGET_$(my_2nd_arch_prefix)ARCH)
21 my_libc_crt_target_crtbegin_file := $(libc_crt_target_crtbegin_file_$(my_arch))
22 my_libc_crt_target_crtbegin_so_file := $(libc_crt_target_crtbegin_so_file_$(my_arch))
24 my_libc_crt_target_cflags := \
25     $(libc_crt_target_cflags) \
26     $(libc_crt_target_cflags_$(my_arch))
28 my_libc_crt_target_so_cflags := \
29     $(libc_crt_target_so_cflags_$(my_arch)) \
30     $(my_libc_crt_target_cflags)
32 my_libc_crt_target_ldflags := $(libc_crt_target_ldflags_$(my_arch))
35 # See the comment in crtbrand.c for the reason why we need to generate
36 # crtbrand.s before generating crtbrand.o.
37 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbrand.s
38 $(GEN): PRIVATE_CC := $($(my_2nd_arch_prefix)TARGET_CC)
39 $(GEN): PRIVATE_CFLAGS := $(my_libc_crt_target_so_cflags)
40 $(GEN): $(LOCAL_PATH)/bionic/crtbrand.c
41         @mkdir -p $(dir $@)
42         $(hide) $(PRIVATE_CC) $(PRIVATE_CFLAGS) -S \
43                 -MD -MF $(@:%.s=%.d) -o $@ $<
44         $(hide) sed -i -e '/\.note\.ABI-tag/s/progbits/note/' $@
45         $(call transform-d-to-p-args,$(@:%.s=%.d),$(@:%.s=%.P))
46 -include $(GEN:%.s=%.P)
49 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbrand.o
50 $(GEN): PRIVATE_CC := $($(my_2nd_arch_prefix)TARGET_CC)
51 $(GEN): PRIVATE_CFLAGS := $(my_libc_crt_target_so_cflags)
52 $(GEN): $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbrand.s
53         @mkdir -p $(dir $@)
54         $(hide) $(PRIVATE_CC) $(PRIVATE_CFLAGS) -o $@ -c $<
57 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_so.o
58 $(GEN): PRIVATE_CC := $($(my_2nd_arch_prefix)TARGET_CC)
59 $(GEN): PRIVATE_CFLAGS := $(my_libc_crt_target_so_cflags)
60 $(GEN): $(my_libc_crt_target_crtbegin_so_file)
61         @mkdir -p $(dir $@)
62         $(hide) $(PRIVATE_CC) $(PRIVATE_CFLAGS) \
63                 -MD -MF $(@:%.o=%.d) -o $@ -c $<
64         $(transform-d-to-p)
65 -include $(GEN:%.o=%.P)
68 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_so.o
69 $(GEN): PRIVATE_CC := $($(my_2nd_arch_prefix)TARGET_CC)
70 $(GEN): PRIVATE_CFLAGS := $(my_libc_crt_target_so_cflags)
71 $(GEN): $(LOCAL_PATH)/arch-common/bionic/crtend_so.S
72         @mkdir -p $(dir $@)
73         $(hide) $(PRIVATE_CC) $(PRIVATE_CFLAGS) \
74                 -MD -MF $(@:%.o=%.d) -o $@ -c $<
75         $(transform-d-to-p)
76 -include $(GEN:%.o=%.P)
79 # The following two are installed to device
80 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_SHARED_LIBRARIES)/crtbegin_so.o
81 $(GEN): $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_so.o
82         $(hide) mkdir -p $(dir $@) && cp -f $< $@
83 ALL_GENERATED_SOURCES += $(GEN)
85 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_SHARED_LIBRARIES)/crtend_so.o
86 $(GEN): $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_so.o
87         $(hide) mkdir -p $(dir $@) && cp -f $< $@
88 ALL_GENERATED_SOURCES += $(GEN)
91 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_static1.o
92 $(GEN): PRIVATE_CC := $($(my_2nd_arch_prefix)TARGET_CC)
93 $(GEN): PRIVATE_CFLAGS := $(my_libc_crt_target_cflags)
94 $(GEN): $(my_libc_crt_target_crtbegin_file)
95         @mkdir -p $(dir $@)
96         $(hide) $(PRIVATE_CC) $(PRIVATE_CFLAGS) \
97                 -MD -MF $(@:%.o=%.d) -o $@ -c $<
98         $(transform-d-to-p)
99 -include $(GEN:%.o=%.P)
102 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_static.o
103 $(GEN): PRIVATE_LD := $($(my_2nd_arch_prefix)TARGET_LD)
104 $(GEN): PRIVATE_LDFLAGS := $(my_libc_crt_target_ldflags)
105 $(GEN): $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_static1.o \
106     $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbrand.o
107         @mkdir -p $(dir $@)
108         $(hide) $(PRIVATE_LD) $(PRIVATE_LDFLAGS) -r -o $@ $^
111 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_dynamic1.o
112 $(GEN): PRIVATE_CC := $($(my_2nd_arch_prefix)TARGET_CC)
113 $(GEN): PRIVATE_CFLAGS := $(my_libc_crt_target_cflags)
114 $(GEN): $(my_libc_crt_target_crtbegin_file)
115         @mkdir -p $(dir $@)
116         $(hide) $(PRIVATE_CC) $(PRIVATE_CFLAGS) \
117                 -MD -MF $(@:%.o=%.d) -o $@ -c $<
118         $(transform-d-to-p)
119 -include $(GEN:%.o=%.P)
122 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_dynamic.o
123 $(GEN): PRIVATE_LD := $($(my_2nd_arch_prefix)TARGET_LD)
124 $(GEN): PRIVATE_LDFLAGS := $(my_libc_crt_target_ldflags)
125 $(GEN): $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_dynamic1.o \
126     $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbrand.o
127         @mkdir -p $(dir $@)
128         $(hide) $(PRIVATE_LD) $(PRIVATE_LDFLAGS) -r -o $@ $^
131 # We rename crtend.o to crtend_android.o to avoid a
132 # name clash between gcc and bionic.
133 GEN := $($(my_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_android.o
134 $(GEN): PRIVATE_CC := $($(my_2nd_arch_prefix)TARGET_CC)
135 $(GEN): PRIVATE_CFLAGS := $(my_libc_crt_target_cflags)
136 $(GEN): $(LOCAL_PATH)/arch-common/bionic/crtend.S
137         @mkdir -p $(dir $@)
138         $(hide) $(PRIVATE_CC) $(PRIVATE_CFLAGS) \
139                 -MD -MF $(@:%.o=%.d) -o $@ -c $<
140         $(transform-d-to-p)
141 -include $(GEN:%.o=%.P)
143 # Clear temp vars
144 my_libc_crt_target_ldflags :=
145 my_libc_crt_target_so_cflags :=
146 my_libc_crt_target_cflags :=
147 my_libc_crt_target_crtbegin_so_file :=
148 my_libc_crt_target_crtbegin_file :=
149 my_arch :=