From 6c562f8f0649f879705c09cdcaf579e0bf893d93 Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Sun, 19 Oct 2008 11:17:53 +0100 Subject: [PATCH] Only include core functions in libgphobo2.so. Only etc, gcc, internal are now included in the build, not std. This is because the .so file is needed at runtime, so you need to be able to get it without downloading the whole compiler. Therefore, it should come with the (much smaller) Delight standard library. So the plan is: - libgphobo2.so contains only things that must be built with the compiler. - libdlt contains the rest. - libdlt is bundled with a copy of libgphobo2.so. There are therefore two copies of libgphobo2.so, which is why it needs to be as small as possible. --- phobos2/Makefile.am | 26 ++++++++++++++++---------- phobos2/Makefile.in | 26 ++++++++++++++++---------- 2 files changed, 32 insertions(+), 20 deletions(-) diff --git a/phobos2/Makefile.am b/phobos2/Makefile.am index 772b126..bb56510 100644 --- a/phobos2/Makefile.am +++ b/phobos2/Makefile.am @@ -88,21 +88,27 @@ TI=ti_AC.o ti_Ag.o ti_Aint.o ti_Along.o ti_Ashort.o \ ti_Acfloat.o ti_Acdouble.o ti_Acreal.o \ ti_void.o -MAIN_OBJS=std/asserterror.o std/hiddenfunc.o internal/switch.o gcstats.o \ - internal/critical.o internal/object.o internal/monitor.o internal/arraycat.o internal/invariant.o \ - internal/arrayassign.o internal/aaA.o internal/adi.o internal/aApply.o internal/aApplyR.o \ +INTERNAL_OBJS= internal/critical.o internal/object.o internal/monitor.o \ + internal/arraycat.o internal/invariant.o \ + internal/switch.o internal/arrayassign.o \ + internal/aaA.o internal/adi.o internal/aApply.o internal/aApplyR.o \ + internal/cast.o internal/memset.o internal/qsortg.o internal/obj.o \ + internal/arraycast.o internal/dgccmain2.o internal/rundmain.o \ + errno.o + +MAIN_OBJS=std/asserterror.o std/hiddenfunc.o gcstats.o \ std/outofmemory.o std/compiler.o std/system.o std/moduleinit.o std/md5.o std/base64.o \ - internal/cast.o std/string.o internal/memset.o std/math.o \ + std/string.o std/math.o \ std/outbuffer.o std/ctype.o std/regexp.o std/random.o \ std/stream.o std/cstream.o std/switcherr.o std/array.o std/gc.o \ - internal/qsortg.o std/thread.o internal/obj.o std/utf.o std/uri.o \ - crc32.o std/conv.o internal/arraycast.o errno.o \ + std/thread.o std/utf.o std/uri.o \ + crc32.o std/conv.o \ std/syserror.o std/metastrings.o \ std/c/stdarg.o std/c/stdio.o std/stdio.o std/format.o \ std/openrj.o std/uni.o std/demangle.o std/bitarray.o \ $(subst ti_,std/typeinfo/ti_,$(TI)) \ std/date.o std/dateparse.o etc/c/zlib.o std/zlib.o std/zip.o \ - internal/dgccmain2.o internal/rundmain.o std/stdarg.o \ + std/stdarg.o \ std/signals.o std/cpuid.o std/traits.o std/typetuple.o std/bind.o \ gcc/config/mathfuncs.o \ std/algorithm.o std/bitmanip.o std/contracts.o std/functional.o \ @@ -184,7 +190,7 @@ std/stream.o: std/stream.d $(D_PREREQ_SRCS) std/stream.t.o: std/stream.d $(D_PREREQ_SRCS) $(GDC) -o $@ $(ALL_DFLAGS) -fdeprecated -I $(srcdir) -I $(srcdir)/internal/gc -I ./$(host) -c $< -ALL_PHOBOS_OBJS = $(D_EXTRA_OBJS) $(GCC_OBJS) $(MAIN_OBJS) $(ZLIB_OBJS) $(GC_OBJS) $(WEAK_OBJS) +ALL_PHOBOS_OBJS = $(D_EXTRA_OBJS) $(GCC_OBJS) $(MAIN_OBJS) $(ZLIB_OBJS) $(GC_OBJS) $(WEAK_OBJS) $(INTERNAL_OBJS) libgphobos2.a : $(ALL_PHOBOS_OBJS) $(CMAIN_OBJS) $(AR) -r $@ $(ALL_PHOBOS_OBJS) $(CMAIN_OBJS) @@ -194,8 +200,8 @@ libgphobos2_t.a : $(ALL_PHOBOS_OBJS:.o=.t.o) $(CMAIN_OBJS) $(AR) -r $@ $(ALL_PHOBOS_OBJS:.o=.t.o) $(CMAIN_OBJS) $(RANLIB) $@ -libgphobos2.so: $(ALL_PHOBOS_OBJS) $(CMAIN_OBJS) - $(CC) -shared -Wl,-soname=libgphobos2.so -o $@ $(ALL_PHOBOS_OBJS) $(CMAIN_OBJS) +libgphobos2.so: $(D_EXTRA_OBJS) $(GCC_OBJS) $(INTERNAL_OBJS) $(GC_OBJS) $(WEAK_OBJS) $(CMAIN_OBJS) $(ZLIB_OBJS) + $(CC) -shared -Wl,-soname=libgphobos2.so -o $@ $^ # This has to be an empty file because it is included in the prerequisites of rules # that use "cat $^" to generate their targets. diff --git a/phobos2/Makefile.in b/phobos2/Makefile.in index 6137065..8745a2b 100644 --- a/phobos2/Makefile.in +++ b/phobos2/Makefile.in @@ -250,21 +250,27 @@ TI = ti_AC.o ti_Ag.o ti_Aint.o ti_Along.o ti_Ashort.o \ ti_Acfloat.o ti_Acdouble.o ti_Acreal.o \ ti_void.o -MAIN_OBJS = std/asserterror.o std/hiddenfunc.o internal/switch.o gcstats.o \ - internal/critical.o internal/object.o internal/monitor.o internal/arraycat.o internal/invariant.o \ - internal/arrayassign.o internal/aaA.o internal/adi.o internal/aApply.o internal/aApplyR.o \ +INTERNAL_OBJS = internal/critical.o internal/object.o internal/monitor.o \ + internal/arraycat.o internal/invariant.o \ + internal/switch.o internal/arrayassign.o \ + internal/aaA.o internal/adi.o internal/aApply.o internal/aApplyR.o \ + internal/cast.o internal/memset.o internal/qsortg.o internal/obj.o \ + internal/arraycast.o internal/dgccmain2.o internal/rundmain.o \ + errno.o + +MAIN_OBJS = std/asserterror.o std/hiddenfunc.o gcstats.o \ std/outofmemory.o std/compiler.o std/system.o std/moduleinit.o std/md5.o std/base64.o \ - internal/cast.o std/string.o internal/memset.o std/math.o \ + std/string.o std/math.o \ std/outbuffer.o std/ctype.o std/regexp.o std/random.o \ std/stream.o std/cstream.o std/switcherr.o std/array.o std/gc.o \ - internal/qsortg.o std/thread.o internal/obj.o std/utf.o std/uri.o \ - crc32.o std/conv.o internal/arraycast.o errno.o \ + std/thread.o std/utf.o std/uri.o \ + crc32.o std/conv.o \ std/syserror.o std/metastrings.o \ std/c/stdarg.o std/c/stdio.o std/stdio.o std/format.o \ std/openrj.o std/uni.o std/demangle.o std/bitarray.o \ $(subst ti_,std/typeinfo/ti_,$(TI)) \ std/date.o std/dateparse.o etc/c/zlib.o std/zlib.o std/zip.o \ - internal/dgccmain2.o internal/rundmain.o std/stdarg.o \ + std/stdarg.o \ std/signals.o std/cpuid.o std/traits.o std/typetuple.o std/bind.o \ gcc/config/mathfuncs.o \ std/algorithm.o std/bitmanip.o std/contracts.o std/functional.o \ @@ -300,7 +306,7 @@ WINDOWS_OBJS = std/c/windows/windows.o std/c/windows/com.o std/c/windows/winsock std/windows/iunknown.o std/windows/registry.o std/windows/syserror.o \ std/windows/charset.o -ALL_PHOBOS_OBJS = $(D_EXTRA_OBJS) $(GCC_OBJS) $(MAIN_OBJS) $(ZLIB_OBJS) $(GC_OBJS) $(WEAK_OBJS) +ALL_PHOBOS_OBJS = $(D_EXTRA_OBJS) $(GCC_OBJS) $(MAIN_OBJS) $(ZLIB_OBJS) $(GC_OBJS) $(WEAK_OBJS) $(INTERNAL_OBJS) # Work around what appears to be a GNU make bug handling MAKEFLAGS # values defined in terms of make variables, as is the case for CC and @@ -755,8 +761,8 @@ libgphobos2_t.a : $(ALL_PHOBOS_OBJS:.o=.t.o) $(CMAIN_OBJS) $(AR) -r $@ $(ALL_PHOBOS_OBJS:.o=.t.o) $(CMAIN_OBJS) $(RANLIB) $@ -libgphobos2.so: $(ALL_PHOBOS_OBJS) $(CMAIN_OBJS) - $(CC) -shared -Wl,-soname=libgphobos2.so -o $@ $(ALL_PHOBOS_OBJS) $(CMAIN_OBJS) +libgphobos2.so: $(D_EXTRA_OBJS) $(GCC_OBJS) $(INTERNAL_OBJS) $(GC_OBJS) $(WEAK_OBJS) $(CMAIN_OBJS) $(ZLIB_OBJS) + $(CC) -shared -Wl,-soname=libgphobos2.so -o $@ $^ # This has to be an empty file because it is included in the prerequisites of rules # that use "cat $^" to generate their targets. -- 2.11.4.GIT