# We need multilib support for HPUX's ILP32 & LP64 modes.

LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib

MULTILIB_OPTIONS = milp32/mlp64
MULTILIB_DIRNAMES = hpux32 hpux64
MULTILIB_MATCHES =

# On HP-UX we do not want _fixtfdi, _fixunstfdi, or _floatditf from
# LIB1ASMSRC.  These functions map the 128 bit conversion function names
# to 80 bit conversions and were done for Linux backwards compatibility.

LIB1ASMFUNCS := $(filter-out _fixtfdi _fixunstfdi _floatditf,$(LIB1ASMFUNCS))

# Support routines for HP-UX 128 bit floats.

LIB2FUNCS_EXTRA=quadlib.c $(srcdir)/config/floatunsitf.c

quadlib.c: $(srcdir)/config/ia64/quadlib.c
	cat $(srcdir)/config/ia64/quadlib.c > quadlib.c

# We get an undefined main when building a cross compiler because our
# linkspec has "-u main" and we want that for linking but it makes
# LIBGCC1_TEST fail because it uses -nostdlib -nostartup.

LIBGCC1_TEST =

# We do not want to include the EH stuff that linux uses, we want to use
# the HP-UX libunwind library.

T_CFLAGS += -DUSE_LIBUNWIND_EXCEPTIONS

LIB2ADDEH =

SHLIB_EXT = .so
# Must include -lunwind in the link, so that libgcc_s.so has the necessary
# DT_NEEDED entry for libunwind.
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
	-Wl,+h,@shlib_base_name@.so.0 \
	-o @multilib_dir@/@shlib_base_name@.so @multilib_flags@ \
	@shlib_objs@ -lunwind -lc && \
	rm -f @multilib_dir@/@shlib_base_name@.so.0 && \
	$(LN_S) @shlib_base_name@.so @multilib_dir@/@shlib_base_name@.so.0
# $(slibdir) double quoted to protect it from expansion while building
# libgcc.mk.  We want this delayed until actual install time.
SHLIB_INSTALL = \
        $$(mkinstalldirs) $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@; \
	$(INSTALL_DATA) @multilib_dir@/@shlib_base_name@.so \
	$$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so.0; \
	rm -f $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so; \
	$(LN_S) @shlib_base_name@.so.0 \
	$$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so; \
	chmod +x $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so

SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
