diff --git a/library/GNUmakefile.os4 b/library/GNUmakefile.os4 index 9f928ea..1a2d532 100644 --- a/library/GNUmakefile.os4 +++ b/library/GNUmakefile.os4 @@ -95,32 +95,45 @@ include libdebug.gmk include libamiga.gmk include libprofile.gmk -all-targets: \ - lib/crt0.o \ - lib/small-data/crt0.o \ - lib/soft-float/crt0.o \ - lib/baserel/crt0.o \ - lib/crtbegin.o \ - lib/soft-float/crtbegin.o \ - lib/small-data/crtbegin.o \ - lib/baserel/crtbegin.o \ - lib/crtend.o \ - lib/soft-float/crtend.o \ - lib/small-data/crtend.o \ - lib/baserel/crtend.o \ - lib.threadsafe/crt0.o \ - lib.threadsafe/small-data/crt0.o \ - lib.threadsafe/soft-float/crt0.o \ - lib.threadsafe/baserel/crt0.o \ - lib.threadsafe/crtbegin.o \ - lib.threadsafe/soft-float/crtbegin.o \ - lib.threadsafe/small-data/crtbegin.o \ - lib.threadsafe/baserel/crtbegin.o \ - lib.threadsafe/crtend.o \ - lib.threadsafe/soft-float/crtend.o \ - lib.threadsafe/small-data/crtend.o \ - lib.threadsafe/baserel/crtend.o \ - $(LIBS) +############################################################################## + +# General build rules for all object files and the individual libraries + +define generic_rule + +LIBS += lib/$(1)crt0.o \ + lib/$(1)crtbegin.o \ + lib/$(1)crtend.o \ + lib.threadsafe/$(1)crt0.o \ + lib.threadsafe/$(1)crtbegin.o \ + lib.threadsafe/$(1)crtend.o + +lib/$(1)%.o : AFLAGS += $(2) +lib/$(1)%.o : %.S + @$$(ASSEMBLE) + +lib/$(1)%.o : CFLAGS += $(2) +lib/$(1)%.o : %.c + @$$(COMPILE) + +lib.threadsafe/$(1)%.o : AFLAGS += $(THREADSAFE) $(2) +lib.threadsafe/$(1)%.o : %.S + @$$(ASSEMBLE) + +lib.threadsafe/$(1)%.o : CFLAGS += $(THREADSAFE) $(2) +lib.threadsafe/$(1)%.o : %.c + @$$(COMPILE) + +endef + +$(eval $(call generic_rule,,$(LARGEDATA))) +$(eval $(call generic_rule,small-data/,$(SMALLDATA))) +$(eval $(call generic_rule,soft-float/,$(SOFTFLOAT))) +$(eval $(call generic_rule,baserel/,$(BASEREL))) + +############################################################################## + +all-targets: $(LIBS) ############################################################################## @@ -158,66 +171,6 @@ cvs-tag: ############################################################################## -# General build rules for all object files and the individual libraries - -lib/%.o : AFLAGS += $(LARGEDATA) -lib/%.o : %.S - @$(ASSEMBLE) - -lib/%.o : %.c - @$(COMPILE) - -lib/small-data/%.o : AFLAGS += $(SMALLDATA) -lib/small-data/%.o : %.S - @$(ASSEMBLE) - -lib/small-data/%.o : %.c - @$(COMPILE) - -lib/soft-float/%.o : AFLAGS += $(SOFTFLOAT) -lib/soft-float/%.o : %.S - @$(ASSEMBLE) - -lib/soft-float/%.o : %.c - @$(COMPILE) - -lib/baserel/%.o : AFLAGS += $(BASEREL) -lib/baserel/%.o : %.S - @$(ASSEMBLE) - -lib/baserel/%.o : %.c - @$(COMPILE) - -lib.threadsafe/%.o : AFLAGS += $(LARGEDATA) $(THREADSAFE) -lib.threadsafe/%.o : %.S - @$(ASSEMBLE) - -lib.threadsafe/%.o : %.c - @$(COMPILE) - -lib.threadsafe/small-data/%.o : AFLAGS += $(SMALLDATA) $(THREADSAFE) -lib.threadsafe/small-data/%.o : %.S - @$(ASSEMBLE) - -lib.threadsafe/small-data/%.o : %.c - @$(COMPILE) - -lib.threadsafe/soft-float/%.o : AFLAGS += $(SOFTFLOAT) $(THREADSAFE) -lib.threadsafe/soft-float/%.o : %.S - @$(ASSEMBLE) - -lib.threadsafe/soft-float/%.o : %.c - @$(COMPILE) - -lib.threadsafe/baserel/%.o : AFLAGS += $(BASEREL) $(THREADSAFE) -lib.threadsafe/baserel/%.o : %.S - @$(ASSEMBLE) - -lib.threadsafe/baserel/%.o : %.c - @$(COMPILE) - -############################################################################## - define COMPILE -$(MAKEDIR) $(@D) echo "Compiling $< [$(@D)]" diff --git a/library/libamiga.gmk b/library/libamiga.gmk index f1bbbe3..35c3d04 100644 --- a/library/libamiga.gmk +++ b/library/libamiga.gmk @@ -7,90 +7,38 @@ ############################################################################## -LIBS += \ - lib/libamiga.a \ - lib/soft-float/libamiga.a \ - lib/small-data/libamiga.a \ - lib/baserel/libamiga.a \ - lib.threadsafe/libamiga.a \ - lib.threadsafe/soft-float/libamiga.a \ - lib.threadsafe/small-data/libamiga.a \ - lib.threadsafe/baserel/libamiga.a - -############################################################################## - include libamiga.obj.gmk AMIGA_LIB = $(sort $(AMIGA_LIB_COMMON) $(AMIGA_LIB_OS4)) ############################################################################## +define libamiga_rule + +LIBS += lib/$(1).a lib.threadsafe/$(1).a + # Dependencies to rebuild if the library version changes +obj/$(1)/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h +obj.threadsafe/$(1)/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h -obj/libamiga/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h -obj/soft-float/libamiga/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h -obj/small-data/libamiga/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h -obj/baserel/libamiga/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h -obj.threadsafe/libamiga/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h -obj.threadsafe/soft-float/libamiga/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h -obj.threadsafe/small-data/libamiga/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h -obj.threadsafe/baserel/libamiga/amiga.lib_rev.o : amiga.lib_rev.c amiga.lib_rev.h +obj/$(1)/%.o : CFLAGS += $(2) +obj/$(1)/%.o : %.c + @$$(COMPILE) + +obj.threadsafe/$(1)/%.o : CFLAGS += $(THREADSAFE) $(2) +obj.threadsafe/$(1)/%.o : %.c + @$$(COMPILE) + +lib/$(1).a : $$(addprefix obj/$(1)/,$$(AMIGA_LIB)) + @$$(MAKELIB) + +lib.threadsafe/$(1).a : $$(addprefix obj.threadsafe/$(1)/,$$(AMIGA_LIB)) + @$$(MAKELIB) + +endef ############################################################################## -obj/libamiga/%.o : CFLAGS += $(LARGEDATA) -obj/libamiga/%.o : %.c - @$(COMPILE) - -obj/soft-float/libamiga/%.o : CFLAGS += $(SOFTFLOAT) -obj/soft-float/libamiga/%.o : %.c - @$(COMPILE) - -obj/small-data/libamiga/%.o : CFLAGS += $(SMALLDATA) -obj/small-data/libamiga/%.o : %.c - @$(COMPILE) - -obj/baserel/libamiga/%.o : CFLAGS += $(BASEREL) -obj/baserel/libamiga/%.o : %.c - @$(COMPILE) - -obj.threadsafe/libamiga/%.o : CFLAGS += $(THREADSAFE) $(LARGEDATA) -obj.threadsafe/libamiga/%.o : %.c - @$(COMPILE) - -obj.threadsafe/soft-float/libamiga/%.o : CFLAGS += $(THREADSAFE) $(SOFTFLOAT) -obj.threadsafe/soft-float/libamiga/%.o : %.c - @$(COMPILE) - -obj.threadsafe/small-data/libamiga/%.o : CFLAGS += $(THREADSAFE) $(SMALLDATA) -obj.threadsafe/small-data/libamiga/%.o : %.c - @$(COMPILE) - -obj.threadsafe/baserel/libamiga/%.o : CFLAGS += $(THREADSAFE) $(BASEREL) -obj.threadsafe/baserel/libamiga/%.o : %.c - @$(COMPILE) - -############################################################################## - -lib/libamiga.a : $(addprefix obj/libamiga/,$(AMIGA_LIB)) - @$(MAKELIB) - -lib/soft-float/libamiga.a : $(addprefix obj/soft-float/libamiga/,$(AMIGA_LIB)) - @$(MAKELIB) - -lib/small-data/libamiga.a : $(addprefix obj/small-data/libamiga/,$(AMIGA_LIB)) - @$(MAKELIB) - -lib/baserel/libamiga.a : $(addprefix obj/baserel/libamiga/,$(AMIGA_LIB)) - @$(MAKELIB) - -lib.threadsafe/libamiga.a : $(addprefix obj.threadsafe/libamiga/,$(AMIGA_LIB)) - @$(MAKELIB) - -lib.threadsafe/soft-float/libamiga.a : $(addprefix obj.threadsafe/soft-float/libamiga/,$(AMIGA_LIB)) - @$(MAKELIB) - -lib.threadsafe/small-data/libamiga.a : $(addprefix obj.threadsafe/small-data/libamiga/,$(AMIGA_LIB)) - @$(MAKELIB) - -lib.threadsafe/baserel/libamiga.a : $(addprefix obj.threadsafe/baserel/libamiga/,$(AMIGA_LIB)) - @$(MAKELIB) +$(eval $(call libamiga_rule,libamiga,$(LARGEDATA))) +$(eval $(call libamiga_rule,soft-float/libamiga,$(SOFTFLOAT))) +$(eval $(call libamiga_rule,small-data/libamiga,$(SMALLDATA))) +$(eval $(call libamiga_rule,baserel/libamiga,$(BASEREL))) diff --git a/library/libc.gmk b/library/libc.gmk index d936234..7774a65 100644 --- a/library/libc.gmk +++ b/library/libc.gmk @@ -7,90 +7,38 @@ ############################################################################## -LIBS += \ - lib/libc.a \ - lib/soft-float/libc.a \ - lib/small-data/libc.a \ - lib/baserel/libc.a \ - lib.threadsafe/libc.a \ - lib.threadsafe/soft-float/libc.a \ - lib.threadsafe/small-data/libc.a \ - lib.threadsafe/baserel/libc.a - -############################################################################## - include libc.obj.gmk C_LIB := $(sort $(C_LIB_COMMON) $(C_LIB_OS4)) ############################################################################## +define libc_rule + +LIBS += lib/$(1).a lib.threadsafe/$(1).a + # Dependencies to rebuild if the library version changes +obj/$(1)/c.lib_rev.o : c.lib_rev.c c.lib_rev.h +obj.threadsafe/$(1)/c.lib_rev.o : c.lib_rev.c c.lib_rev.h -obj/libc/c.lib_rev.o : c.lib_rev.c c.lib_rev.h -obj/soft-float/libc/c.lib_rev.o : c.lib_rev.c c.lib_rev.h -obj/small-data/libc/c.lib_rev.o : c.lib_rev.c c.lib_rev.h -obj/baserel/libc/c.lib_rev.o : c.lib_rev.c c.lib_rev.h -obj.threadsafe/libc/c.lib_rev.o : c.lib_rev.c c.lib_rev.h -obj.threadsafe/soft-float/libc/c.lib_rev.o : c.lib_rev.c c.lib_rev.h -obj.threadsafe/small-data/libc/c.lib_rev.o : c.lib_rev.c c.lib_rev.h -obj.threadsafe/baserel/libc/c.lib_rev.o : c.lib_rev.c c.lib_rev.h +obj/$(1)/%.o : CFLAGS += $(2) +obj/$(1)/%.o : %.c + @$$(COMPILE) + +obj.threadsafe/$(1)/%.o : CFLAGS += $(THREADSAFE) $(2) +obj.threadsafe/$(1)/%.o : %.c + @$$(COMPILE) + +lib/$(1).a : $$(addprefix obj/$(1)/,$$(C_LIB)) + @$$(MAKELIB) + +lib.threadsafe/$(1).a : $$(addprefix obj.threadsafe/$(1)/,$$(C_LIB)) + @$$(MAKELIB) + +endef ############################################################################## -obj/libc/%.o : CFLAGS += $(LARGEDATA) -obj/libc/%.o : %.c - @$(COMPILE) - -obj/soft-float/libc/%.o : CFLAGS += $(SOFTFLOAT) -obj/soft-float/libc/%.o : %.c - @$(COMPILE) - -obj/small-data/libc/%.o : CFLAGS += $(SMALLDATA) -obj/small-data/libc/%.o : %.c - @$(COMPILE) - -obj/baserel/libc/%.o : CFLAGS += $(BASEREL) -obj/baserel/libc/%.o : %.c - @$(COMPILE) - -obj.threadsafe/libc/%.o : CFLAGS += $(THREADSAFE) $(LARGEDATA) -obj.threadsafe/libc/%.o : %.c - @$(COMPILE) - -obj.threadsafe/soft-float/libc/%.o : CFLAGS += $(THREADSAFE) $(SOFTFLOAT) -obj.threadsafe/soft-float/libc/%.o : %.c - @$(COMPILE) - -obj.threadsafe/small-data/libc/%.o : CFLAGS += $(THREADSAFE) $(SMALLDATA) -obj.threadsafe/small-data/libc/%.o : %.c - @$(COMPILE) - -obj.threadsafe/baserel/libc/%.o : CFLAGS += $(THREADSAFE) $(BASEREL) -obj.threadsafe/baserel/libc/%.o : %.c - @$(COMPILE) - -############################################################################## - -lib/libc.a : $(addprefix obj/libc/,$(C_LIB)) - @$(MAKELIB) - -lib/soft-float/libc.a : $(addprefix obj/soft-float/libc/,$(C_LIB)) - @$(MAKELIB) - -lib/small-data/libc.a : $(addprefix obj/small-data/libc/,$(C_LIB)) - @$(MAKELIB) - -lib/baserel/libc.a : $(addprefix obj/baserel/libc/,$(C_LIB)) - @$(MAKELIB) - -lib.threadsafe/libc.a : $(addprefix obj.threadsafe/libc/,$(C_LIB)) - @$(MAKELIB) - -lib.threadsafe/soft-float/libc.a : $(addprefix obj.threadsafe/soft-float/libc/,$(C_LIB)) - @$(MAKELIB) - -lib.threadsafe/small-data/libc.a : $(addprefix obj.threadsafe/small-data/libc/,$(C_LIB)) - @$(MAKELIB) - -lib.threadsafe/baserel/libc.a : $(addprefix obj.threadsafe/baserel/libc/,$(C_LIB)) - @$(MAKELIB) +$(eval $(call libc_rule,libc,$(LARGEDATA))) +$(eval $(call libc_rule,soft-float/libc,$(SOFTFLOAT))) +$(eval $(call libc_rule,small-data/libc,$(SMALLDATA))) +$(eval $(call libc_rule,baserel/libc,$(BASEREL))) diff --git a/library/libdebug.gmk b/library/libdebug.gmk index e780f56..102a844 100644 --- a/library/libdebug.gmk +++ b/library/libdebug.gmk @@ -7,90 +7,37 @@ ############################################################################## -LIBS += \ - lib/libdebug.a \ - lib/soft-float/libdebug.a \ - lib/small-data/libdebug.a \ - lib/baserel/libdebug.a \ - lib.threadsafe/libdebug.a \ - lib.threadsafe/soft-float/libdebug.a \ - lib.threadsafe/small-data/libdebug.a \ - lib.threadsafe/baserel/libdebug.a - -############################################################################## - include libdebug.obj.gmk ############################################################################## +define libdebug_rule + +LIBS += lib/$(1).a lib.threadsafe/$(1).a + # Dependencies to rebuild if the library version changes +obj/$(1)/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h +obj.threadsafe/$(1)/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h -obj/libdebug/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h -obj/soft-float/libdebug/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h -obj/small-data/libdebug/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h -obj/baserel/libdebug/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h -obj.threadsafe/libdebug/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h -obj.threadsafe/soft-float/libdebug/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h -obj.threadsafe/small-data/libdebug/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h -obj.threadsafe/baserel/libdebug/debug.lib_rev.o : debug.lib_rev.c debug.lib_rev.h +obj/$(1)/%.o : CFLAGS += $(2) +obj/$(1)/%.o : %.c + @$$(COMPILE) + +obj.threadsafe/$(1)/%.o : CFLAGS += $(THREADSAFE) $(2) +obj.threadsafe/$(1)/%.o : %.c + @$$(COMPILE) + +lib/$(1).a : $$(addprefix obj/$(1)/,$$(DEBUG_LIB)) + @$$(MAKELIB) + +lib.threadsafe/$(1).a : $$(addprefix obj.threadsafe/$(1)/,$$(DEBUG_LIB)) + @$$(MAKELIB) + +endef ############################################################################## - -obj/libdebug/%.o : CFLAGS += $(LARGEDATA) -obj/libdebug/%.o : %.c - @$(COMPILE) - -obj/soft-float/libdebug/%.o : CFLAGS += $(SOFTFLOAT) -obj/soft-float/libdebug/%.o : %.c - @$(COMPILE) - -obj/small-data/libdebug/%.o : CFLAGS += $(SMALLDATA) -obj/small-data/libdebug/%.o : %.c - @$(COMPILE) - -obj/baserel/libdebug/%.o : CFLAGS += $(BASEREL) -obj/baserel/libdebug/%.o : %.c - @$(COMPILE) - -obj.threadsafe/libdebug/%.o : CFLAGS += $(THREADSAFE) $(LARGEDATA) -obj.threadsafe/libdebug/%.o : %.c - @$(COMPILE) - -obj.threadsafe/soft-float/libdebug/%.o : CFLAGS += $(THREADSAFE) $(SOFTFLOAT) -obj.threadsafe/soft-float/libdebug/%.o : %.c - @$(COMPILE) - -obj.threadsafe/small-data/libdebug/%.o : CFLAGS += $(THREADSAFE) $(SMALLDATA) -obj.threadsafe/small-data/libdebug/%.o : %.c - @$(COMPILE) - -obj.threadsafe/baserel/libdebug/%.o : CFLAGS += $(THREADSAFE) $(BASEREL) -obj.threadsafe/baserel/libdebug/%.o : %.c - @$(COMPILE) - -############################################################################## - -lib/libdebug.a : $(addprefix obj/libdebug/,$(DEBUG_LIB)) - @$(MAKELIB) - -lib/soft-float/libdebug.a : $(addprefix obj/soft-float/libdebug/,$(DEBUG_LIB)) - @$(MAKELIB) - -lib/small-data/libdebug.a : $(addprefix obj/small-data/libdebug/,$(DEBUG_LIB)) - @$(MAKELIB) - -lib/baserel/libdebug.a : $(addprefix obj/baserel/libdebug/,$(DEBUG_LIB)) - @$(MAKELIB) - -lib.threadsafe/libdebug.a : $(addprefix obj.threadsafe/libdebug/,$(DEBUG_LIB)) - @$(MAKELIB) - -lib.threadsafe/soft-float/libdebug.a : $(addprefix obj.threadsafe/soft-float/libdebug/,$(DEBUG_LIB)) - @$(MAKELIB) - -lib.threadsafe/small-data/libdebug.a : $(addprefix obj.threadsafe/small-data/libdebug/,$(DEBUG_LIB)) - @$(MAKELIB) - -lib.threadsafe/baserel/libdebug.a : $(addprefix obj.threadsafe/baserel/libdebug/,$(DEBUG_LIB)) - @$(MAKELIB) +$(eval $(call libdebug_rule,libdebug,$(LARGEDATA))) +$(eval $(call libdebug_rule,soft-float/libdebug,$(SOFTFLOAT))) +$(eval $(call libdebug_rule,small-data/libdebug,$(SMALLDATA))) +$(eval $(call libdebug_rule,baserel/libdebug,$(BASEREL))) diff --git a/library/libm.gmk b/library/libm.gmk index e273bb3..7ac05e1 100644 --- a/library/libm.gmk +++ b/library/libm.gmk @@ -7,90 +7,42 @@ ############################################################################## -LIBS += \ - lib/libm.a \ - lib/soft-float/libm.a \ - lib/small-data/libm.a \ - lib/baserel/libm.a \ - lib.threadsafe/libm.a \ - lib.threadsafe/soft-float/libm.a \ - lib.threadsafe/small-data/libm.a \ - lib.threadsafe/baserel/libm.a - -############################################################################## - include libm.obj.gmk MATH_LIB := $(sort $(MATH_LIB_COMMON) $(MATH_LIB_OS4)) ############################################################################## +define libm_rule + +LIBS += lib/$(1).a lib.threadsafe/$(1).a + # Dependencies to rebuild if the library version changes +obj/$(1)/m.lib_rev.o : m.lib_rev.c m.lib_rev.h +obj.threadsafe/$(1)/m.lib_rev.o : m.lib_rev.c m.lib_rev.h -obj/libm/m.lib_rev.o : m.lib_rev.c m.lib_rev.h -obj/soft-float/libm/m.lib_rev.o : m.lib_rev.c m.lib_rev.h -obj/small-data/libm/m.lib_rev.o : m.lib_rev.c m.lib_rev.h -obj/baserel/libm/m.lib_rev.o : m.lib_rev.c m.lib_rev.h -obj.threadsafe/libm/m.lib_rev.o : m.lib_rev.c m.lib_rev.h -obj.threadsafe/soft-float/libm/m.lib_rev.o : m.lib_rev.c m.lib_rev.h -obj.threadsafe/small-data/libm/m.lib_rev.o : m.lib_rev.c m.lib_rev.h -obj.threadsafe/baserel/libm/m.lib_rev.o : m.lib_rev.c m.lib_rev.h +obj/$(1)/%.o : CFLAGS += $(2) +obj/$(1)/%.o : %.c + @$$(COMPILE) + +obj.threadsafe/$(1)/%.o : CFLAGS += $(THREADSAFE) $(2) +obj.threadsafe/$(1)/%.o : %.c + @$$(COMPILE) + +lib/$(1).a : $$(addprefix obj/$(1)/,$$(MATH_LIB)) + @$$(MAKELIB) + +lib.threadsafe/$(1).a : $$(addprefix obj.threadsafe/$(1)/,$$(MATH_LIB)) + @$$(MAKELIB) + +endef ############################################################################## -obj/libm/%.o : CFLAGS += $(LARGEDATA) -DPPC_FLOATING_POINT_SUPPORT -obj/libm/%.o : %.c - @$(COMPILE) - -obj/soft-float/libm/%.o : CFLAGS += $(SOFTFLOAT) -obj/soft-float/libm/%.o : %.c - @$(COMPILE) - -obj/small-data/libm/%.o : CFLAGS += $(SMALLDATA) -DPPC_FLOATING_POINT_SUPPORT -obj/small-data/libm/%.o : %.c - @$(COMPILE) - -obj/baserel/libm/%.o : CFLAGS += $(BASEREL) -DPPC_FLOATING_POINT_SUPPORT -obj/baserel/libm/%.o : %.c - @$(COMPILE) - -obj.threadsafe/libm/%.o : CFLAGS += $(THREADSAFE) $(LARGEDATA) -DPPC_FLOATING_POINT_SUPPORT -obj.threadsafe/libm/%.o : %.c - @$(COMPILE) - -obj.threadsafe/soft-float/libm/%.o : CFLAGS += $(THREADSAFE) $(SOFTFLOAT) -obj.threadsafe/soft-float/libm/%.o : %.c - @$(COMPILE) - -obj.threadsafe/small-data/libm/%.o : CFLAGS += $(THREADSAFE) $(SMALLDATA) -DPPC_FLOATING_POINT_SUPPORT -obj.threadsafe/small-data/libm/%.o : %.c - @$(COMPILE) - -obj.threadsafe/baserel/libm/%.o : CFLAGS += $(THREADSAFE) $(BASEREL) -DPPC_FLOATING_POINT_SUPPORT -obj.threadsafe/baserel/libm/%.o : %.c - @$(COMPILE) - -############################################################################## - -lib/libm.a : $(addprefix obj/libm/,$(MATH_LIB)) - @$(MAKELIB) - -lib/soft-float/libm.a : $(addprefix obj/soft-float/libm/,$(MATH_LIB)) - @$(MAKELIB) - -lib/small-data/libm.a : $(addprefix obj/small-data/libm/,$(MATH_LIB)) - @$(MAKELIB) - -lib/baserel/libm.a : $(addprefix obj/baserel/libm/,$(MATH_LIB)) - @$(MAKELIB) - -lib.threadsafe/libm.a : $(addprefix obj.threadsafe/libm/,$(MATH_LIB)) - @$(MAKELIB) - -lib.threadsafe/soft-float/libm.a : $(addprefix obj.threadsafe/soft-float/libm/,$(MATH_LIB)) - @$(MAKELIB) - -lib.threadsafe/small-data/libm.a : $(addprefix obj.threadsafe/small-data/libm/,$(MATH_LIB)) - @$(MAKELIB) - -lib.threadsafe/baserel/libm.a : $(addprefix obj.threadsafe/baserel/libm/,$(MATH_LIB)) - @$(MAKELIB) +$(eval $(call libm_rule,libm, \ + $(LARGEDATA) -DPPC_FLOATING_POINT_SUPPORT)) +$(eval $(call libm_rule,soft-float/libm, \ + $(SOFTFLOAT))) +$(eval $(call libm_rule,small-data/libm, \ + $(SMALLDATA) -DPPC_FLOATING_POINT_SUPPORT)) +$(eval $(call libm_rule,baserel/libm, \ + $(BASEREL) -DPPC_FLOATING_POINT_SUPPORT)) diff --git a/library/libnet.gmk b/library/libnet.gmk index a3b748c..ad1128c 100644 --- a/library/libnet.gmk +++ b/library/libnet.gmk @@ -7,89 +7,41 @@ ############################################################################## -LIBS += \ - lib/libnet.a \ - lib/soft-float/libnet.a \ - lib/small-data/libnet.a \ - lib/baserel/libnet.a \ - lib.threadsafe/libnet.a \ - lib.threadsafe/soft-float/libnet.a \ - lib.threadsafe/small-data/libnet.a \ - lib.threadsafe/baserel/libnet.a - -############################################################################## - include libnet.obj.gmk ############################################################################## +define libnet_rule + +LIBS += lib/$(1).a lib.threadsafe/$(1).a + # Dependencies to rebuild if the library version changes +obj/$(1)/net.lib_rev.o : net.lib_rev.c net.lib_rev.h +obj.threadsafe/$(1)/net.lib_rev.o : net.lib_rev.c net.lib_rev.h -obj/libnet/net.lib_rev.o : net.lib_rev.c net.lib_rev.h -obj/soft-float/libnet/net.lib_rev.o : net.lib_rev.c net.lib_rev.h -obj/small-data/libnet/net.lib_rev.o : net.lib_rev.c net.lib_rev.h -obj/baserel/libnet/net.lib_rev.o : net.lib_rev.c net.lib_rev.h -obj.threadsafe/libnet/net.lib_rev.o : net.lib_rev.c net.lib_rev.h -obj.threadsafe/soft-float/libnet/net.lib_rev.o : net.lib_rev.c net.lib_rev.h -obj.threadsafe/small-data/libnet/net.lib_rev.o : net.lib_rev.c net.lib_rev.h -obj.threadsafe/baserel/libnet/net.lib_rev.o : net.lib_rev.c net.lib_rev.h +obj/$(1)/%.o : CFLAGS += $(2) +obj/$(1)/%.o : %.c + @$$(COMPILE) + +obj.threadsafe/$(1)/%.o : CFLAGS += $(THREADSAFE) $(2) +obj.threadsafe/$(1)/%.o : %.c + @$$(COMPILE) + +lib/$(1).a : $$(addprefix obj/$(1)/,$$(NET_LIB)) + @$$(MAKELIB) + +lib.threadsafe/$(1).a : $$(addprefix obj.threadsafe/$(1)/,$$(NET_LIB)) + @$$(MAKELIB) + +endef ############################################################################## -obj/libnet/%.o : CFLAGS += $(LARGEDATA) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT -obj/libnet/%.o : %.c - @$(COMPILE) - -obj/soft-float/libnet/%.o : CFLAGS += $(SOFTFLOAT) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT -obj/soft-float/libnet/%.o : %.c - @$(COMPILE) - -obj/small-data/libnet/%.o : CFLAGS += $(SMALLDATA) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT -obj/small-data/libnet/%.o : %.c - @$(COMPILE) - -obj/baserel/libnet/%.o : CFLAGS += $(BASEREL) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT -obj/baserel/libnet/%.o : %.c - @$(COMPILE) - -obj.threadsafe/libnet/%.o : CFLAGS += $(THREADSAFE) $(LARGEDATA) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT -obj.threadsafe/libnet/%.o : %.c - @$(COMPILE) - -obj.threadsafe/soft-float/libnet/%.o : CFLAGS += $(THREADSAFE) $(SOFTFLOAT) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT -obj.threadsafe/soft-float/libnet/%.o : %.c - @$(COMPILE) - -obj.threadsafe/small-data/libnet/%.o : CFLAGS += $(THREADSAFE) $(SMALLDATA) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT -obj.threadsafe/small-data/libnet/%.o : %.c - @$(COMPILE) - -obj.threadsafe/baserel/libnet/%.o : CFLAGS += $(THREADSAFE) $(BASEREL) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT -obj.threadsafe/baserel/libnet/%.o : %.c - @$(COMPILE) - -############################################################################## - -lib/libnet.a : $(addprefix obj/libnet/,$(NET_LIB)) - @$(MAKELIB) - -lib/soft-float/libnet.a : $(addprefix obj/soft-float/libnet/,$(NET_LIB)) - @$(MAKELIB) - -lib/small-data/libnet.a : $(addprefix obj/small-data/libnet/,$(NET_LIB)) - @$(MAKELIB) - -lib/baserel/libnet.a : $(addprefix obj/baserel/libnet/,$(NET_LIB)) - @$(MAKELIB) - -lib.threadsafe/libnet.a : $(addprefix obj.threadsafe/libnet/,$(NET_LIB)) - @$(MAKELIB) - -lib.threadsafe/soft-float/libnet.a : $(addprefix obj.threadsafe/soft-float/libnet/,$(NET_LIB)) - @$(MAKELIB) - -lib.threadsafe/small-data/libnet.a : $(addprefix obj.threadsafe/small-data/libnet/,$(NET_LIB)) - @$(MAKELIB) - -lib.threadsafe/baserel/libnet.a : $(addprefix obj.threadsafe/baserel/libnet/,$(NET_LIB)) - @$(MAKELIB) +$(eval $(call libnet_rule,libnet, \ + $(LARGEDATA) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT)) +$(eval $(call libnet_rule,soft-float/libnet, \ + $(SOFTFLOAT) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT)) +$(eval $(call libnet_rule,small-data/libnet, \ + $(SMALLDATA) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT)) +$(eval $(call libnet_rule,baserel/libnet, \ + $(BASEREL) -I$(NET_INCLUDE) -DSOCKET_SUPPORT -DUSERGROUP_SUPPORT)) diff --git a/library/libprofile.gmk b/library/libprofile.gmk index 27869f8..4c97a5a 100644 --- a/library/libprofile.gmk +++ b/library/libprofile.gmk @@ -7,123 +7,45 @@ ############################################################################## -LIBS += \ - lib/libprofile.a \ - lib/soft-float/libprofile.a \ - lib/small-data/libprofile.a \ - lib/baserel/libprofile.a \ - lib.threadsafe/libprofile.a \ - lib.threadsafe/soft-float/libprofile.a \ - lib.threadsafe/small-data/libprofile.a \ - lib.threadsafe/baserel/libprofile.a - -############################################################################## - include libprofile.obj.gmk ############################################################################## +define libprofile_rule + +LIBS += lib/$(1).a lib.threadsafe/$(1).a + # Dependencies to rebuild if the library version changes +obj/$(1)/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h +obj.threadsafe/$(1)/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h -obj/libprofile/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h -obj/soft-float/libprofile/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h -obj/small-data/libprofile/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h -obj/baserel/libprofile/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h -obj.threadsafe/libprofile/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h -obj.threadsafe/soft-float/libprofile/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h -obj.threadsafe/small-data/libprofile/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h -obj.threadsafe/baserel/libprofile/profile.lib_rev.o : profile.lib_rev.c profile.lib_rev.h +obj/$(1)/%.o : CFLAGS += $(2) +obj/$(1)/%.o : %.c + @$$(COMPILE) + +obj/$(1)/%.o : AFLAGS += $(2) +obj/$(1)/%.o : %.S + @$$(ASSEMBLE) + +obj.threadsafe/$(1)/%.o : CFLAGS += $(THREADSAFE) $(2) +obj.threadsafe/$(1)/%.o : %.c + @$$(COMPILE) + +obj.threadsafe/$(1)/%.o : AFLAGS += $(2) +obj.threadsafe/$(1)/%.o : %.S + @$$(ASSEMBLE) + +lib/$(1).a : $$(addprefix obj/$(1)/,$$(PROFILE_LIB)) + @$$(MAKELIB) + +lib.threadsafe/$(1).a : $$(addprefix obj.threadsafe/$(1)/,$$(PROFILE_LIB)) + @$$(MAKELIB) + +endef ############################################################################## -obj/libprofile/%.o : AFLAGS += $(LARGEDATA) -obj/libprofile/%.o : %.S - @$(ASSEMBLE) - -obj/soft-float/libprofile/%.o : AFLAGS += $(SOFTFLOAT) -obj/soft-float/libprofile/%.o : %.S - @$(ASSEMBLE) - -obj/small-data/libprofile/%.o : AFLAGS += $(SMALLDATA) -obj/small-data/libprofile/%.o : %.S - @$(ASSEMBLE) - -obj/baserel/libprofile/%.o : AFLAGS += $(BASEREL) -obj/baserel/libprofile/%.o : %.S - @$(ASSEMBLE) - -obj.threadsafe/libprofile/%.o : AFLAGS += $(LARGEDATA) -obj.threadsafe/libprofile/%.o : %.S - @$(ASSEMBLE) - -obj.threadsafe/soft-float/libprofile/%.o : AFLAGS += $(SOFTFLOAT) -obj.threadsafe/soft-float/libprofile/%.o : %.S - @$(ASSEMBLE) - -obj.threadsafe/small-data/libprofile/%.o : AFLAGS += $(SMALLDATA) -obj.threadsafe/small-data/libprofile/%.o : %.S - @$(ASSEMBLE) - -obj.threadsafe/baserel/libprofile/%.o : AFLAGS += $(BASEREL) -obj.threadsafe/baserel/libprofile/%.o : %.S - @$(ASSEMBLE) - -############################################################################## - -obj/libprofile/%.o : CFLAGS += $(LARGEDATA) -obj/libprofile/%.o : %.c - @$(COMPILE) - -obj/soft-float/libprofile/%.o : CFLAGS += $(SOFTFLOAT) -obj/soft-float/libprofile/%.o : %.c - @$(COMPILE) - -obj/small-data/libprofile/%.o : CFLAGS += $(SMALLDATA) -obj/small-data/libprofile/%.o : %.c - @$(COMPILE) - -obj/baserel/libprofile/%.o : CFLAGS += $(BASEREL) -obj/baserel/libprofile/%.o : %.c - @$(COMPILE) - -obj.threadsafe/libprofile/%.o : CFLAGS += $(THREADSAFE) $(LARGEDATA) -obj.threadsafe/libprofile/%.o : %.c - @$(COMPILE) - -obj.threadsafe/soft-float/libprofile/%.o : CFLAGS += $(THREADSAFE) $(SOFTFLOAT) -obj.threadsafe/soft-float/libprofile/%.o : %.c - @$(COMPILE) - -obj.threadsafe/small-data/libprofile/%.o : CFLAGS += $(THREADSAFE) $(SMALLDATA) -obj.threadsafe/small-data/libprofile/%.o : %.c - @$(COMPILE) - -obj.threadsafe/baserel/libprofile/%.o : CFLAGS += $(THREADSAFE) $(BASEREL) -obj.threadsafe/baserel/libprofile/%.o : %.c - @$(COMPILE) - -############################################################################## - -lib/libprofile.a : $(addprefix obj/libprofile/,$(PROFILE_LIB)) - @$(MAKELIB) - -lib/soft-float/libprofile.a : $(addprefix obj/soft-float/libprofile/,$(PROFILE_LIB)) - @$(MAKELIB) - -lib/small-data/libprofile.a : $(addprefix obj/small-data/libprofile/,$(PROFILE_LIB)) - @$(MAKELIB) - -lib/baserel/libprofile.a : $(addprefix obj/baserel/libprofile/,$(PROFILE_LIB)) - @$(MAKELIB) - -lib.threadsafe/libprofile.a : $(addprefix obj.threadsafe/libprofile/,$(PROFILE_LIB)) - @$(MAKELIB) - -lib.threadsafe/soft-float/libprofile.a : $(addprefix obj.threadsafe/soft-float/libprofile/,$(PROFILE_LIB)) - @$(MAKELIB) - -lib.threadsafe/small-data/libprofile.a : $(addprefix obj.threadsafe/small-data/libprofile/,$(PROFILE_LIB)) - @$(MAKELIB) - -lib.threadsafe/baserel/libprofile.a : $(addprefix obj.threadsafe/baserel/libprofile/,$(PROFILE_LIB)) - @$(MAKELIB) +$(eval $(call libprofile_rule,libprofile,$(LARGEDATA))) +$(eval $(call libprofile_rule,soft-float/libprofile,$(SOFTFLOAT))) +$(eval $(call libprofile_rule,small-data/libprofile,$(SMALLDATA))) +$(eval $(call libprofile_rule,baserel/libprofile,$(BASEREL))) diff --git a/library/libunix.gmk b/library/libunix.gmk index e93c367..71d6600 100644 --- a/library/libunix.gmk +++ b/library/libunix.gmk @@ -7,91 +7,42 @@ ############################################################################## -LIBS += \ - lib/libunix.a \ - lib/soft-float/libunix.a \ - lib/small-data/libunix.a \ - lib/baserel/libunix.a \ - lib.threadsafe/libunix.a \ - lib.threadsafe/soft-float/libunix.a \ - lib.threadsafe/small-data/libunix.a \ - lib.threadsafe/baserel/libunix.a - -############################################################################## - include libunix.obj.gmk UNIX_LIB := $(sort $(UNIX_LIB_COMMON) $(UNIX_LIB_OS4)) ############################################################################## +define libunix_rule + +LIBS += lib/$(1).a lib.threadsafe/$(1).a + # Dependencies to rebuild if the library version changes +obj/$(1)/unix.lib_rev.o : unix.lib_rev.c unix.lib_rev.h +obj.threadsafe/$(1)/unix.lib_rev.o : unix.lib_rev.c unix.lib_rev.h -obj/libunix/unit.lib_rev.o : unit.lib_rev.c unit.lib_rev.h -obj/soft-float/libunix/unit.lib_rev.o : unit.lib_rev.c unit.lib_rev.h -obj/small-data/libunix/unit.lib_rev.o : unit.lib_rev.c unit.lib_rev.h -obj/baserel/libunix/unit.lib_rev.o : unit.lib_rev.c unit.lib_rev.h -obj.threadsafe/libunix/unit.lib_rev.o : unit.lib_rev.c unit.lib_rev.h -obj.threadsafe/soft-float/libunix/unit.lib_rev.o : unit.lib_rev.c unit.lib_rev.h -obj.threadsafe/small-data/libunix/unit.lib_rev.o : unit.lib_rev.c unit.lib_rev.h -obj.threadsafe/baserel/libunix/unit.lib_rev.o : unit.lib_rev.c unit.lib_rev.h +obj/$(1)/%.o : CFLAGS += $(2) +obj/$(1)/%.o : %.c + @$$(COMPILE) + +obj.threadsafe/$(1)/%.o : CFLAGS += $(THREADSAFE) $(2) +obj.threadsafe/$(1)/%.o : %.c + @$$(COMPILE) + +lib/$(1).a : $$(addprefix obj/$(1)/,$$(UNIX_LIB)) + @$$(MAKELIB) + +lib.threadsafe/$(1).a : $$(addprefix obj.threadsafe/$(1)/,$$(UNIX_LIB)) + @$$(MAKELIB) + +endef ############################################################################## - -obj/libunix/%.o : CFLAGS += $(LARGEDATA) -DUNIX_PATH_SEMANTICS -obj/libunix/%.o : %.c - @$(COMPILE) - -obj/soft-float/libunix/%.o : CFLAGS += $(SOFTFLOAT) -DUNIX_PATH_SEMANTICS -obj/soft-float/libunix/%.o : %.c - @$(COMPILE) - -obj/small-data/libunix/%.o : CFLAGS += $(SMALLDATA) -DUNIX_PATH_SEMANTICS -obj/small-data/libunix/%.o : %.c - @$(COMPILE) - -obj/baserel/libunix/%.o : CFLAGS += $(BASEREL) -DUNIX_PATH_SEMANTICS -obj/baserel/libunix/%.o : %.c - @$(COMPILE) - -obj.threadsafe/libunix/%.o : CFLAGS += $(THREADSAFE) $(LARGEDATA) -DUNIX_PATH_SEMANTICS -obj.threadsafe/libunix/%.o : %.c - @$(COMPILE) - -obj.threadsafe/soft-float/libunix/%.o : CFLAGS += $(THREADSAFE) $(SOFTFLOAT) -DUNIX_PATH_SEMANTICS -obj.threadsafe/soft-float/libunix/%.o : %.c - @$(COMPILE) - -obj.threadsafe/small-data/libunix/%.o : CFLAGS += $(THREADSAFE) $(SMALLDATA) -DUNIX_PATH_SEMANTICS -obj.threadsafe/small-data/libunix/%.o : %.c - @$(COMPILE) - -obj.threadsafe/baserel/libunix/%.o : CFLAGS += $(THREADSAFE) $(BASEREL) -DUNIX_PATH_SEMANTICS -obj.threadsafe/baserel/libunix/%.o : %.c - @$(COMPILE) - -############################################################################## - -lib/libunix.a : $(addprefix obj/libunix/,$(UNIX_LIB)) - @$(MAKELIB) - -lib/soft-float/libunix.a : $(addprefix obj/soft-float/libunix/,$(UNIX_LIB)) - @$(MAKELIB) - -lib/small-data/libunix.a : $(addprefix obj/small-data/libunix/,$(UNIX_LIB)) - @$(MAKELIB) - -lib/baserel/libunix.a : $(addprefix obj/baserel/libunix/,$(UNIX_LIB)) - @$(MAKELIB) - -lib.threadsafe/libunix.a : $(addprefix obj.threadsafe/libunix/,$(UNIX_LIB)) - @$(MAKELIB) - -lib.threadsafe/soft-float/libunix.a : $(addprefix obj.threadsafe/soft-float/libunix/,$(UNIX_LIB)) - @$(MAKELIB) - -lib.threadsafe/small-data/libunix.a : $(addprefix obj.threadsafe/small-data/libunix/,$(UNIX_LIB)) - @$(MAKELIB) - -lib.threadsafe/baserel/libunix.a : $(addprefix obj.threadsafe/baserel/libunix/,$(UNIX_LIB)) - @$(MAKELIB) +$(eval $(call libunix_rule,libunix, \ + $(LARGEDATA) -DUNIX_PATH_SEMANTICS)) +$(eval $(call libunix_rule,soft-float/libunix, \ + $(SOFTFLOAT) -DUNIX_PATH_SEMANTICS)) +$(eval $(call libunix_rule,small-data/libunix, \ + $(SMALLDATA) -DUNIX_PATH_SEMANTICS)) +$(eval $(call libunix_rule,baserel/libunix, \ + $(BASEREL) -DUNIX_PATH_SEMANTICS))