## Process this file with automake to generate Makefile.in
#
#  Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
#  Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; see the file COPYING3.  If not see
# <http://www.gnu.org/licenses/>.
#

AUTOMAKE_OPTIONS = foreign

SUBDIRS = po testsuite

tooldir = $(exec_prefix)/$(target_alias)

ACLOCAL_AMFLAGS = -I ../bfd -I ../config

AM_CFLAGS = $(WARN_CFLAGS) $(LFS_CFLAGS) $(RANDOM_SEED_CFLAGS)
AM_CXXFLAGS = $(WARN_CXXFLAGS) $(LFS_CFLAGS) $(RANDOM_SEED_CFLAGS)

AM_CPPFLAGS = \
	-I$(srcdir) -I$(srcdir)/../include -I$(srcdir)/../elfcpp \
	-DLOCALEDIR="\"$(datadir)/locale\"" \
	-DBINDIR="\"$(bindir)\"" -DTOOLBINDIR="\"$(tooldir)/bin\"" \
	-DTOOLLIBDIR="\"$(tooldir)/lib\"" @INCINTL@

LIBIBERTY = ../libiberty/libiberty.a

if PLUGINS
LIBDL = @DLOPEN_LIBS@
endif

if THREADS
THREADSLIB = -lpthread
endif

AM_YFLAGS = -d

# Automake 1.10+ disables lex and yacc output file regeneration if
# maintainer mode is disabled.  Avoid this.
am__skiplex =
am__skipyacc =

bin_PROGRAMS = dwp

noinst_PROGRAMS = ld-new incremental-dump
noinst_LIBRARIES = libgold.a

CCFILES = \
	archive.cc \
	attributes.cc \
	binary.cc \
	common.cc \
	compressed_output.cc \
	copy-relocs.cc \
	cref.cc \
	defstd.cc \
	descriptors.cc \
	dirsearch.cc \
	dynobj.cc \
	dwarf_reader.cc \
	ehframe.cc \
	errors.cc \
	expression.cc \
	fileread.cc \
        gc.cc \
        gdb-index.cc \
	gold.cc \
	gold-threads.cc \
	icf.cc \
	incremental.cc \
	int_encoding.cc \
	layout.cc \
	mapfile.cc \
	merge.cc \
	nacl.cc \
	object.cc \
	options.cc \
	output.cc \
	parameters.cc \
	plugin.cc \
	readsyms.cc \
	reduced_debug_output.cc \
	reloc.cc \
	resolve.cc \
	script-sections.cc \
	script.cc \
	stringpool.cc \
	symtab.cc \
	target.cc \
	target-select.cc \
	timer.cc \
	version.cc \
	workqueue.cc \
	workqueue-threads.cc

HFILES = \
	arm-reloc-property.h \
	archive.h \
	attributes.h \
	binary.h \
	common.h \
	compressed_output.h \
	copy-relocs.h \
	cref.h \
	defstd.h \
	dirsearch.h \
	descriptors.h \
	dynobj.h \
	dwarf_reader.h \
	ehframe.h \
	errors.h \
	fileread.h \
	freebsd.h \
        gc.h \
        gdb-index.h \
	gold.h \
	gold-threads.h \
	icf.h \
	int_encoding.h \
	layout.h \
	mapfile.h \
	merge.h \
	nacl.h \
	object.h \
	options.h \
	output.h \
	parameters.h \
	plugin.h \
	readsyms.h \
	reduced_debug_output.h \
	reloc.h \
	reloc-types.h \
	script-c.h \
	script-sections.h \
	script.h \
	stringpool.h \
	symtab.h \
	target.h \
	target-reloc.h \
	target-select.h \
	timer.h \
	tls.h \
	token.h \
	workqueue.h \
	workqueue-internal.h

YFILES = \
	yyscript.y

DEFFILES = arm-reloc.def

EXTRA_DIST = yyscript.c yyscript.h

TARGETSOURCES = \
	i386.cc x86_64.cc sparc.cc powerpc.cc arm.cc arm-reloc-property.cc tilegx.cc

ALL_TARGETOBJS = \
	i386.$(OBJEXT) x86_64.$(OBJEXT) sparc.$(OBJEXT) powerpc.$(OBJEXT) \
	arm.$(OBJEXT) arm-reloc-property.$(OBJEXT) tilegx.$(OBJEXT)

