PWD = $(shell pwd)

PKG_DIR = $(call select_from_ports,gcc)/src/noux-pkg/gcc

CONFIGURE_ARGS = --program-prefix=$(PROGRAM_PREFIX) \
                 --target=$(GCC_TARGET) \
                 --enable-languages=c,c++ \
                 --disable-libgo \
                 --disable-gotools \
                 --disable-libssp \
                 --disable-libquadmath \
                 --disable-libffi \
                 --disable-libada \
                 --enable-targets=all \
                 --with-gnu-as \
                 --with-gnu-ld \
                 --disable-tls \
                 --disable-threads \
                 --disable-hosted-libstdcxx \
                 --enable-shared \
                 --enable-multiarch \
                 --disable-sjlj-exceptions \
                 --disable-nls

MKENV += host_configargs="$(HOST_CONFIG_ARGS)" \
       target_configargs="$(TARGET_CONFIG_ARGS)"

MKENV += CC_FOR_TARGET=$(CC) CXX_FOR_TARGET=$(CXX) GCC_FOR_TARGET=$(CC) CPP_FOR_TARGET="$(CC) -E" \
       LD_FOR_TARGET=$(LD) AS_FOR_TARGET=$(AS) AR_FOR_TARGET=$(AR)

# libgcc does not evaluate CPPFLAGS_FOR_TARGET, so everything is put into CFLAGS_FOR_TARGET here
MKENV += CFLAGS_FOR_TARGET='-I$(BASE_DIR)/../../tool -DUSE_PT_GNU_EH_FRAME -Dinhibit_libc -fPIC'

# libsupc++
MKENV += CXXFLAGS_FOR_TARGET='-fPIC'

MAKE_ENV += GENODE="yes"

# prevent "converting to ‘bool’ from ‘std::nullptr_t’" error
CXXFLAGS += -fpermissive

#
# We link libraries to the final binaries using the 'LIBS' variable.  But
# unfortunately, the gcc build system has hardcoded some libs such as '-lc'.
# To satisfy the linker, we provide dummy archives.
#

LIBS = gmp mpfr mpc

LDFLAGS += -L$(PWD)

.SECONDARY: dummy_libs
dummy_libs: libgmp.a libmpfr.a libmpc.a libc.a

libgmp.a libmpfr.a libmpc.a libc.a:
	$(VERBOSE)$(AR) -rc $@

Makefile: dummy_libs

LIBS  += libc libm posix stdcxx base

include $(call select_from_repositories,mk/noux.mk)

#
# We have to specify 'LINK_ITEMS' twice to resolve inter-library dependencies.
# Unfortunately, the use of '--start-group' and '--end-group' does not suffice
# in all cases because 'libtool' strips those arguments from the 'LIBS' variable.
#
LDLIBS += -Wl,--start-group $(sort $(STATIC_LIBS)) $(sort $(STATIC_LIBS)) $(LIBGCC) -Wl,--end-group
