Similarly to "libgas.la" before , this introduces a libld.la, moving everything from "ld" into it, with ld built from ldmainmain.c.
As before with the libgas.la patch, this patch isn't ready yet, but seems to be good enough for prototyping the libgccjit.so integration. --- ld/Makefile.am | 64 ++++++++++++++++++++++++---------------------------------- 1 file changed, 26 insertions(+), 38 deletions(-) diff --git a/ld/Makefile.am b/ld/Makefile.am index 55b62c5..71e4f8a 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -40,6 +40,7 @@ ELF_CLFAGS=-DELF_LIST_OPTIONS=@elf_list_options@ \ WARN_CFLAGS = @WARN_CFLAGS@ NO_WERROR = @NO_WERROR@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS) +CFLAGS +=-fPIC # Conditionally enable the plugin interface. if ENABLE_PLUGINS @@ -132,11 +133,14 @@ CXX_FOR_TARGET = ` \ transform = s/^ld-new$$/$(installed_linker)/;@program_transform_name@ bin_PROGRAMS = ld-new +lib_LTLIBRARIES = libld.la info_TEXINFOS = ld.texinfo ld_TEXINFOS = configdoc.texi noinst_TEXINFOS = ldint.texinfo man_MANS = ld.1 +include_HEADERS = libld.h + AM_MAKEINFOFLAGS = -I $(srcdir) -I $(BFDDIR)/doc -I ../bfd/doc \ -I $(top_srcdir)/../libiberty TEXI2DVI = texi2dvi -I $(srcdir) -I $(BFDDIR)/doc -I ../bfd/doc \ @@ -583,42 +587,23 @@ po/POTFILES.in: @MAINT@ Makefile for f in $(POTFILES); do echo $$f; done | LC_ALL=C sort > tmp \ && mv tmp $(srcdir)/po/POTFILES.in -ldmain.@OBJEXT@: ldmain.c config.status -if am__fastdepCC - $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ \ +# FIXME: +# ldmain.lo wants: +# -DDEFAULT_EMULATION='"$(EMUL)"' \ +# -DBINDIR='"$(bindir)"' -DTOOLBINDIR='"$(tooldir)/bin"' \ +# -DTARGET='"@target@"' @TARGET_SYSTEM_ROOT_DEFINE@ +# +# ldfile.lo wants: +# -DSCRIPTDIR='"$(scriptdir)"' -DBINDIR='"$(bindir)"' -DTOOLBINDIR='"$(tooldir)/bin"' +# +# Here we combine them all: +AM_CFLAGS += \ -DDEFAULT_EMULATION='"$(EMUL)"' \ -DBINDIR='"$(bindir)"' -DTOOLBINDIR='"$(tooldir)/bin"' \ -DTARGET='"@target@"' @TARGET_SYSTEM_ROOT_DEFINE@ \ - $(srcdir)/ldmain.c - mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -else -if AMDEP - source='ldmain.c' object='$@' libtool=no @AMDEPBACKSLASH@ - DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -endif - $(COMPILE) -c -DDEFAULT_EMULATION='"$(EMUL)"' \ - -DBINDIR='"$(bindir)"' -DTOOLBINDIR='"$(tooldir)/bin"' \ - -DTARGET='"@target@"' @TARGET_SYSTEM_ROOT_DEFINE@ \ - $(srcdir)/ldmain.c -endif + -DSCRIPTDIR='"$(scriptdir)"' -ldfile.@OBJEXT@: ldfile.c config.status -if am__fastdepCC - $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ \ - -DSCRIPTDIR='"$(scriptdir)"' -DBINDIR='"$(bindir)"' -DTOOLBINDIR='"$(tooldir)/bin"' \ - $(srcdir)/ldfile.c - mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -else -if AMDEP - source='ldfile.c' object='$@' libtool=no @AMDEPBACKSLASH@ - DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -endif - $(COMPILE) -c -DSCRIPTDIR='"$(scriptdir)"' -DBINDIR='"$(bindir)"' \ - -DTOOLBINDIR='"$(tooldir)/bin"' \ - $(srcdir)/ldfile.c -endif - -eelf32_spu.@OBJEXT@: eelf32_spu.c +eelf32_spu.lo: eelf32_spu.c if am__fastdepCC $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ \ -DEMBEDSPU="\"`echo embedspu | sed '$(transform)'`\"" eelf32_spu.c @@ -1999,19 +1984,22 @@ eshlelf64_nbsd.c: $(srcdir)/emulparams/shlelf64_nbsd.sh \ # We need this for automake to use YLWRAP. -EXTRA_ld_new_SOURCES = deffilep.y ldlex.l +EXTRA_libld_la_SOURCES = deffilep.y ldlex.l # Allow dependency tracking to work for these files, too. -EXTRA_ld_new_SOURCES += pep-dll.c pe-dll.c +EXTRA_libld_la_SOURCES += pep-dll.c pe-dll.c + +ld_new_SOURCES = ldmainmain.c -ld_new_SOURCES = ldgram.y ldlex-wrapper.c lexsup.c ldlang.c mri.c ldctor.c ldmain.c \ +libld_la_SOURCES = ldgram.y ldlex-wrapper.c lexsup.c ldlang.c mri.c ldctor.c ldmain.c \ ldwrite.c ldexp.c ldemul.c ldver.c ldmisc.c ldfile.c ldcref.c $(PLUGIN_C) \ ldbuildid.c -ld_new_DEPENDENCIES = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) \ +libld_la_DEPENDENCIES = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) \ $(BFDLIB) $(LIBIBERTY) $(LIBINTL_DEP) -ld_new_LDADD = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) $(BFDLIB) $(LIBIBERTY) $(LIBINTL) +libld_la_LIBADD = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) $(BFDLIB) $(LIBIBERTY) $(LIBINTL) +ld_new_LDADD = libld.la # Dependency tracking for the generated emulation files. -EXTRA_ld_new_SOURCES += $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES) +EXTRA_libld_la_SOURCES += $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES) # This is the real libbfd.a created by libtool. TESTBFDLIB = @TESTBFDLIB@ -- 1.8.5.3