4 # Makefile-Include for defining modes
6 # Default is uClibc without reentrant functions. If, for example
7 # two independant threads of the same application call malloc at the same
8 # time, L4_MULTITHREADED _must_ be defined to y.
10 LIBC_IMPLEMENTATION-y := libpthread libc
11 LIBC_IMPLEMENTATION-n := libc
12 LIBC_IMPLEMENTATION = $(LIBC_IMPLEMENTATION-$(L4_MULTITHREADED))
13 ifeq ($(LIBC_IMPLEMENTATION),)
14 $(error LIBC_IMPLEMENTATION not set, L4_MULTITHREADED must be defined to 'y' or 'n'.)
17 ifeq ($(MODE),l4linux)
18 ifeq ($(L4_MULTITHREADED),y)
19 $(error MODE=l4linux and L4_MULTITHREADED=y not possible)
24 CRTBEGIN_so = $(GCCLIBDIR)/crtbegin.o
25 CRTBEGIN_stat_bin = $(GCCLIBDIR)/crtbegin.o
27 CRTBEGIN_so = $(GCCLIBDIR)/crtbeginS.o
28 CRTBEGIN_stat_bin = $(GCCLIBDIR)/crtbeginT.o
31 CRTBEGIN_dyn_bin = $(GCCLIBDIR)/crtbegin.o
33 CRTEND_so = $(GCCLIBDIR)/crtendS.o
34 CRTEND_dyn_bin = $(GCCLIBDIR)/crtend.o
35 CRTEND_stat_bin = $(GCCLIBDIR)/crtend.o
39 CRT1_dyn_bin = $(call findfile,crt1.o,$(L4LIBDIR))
40 CRT1_stat_bin = $(call findfile,crt1.o,$(L4LIBDIR))
42 CRTI_so = $(call findfile,crti.s.o,$(L4LIBDIR))
43 CRTI_dyn_bin = $(call findfile,crti.o,$(L4LIBDIR))
44 CRTI_stat_bin = $(call findfile,crti.o,$(L4LIBDIR))
47 CRTN_so = $(call findfile,crtn.s.o,$(L4LIBDIR))
49 CRTN_so = $(CRTEND_so) $(call findfile,crtn.s.o,$(L4LIBDIR))
51 CRTN_dyn_bin = $(CRTEND_dyn_bin) $(call findfile,crtn.o,$(L4LIBDIR))
52 CRTN_stat_bin = $(CRTEND_stat_bin) $(call findfile,crtn.o,$(L4LIBDIR))
54 LDS_so = $(call findfile,main_rel.ld,$(L4LIBDIR))
55 LDS_dyn_bin = $(call findfile,main_dyn.ld,$(L4LIBDIR))
56 LDS_stat_bin = $(call findfile,main_stat.ld,$(L4LIBDIR))
59 LIBC_INCLUDE = -nostdinc \
60 -I$(OBJ_BASE)/include/$(ARCH)/uclibc \
61 -I$(OBJ_BASE)/include/uclibc \
62 -I$(OBJ_BASE)/include/contrib/libstdc++-v3 \
63 $(if $(CONFIG_USE_DROPS_STDDIR), \
64 -I$(DROPS_STDDIR)/include/$(ARCH)/uclibc \
65 -I$(DROPS_STDDIR)/include/uclibc \
66 -I$(DROPS_STDDIR)/include/contrib/libstdc++-v3,) \
69 #############################################################################
71 ################################
73 ################################
75 BID_SUPPORTED_all_sigma0 = y
76 LIBCINCDIR_all_sigma0 = $(LIBC_INCLUDE)
77 REQUIRES_LIBS_all_sigma0 = l4util l4util l4sys \
78 $(LIBC_IMPLEMENTATION) \
79 $(if $(MODE_USE_C),l4re_c-util)
80 L4_LIBS_all_sigma0 = -static -nostdlib \
81 $(GCCLIB) $(GCCLIB_EH) -lcrt0 \
83 CRT0_all_sigma0 = $(CRTI_stat_bin) $(CRTBEGIN_stat_bin) $(CRT1_stat_bin)
84 CRTN_all_sigma0 = $(CRTN_stat_bin)
85 LDSCRIPT_all_sigma0 = $(LDS_stat_bin)
86 LDFLAGS_all_sigma0 = -Bstatic
89 ################################
91 ################################
93 BID_SUPPORTED_all_static = y
94 LIBCINCDIR_all_static = $(LIBC_INCLUDE)
95 REQUIRES_LIBS_all_static = l4re-main l4re-util stdlibs \
96 $(LIBC_IMPLEMENTATION) \
97 $(if $(MODE_USE_C),l4re_c-util)
98 L4_LIBS_all_static = -static -nostdlib $(GCCLIB) $(GCCLIB_EH) \
100 CRT0_all_static = $(CRTI_stat_bin) $(CRTBEGIN_stat_bin) $(CRT1_stat_bin)
101 CRTN_all_static = $(CRTN_stat_bin)
102 LDSCRIPT_all_static = $(LDS_stat_bin)
103 LDFLAGS_all_static = -Bstatic
105 #####################################
106 # shared mode -- programs are linked against shared libs
107 #####################################
108 BID_SUPPORTED_all_shared = y
109 LIBCINCDIR_all_shared = $(LIBC_INCLUDE)
110 CRT0_all_shared = $(CRTI_dyn_bin) $(CRTBEGIN_dyn_bin) $(CRT1_dyn_bin)
111 CRTN_all_shared = $(CRTN_dyn_bin)
112 LDSCRIPT_all_shared = $(LDS_dyn_bin)
113 REQUIRES_LIBS_all_shared = l4re-main l4re-util ldso stdlibs-sh \
114 $(LIBC_IMPLEMENTATION) \
115 $(if $(MODE_USE_C),l4re_c-util)
116 L4_LIBS_all_shared += -nostdlib $(GCCLIB) $(GCCLIB_EH) \
118 LDFLAGS_all_shared = --eh-frame-hdr
120 ################################
122 ################################
124 BID_SUPPORTED_all_l4linux = y
125 LIBCINCDIR_all_l4linux =
126 REQUIRES_LIBS_all_l4linux =
127 L4_LIBS_all_l4linux = -l4re_main \
128 $(L4_LIBS_all_l4linux_USE_C-y) \
134 -lcxx_base -lcxx_io \
136 L4_LIBS_all_l4linux_USE_C-$(MODE_USE_C) = -l4re-c -l4re-c-util
139 LDSCRIPT_all_l4linux =
140 LDFLAGS_all_l4linux =
143 #####################################
144 # lib mode -- options when building libs
145 #####################################
147 BID_SUPPORTED_all_lib = y
148 LIBCINCDIR_all_lib = $(LIBC_INCLUDE)
149 CRT0_all_lib = $(CRTI_dyn_bin) $(CRTBEGIN_dyn_bin) $(CRT1_dyn_bin)
150 CRTN_all_lib = $(CRTN_dyn_bin)
151 LDSCRIPT_all_lib = $(LDS_so)
152 LDFLAGS_all_lib = --eh-frame-hdr
155 #####################################
156 # host mode -- no L4 specifics
157 #####################################
159 BID_SUPPORTED_all_host = y
160 LIBCINCDIR_all_host =
161 REQUIRES_LIBS_all_host =