]> rtime.felk.cvut.cz Git - l4.git/blob - l4/mk/modes.inc
43b44da20c36a6e619f95d7b5966594173873703
[l4.git] / l4 / mk / modes.inc
1 # -*- Makefile -*-
2 # vim:et:ts=8:ft=make:
3 #
4 # Makefile-Include for defining modes
5
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.
9 L4_MULTITHREADED      ?= n
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'.) 
15 endif
16
17 ifeq ($(MODE),l4linux)
18   ifeq ($(L4_MULTITHREADED),y)
19     $(error MODE=l4linux and L4_MULTITHREADED=y not possible)
20   endif
21 endif
22
23 ifeq ($(ARCH),sparc)
24 CRTBEGIN_so       = $(GCCLIBDIR)/crtbegin.o
25 CRTBEGIN_stat_bin = $(GCCLIBDIR)/crtbegin.o
26 else
27 CRTBEGIN_so       = $(GCCLIBDIR)/crtbeginS.o
28 CRTBEGIN_stat_bin = $(GCCLIBDIR)/crtbeginT.o
29 endif
30
31 CRTBEGIN_dyn_bin  = $(GCCLIBDIR)/crtbegin.o
32
33 CRTEND_so         = $(GCCLIBDIR)/crtendS.o
34 CRTEND_dyn_bin    = $(GCCLIBDIR)/crtend.o
35 CRTEND_stat_bin   = $(GCCLIBDIR)/crtend.o
36
37
38 CRT1_so           =
39 CRT1_dyn_bin      = $(call findfile,crt1.o,$(L4LIBDIR))
40 CRT1_stat_bin     = $(call findfile,crt1.o,$(L4LIBDIR))
41
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))
45
46 ifeq ($(ARCH),sparc)
47 CRTN_so           = $(call findfile,crtn.s.o,$(L4LIBDIR))
48 else
49 CRTN_so           = $(CRTEND_so)       $(call findfile,crtn.s.o,$(L4LIBDIR))
50 endif
51 CRTN_dyn_bin      = $(CRTEND_dyn_bin)  $(call findfile,crtn.o,$(L4LIBDIR))
52 CRTN_stat_bin     = $(CRTEND_stat_bin) $(call findfile,crtn.o,$(L4LIBDIR))
53
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))
57
58
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,)      \
67                  $(I_GCCINCDIR)
68
69 #############################################################################
70
71 ################################
72 # sigma0 mode
73 ################################
74
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         \
82                                   $(EXTRA_LIBS)
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
87
88
89 ################################
90 # static mode
91 ################################
92
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) \
99                                   $(EXTRA_LIBS)
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
104
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)    \
117                                   $(EXTRA_LIBS)
118 LDFLAGS_all_shared              = --eh-frame-hdr
119
120 ################################
121 # l4linux mode
122 ################################
123
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)    \
129                                   -l4re-util                        \
130                                   -l4lx-re.o                        \
131                                   -ll4sys-l4x -l4re                 \
132                                   $(EXTRA_LIBS)                     \
133                                   -ll4util                          \
134                                   -lcxx_base -lcxx_io               \
135                                   -lcxx_libc_io
136 L4_LIBS_all_l4linux_USE_C-$(MODE_USE_C) = -l4re-c -l4re-c-util
137 CRT0_all_l4linux                 =
138 CRTN_all_l4linux                 =
139 LDSCRIPT_all_l4linux             =
140 LDFLAGS_all_l4linux              =
141
142
143 #####################################
144 # lib mode -- options when building libs
145 #####################################
146
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
153
154
155 #####################################
156 # host mode -- no L4 specifics
157 #####################################
158
159 BID_SUPPORTED_all_host = y
160 LIBCINCDIR_all_host    =
161 REQUIRES_LIBS_all_host =
162 L4_LIBS_all_host       =
163 CRT0_all_host          =
164 CRTN_all_host          =
165 LDSCRIPT_all_host      =
166 LDFLAGS_all_host       =