]> rtime.felk.cvut.cz Git - l4.git/blob - l4/mk/modes.inc
update
[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 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)
25 endif
26
27 ifeq ($(ARCH),sparc)
28 CRTBEGIN_so       = $(GCCLIBDIR)/crtbegin.o
29 CRTBEGIN_stat_bin = $(GCCLIBDIR)/crtbegin.o
30 else
31 CRTBEGIN_so       = $(GCCLIBDIR)/crtbeginS.o
32 CRTBEGIN_stat_bin = $(GCCLIBDIR)/crtbeginT.o
33 endif
34
35 CRTBEGIN_dyn_bin  = $(GCCLIBDIR)/crtbegin.o
36
37 CRTEND_so         = $(GCCLIBDIR)/crtendS.o
38 CRTEND_dyn_bin    = $(GCCLIBDIR)/crtend.o
39 CRTEND_stat_bin   = $(GCCLIBDIR)/crtend.o
40
41
42 CRT1_so           =
43 CRT1_dyn_bin      = $(call findfile,crt1.o,$(L4LIBDIR))
44 CRT1_stat_bin     = $(call findfile,crt1.o,$(L4LIBDIR))
45
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))
49
50 ifeq ($(ARCH),sparc)
51 CRTN_so           = $(call findfile,crtn.s.o,$(L4LIBDIR))
52 else
53 CRTN_so           = $(CRTEND_so)       $(call findfile,crtn.s.o,$(L4LIBDIR))
54 endif
55 CRTN_dyn_bin      = $(CRTEND_dyn_bin)  $(call findfile,crtn.o,$(L4LIBDIR))
56 CRTN_stat_bin     = $(CRTEND_stat_bin) $(call findfile,crtn.o,$(L4LIBDIR))
57
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))
61
62
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,)      \
71                  $(I_GCCINCDIR)
72
73 #############################################################################
74
75 ################################
76 # sigma0 mode
77 ################################
78
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         \
85                                   $(EXTRA_LIBS)
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
90
91
92 ################################
93 # static mode
94 ################################
95
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) \
101                                   $(EXTRA_LIBS)
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
106
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)    \
118                                   $(EXTRA_LIBS)
119 LDFLAGS_all_shared              = --eh-frame-hdr
120
121 ################################
122 # l4linux mode
123 ################################
124
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)    \
130                                   -l4re-util                        \
131                                   -l4lx-re.o                        \
132                                   -ll4sys-l4x -l4re                 \
133                                   $(EXTRA_LIBS)                     \
134                                   -ll4util                          \
135                                   -lcxx_base -lcxx_io               \
136                                   -lcxx_libc_io
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       =