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