libgold_a_SOURCES = $(CCFILES) $(HFILES) $(YFILES) $(DEFFILES)
libgold_a_LIBADD = $(LIBOBJS)

sources_var = main.cc
deps_var = $(TARGETOBJS) libgold.a $(LIBIBERTY) $(LIBINTL_DEP)
ldadd_var = $(TARGETOBJS) libgold.a $(LIBIBERTY) $(GOLD_LDADD) $(LIBINTL) \
	 $(THREADSLIB) $(LIBDL)
ldflags_var = $(GOLD_LDFLAGS)

ld_new_SOURCES = $(sources_var)
ld_new_DEPENDENCIES = $(deps_var)
ld_new_LDADD = $(ldadd_var)
ld_new_LDFLAGS = $(ldflags_var)

EXTRA_ld_new_SOURCES = $(TARGETSOURCES)

incremental_dump_SOURCES = incremental-dump.cc
incremental_dump_DEPENDENCIES = $(TARGETOBJS) libgold.a $(LIBIBERTY) \
	$(LIBINTL_DEP)
incremental_dump_LDADD = $(TARGETOBJS) libgold.a $(LIBIBERTY) $(LIBINTL) \
	 $(THREADSLIB) $(LIBDL)

dwp_SOURCES = dwp.cc
dwp_DEPENDENCIES = libgold.a $(LIBIBERTY) $(LIBINTL_DEP)
dwp_LDADD = libgold.a $(LIBIBERTY) $(GOLD_LDADD) $(LIBINTL) $(THREADSLIB) \
	$(LIBDL)
dwp_LDFLAGS = $(GOLD_LDFLAGS)

# Use an explicit dependency for the bison generated header file.
expression.$(OBJEXT): yyscript.h
script-sections.$(OBJEXT): yyscript.h
script.$(OBJEXT): yyscript.h

# We have to build libgold.a before we run the tests.
check: libgold.a

.PHONY: install-exec-local

install-exec-local: ld-new$(EXEEXT)
	$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(tooldir)/bin
	n=`echo $(installed_linker) | sed '$(transform)'`; \
	$(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${n}$(EXEEXT); \
	if test "$(bindir)" != "$(tooldir)/bin"; then \
	  rm -f $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT); \
	  ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT) >/dev/null 2>/dev/null \
	  || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$(installed_linker)$(EXEEXT); \
	fi; \
	if test "x$(install_as_default)" = "xyes"; then \
	  ld=`echo ld | sed '$(transform)'`; \
	  rm -f $(DESTDIR)$(bindir)/$${ld}$(EXEEXT); \
	  ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(bindir)/$${ld}$(EXEEXT) >/dev/null 2>/dev/null \
	  || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${ld}$(EXEEXT); \
	  if test "$(bindir)" != "$(tooldir)/bin"; then \
	    rm -f $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
	    ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \
	    || $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
	  fi; \
	fi

# We want install to imply install-info as per GNU standards, despite
# the cygnus option.
install-data-local: install-info

POTFILES= $(CCFILES) $(HFILES) $(TARGETSOURCES)

po/POTFILES.in: @MAINT@ Makefile
	for f in $(POTFILES); do echo $$f; done | LC_ALL=C sort > tmp \
	  && mv tmp $(srcdir)/po/POTFILES.in

# Bootstrap test support.  We use ld-new to build ld1, then use ld1 to
# build ld2.  ld1 and ld2 should be identical.  ld-new need not be
# identical to ld1, since it was linked with the host linker.

if GCC
if NATIVE_LINKER

gcctestdir1/ld: ld-new
	test -d gcctestdir1 || mkdir -p gcctestdir1
	rm -f gcctestdir1/ld
	(cd gcctestdir1 && $(LN_S) ../ld-new ld)

ld1_SOURCES = $(sources_var)
ld1_DEPENDENCIES = $(deps_var) gcctestdir1/ld
ld1_LDADD = $(ldadd_var)
ld1_LDFLAGS = -Bgcctestdir1/

gcctestdir2/ld: ld1
	test -d gcctestdir2 || mkdir -p gcctestdir2
	rm -f gcctestdir2/ld
	(cd gcctestdir2 && $(LN_S) ../ld1 ld)

ld2_SOURCES = $(sources_var)
ld2_DEPENDENCIES = $(deps_var) gcctestdir2/ld
ld2_LDADD = $(ldadd_var)
ld2_LDFLAGS = -Bgcctestdir2/

