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
9 USER_CFLAGS := -I$(SRCDIR)/$(CURDIR) -I$(SRCDIR)/$(CURDIR)/include -I$(SRCDIR)/rom/exec -I$(GENDIR)/rom/exec \
10 -D__mb_cur_max=MB_CUR_MAX \
11 -DEFTYPE=EINVAL -fno-builtin
12 USER_CFLAGS += $(PARANOIA_CFLAGS)
14 # We are trying to build:
15 # $(AROS_LIBS)/arosc.library from $(SHARED)
16 # $(AROS_LIB)/libarosc.a from $(COMMON) and $(STUBS)
18 # It turns out that some of $(SHARED) refer to things in $(COMMON), so
19 # I've put that into the arosc.library as well.
20 MODULE := arosc.library
21 SHARED_LIB := $(AROS_LIB)/libarosc.a
23 # New: Also trying to build
24 # $(AROS_LIB)/librom.a from $(COMMON) and $(ROMONLY)
26 # This is a library that is allowed to be used inside modules and the
27 # kernel. It must include no code which refers to global variables.
29 # Currently the main difference is that it includes a different __assert()
30 # function to handle asserts in the kernel.
31 ROM_LIB := $(AROS_LIB)/librom.a
34 LIB := $(SHARED_LIB) $(ROM_LIB) $(AROS_LIBS)/$(MODULE)
36 TESTDIR := $(BINDIR)/Tests
39 # - Common always exist in the link library.
43 __filesystem_support \
102 # - Shared are in either the shared linklib, or the arosc.library module
236 locale/fix_grouping \
255 locale/setrunelocale \
322 sharecontextwithchild \
396 # Note: These files are compiled differently
397 # depending on whether -DAROSC_ROM is used
453 # Objects for rom.lib, from the static build.
455 __filesystem_support \
479 # - The stubs are generated, and are in the shared link library.
480 STUBS := $(wildcard $(OBJDIR)/stubs/*.o)
483 DEPS := $(foreach f,$(COMMON),$(OBJDIR)/$(f).d) \
484 $(foreach f,$(SHARED),$(OBJDIR)/shared/$(f).d) \
485 $(OBJDIR)/shared/arosc_init.d $(OBJDIR)/shared/arosc_functable.d \
486 $(OBJDIR)/shared/arosc_endtag.d
488 COMMON_OBJ := $(foreach f,$(COMMON),$(OBJDIR)/$(f).o) \
489 $(foreach f,$(COMMON_ARCH),$(OBJDIR)/arch/$(f).o)
491 SHARED_OBJ := $(COMMON_OBJ) $(STUBS) $(OBJDIR)/arosc_autoinit.o
493 MODULE_OBJ := $(foreach f, $(SHARED), $(OBJDIR)/shared/$(f).o) \
494 $(foreach f,$(SHARED_ARCH),$(OBJDIR)/shared/arch/$(f).o)
496 ROM_OBJ := $(foreach f,$(ROM_ONLY),$(OBJDIR)/rom/$(f).o) \
497 $(foreach f,$(ROM_COMMON),$(OBJDIR)/$(f).o) \
498 $(foreach f,$(ROM_COMMON_ARCH),$(OBJDIR)/arch/$(f).o) \
499 $(foreach f,$(ROM_STATIC),$(OBJDIR)/static/$(f).o)
501 # These are added to the link step of arosc.library
502 LIBS := $(ARCH_LIBS) -L$(AROS_LIB) -larosm -lautoinit
503 DEP_LIBS := arosm autoinit
505 #MM- linklibs-core : linklibs-clib
506 #MM- linklibs : linklibs-clib
507 #MM linklibs-clib : setup-clib includes linklibs-mlib linklibs-autoinit \
508 #MM clib-stubs linklibs-amiga linklibs-arossupport
511 linklibs-clib-quick : linklibs-clib
513 linklibs-clib : setup-clib $(SHARED_LIB) $(ROM_LIB) $(AROS_LIBS)/$(MODULE)
515 $(OBJDIR)/libarosccommon.a: $(COMMON_OBJ)
518 $(SHARED_LIB) : $(SHARED_OBJ)
521 $(ROM_LIB) : $(ROM_OBJ)
524 $(AROS_LIBS)/$(MODULE) : $(MODULE_OBJ) $(OBJDIR)/libarosccommon.a
526 objs="$(OBJDIR)/shared/arosc_init.o $(OBJDIR)/shared/arosc_functable.o $(MODULE_OBJ)" \
527 endtag="$(OBJDIR)/shared/arosc_endtag.o" \
528 ldflags="$(LDFLAGS) -L$(OBJDIR)" \
529 libs="$(LIBS) -larosccommon"
531 $(OBJDIR)/static/%.o : %.c
532 %compile_q opt="$(CFLAGS) -DAROSC_STATIC"
534 $(OBJDIR)/shared/%.o : %.c
535 %compile_q opt="$(CFLAGS) -DAROSC_SHARED"
537 $(OBJDIR)/rom/%.o : %.c
538 %compile_q opt="$(CFLAGS) -DAROSC_ROM"
541 %compile_q opt="$(CFLAGS)"
543 # Need to copy these files in from the machine dependant build.
544 $(OBJDIR)/shared/%jmp.o : $(OBJDIR)/%jmp.o
547 # The rules to create the dependancy files.
548 $(OBJDIR)/static/%.d : %.c
549 %mkdepend_q flags=$(CFLAGS)
551 $(OBJDIR)/shared/%.d : %.c
552 %mkdepend_q flags="$(CFLAGS) -include __arosc_privdata.h"
554 $(OBJDIR)/rom/%.d : %.c
555 %mkdepend_q flags=$(CFLAGS)
558 %mkdepend_q flags=$(CFLAGS)
562 %mkdirs_q $(AROS_INCLUDES)/sys $(OBJDIR)
563 %mkdirs_q $(OBJDIR)/static $(OBJDIR)/shared $(OBJDIR)/rom
564 %mkdirs_q $(AROS_LIB) $(AROS_LIBS)
567 check : $(TESTDIR)/snprintf
569 $(TESTDIR)/snprintf : snprintf.c $(LIBDIR)/startup.o $(DEPLIBS)
570 $(CC) -DTEST $(ILDFLAGS) $< -o $@ $(LIBS)
574 -$(RM) $(OBJDIR) *.err $(LIB)
579 # Fix up the deps, these won't end up in $^, but they'll make it work.
580 $(AROS_LIBS)/$(MODULE) : $(OBJDIR)/shared/arosc_init.o $(OBJDIR)/shared/arosc_functable.o $(OBJDIR)/shared/arosc_endtag.o
581 $(AROS_LIBS)/$(MODULE) : $(foreach f,$(DEP_LIBS),$(AROS_LIB)/lib$(f).a)
582 $(OBJDIR)/shared/arosc_init.o $(OBJDIR)/shared/arosc_functable.o: $(AROS_INCLUDES)/sys/syscall.def