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)
23 ifneq ($(MODE_USE_C),)
24 $(error MODE_USE_C is obsolete, add and l4re_c and/or l4re_c-util to REQUIRES_LIBS as needed)
28 CRTBEGIN_so = $(GCCLIBDIR)/crtbegin.o
29 CRTBEGIN_stat_bin = $(GCCLIBDIR)/crtbegin.o
31 CRTBEGIN_so = $(GCCLIBDIR)/crtbeginS.o
32 CRTBEGIN_stat_bin = $(GCCLIBDIR)/crtbeginT.o
35 CRTBEGIN_dyn_bin = $(GCCLIBDIR)/crtbegin.o
37 CRTEND_so = $(GCCLIBDIR)/crtendS.o
38 CRTEND_dyn_bin = $(GCCLIBDIR)/crtend.o
39 CRTEND_stat_bin = $(GCCLIBDIR)/crtend.o
43 CRT1_dyn_bin = $(call findfile,crt1.o,$(L4LIBDIR))
44 CRT1_stat_bin = $(call findfile,crt1.o,$(L4LIBDIR))
46 CRTI_so = $(call findfile,crti.s.o,$(L4LIBDIR))
47 CRTI_dyn_bin = $(call findfile,crti.o,$(L4LIBDIR))
48 CRTI_stat_bin = $(call findfile,crti.o,$(L4LIBDIR))
51 CRTN_so = $(call findfile,crtn.s.o,$(L4LIBDIR))
53 CRTN_so = $(CRTEND_so) $(call findfile,crtn.s.o,$(L4LIBDIR))
55 CRTN_dyn_bin = $(CRTEND_dyn_bin) $(call findfile,crtn.o,$(L4LIBDIR))
56 CRTN_stat_bin = $(CRTEND_stat_bin) $(call findfile,crtn.o,$(L4LIBDIR))
58 LDS_so = $(call findfile,main_rel.ld,$(L4LIBDIR))
59 LDS_dyn_bin = $(call findfile,main_dyn.ld,$(L4LIBDIR))
60 LDS_stat_bin = $(call findfile,main_stat.ld,$(L4LIBDIR))
63 LIBC_INCLUDE = -nostdinc \
64 -I$(OBJ_BASE)/include/$(ARCH)/uclibc \
65 -I$(OBJ_BASE)/include/uclibc \
66 -I$(OBJ_BASE)/include/contrib/libstdc++-v3 \
67 $(if $(CONFIG_USE_DROPS_STDDIR), \
68 -I$(DROPS_STDDIR)/include/$(ARCH)/uclibc \
69 -I$(DROPS_STDDIR)/include/uclibc \
70 -I$(DROPS_STDDIR)/include/contrib/libstdc++-v3,) \
73 #############################################################################
75 ################################
77 ################################
79 BID_SUPPORTED_all_sigma0 = y
80 LIBCINCDIR_all_sigma0 = $(LIBC_INCLUDE)
81 REQUIRES_LIBS_all_sigma0 = l4util l4util l4sys \
82 $(LIBC_IMPLEMENTATION)
83 L4_LIBS_all_sigma0 = -static -nostdlib \
84 $(GCCLIB) $(GCCLIB_EH) -lcrt0 \
86 CRT0_all_sigma0 = $(CRTI_stat_bin) $(CRTBEGIN_stat_bin) $(CRT1_stat_bin)
87 CRTN_all_sigma0 = $(CRTN_stat_bin)
88 LDSCRIPT_all_sigma0 = $(LDS_stat_bin)
89 LDFLAGS_all_sigma0 = -Bstatic
92 ################################
94 ################################
96 BID_SUPPORTED_all_static = y
97 LIBCINCDIR_all_static = $(LIBC_INCLUDE)
98 REQUIRES_LIBS_all_static = l4re-main l4re-util stdlibs \
99 $(LIBC_IMPLEMENTATION)
100 L4_LIBS_all_static = -static -nostdlib $(GCCLIB) $(GCCLIB_EH) \
102 CRT0_all_static = $(CRTI_stat_bin) $(CRTBEGIN_stat_bin) $(CRT1_stat_bin)
103 CRTN_all_static = $(CRTN_stat_bin)
104 LDSCRIPT_all_static = $(LDS_stat_bin)
105 LDFLAGS_all_static = -Bstatic
107 #####################################
108 # shared mode -- programs are linked against shared libs
109 #####################################
110 BID_SUPPORTED_all_shared = y
111 LIBCINCDIR_all_shared = $(LIBC_INCLUDE)
112 CRT0_all_shared = $(CRTI_dyn_bin) $(CRTBEGIN_dyn_bin) $(CRT1_dyn_bin)
113 CRTN_all_shared = $(CRTN_dyn_bin)
114 LDSCRIPT_all_shared = $(LDS_dyn_bin)
115 REQUIRES_LIBS_all_shared = l4re-main l4re-util ldso stdlibs-sh \
116 $(LIBC_IMPLEMENTATION)
117 L4_LIBS_all_shared += -nostdlib $(GCCLIB) $(GCCLIB_EH) \
119 LDFLAGS_all_shared = --eh-frame-hdr
121 ################################
123 ################################
125 BID_SUPPORTED_all_l4linux = y
126 LIBCINCDIR_all_l4linux =
127 REQUIRES_LIBS_all_l4linux =
128 L4_LIBS_all_l4linux = -l4re_main \
129 $(L4_LIBS_all_l4linux_USE_C-y) \
135 -lcxx_base -lcxx_io \
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 =