Don't call ReadArgs() if started from WB.
[tangerine.git] / compiler / clib / mmakefile.src
blob633ab5a5511496620ec9b25a48fe854461e02307
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 :=  -Iinclude -I$(TOP)/rom/exec
11 # We are trying to build:
12 #   $(AROS_LIBS)/arosc.library    from $(SHARED)
13 #   $(AROS_LIB)/libarosc.a        from $(COMMON) and $(STUBS)
15 #   It turns out that some of $(SHARED) refer to things in $(COMMON), so
16 #   I've put that into the arosc.library as well.
17 MODULE      :=  arosc.library
18 SHARED_LIB  :=  $(AROS_LIB)/libarosc.a
20 # New: Also trying to build
21 #   $(AROS_LIB)/librom.a            from $(COMMON) and $(ROMONLY)
23 #   This is a library that is allowed to be used inside modules and the
24 #   kernel. It must include no code which refers to global variables.
26 #   Currently the main difference is that it includes a different __assert()
27 #   function to handle asserts in the kernel.
28 ROM_LIB     :=  $(AROS_LIB)/librom.a
30 # All of the above
31 LIB         := $(SHARED_LIB) $(ROM_LIB) $(AROS_LIBS)/$(MODULE)
33 # Lists of files
34 #   - Common always exist in the link library.
36 COMMON  := \
37         __alloca \
38         __isinf \
39         bcmp \
40         bcopy \
41         bzero \
42         div \
43         getopt \
44         isinf \
45         ldiv \
46         lldiv \
47         mblen \
48         memchr \
49         memcmp \
50         memcpy \
51         memmove \
52         memset \
53         putchar \
54         stccpy \
55         stpblk \
56         stpcpy \
57         stpsym \
58         strcasecmp \
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
86 COMMON_ARCH := \
87         longjmp \
88         setjmp
90 #   - Shared are in either the shared linklib, or the arosc.library module
91 SHARED  := \
92         __arosc_nixmain \
93         __arosc_userdata \
94         __assert \
95         __ctype \
96         __env \
97         __exitfunc \
98         __ioerr2errno \
99         __open \
100         __rand48 \
101         __spawnv \
102         __stat \
103         __stdio \
104         __upath \
105         __vcformat \
106         __vcscan \
107         abort \
108         abs \
109         access \
110         asctime \
111         atexit \
112         atof \
113         atoi \
114         atol \
115         bsearch \
116         calloc \
117         chdir \
118         chmod \
119         chown \
120         clearerr \
121         ctime \
122         clock \
123         close \
124         closedir \
125         creat \
126         difftime \
127         drand48 \
128         dup \
129         dup2 \
130         endgrent \
131         endpwent \
132         erand48 \
133         execl \
134         execvp \
135         exit \
136         _exit \
137         fchmod \
138         fchown \
139         fclose \
140         fcntl \
141         fdopen \
142         feof \
143         ferror \
144         fflush \
145         fgetc \
146         fgetpos \
147         fgets \
148         fileno \
149         fopen \
150         fprintf \
151         fscanf \
152         fsync \
153         fputc \
154         fputs \
155         fread \
156         free \
157         freopen \
158         fseek \
159         fsetpos \
160         fstat \
161         ftell \
162     ftime \
163         ftruncate \
164         fwrite \
165         gcvt \
166         getcwd \
167         getenv \
168         getfsstat \
169         getpid \
170         gettimeofday \
171         getuid \
172         geteuid \
173         getgid \
174         getegid \
175         getgrgid \
176         getgroups \
177         getgrnam \
178         getgrent \
179         getpgrp \
180         getppid \
181         getpwent \
182         getpwnam \
183         getpwuid \
184     getw \
185         getloadavg \
186     gmtime \
187         isatty \
188     ioctl \
189         jrand48 \
190         kill \
191         labs \
192         lcong48 \
193         link \
194         localtime \
195         lrand48 \
196         lseek \
197         malloc \
198         mkdir \
199         mknod \
200         mkstemp \
201         mktemp \
202         mktime \
203         mrand48 \
204         nrand48 \
205         on_exit \
206         open \
207         opendir \
208         pclose \
209         perror \
210         pipe \
211         popen \
212         printf \
213         putenv \
214         puts \
215         putw \
216         qsort \
217         raise \
218         rand \
219         random \
220         read \
221         readdir \
222         readlink \
223         realloc \
224         realloc_nocopy \
225         remove \
226         rename \
227         rewind \
228         rewinddir \
229         rmdir \
230         scanf \
231         seed48 \
232         seekdir \
233         setbuf \
234         setenv \
235         setgid \
236         setgrent \
237         setlinebuf \
238         setlocale \
239         setpwent \
240         setuid \
241         setvbuf \
242         sigaction \
243         sigaddset \
244         sigdelset \
245         sigemptyset \
246         sigfillset \
247         sigismember \
248         signal \
249         sigpending \
250         sigprocmask \
251         sigsuspend \
252         sleep \
253         snprintf \
254         spawnv \
255         spawnvp \
256         sprintf \
257         srand48 \
258         sscanf \
259         stat \
260         stcd_l \
261         stcl_d \
262         stcl_h \
263         stcl_o \
264         stch_l \
265         stco_l \
266         stcu_d \
267         strftime \
268         strerror \
269         strtol \
270         strtoll \
271         strtoul \
272         strtoull \
273         symlink \
274         system \
275         telldir \
276         tempnam \
277         time \
278         times \
279         tmpfile \
280         tmpnam \
281         truncate \
282         umask \
283         ungetc \
284         unlink \
285         unsetenv \
286         updatestdio \
287         utime \
288         utimes \
289         vfprintf \
290         vfscanf \
291         vprintf \
292         vscanf \
293         vsnprintf \
294         vsprintf \
295         vsscanf \
296         wait \
297         write
299 ROM_ONLY := \
300         __assert_kernel
302 ROM_COMMON := \
303         bcmp \
304         bcopy \
305         bzero \
306         div \
307         ldiv \
308         lldiv \
309         mblen \
310         memchr \
311         memcmp \
312         memcpy \
313         memmove \
314         memset \
315         stpblk \
316         stpcpy \
317         strcasecmp \
318         strcat \
319         strchr \
320         strcmp \
321         strcpy \
322         strcspn \
323         strlen \
324         strlcat \
325         strlcpy \
326         strncasecmp \
327         strncat \
328         strncmp \
329         strncpy \
330         strpbrk \
331         strrchr \
332         strrev \
333         strspn \
334         strstr \
335         strtod \
336         strtok
338 ROM_COMMON_ARCH := \
339         longjmp \
340         setjmp
342 # Objects for rom.lib, from the static build.
343 ROM_STATIC := \
344         __arosc_userdata \
345         __ctype \
346         __isinf \
347         __vcformat \
348         __vcscan \
349         abs \
350         atoi \
351         atol \
352         bsearch \
353         isinf \
354         labs \
355         qsort \
356         rand \
357         snprintf \
358         sprintf \
359         sscanf \
360         stcd_l \
361         stch_l \
362         stcl_d \
363         strtol \
364         strtoll \
365         strtoul \
366         strtoull \
367         vsnprintf \
368         vsprintf \
369         vsscanf
371 #   - The stubs are generated, and are in the shared link library.
372 STUBS    := $(wildcard $(OBJDIR)/stubs/*.o)
374 # Dependencies
375 DEPS := $(foreach f,$(COMMON),$(OBJDIR)/$(f).d) \
376         $(foreach f,$(SHARED),$(OBJDIR)/shared/$(f).d) \
377         $(OBJDIR)/shared/arosc_init.d $(OBJDIR)/shared/arosc_functable.d \
378         $(OBJDIR)/shared/arosc_endtag.d
380 COMMON_OBJ :=   $(foreach f,$(COMMON),$(OBJDIR)/$(f).o) \
381                 $(foreach f,$(COMMON_ARCH),$(OBJDIR)/arch/$(f).o) 
383 SHARED_OBJ :=   $(COMMON_OBJ) $(STUBS) $(OBJDIR)/arosc_autoinit.o
385 MODULE_OBJ :=   $(foreach f, $(SHARED), $(OBJDIR)/shared/$(f).o)
387 ROM_OBJ    :=   $(foreach f,$(ROM_ONLY),$(OBJDIR)/rom/$(f).o) \
388                 $(foreach f,$(ROM_COMMON),$(OBJDIR)/$(f).o) \
389                 $(foreach f,$(ROM_COMMON_ARCH),$(OBJDIR)/arch/$(f).o) \
390                 $(foreach f,$(ROM_STATIC),$(OBJDIR)/static/$(f).o)
392 # These are added to the link step of arosc.library
393 LIBS := -L$(AROS_LIB) -larosm -lautoinit
394 DEP_LIBS := arosm autoinit
396 #MM- linklibs-core : linklibs-clib
397 #MM- linklibs : linklibs-clib
398 #MM linklibs-clib : setup-clib includes linklibs-mlib linklibs-autoinit \
399 #MM                     clib-stubs
402 linklibs-clib-quick : linklibs-clib
404 linklibs-clib : setup-clib $(SHARED_LIB) $(ROM_LIB) $(AROS_LIBS)/$(MODULE)
406 $(OBJDIR)/libarosccommon.a: $(COMMON_OBJ)
407         %mklib_q from=$^
409 $(SHARED_LIB) : $(SHARED_OBJ)
410         %mklib_q from=$^
412 $(ROM_LIB) : $(ROM_OBJ)
413         %mklib_q from=$^
415 $(AROS_LIBS)/$(MODULE) : $(MODULE_OBJ) $(OBJDIR)/libarosccommon.a
416         %link_module_q \
417             objs="$(OBJDIR)/shared/arosc_init.o $(OBJDIR)/shared/arosc_functable.o $(MODULE_OBJ)" \
418             endtag="$(OBJDIR)/shared/arosc_endtag.o" \
419             ldflags="$(LDFLAGS) -L$(OBJDIR) $(NOSTDLIB_LDFLAGS)" \
420             libs="$(LIBS) -larosccommon"
422 $(OBJDIR)/static/%.o : %.c
423         %compile_q opt="$(CFLAGS)"
425 $(OBJDIR)/shared/%.o : %.c
426         %compile_q opt="$(CFLAGS) -DAROSC_SHARED"
428 $(OBJDIR)/rom/%.o : %.c
429         %compile_q opt="$(CFLAGS)"
431 $(OBJDIR)/%.o : %.c
432         %compile_q opt="$(CFLAGS)"
434 # Need to copy these files in from the machine dependant build.
435 $(OBJDIR)/shared/%jmp.o : $(OBJDIR)/%jmp.o
436         @$(CP) $< $@
438 # The rules to create the dependancy files.
439 $(OBJDIR)/static/%.d : %.c
440         %mkdepend_q flags=$(CFLAGS)
442 $(OBJDIR)/shared/%.d : %.c
443         %mkdepend_q flags="$(CFLAGS) -include __arosc_privdata.h"
445 $(OBJDIR)/rom/%.d : %.c
446         %mkdepend_q flags=$(CFLAGS)
448 $(OBJDIR)/%.d : %.c
449         %mkdepend_q flags=$(CFLAGS)
452 setup-clib :
453         %mkdirs_q $(AROS_INCLUDES)/sys $(OBJDIR)
454         %mkdirs_q $(OBJDIR)/static $(OBJDIR)/shared $(OBJDIR)/rom
455         %mkdirs_q $(AROS_LIB) $(AROS_LIBS)
458 check : $(TESTDIR)/snprint
460 $(TESTDIR)/snprintf : snprintf.c $(LIBDIR)/startup.o $(DEPLIBS)
461         $(CC) -DTEST $(ILDFLAGS) $(LIBDIR)/startup.o $< -o $@ $(LIBS)
464 clean ::
465         -$(RM) $(OBJDIR) *.err $(LIB)
467 %common
468 %include_deps
470 # Fix up the deps, these won't end up in $^, but they'll make it work.
471 $(AROS_LIBS)/$(MODULE) : $(OBJDIR)/shared/arosc_init.o $(OBJDIR)/shared/arosc_functable.o $(OBJDIR)/shared/arosc_endtag.o
472 $(AROS_LIBS)/$(MODULE) : $(foreach f,$(DEP_LIBS),$(AROS_LIB)/lib$(f).a)
473 $(OBJDIR)/shared/arosc_init.o $(OBJDIR)/shared/arosc_functable.o: $(AROS_INCLUDES)/sys/syscall.def