2007-08-22 13:47:22 +02:00
|
|
|
ifndef MAKE
|
2007-07-17 14:09:07 +02:00
|
|
|
MAKE:=make
|
2007-01-30 18:33:53 +01:00
|
|
|
endif
|
2007-07-17 14:09:07 +02:00
|
|
|
ifndef HOSTMAKE
|
|
|
|
HOSTMAKE=$(MAKE)
|
|
|
|
endif
|
2009-01-01 22:20:35 +01:00
|
|
|
HOSTMAKE :=$(shell which $(HOSTMAKE) || type -p $(HOSTMAKE) || echo make)
|
2007-07-17 14:09:07 +02:00
|
|
|
|
2012-06-16 11:37:17 +02:00
|
|
|
# If BR2_LEVEL is 0, scale the maximum concurrency with the number of
|
|
|
|
# CPUs. A coefficient of 2 is used in order to keep processors busy
|
|
|
|
# while waiting on I/O.
|
|
|
|
ifeq ($(BR2_JLEVEL),0)
|
|
|
|
PARALLEL_JOBS:=$(shell echo \
|
|
|
|
$$((2 * `getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1`)))
|
|
|
|
else
|
2012-06-11 18:09:37 +02:00
|
|
|
PARALLEL_JOBS:=$(BR2_JLEVEL)
|
2012-06-16 11:37:17 +02:00
|
|
|
endif
|
2012-06-11 18:09:37 +02:00
|
|
|
|
2008-07-11 15:43:59 +02:00
|
|
|
MAKE1:=$(HOSTMAKE) -j1
|
2012-06-11 18:09:37 +02:00
|
|
|
MAKE:=$(HOSTMAKE) -j$(PARALLEL_JOBS)
|
2008-07-01 15:30:26 +02:00
|
|
|
|
2012-06-08 03:52:16 +02:00
|
|
|
# Compute GNU_TARGET_NAME
|
2012-10-03 01:26:30 +02:00
|
|
|
GNU_TARGET_NAME=$(ARCH)-buildroot-linux-$(LIBC)$(ABI)
|
2010-12-28 20:10:27 +01:00
|
|
|
|
2011-01-25 16:01:25 +01:00
|
|
|
ifeq ($(BR2_TOOLCHAIN_BUILDROOT)$(BR2_TOOLCHAIN_CTNG_uClibc)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y)
|
2010-12-28 20:10:27 +01:00
|
|
|
LIBC=uclibc
|
|
|
|
else
|
|
|
|
LIBC=gnu
|
|
|
|
endif
|
|
|
|
|
|
|
|
# The ABI suffix is a bit special on ARM, as it needs to be
|
|
|
|
# -uclibcgnueabi for uClibc EABI, -uclibc for uClibc OABI, -gnueabi
|
|
|
|
# for glibc EABI and -gnu for glibc OABI. This means that the LIBC and
|
|
|
|
# ABI aren't strictly orthogonal, which explains why we need the test
|
|
|
|
# on LIBC below.
|
|
|
|
ifeq ($(BR2_ARM_EABI),y)
|
|
|
|
ifeq ($(LIBC),uclibc)
|
|
|
|
ABI=gnueabi
|
|
|
|
else
|
|
|
|
ABI=eabi
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2012-01-05 20:31:43 +01:00
|
|
|
# For FSL PowerPC there's SPE
|
|
|
|
ifeq ($(BR2_powerpc_SPE),y)
|
|
|
|
ABI=spe
|
|
|
|
# MPC8540s are e500v1 with single precision FP
|
|
|
|
ifeq ($(BR2_powerpc_8540),y)
|
|
|
|
TARGET_ABI+=-mabi=spe -mfloat-gprs=single -Wa,-me500
|
|
|
|
endif
|
|
|
|
ifeq ($(BR2_powerpc_8548),y)
|
|
|
|
TARGET_ABI+=-mabi=spe -mfloat-gprs=double -Wa,-me500x2
|
|
|
|
endif
|
|
|
|
ifeq ($(BR2_powerpc_e500mc),y)
|
|
|
|
TARGET_ABI+=-mabi=spe -mfloat-gprs=double -Wa,-me500mc
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2012-12-05 20:36:36 +01:00
|
|
|
# Use longcalls option for Xtensa globally.
|
|
|
|
# The 'longcalls' option allows calls across a greater range of addresses,
|
|
|
|
# and is required for some packages. While this option can degrade both
|
|
|
|
# code size and performance, the linker can usually optimize away the
|
|
|
|
# overhead when a call ends up within a certain range.
|
|
|
|
ifeq ($(BR2_xtensa),y)
|
|
|
|
TARGET_ABI += -mlongcalls
|
|
|
|
endif
|
|
|
|
|
2012-07-15 03:12:05 +02:00
|
|
|
STAGING_SUBDIR = usr/$(GNU_TARGET_NAME)/sysroot
|
|
|
|
STAGING_DIR = $(HOST_DIR)/$(STAGING_SUBDIR)
|
2010-12-28 20:10:27 +01:00
|
|
|
|
2012-04-17 06:45:31 +02:00
|
|
|
TARGET_OPTIMIZATION:=$(call qstrip,$(BR2_TARGET_OPTIMIZATION))
|
|
|
|
|
2008-03-12 14:07:10 +01:00
|
|
|
ifeq ($(BR2_OPTIMIZE_0),y)
|
2009-02-01 17:10:47 +01:00
|
|
|
TARGET_OPTIMIZATION+=-O0
|
2008-03-12 14:07:10 +01:00
|
|
|
endif
|
|
|
|
ifeq ($(BR2_OPTIMIZE_1),y)
|
2009-02-01 17:10:47 +01:00
|
|
|
TARGET_OPTIMIZATION+=-O1
|
2008-03-12 14:07:10 +01:00
|
|
|
endif
|
|
|
|
ifeq ($(BR2_OPTIMIZE_2),y)
|
2009-02-01 17:10:47 +01:00
|
|
|
TARGET_OPTIMIZATION+=-O2
|
2008-03-12 14:07:10 +01:00
|
|
|
endif
|
|
|
|
ifeq ($(BR2_OPTIMIZE_3),y)
|
2009-02-01 17:10:47 +01:00
|
|
|
TARGET_OPTIMIZATION+=-O3
|
2008-03-12 14:07:10 +01:00
|
|
|
endif
|
|
|
|
ifeq ($(BR2_OPTIMIZE_S),y)
|
2009-02-01 17:10:47 +01:00
|
|
|
TARGET_OPTIMIZATION+=-Os
|
2008-03-12 14:07:10 +01:00
|
|
|
endif
|
|
|
|
ifeq ($(BR2_DEBUG_1),y)
|
|
|
|
TARGET_DEBUGGING=-g1
|
|
|
|
endif
|
|
|
|
ifeq ($(BR2_DEBUG_2),y)
|
|
|
|
TARGET_DEBUGGING=-g2
|
|
|
|
endif
|
|
|
|
ifeq ($(BR2_DEBUG_3),y)
|
|
|
|
TARGET_DEBUGGING=-g3
|
|
|
|
endif
|
|
|
|
|
2008-08-04 21:07:18 +02:00
|
|
|
ifeq ($(BR2_LARGEFILE),y)
|
2012-07-25 19:40:46 +02:00
|
|
|
TARGET_CPPFLAGS += -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
|
2008-08-04 21:07:18 +02:00
|
|
|
endif
|
|
|
|
|
2012-07-25 19:40:46 +02:00
|
|
|
TARGET_CFLAGS = $(TARGET_CPPFLAGS) $(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING)
|
2012-10-11 09:01:10 +02:00
|
|
|
TARGET_CXXFLAGS = $(TARGET_CFLAGS)
|
|
|
|
TARGET_LDFLAGS = $(call qstrip,$(BR2_TARGET_LDFLAGS))
|
2007-06-20 13:26:36 +02:00
|
|
|
|
2011-01-25 16:06:43 +01:00
|
|
|
ifeq ($(BR2_TOOLCHAIN_BUILDROOT)$(BR2_TOOLCHAIN_CTNG),y)
|
2012-06-08 03:52:16 +02:00
|
|
|
TARGET_CROSS=$(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-
|
2010-10-15 23:01:08 +02:00
|
|
|
else
|
2011-04-29 13:09:26 +02:00
|
|
|
TARGET_CROSS=$(HOST_DIR)/usr/bin/$(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX))-
|
2007-02-06 19:19:38 +01:00
|
|
|
endif
|
2010-06-25 15:04:08 +02:00
|
|
|
|
2010-06-20 15:06:30 +02:00
|
|
|
# Quotes are needed for spaces et al in path components.
|
|
|
|
TARGET_PATH="$(HOST_DIR)/bin:$(HOST_DIR)/usr/bin:$(HOST_DIR)/usr/sbin/:$(PATH)"
|
|
|
|
|
2010-06-25 15:04:08 +02:00
|
|
|
# Define TARGET_xx variables for all common binutils/gcc tools by
|
|
|
|
# including the --sysroot option where necessary.
|
|
|
|
TARGET_AR = $(TARGET_CROSS)ar
|
|
|
|
TARGET_AS = $(TARGET_CROSS)as
|
2011-05-02 23:58:20 +02:00
|
|
|
TARGET_CC = $(TARGET_CROSS)gcc
|
|
|
|
TARGET_CPP = $(TARGET_CROSS)cpp
|
|
|
|
TARGET_CXX = $(TARGET_CROSS)g++
|
|
|
|
TARGET_FC = $(TARGET_CROSS)gfortran
|
|
|
|
TARGET_LD = $(TARGET_CROSS)ld
|
2010-06-25 15:04:08 +02:00
|
|
|
TARGET_NM = $(TARGET_CROSS)nm
|
|
|
|
TARGET_RANLIB = $(TARGET_CROSS)ranlib
|
2012-11-07 06:01:20 +01:00
|
|
|
TARGET_READELF = $(TARGET_CROSS)readelf
|
2010-06-25 15:04:08 +02:00
|
|
|
TARGET_OBJCOPY = $(TARGET_CROSS)objcopy
|
|
|
|
TARGET_OBJDUMP = $(TARGET_CROSS)objdump
|
|
|
|
|
2010-12-07 21:09:56 +01:00
|
|
|
TARGET_CC_NOCCACHE := $(TARGET_CC)
|
|
|
|
TARGET_CXX_NOCCACHE := $(TARGET_CXX)
|
|
|
|
|
|
|
|
ifeq ($(BR2_CCACHE),y)
|
|
|
|
TARGET_CC := $(CCACHE) $(TARGET_CC)
|
|
|
|
TARGET_CXX := $(CCACHE) $(TARGET_CXX)
|
|
|
|
endif
|
|
|
|
|
2007-07-31 20:06:50 +02:00
|
|
|
ifeq ($(BR2_STRIP_strip),y)
|
2012-11-20 08:18:11 +01:00
|
|
|
STRIP_STRIP_DEBUG:=--strip-debug
|
2007-08-21 03:53:57 +02:00
|
|
|
STRIP_STRIP_UNNEEDED:=--strip-unneeded
|
2007-08-22 14:35:41 +02:00
|
|
|
STRIP_STRIP_ALL:=--strip-all
|
2007-10-01 18:15:31 +02:00
|
|
|
TARGET_STRIP=$(TARGET_CROSS)strip
|
2010-11-30 16:19:59 +01:00
|
|
|
STRIPCMD=$(TARGET_CROSS)strip --remove-section=.comment --remove-section=.note
|
|
|
|
KSTRIPCMD=$(STRIPCMD) $(STRIP_STRIP_UNNEEDED)
|
2007-07-31 20:06:50 +02:00
|
|
|
endif
|
|
|
|
ifeq ($(BR2_STRIP_sstrip),y)
|
2012-11-20 08:18:11 +01:00
|
|
|
STRIP_STRIP_DEBUG:=
|
2007-08-21 03:53:57 +02:00
|
|
|
STRIP_STRIP_UNNEEDED:=
|
|
|
|
STRIP_STRIP_ALL:=
|
2012-06-08 03:52:16 +02:00
|
|
|
TARGET_STRIP=$(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-sstrip
|
2007-10-01 18:15:31 +02:00
|
|
|
STRIPCMD=$(TARGET_STRIP)
|
2010-11-30 16:19:59 +01:00
|
|
|
KSTRIPCMD=$(TARGET_CROSS)strip --remove-section=.comment --remove-section=.note --strip-unneeded
|
2007-07-31 20:06:50 +02:00
|
|
|
endif
|
|
|
|
ifeq ($(BR2_STRIP_none),y)
|
2010-01-27 02:09:04 +01:00
|
|
|
TARGET_STRIP=true
|
2007-10-01 18:15:31 +02:00
|
|
|
STRIPCMD=$(TARGET_STRIP)
|
2010-11-30 16:19:59 +01:00
|
|
|
KSTRIPCMD=$(TARGET_STRIP)
|
2007-07-31 20:06:50 +02:00
|
|
|
endif
|
2009-08-26 09:52:51 +02:00
|
|
|
INSTALL:=$(shell which install || type -p install)
|
2009-01-01 22:20:35 +01:00
|
|
|
FLEX:=$(shell which flex || type -p flex)
|
|
|
|
BISON:=$(shell which bison || type -p bison)
|
2010-09-30 23:09:39 +02:00
|
|
|
SED:=$(shell which sed || type -p sed) -i -e
|
2004-10-09 03:06:03 +02:00
|
|
|
|
2012-07-25 19:40:46 +02:00
|
|
|
HOST_CPPFLAGS = -I$(HOST_DIR)/usr/include
|
2010-10-29 21:00:26 +02:00
|
|
|
HOST_CFLAGS ?= -O2
|
2012-07-25 19:40:46 +02:00
|
|
|
HOST_CFLAGS += $(HOST_CPPFLAGS)
|
|
|
|
HOST_CXXFLAGS += $(HOST_CFLAGS)
|
Solve the host tools relying on host libraries problem
We build host tools installed in $(HOST_DIR)/usr/bin, and some of them
rely on host libraries in $(HOST_DIR)/usr/lib. So when these host
tools are executed, they need to find the host libraries, which are
not installed in a default location.
In c1b6242fdcf2cff7ebf09fec4cc1be58963e8427 we tried to use
LD_LIBRARY_PATH when building target packages to solve this
problem. Unfortunately, LD_LIBRARY_PATH is not only used to find
libraries at run-time, but also at compile time. So it leads the build
of some packages, such as icu, to fail.
Therefore, in 0d1830b07db4ebfd14e77a258de6fb391e57e960, we reverted
the LD_LIBRARY_PATH idea.
The other option to solve this problem was to hardcode a RPATH value
in the host binaries that would reference the location of host
libraries. We added this -Wl,-rpath option to HOST_CFLAGS in
6b939d40f6a29a43277566adc9d4312d49cb3abf. Unfortunately, this caused
problems when building binutils, as reported in bug 1789 so this
change was reverted in e1a7d916e9eeaa215551740de40c055130d6c073.
Then, we tried to use -Wl,-rpath in HOST_LDFLAGS, but it was causing
problems with fakeroot not recognizing 'ld' as the GNU linker, since
the -Wl,-rpath cannot be understood by 'ld' directly, only by 'gcc'.
This commit is a new attempt at using HOST_LDFLAGS, but in this case
we modified the definition of HOST_LD to *not* contain
HOST_LDFLAGS. LDFLAGS are being set separatly. It solved the fakeroot
issue and was tested against nearly 300 packages of Buildroot.
For more details on this story, see
http://lists.busybox.net/pipermail/buildroot/2010-June/035580.html
http://lists.busybox.net/pipermail/buildroot/2010-June/035581.html
http://lists.busybox.net/pipermail/buildroot/2010-June/035586.html
http://lists.busybox.net/pipermail/buildroot/2010-June/035609.html
https://bugs.busybox.net/show_bug.cgi?id=1789
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-06-25 14:15:20 +02:00
|
|
|
HOST_LDFLAGS += -L$(HOST_DIR)/lib -L$(HOST_DIR)/usr/lib -Wl,-rpath,$(HOST_DIR)/usr/lib
|
2009-03-17 14:48:15 +01:00
|
|
|
HOST_PATH=$(HOST_DIR)/bin:$(HOST_DIR)/usr/bin:$(PATH)
|
2009-03-16 21:58:08 +01:00
|
|
|
|
2009-01-19 10:18:46 +01:00
|
|
|
# hostcc version as an integer - E.G. 4.3.2 => 432
|
2010-12-07 21:09:56 +01:00
|
|
|
HOSTCC_VERSION:=$(shell $(HOSTCC_NOCCACHE) --version | \
|
2009-01-19 10:18:46 +01:00
|
|
|
sed -n 's/^.* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)[ ]*.*$$/\1\2\3/p')
|
|
|
|
|
2004-10-09 03:06:03 +02:00
|
|
|
TARGET_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \
|
2007-09-29 16:27:39 +02:00
|
|
|
AR="$(TARGET_AR)" \
|
|
|
|
AS="$(TARGET_AS)" \
|
2008-11-28 15:20:47 +01:00
|
|
|
LD="$(TARGET_LD)" \
|
2007-09-29 16:27:39 +02:00
|
|
|
NM="$(TARGET_NM)" \
|
2010-06-25 15:04:08 +02:00
|
|
|
CC="$(TARGET_CC)" \
|
|
|
|
GCC="$(TARGET_CC)" \
|
|
|
|
CPP="$(TARGET_CPP)" \
|
|
|
|
CXX="$(TARGET_CXX)" \
|
|
|
|
FC="$(TARGET_FC)" \
|
2007-09-29 16:27:39 +02:00
|
|
|
RANLIB="$(TARGET_RANLIB)" \
|
2012-11-07 06:01:20 +01:00
|
|
|
READELF="$(TARGET_READELF)" \
|
2007-09-29 16:27:39 +02:00
|
|
|
STRIP="$(TARGET_STRIP)" \
|
|
|
|
OBJCOPY="$(TARGET_OBJCOPY)" \
|
2010-11-25 18:38:31 +01:00
|
|
|
OBJDUMP="$(TARGET_OBJDUMP)" \
|
2007-06-20 13:26:36 +02:00
|
|
|
AR_FOR_BUILD="$(HOSTAR)" \
|
|
|
|
AS_FOR_BUILD="$(HOSTAS)" \
|
|
|
|
CC_FOR_BUILD="$(HOSTCC)" \
|
2007-09-28 21:49:13 +02:00
|
|
|
GCC_FOR_BUILD="$(HOSTCC)" \
|
2007-06-20 13:26:36 +02:00
|
|
|
CXX_FOR_BUILD="$(HOSTCXX)" \
|
2007-09-28 22:10:22 +02:00
|
|
|
FC_FOR_BUILD="$(HOSTFC)" \
|
2007-06-20 13:26:36 +02:00
|
|
|
LD_FOR_BUILD="$(HOSTLD)" \
|
2012-07-25 19:40:46 +02:00
|
|
|
CPPFLAGS_FOR_BUILD="$(HOST_CPPFLAGS)" \
|
2007-06-20 13:26:36 +02:00
|
|
|
CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \
|
2007-08-10 21:07:51 +02:00
|
|
|
CXXFLAGS_FOR_BUILD="$(HOST_CXXFLAGS)" \
|
2007-06-20 13:26:36 +02:00
|
|
|
LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" \
|
2007-09-28 22:10:22 +02:00
|
|
|
FCFLAGS_FOR_BUILD="$(HOST_FCFLAGS)" \
|
2007-09-29 16:27:39 +02:00
|
|
|
DEFAULT_ASSEMBLER="$(TARGET_AS)" \
|
|
|
|
DEFAULT_LINKER="$(TARGET_LD)" \
|
2012-07-25 19:40:46 +02:00
|
|
|
CPPFLAGS="$(TARGET_CPPFLAGS)" \
|
2010-06-25 23:26:04 +02:00
|
|
|
CFLAGS="$(TARGET_CFLAGS)" \
|
|
|
|
CXXFLAGS="$(TARGET_CXXFLAGS)" \
|
|
|
|
LDFLAGS="$(TARGET_LDFLAGS)" \
|
|
|
|
FCFLAGS="$(TARGET_FCFLAGS)" \
|
2009-03-19 09:30:20 +01:00
|
|
|
PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \
|
2010-02-21 13:16:28 +01:00
|
|
|
PERLLIB="$(HOST_DIR)/usr/lib/perl" \
|
2007-08-10 21:07:51 +02:00
|
|
|
STAGING_DIR="$(STAGING_DIR)"
|
2007-06-20 13:26:36 +02:00
|
|
|
|
2010-02-20 18:20:38 +01:00
|
|
|
TARGET_MAKE_ENV=PATH=$(TARGET_PATH) \
|
2010-02-21 13:16:28 +01:00
|
|
|
PERLLIB="$(HOST_DIR)/usr/lib/perl"
|
2009-12-15 13:39:40 +01:00
|
|
|
|
2009-03-17 14:48:15 +01:00
|
|
|
HOST_CONFIGURE_OPTS=PATH=$(HOST_PATH) \
|
2007-09-28 21:49:13 +02:00
|
|
|
AR="$(HOSTAR)" \
|
|
|
|
AS="$(HOSTAS)" \
|
Solve the host tools relying on host libraries problem
We build host tools installed in $(HOST_DIR)/usr/bin, and some of them
rely on host libraries in $(HOST_DIR)/usr/lib. So when these host
tools are executed, they need to find the host libraries, which are
not installed in a default location.
In c1b6242fdcf2cff7ebf09fec4cc1be58963e8427 we tried to use
LD_LIBRARY_PATH when building target packages to solve this
problem. Unfortunately, LD_LIBRARY_PATH is not only used to find
libraries at run-time, but also at compile time. So it leads the build
of some packages, such as icu, to fail.
Therefore, in 0d1830b07db4ebfd14e77a258de6fb391e57e960, we reverted
the LD_LIBRARY_PATH idea.
The other option to solve this problem was to hardcode a RPATH value
in the host binaries that would reference the location of host
libraries. We added this -Wl,-rpath option to HOST_CFLAGS in
6b939d40f6a29a43277566adc9d4312d49cb3abf. Unfortunately, this caused
problems when building binutils, as reported in bug 1789 so this
change was reverted in e1a7d916e9eeaa215551740de40c055130d6c073.
Then, we tried to use -Wl,-rpath in HOST_LDFLAGS, but it was causing
problems with fakeroot not recognizing 'ld' as the GNU linker, since
the -Wl,-rpath cannot be understood by 'ld' directly, only by 'gcc'.
This commit is a new attempt at using HOST_LDFLAGS, but in this case
we modified the definition of HOST_LD to *not* contain
HOST_LDFLAGS. LDFLAGS are being set separatly. It solved the fakeroot
issue and was tested against nearly 300 packages of Buildroot.
For more details on this story, see
http://lists.busybox.net/pipermail/buildroot/2010-June/035580.html
http://lists.busybox.net/pipermail/buildroot/2010-June/035581.html
http://lists.busybox.net/pipermail/buildroot/2010-June/035586.html
http://lists.busybox.net/pipermail/buildroot/2010-June/035609.html
https://bugs.busybox.net/show_bug.cgi?id=1789
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-06-25 14:15:20 +02:00
|
|
|
LD="$(HOSTLD)" \
|
2007-09-28 21:49:13 +02:00
|
|
|
NM="$(HOSTNM)" \
|
2010-06-25 14:25:42 +02:00
|
|
|
CC="$(HOSTCC)" \
|
|
|
|
GCC="$(HOSTCC)" \
|
|
|
|
CXX="$(HOSTCXX)" \
|
|
|
|
CPP="$(HOSTCPP)" \
|
2012-07-25 19:40:46 +02:00
|
|
|
CPPFLAGS="$(HOST_CPPFLAGS)" \
|
2010-06-25 14:25:42 +02:00
|
|
|
CFLAGS="$(HOST_CFLAGS)" \
|
|
|
|
CXXFLAGS="$(HOST_CXXFLAGS)" \
|
Solve the host tools relying on host libraries problem
We build host tools installed in $(HOST_DIR)/usr/bin, and some of them
rely on host libraries in $(HOST_DIR)/usr/lib. So when these host
tools are executed, they need to find the host libraries, which are
not installed in a default location.
In c1b6242fdcf2cff7ebf09fec4cc1be58963e8427 we tried to use
LD_LIBRARY_PATH when building target packages to solve this
problem. Unfortunately, LD_LIBRARY_PATH is not only used to find
libraries at run-time, but also at compile time. So it leads the build
of some packages, such as icu, to fail.
Therefore, in 0d1830b07db4ebfd14e77a258de6fb391e57e960, we reverted
the LD_LIBRARY_PATH idea.
The other option to solve this problem was to hardcode a RPATH value
in the host binaries that would reference the location of host
libraries. We added this -Wl,-rpath option to HOST_CFLAGS in
6b939d40f6a29a43277566adc9d4312d49cb3abf. Unfortunately, this caused
problems when building binutils, as reported in bug 1789 so this
change was reverted in e1a7d916e9eeaa215551740de40c055130d6c073.
Then, we tried to use -Wl,-rpath in HOST_LDFLAGS, but it was causing
problems with fakeroot not recognizing 'ld' as the GNU linker, since
the -Wl,-rpath cannot be understood by 'ld' directly, only by 'gcc'.
This commit is a new attempt at using HOST_LDFLAGS, but in this case
we modified the definition of HOST_LD to *not* contain
HOST_LDFLAGS. LDFLAGS are being set separatly. It solved the fakeroot
issue and was tested against nearly 300 packages of Buildroot.
For more details on this story, see
http://lists.busybox.net/pipermail/buildroot/2010-June/035580.html
http://lists.busybox.net/pipermail/buildroot/2010-June/035581.html
http://lists.busybox.net/pipermail/buildroot/2010-June/035586.html
http://lists.busybox.net/pipermail/buildroot/2010-June/035609.html
https://bugs.busybox.net/show_bug.cgi?id=1789
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-06-25 14:15:20 +02:00
|
|
|
LDFLAGS="$(HOST_LDFLAGS)" \
|
2010-05-01 14:10:28 +02:00
|
|
|
PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \
|
|
|
|
PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \
|
2009-03-19 09:30:20 +01:00
|
|
|
PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \
|
2011-01-30 00:33:00 +01:00
|
|
|
PKG_CONFIG_SYSROOT_DIR="/" \
|
2011-03-27 21:20:04 +02:00
|
|
|
PKG_CONFIG_LIBDIR="$(HOST_DIR)/usr/lib/pkgconfig:$(HOST_DIR)/usr/share/pkgconfig" \
|
2010-05-01 14:10:28 +02:00
|
|
|
PERLLIB="$(HOST_DIR)/usr/lib/perl" \
|
|
|
|
LD_LIBRARY_PATH="$(HOST_DIR)/usr/lib:$(LD_LIBRARY_PATH)"
|
2009-08-25 14:03:33 +02:00
|
|
|
|
|
|
|
HOST_MAKE_ENV=PATH=$(HOST_PATH) \
|
2010-02-20 18:20:38 +01:00
|
|
|
LD_LIBRARY_PATH="$(HOST_DIR)/usr/lib:$(LD_LIBRARY_PATH)" \
|
2009-08-25 14:03:33 +02:00
|
|
|
PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \
|
2012-04-04 14:50:19 +02:00
|
|
|
PKG_CONFIG_SYSROOT_DIR="/" \
|
2010-02-21 13:16:28 +01:00
|
|
|
PKG_CONFIG_LIBDIR="$(HOST_DIR)/usr/lib/pkgconfig" \
|
|
|
|
PERLLIB="$(HOST_DIR)/usr/lib/perl"
|
2007-06-20 13:26:36 +02:00
|
|
|
|
2009-03-17 14:48:15 +01:00
|
|
|
|
2007-06-27 11:48:23 +02:00
|
|
|
#######################################################################
|
|
|
|
# settings we need to pass to configure
|
|
|
|
|
|
|
|
# does unaligned access trap?
|
|
|
|
BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=yes
|
|
|
|
ifeq ($(BR2_i386),y)
|
|
|
|
BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
|
|
|
|
endif
|
|
|
|
ifeq ($(BR2_x86_64),y)
|
|
|
|
BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
|
|
|
|
endif
|
|
|
|
ifeq ($(BR2_m68k),y)
|
|
|
|
BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
|
|
|
|
endif
|
|
|
|
ifeq ($(BR2_powerpc)$(BR2_ENDIAN),yBIG)
|
|
|
|
BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
|
|
|
|
endif
|
|
|
|
|
2007-06-27 14:01:27 +02:00
|
|
|
ifeq ($(BR2_ENDIAN),"BIG")
|
|
|
|
BR2_AC_CV_C_BIGENDIAN=ac_cv_c_bigendian=yes
|
|
|
|
else
|
|
|
|
BR2_AC_CV_C_BIGENDIAN=ac_cv_c_bigendian=no
|
|
|
|
endif
|
|
|
|
|
2007-06-27 11:48:23 +02:00
|
|
|
TARGET_CONFIGURE_ARGS= \
|
|
|
|
$(BR2_AC_CV_TRAP_CHECK) \
|
2007-06-27 14:01:27 +02:00
|
|
|
ac_cv_func_mmap_fixed_mapped=yes \
|
|
|
|
ac_cv_func_memcmp_working=yes \
|
2008-11-28 15:20:47 +01:00
|
|
|
ac_cv_have_decl_malloc=yes \
|
|
|
|
gl_cv_func_malloc_0_nonnull=yes \
|
|
|
|
ac_cv_func_malloc_0_nonnull=yes \
|
|
|
|
ac_cv_func_calloc_0_nonnull=yes \
|
|
|
|
ac_cv_func_realloc_0_nonnull=yes \
|
2011-05-03 15:23:40 +02:00
|
|
|
lt_cv_sys_lib_search_path_spec="" \
|
2007-06-27 14:01:27 +02:00
|
|
|
$(BR2_AC_CV_C_BIGENDIAN)
|
2004-10-09 03:06:03 +02:00
|
|
|
|
2007-06-27 11:48:23 +02:00
|
|
|
#######################################################################
|
|
|
|
|
2006-10-17 18:57:02 +02:00
|
|
|
ifeq ($(BR2_ENABLE_LOCALE),y)
|
2004-10-09 03:06:03 +02:00
|
|
|
DISABLE_NLS:=
|
|
|
|
else
|
|
|
|
DISABLE_NLS:=--disable-nls
|
|
|
|
endif
|
|
|
|
|
2006-12-21 14:51:53 +01:00
|
|
|
ifneq ($(BR2_LARGEFILE),y)
|
|
|
|
DISABLE_LARGEFILE= --disable-largefile
|
|
|
|
endif
|
|
|
|
|
2009-01-17 11:11:12 +01:00
|
|
|
ifneq ($(BR2_HAVE_DOCUMENTATION),y)
|
2012-12-12 05:07:22 +01:00
|
|
|
# The configure option varies, but since unknown options are ignored
|
|
|
|
# we can pass all of them.
|
|
|
|
DISABLE_DOCUMENTATION = \
|
|
|
|
--disable-gtk-doc \
|
|
|
|
--disable-doc \
|
|
|
|
--disable-docs \
|
|
|
|
--disable-documentation \
|
|
|
|
--with-xmlto=no \
|
|
|
|
--with-fop=no
|
2009-01-17 11:11:12 +01:00
|
|
|
endif
|
|
|
|
|
2012-04-24 22:32:55 +02:00
|
|
|
ifeq ($(BR2_INET_IPV6),y)
|
|
|
|
DISABLE_IPV6= --enable-ipv6
|
|
|
|
else
|
2007-06-26 18:34:45 +02:00
|
|
|
DISABLE_IPV6= --disable-ipv6
|
|
|
|
endif
|
|
|
|
|
2010-12-13 17:27:41 +01:00
|
|
|
ifneq ($(BR2_INSTALL_LIBSTDCPP),y)
|
2009-05-04 21:19:59 +02:00
|
|
|
TARGET_CONFIGURE_OPTS+=CXX=false
|
2006-12-21 14:51:53 +01:00
|
|
|
endif
|
2004-10-09 03:06:03 +02:00
|
|
|
|
2008-03-11 19:15:30 +01:00
|
|
|
ifeq ($(BR2_ENABLE_DEBUG),y)
|
|
|
|
ENABLE_DEBUG:=--enable-debug
|
|
|
|
else
|
|
|
|
ENABLE_DEBUG:=
|
|
|
|
endif
|
2007-06-20 13:26:36 +02:00
|
|
|
|
package/autotools: add --{enable,disable}-{shared,static} automatically
For target packages, depending on BR2_PREFER_STATIC_LIB, add the
correct combination of --{enable,disable}-{shared,static} flags to
./configure calls.
* When BR2_PREFER_STATIC_LIB is enabled, we pass --enable-static
--disable-shared.
* When BR2_PREFER_STATIC_LIB is disabled, we pass --enable-static
--enable-shared. We enable static libraries since they can still be
useful to statically link applications against some libraries
(sometimes it is useful for size reasons). Static libraries are
anyway only installed in the STAGING_DIR, so it doesn't increase in
any way the size of the TARGET_DIR.
For host packages, always pass --enable-shared and --disable-static.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-05-30 23:57:02 +02:00
|
|
|
ifeq ($(BR2_PREFER_STATIC_LIB),y)
|
|
|
|
SHARED_STATIC_LIBS_OPTS=--enable-static --disable-shared
|
2012-11-05 07:55:26 +01:00
|
|
|
TARGET_LDFLAGS += --static
|
package/autotools: add --{enable,disable}-{shared,static} automatically
For target packages, depending on BR2_PREFER_STATIC_LIB, add the
correct combination of --{enable,disable}-{shared,static} flags to
./configure calls.
* When BR2_PREFER_STATIC_LIB is enabled, we pass --enable-static
--disable-shared.
* When BR2_PREFER_STATIC_LIB is disabled, we pass --enable-static
--enable-shared. We enable static libraries since they can still be
useful to statically link applications against some libraries
(sometimes it is useful for size reasons). Static libraries are
anyway only installed in the STAGING_DIR, so it doesn't increase in
any way the size of the TARGET_DIR.
For host packages, always pass --enable-shared and --disable-static.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-05-30 23:57:02 +02:00
|
|
|
else
|
|
|
|
SHARED_STATIC_LIBS_OPTS=--enable-static --enable-shared
|
|
|
|
endif
|
|
|
|
|
2012-04-17 16:45:19 +02:00
|
|
|
include package/pkg-utils.mk
|
|
|
|
include package/pkg-download.mk
|
2012-07-06 00:06:46 +02:00
|
|
|
include package/pkg-autotools.mk
|
|
|
|
include package/pkg-cmake.mk
|
|
|
|
include package/pkg-generic.mk
|