################################################################################ # Embtoolkit # Copyright(C) 2014 Abdoulaye Walsimou GAYE. # # This program 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 2 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. If not, see . # ################################################################################ # # \file configure.mk # \brief configure.mk of Embtoolkit # \author Abdoulaye Walsimou GAYE # \date January 2014 ################################################################################ # # embtk_fixgconfigsfor_pkg # __embtk_gconfigsub := $(EMBTK_ROOT)/scripts/config.sub __embtk_gconfiguess := $(EMBTK_ROOT)/scripts/config.guess define __embtk_fixgconfigsfor_pkg subs="$$(find $(__embtk_pkg_srcdir)/ -type f -name config.sub)"; \ for sub in $$subs; do \ if [ -n $$sub -a -e $$sub ]; then \ ln -sf $(__embtk_gconfigsub) $$sub; \ fi; \ done; \ guesses="$$(find $(__embtk_pkg_srcdir)/ -type f -name config.guess)"; \ for guess in $$guesses; do \ if [ -n $$guess -a -e $$guess ]; then \ ln -sf $(__embtk_gconfiguess) $$guess; \ fi; \ done; endef # # A macro which runs configure script (conpatible with autotools configure) # for a package and sets environment variables correctly. # Usage: # $(call embtk_configure_pkg,PACKAGE) # define __embtk_configure_autoreconfpkg if [ "x$(CONFIG_EMBTK_$(PKGV)_NEED_AUTORECONF)" = "xy" ]; then \ test -e $(__embtk_pkg_srcdir)/configure.ac || \ test -e $(__embtk_pkg_srcdir)/configure.in || exit 1; \ cd $(__embtk_pkg_srcdir); \ $(AUTORECONF) --install -f; \ fi endef __embtk_parse_configure_opts = $(subst $(embtk_space),"\\n\\t",$(strip $(1))) define __embtk_print_configure_opts $(if $(strip $(1)), $(call embtk_echo_blue,"Configure options:\\n\\t$(__embtk_parse_configure_opts)")) echo endef __embtk_pkg_ildflags = -L$(embtk_sysroot)/$(LIBDIR) __embtk_pkg_ildflags += -L$(embtk_sysroot)/usr/$(LIBDIR) define embtk_configure_pkg $(if $(EMBTK_BUILDSYS_DEBUG), $(call embtk_pinfo,"Configure $(__embtk_pkg_package)...")) $(call __embtk_configure_autoreconfpkg,$(1)) $(Q)test -e $(__embtk_pkg_srcdir)/configure || exit 1 $(call __embtk_print_configure_opts,$(__embtk_pkg_configureopts)) $(if $(CONFIG_EMBTK_CLIB_MUSL),$(call __embtk_fixgconfigsfor_pkg,$(1))) $(Q)cd $(__embtk_pkg_builddir); \ CC=$(TARGETCC_CACHED) \ $(if $(CONFIG_EMBTK_GCC_LANGUAGE_CPP),CXX=$(TARGETCXX_CACHED)) \ AR=$(TARGETAR) \ RANLIB=$(TARGETRANLIB) \ AS=$(CROSS_COMPILE)as \ NM=$(TARGETNM) \ STRIP=$(TARGETSTRIP) \ OBJDUMP=$(TARGETOBJDUMP) \ OBJCOPY=$(TARGETOBJCOPY) \ CFLAGS="$(__embtk_pkg_cflags) $(TARGET_CFLAGS)" \ CXXFLAGS="$(__embtk_pkg_cxxflags) $(TARGET_CXXFLAGS)" \ LDFLAGS="$(__embtk_pkg_ildflags) $(__embtk_pkg_ldflags)" \ CPPFLAGS="-I$(embtk_sysroot)/usr/include $(__embtk_pkg_cppflags)" \ PKG_CONFIG="$(PKGCONFIG_BIN)" \ PKG_CONFIG_PATH="$(EMBTK_PKG_CONFIG_PATH)" \ PKG_CONFIG_LIBDIR="$(EMBTK_PKG_CONFIG_LIBDIR)" \ ac_cv_func_malloc_0_nonnull=yes \ ac_cv_func_realloc_0_nonnull=yes \ CONFIG_SHELL=$(CONFIG_EMBTK_SHELL) \ $(__embtk_pkg_configureenv) $(__embtk_pkg_scanbuild) \ $(CONFIG_EMBTK_SHELL) $(__embtk_pkg_srcdir)/configure \ --build=$(HOST_BUILD) --host=$(STRICT_GNU_TARGET) \ --target=$(STRICT_GNU_TARGET) --libdir=/usr/$(LIBDIR) \ --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-rpath \ $(__embtk_pkg_configureopts) $(Q)$(call __embtk_setconfigured_pkg,$(1)) $(Q)$(call __embtk_kill_lt_rpath,$(__embtk_pkg_builddir)) endef # # A macro which runs configure script (conpatible with autotools configure) # for a package for host development machine and sets environment variables # correctly. # Usage: # $(call embtk_configure_hostpkg,PACKAGE) # __embtk_hostpkg_rpathldflags = "-Wl,-rpath,$(embtk_htools)/usr/lib" __embtk_hostpkg_rpath = $(strip $(if $(__embtk_pkg_setrpath), \ $(__embtk_hostpkg_rpathldflags))) __embtk_hostpkg_ldflags = -L$(embtk_htools)/usr/lib $(__embtk_hostpkg_rpath) __embtk_hostpkg_cppflags = -I$(embtk_htools)/usr/include define embtk_configure_hostpkg $(if $(EMBTK_BUILDSYS_DEBUG), $(call embtk_pinfo,"Configure $(__embtk_pkg_package) for host...")) $(call __embtk_configure_autoreconfpkg,$(1)) $(if $(CONFIG_EMBTK_CLIB_MUSL),$(call __embtk_fixgconfigsfor_pkg,$(1))) $(Q)test -e $(__embtk_pkg_srcdir)/configure || exit 1 $(call __embtk_print_configure_opts,$(__embtk_pkg_configureopts)) $(Q)cd $(__embtk_pkg_builddir); \ CPPFLAGS="$(__embtk_hostpkg_cppflags)" \ LDFLAGS="$(__embtk_hostpkg_ldflags)" \ PKG_CONFIG="$(PKGCONFIG_BIN)" \ PKG_CONFIG_PATH="$(EMBTK_HOST_PKG_CONFIG_PATH)" \ $(if $(call __embtk_mk_strcmp,$(PKGV),CCACHE),,CC=$(HOSTCC_CACHED)) \ $(if $(call __embtk_mk_strcmp,$(PKGV),CCACHE),,CXX=$(HOSTCXX_CACHED)) \ CONFIG_SHELL=$(CONFIG_EMBTK_SHELL) \ $(__embtk_pkg_configureenv) \ $(CONFIG_EMBTK_SHELL) $(__embtk_pkg_srcdir)/configure \ --build=$(HOST_BUILD) --host=$(HOST_ARCH) \ --prefix=$(strip $(if $(__embtk_pkg_prefix), \ $(__embtk_pkg_prefix),$(embtk_htools)/usr)) \ $(__embtk_pkg_configureopts) $(Q)$(call __embtk_setconfigured_pkg,$(1)) endef