bootstrap-test: ld2
	rm -f $@
	echo "#!/bin/sh" > $@
	echo "cmp ld1 ld2" >> $@
	chmod +x $@

libgold-1-r.o: gcctestdir1/ld libgold.a
	gcctestdir1/ld -o $@ -r --whole-archive libgold.a

ld1_r_SOURCES = $(sources_var)
ld1_r_DEPENDENCIES = libgold-1-r.o $(deps_var) gcctestdir1/ld
ld1_r_LDADD = libgold-1-r.o $(ldadd_var)
ld1_r_LDFLAGS = -Bgcctestdir1/

gcctestdir2-r/ld: ld1-r
	test -d gcctestdir2-r || mkdir -p gcctestdir2-r
	rm -f gcctestdir2-r/ld
	(cd gcctestdir2-r && $(LN_S) ../ld1-r ld)

libgold-2-r.o: gcctestdir2-r/ld libgold.a
	gcctestdir2-r/ld -o $@ -r --whole-archive libgold.a

ld2_r_SOURCES = $(sources_var)
ld2_r_DEPENDENCIES = libgold-2-r.o $(deps_var) gcctestdir2-r/ld
ld2_r_LDADD = libgold-2-r.o $(ldadd_var)
ld2_r_LDFLAGS = -Bgcctestdir2-r/

bootstrap-test-r: ld2-r
	rm -f $@
	echo "#!/bin/sh" > $@
	echo "cmp ld1-r ld2-r" >> $@
	chmod +x $@

check_PROGRAMS = ld1 ld2 ld1-r ld2-r
TESTS = bootstrap-test bootstrap-test-r

# Verify that changing the number of threads doesn't change the
# treehash computation, by building ld1 and ld3 the same way except
# for the number of threads.  However, the build ID should change if
# we change the chunk size for --build-id=tree, so ld4 should be
# different.  We run the latter test even if multithreading is unavailable,
# because the treehash can still operate in that mode.
check_PROGRAMS += ld4
TESTS += bootstrap-test-treehash-chunksize

gcctestdir3/ld: ld-new
	test -d gcctestdir3 || mkdir -p gcctestdir3
	rm -f gcctestdir3/ld
	(cd gcctestdir3 && $(LN_S) ../ld-new ld)

ld3_SOURCES = $(sources_var)
ld3_DEPENDENCIES = $(deps_var) gcctestdir3/ld
ld3_LDADD = $(ldadd_var)
ld3_LDFLAGS = -Bgcctestdir3/

gcctestdir4/ld: ld-new
	test -d gcctestdir4 || mkdir -p gcctestdir4
	rm -f gcctestdir4/ld
	(cd gcctestdir4 && $(LN_S) ../ld-new ld)

ld4_SOURCES = $(sources_var)
ld4_DEPENDENCIES = $(deps_var) gcctestdir4/ld
ld4_LDADD = $(ldadd_var)
ld4_LDFLAGS = -Bgcctestdir4/

ld1_LDFLAGS += -Wl,--build-id=tree -Wl,--build-id-chunk-size-for-treehash=12345 -Wl,--build-id-min-file-size-for-treehash=0
ld2_LDFLAGS += -Wl,--build-id=tree -Wl,--build-id-chunk-size-for-treehash=12345 -Wl,--build-id-min-file-size-for-treehash=0
ld3_LDFLAGS += -Wl,--build-id=tree -Wl,--build-id-chunk-size-for-treehash=12345 -Wl,--build-id-min-file-size-for-treehash=0
ld4_LDFLAGS += -Wl,--build-id=tree -Wl,--build-id-chunk-size-for-treehash=12346 -Wl,--build-id-min-file-size-for-treehash=0

if THREADS

ld1_LDFLAGS += -Wl,--thread-count=3
ld2_LDFLAGS += -Wl,--thread-count=3
ld3_LDFLAGS += -Wl,--thread-count=13
ld4_LDFLAGS += -Wl,--thread-count=3
check_PROGRAMS += ld3
TESTS += bootstrap-test-treehash-chunksize

bootstrap-test-treehash: ld1 ld3
	rm -f $@
	echo "#!/bin/sh" > $@
	echo "cmp ld1 ld3" >> $@
	chmod +x $@

endif

bootstrap-test-treehash-chunksize: ld1 ld4
	rm -f $@
	echo "#!/bin/sh" > $@
	echo "cmp ld1 ld4 | grep ." >> $@
	chmod +x $@

endif
endif
