rom/exec/restoretaskstorage.c: Don't restore ETask data
[AROS.git] / compiler / clib / mmakefile.src
blob451a58d3b7aeed55fb8115b1a13967280e8dfebf
1 # $Id$
2 include $(TOP)/config/make.cfg
5 #   This is a rather special makefile. It builds both a shared library
6 #   and a link library from the same source, with only a small amount of
7 #   overlap.
9 USER_CFLAGS :=  -I$(SRCDIR)/$(CURDIR) -I$(SRCDIR)/$(CURDIR)/include \
10         -D__mb_cur_max=MB_CUR_MAX               \
11         -DADATE="\"$(shell date '+%d.%m.%Y')\"" \
12         -fno-builtin
14 # FIXME: temporary fix for local/xxx.c
15 USER_CFLAGS += -D__BSD_VISIBLE=1
17 TESTDIR := $(BINDIR)/Tests
19 # Lists of files
20 #   - Common always exist in the link library.
22 COMMON  := \
23         __alloca \
24         __filesystem_support \
25         __isinf \
26         atof \
27         bcmp \
28         bcopy \
29         bzero \
30         div \
31         _errstrings \
32         getopt \
33         getopt_long \
34         isinf \
35         ldiv \
36         lldiv \
37         mblen \
38         mbtowc \
39         mbstowcs \
40         memchr \
41         memcmp \
42         memcpy \
43         memmove \
44         memset \
45         putchar \
46         stcd_l \
47         stcl_d \
48         stcl_h \
49         stcl_o \
50         stch_l \
51         stco_l \
52         stcu_d \
53         stccpy \
54         stpblk \
55         stpcpy \
56         stpsym \
57         strcasecmp \
58         strcasestr \
59         strcat \
60         strchr \
61         strcmp \
62         strcoll \
63         strcpy \
64         strcspn \
65         strdup \
66         strlcat \
67         strlcpy \
68         strlen \
69         strlwr \
70         strncasecmp \
71         strncat \
72         strncmp \
73         strncpy \
74         strpbrk \
75         strrchr \
76         strrev \
77         strsep \
78         strspn \
79         strstr \
80         strtod \
81         strtok \
82         strupr \
83         strxfrm \
84         swab \
85         wctomb \
86         wcstombs
88 COMMON_ARCH := \
89         longjmp \
90         setjmp
92 #   - Shared are in either the shared linklib, or the arosc.library module
93 SHARED  := \
94         __arosc_init \
95         __arosc_ioerr2errno \
96         __arosc_nixmain \
97         __arosc_set_environptr \
98         __arosc_startup \
99         __arosc_userdata \
100         __assert \
101         __ctype \
102         __get_default_file \
103         __env \
104         __exec \
105         __exitfunc \
106         __fdesc \
107         __rand48 \
108         __signal \
109         __spawnv \
110         __stat \
111         __stdio \
112         __upath \
113         __vcformat \
114         __vcscan \
115         __vfork \
116         abort \
117         abs \
118         access \
119         asctime \
120         asctime_r \
121         atexit \
122         atoi \
123         atol \
124         basename \
125         bsearch \
126         calloc \
127         cfgetispeed \
128         cfgetospeed \
129         cfsetispeed \
130         cfsetospeed \
131         chdir \
132         chmod \
133         chown \
134         clearerr \
135         ctime \
136         ctime_r \
137         clock \
138         close \
139         closedir \
140         creat \
141         difftime \
142         dirfd \
143         dirname \
144         drand48 \
145         dup \
146         dup2 \
147         endgrent \
148         endpwent \
149         erand48 \
150         execl \
151         execlp \
152         execv \
153         execve \
154         execvp \
155         exit \
156         _exit \
157     fchdir \
158         fchmod \
159         fchown \
160         fclose \
161         fcntl \
162         fdopen \
163         feof \
164         ferror \
165         fflush \
166         fgetc \
167         fgetpos \
168         fgets \
169         fileno \
170         flock \
171         fopen \
172         fprintf \
173         fscanf \
174         fsync \
175         fputc \
176         fputs \
177         fread \
178         free \
179         freopen \
180         fseek \
181         fseeko \
182         fsetpos \
183         fstat \
184         ftell \
185         ftello \
186         ftime \
187         ftruncate \
188         fwrite \
189         gcvt \
190         getc \
191         getchar \
192         getcwd \
193         getenv \
194         getfsstat \
195         statfs \
196         getpid \
197         getrlimit \
198         gettimeofday \
199         getuid \
200         geteuid \
201         getgid \
202         getegid \
203         getgrgid \
204         getgroups \
205         getgrnam \
206         getgrent \
207         getlogin \
208         getpgrp \
209         getppid \
210         getpwent \
211         getpwnam \
212         getpwuid \
213         gets \
214         getw \
215         getloadavg \
216         gmtime \
217     gmtime_r \
218         isatty \
219         ioctl \
220         jrand48 \
221         kill \
222         labs \
223         lcong48 \
224         link \
225         locale/big5             \
226         locale/collate          \
227         locale/collcmp          \
228         locale/euc              \
229         locale/fix_grouping     \
230         locale/gb18030          \
231         locale/gb2312           \
232         locale/gbk              \
233         locale/iswctype         \
234         locale/ldpart           \
235         locale/localeconv       \
236         locale/lmessages        \
237         locale/lmonetary        \
238         locale/lnumeric         \
239         locale/mbrlen           \
240         locale/mbrtowc          \
241         locale/mbsinit          \
242         locale/mbsnrtowcs       \
243         locale/mskanji          \
244         locale/none             \
245         locale/rune             \
246         locale/runetype         \
247         locale/setlocale        \
248         locale/setrunelocale    \
249         locale/table            \
250         locale/tolower          \
251         locale/toupper          \
252         locale/utf8             \
253         locale/wcrtomb          \
254         locale/wcsnrtombs       \
255         locale/wctrans          \
256         locale/wctype           \
257         localtime \
258         localtime_r \
259         lrand48 \
260         lseek \
261         lstat \
262         malloc \
263         mkdir \
264         mknod \
265         mkstemp \
266         mktemp \
267         mktime \
268         mrand48 \
269         nanosleep \
270         nrand48 \
271         on_exit \
272         open \
273         opendir \
274         pathconf \
275         pclose \
276         perror \
277         pipe \
278         popen \
279         posix_memalign \
280         printf \
281         putenv \
282         putc \
283         puts \
284         putw \
285         qsort \
286         raise \
287         rand \
288         random \
289         read \
290         readdir \
291         readlink \
292         realloc \
293         realloc_nocopy \
294         realpath \
295         regex/regerror  \
296         regex/regexec   \
297         regex/regcomp   \
298         regex/regfree   \
299         remove \
300         rename \
301         rewind \
302         rewinddir \
303         rmdir \
304         scanf \
305         seed48 \
306         seekdir \
307         setbuf \
308         setenv \
309         setgid \
310         setgrent \
311         setlinebuf \
312         setpwent \
313         setrlimit \
314         setuid \
315         setvbuf \
316         sharecontextwithchild \
317         sigaction \
318         sigaddset \
319         sigdelset \
320         sigemptyset \
321         sigfillset \
322         sigismember \
323         signal \
324         sigpending \
325         sigprocmask \
326         sigsuspend \
327         sleep \
328         snprintf \
329         spawnv \
330         spawnvp \
331         sprintf \
332         srand48 \
333         sscanf \
334         stat \
335         stdtime/timelocal       \
336         strftime \
337         strerror \
338         strptime \
339         strtoimax \
340         strtol \
341         strtoll \
342         strtoul \
343         strtoull \
344         strtoumax \
345         sync \
346         sysconf \
347         symlink \
348         system \
349         tcgetattr \
350         telldir \
351         tempnam \
352         time \
353         times \
354         tmpfile \
355         tmpnam \
356         truncate \
357         tcsetattr \
358         ttyname \
359         umask \
360         ungetc \
361         uname \
362         unlink \
363         unsetenv \
364         updatestdio \
365         usleep \
366         utime \
367         utimes \
368         vfprintf \
369         vfscanf \
370         vprintf \
371         vscanf \
372         vsnprintf \
373         vsprintf \
374         vsscanf \
375         wait \
376         waitpid \
377         write
379 SHARED_ARCH := \
380     vfork \
381     vfork_longjmp
383 SHARED_LINKLIB := \
384        arosc_environ
386 # Note: These files are compiled differently
387 #       depending on whether -DAROSC_ROM is used
388 #       or not.
389 ROM_ONLY := \
390         __ctype \
391         __arosc_userdata \
392         __assert_kernel \
393         __vcformat \
394         __vcscan
396 ROM_COMMON := \
397         atof \
398         bcmp \
399         bcopy \
400         bzero \
401         div \
402         ldiv \
403         lldiv \
404         mblen \
405         mbtowc \
406         mbstowcs \
407         memchr \
408         memcmp \
409         memcpy \
410         memmove \
411         memset \
412         stccpy \
413         stcd_l \
414         stcl_d \
415         stcl_h \
416         stcl_o \
417         stch_l \
418         stco_l \
419         stcu_d \
420         stpblk \
421         stpcpy \
422         strcasecmp \
423         strcasestr \
424         strcat \
425         strchr \
426         strcmp \
427         strcpy \
428         strcspn \
429         _errstrings \
430         strerror_rom \
431         strlen \
432         strlcat \
433         strlcpy \
434         strncasecmp \
435         strncat \
436         strncmp \
437         strncpy \
438         strpbrk \
439         strrchr \
440         strrev \
441         strspn \
442         strstr \
443         strtod \
444         wctomb \
445         wcstombs
447 ROM_COMMON_ARCH := \
448         longjmp \
449         setjmp
451 # Objects for rom.lib, from the static build.
452 ROM_STATIC := \
453         __filesystem_support \
454         __isinf \
455         abs \
456         atoi \
457         atol \
458         bsearch \
459         isinf \
460         labs \
461         qsort \
462         rand \
463         snprintf \
464         sprintf \
465         sscanf \
466         stcd_l \
467         stch_l \
468         stcl_d \
469         strchr \
470         strerror_rom \
471         strspn \
472         strtol \
473         strtoll \
474         strtoul \
475         strtoull \
476         strtok \
477         vsnprintf \
478         vsprintf \
479         vsscanf
482 #MM- core-linklibs : linklibs-arosc linklibs-rom
483 #MM- linklibs : linklibs-clib-shared-linklib linklibs-rom
484 #MM- linklibs-clib : linklibs-clib-shared linklibs-rom
485 #MM- linklibs-clib-shared : includes linklibs-mlib \
486 #MM      linklibs-clib-common linklibs-autoinit
487 #MM- linklibs-clib-shared-linklib : includes linklibs-clib-common
488 #MM- linklibs-rom : includes linklibs-clib-common
489 #MM- linklibs-clib-quick : linklibs-clib-shared-quick \
490 #MM      linklibs-clib-common-quick linklibs-rom-quick
491 #MM- linklibs-clib-clean : linklibs-clib-shared-clean \
492 #MM      linklibs-clib-common-clean linklibs-rom-clean
494 #MM- linklibs-clib-quick : linklibs-clib-shared-quick linklibs-rom-quick
496 %build_linklib mmake=linklibs-clib-common \
497     libname=arosccommon files="$(COMMON) $(add-prefix arch/,$(COMMON_ARCH))" \
498     libdir=$(OBJDIR)
501 #   Also build $(AROS_LIB)/librom.a
503 #   This is a library that is allowed to be used inside modules and the
504 #   kernel. It must include no code which refers to global variables.
506 #   Currently the main difference is that it includes a different __assert()
507 #   function to handle asserts in the kernel.
509 ROM_COMMON_OBJS := $(addsuffix .o, \
510     $(addprefix $(OBJDIR)/,$(ROM_COMMON)) \
511     $(addprefix $(OBJDIR)/arch/,$(ROM_COMMON_ARCH)) \
513 %build_linklib mmake=linklibs-rom \
514     libname=rom files="$(ROM_ONLY) $(ROM_STATIC)" objs=$(ROM_COMMON_OBJS) \
515     cflags="$(CFLAGS) -DAROSC_STATIC -DAROSC_ROM"
516     objdir=$(OBJDIR)/static
520 AROSC_LINKLIB_OBJS := $(addsuffix .o, \
521     $(addprefix $(OBJDIR)/,$(COMMON)) \
522     $(addprefix $(OBJDIR)/arch/,$(COMMON_ARCH)) \
524 USER_LDFLAGS := -L$(OBJDIR)
525 %build_module mmake=linklibs-clib-shared \
526     modname=arosc modtype=library objdir=$(OBJDIR)/shared \
527     cflags="$(CFLAGS) -DAROSC_SHARED" \
528     files="$(SHARED) $(SHARED_ARCH)" \
529     linklibfiles=$(SHARED_LINKLIB) linklibobjs=$(AROSC_LINKLIB_OBJS) \
530     uselibs="arosccommon"
533 # x86_64 needs a reduced 32bit librom.a lib.
534 %rule_compile_multi basenames=$(ROM_COMMON) \
535     cflags="-m32 -DAROSC_LIB32 $(CFLAGS)" targetdir=$(OBJDIR)/32bit
537 ROM_COMMON_OBJ32 := $(addsuffix .o, $(addprefix $(OBJDIR)/32bit/,$(ROM_COMMON)))
538 %build_linklib mmake=linklibs-clib32 \
539     libname=rom files="$(ROM_ONLY) $(ROM_STATIC)" objs=$(ROM_COMMON_OBJ32) \
540     cflags="-m32 $(CFLAGS) -DAROSC_LIB32 -DAROSC_STATIC -DAROSC_ROM" \
541     objdir=$(OBJDIR)/static libdir=$(GENDIR)/lib32
545 check : $(TESTDIR)/snprintf
547 $(TESTDIR)/snprintf : snprintf.c $(LIBDIR)/startup.o $(DEPLIBS)
548         $(CC) -DTEST $(ILDFLAGS) $< -o $@ $(LIBS)
551 clean ::
552         -$(RM) $(OBJDIR) *.err $(LIB)