mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
* [ptxdist] [PATCH 0/9] Add preliminary multilib support for x86_64
@ 2012-03-18 19:10 Remy Bohmer
  2012-03-18 19:10 ` [ptxdist] [PATCH 1/9] [x86_64] Add x86_64 architecture strings Remy Bohmer
                   ` (8 more replies)
  0 siblings, 9 replies; 16+ messages in thread
From: Remy Bohmer @ 2012-03-18 19:10 UTC (permalink / raw)
  To: ptxdist

This complete series makes it possible to use a multilib based compiler
toolchain for x86_64 to deliver a filesystem properly configured to be
used in multilib environments. Notice that currently still only 1 C-library
is being installed in the target root filesystem. A 2nd C-library
configuration will be added in future changesets.

Regression tests have been executed to make sure the series does not break
existing use of single lib toolchains.

It has been tested with a Sourcery Codebench lite toolchain.
These can be found here:
https://sourcery.mentor.com/sgpp/lite/ia32/portal/subscription10027lite=IA32
System boots properly and all runtime linking appears to work as expected.
If you want to build a filesystem with this toolchain you need to set
the following items in your platformconfig (or read the toolchain manuals):
* PTXCONF_TARGET_EXTRA_CPPFLAGS="-march=core2 -m64"
* PTXCONF_TARGET_EXTRA_CFLAGS="-march=core2 -m64"
* PTXCONF_TARGET_EXTRA_CXXFLAGS="-march=core2 -m64"
* PTXCONF_TARGET_EXTRA_LDFLAGS="-march=core2 -m64"
From here you can run ptxdist as usual.

Remy Bohmer (9):
  [x86_64] Add x86_64 architecture strings.
  [x86_64] libgcc need to be install in /lib64 instead of /lib
  [x86_64,multilib] Remove all hardcoded paths from glibc.make
  [x86_64,multilib] Make packages install their libraries at the right place
  [x86_64,multilib] Install Zlib libraries at the right place
  [x86_64,multilib] Install Ncurses libraries at the right place
  [x86_64,multilib] Install Util-linux-ng libraries at the right place
  [x86_64,multilib] Install Readline libraries at the right place
  [x86_64,multilib] Install Procps libraries at the right place

 platforms/architecture.in         |   15 +++++++++++++--
 rules/gcclibs.make                |    6 +++---
 rules/glibc.make                  |   23 +++++++++++------------
 rules/ncurses.make                |   30 +++++++++++++++---------------
 rules/post/install.make           |   18 ++++++------------
 rules/pre/Rules.make              |   11 ++++++++++-
 rules/procps.make                 |    5 ++---
 rules/readline.make               |    3 ++-
 rules/util-linux-ng.make          |    1 +
 rules/zlib.make                   |    3 ++-
 scripts/install_copy_toolchain.sh |   20 +++++++++++++-------
 scripts/lib/ptxd_make_00-init.sh  |   30 ++++++++++++++++++++++++++----
 scripts/lib/ptxd_make_xpkg_pkg.sh |    4 ++--
 13 files changed, 106 insertions(+), 63 deletions(-)

-- 
1.7.5.4


-- 
ptxdist mailing list
ptxdist@pengutronix.de

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ptxdist] [PATCH 1/9] [x86_64] Add x86_64 architecture strings.
  2012-03-18 19:10 [ptxdist] [PATCH 0/9] Add preliminary multilib support for x86_64 Remy Bohmer
@ 2012-03-18 19:10 ` Remy Bohmer
  2012-03-18 19:10 ` [ptxdist] [PATCH 2/9] [x86_64] libgcc need to be install in /lib64 instead of /lib Remy Bohmer
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Remy Bohmer @ 2012-03-18 19:10 UTC (permalink / raw)
  To: ptxdist

The ARCH_X86_64 architecture is added as subtype of ARCH_X86 since it
basically is the same architecture, and a mix of both architectures
will be required to allow multilib support in a later commit.

Signed-off-by: Remy Bohmer <linux@bohmer.net>
---
 platforms/architecture.in |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/platforms/architecture.in b/platforms/architecture.in
index ed36e8a..f00108e 100644
--- a/platforms/architecture.in
+++ b/platforms/architecture.in
@@ -181,6 +181,16 @@ choice
 
 endchoice
 
+if ARCH_X86
+#
+# 32/64 bits platform
+#
+config ARCH_X86_64
+	bool "64 bit architecture"
+	help
+	  Select this option if you build for a 64 bit architecture.
+
+endif
 
 #
 # endianess
@@ -263,7 +273,7 @@ config HAS_MMU
 config SIZEOF_LONG_DOUBLE
 	string
 	default "12" if ARCH_X86
-#	default "16" if ARCH_X86_64
+	default "16" if ARCH_X86_64
 	default "8"
 	# FIXME: add more values
 
@@ -277,7 +287,8 @@ config ARCH_STRING
 	default "avr32"			if ARCH_AVR32
 	default "alpha"			if ARCH_ALPHA
 	default "blackfin"		if ARCH_BLACKFIN
-	default "i386"			if ARCH_X86
+	default "i386"			if ARCH_X86 && !ARCH_X86_64
+	default "x86_64"		if ARCH_X86 && ARCH_X86_64
 	default "i386"			if ARCH_MINGW
 	default "m68k"			if ARCH_M68K
 	default "ppc"			if ARCH_PPC
-- 
1.7.5.4


-- 
ptxdist mailing list
ptxdist@pengutronix.de

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ptxdist] [PATCH 2/9] [x86_64] libgcc need to be install in /lib64 instead of /lib
  2012-03-18 19:10 [ptxdist] [PATCH 0/9] Add preliminary multilib support for x86_64 Remy Bohmer
  2012-03-18 19:10 ` [ptxdist] [PATCH 1/9] [x86_64] Add x86_64 architecture strings Remy Bohmer
@ 2012-03-18 19:10 ` Remy Bohmer
  2012-03-18 19:10 ` [ptxdist] [PATCH 3/9] [x86_64, multilib] Remove all hardcoded paths from glibc.make Remy Bohmer
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Remy Bohmer @ 2012-03-18 19:10 UTC (permalink / raw)
  To: ptxdist

Let install_copy_toolchain itself figure out where to install the
libgcc libraries and its friends.

Signed-off-by: Remy Bohmer <linux@bohmer.net>
---
 rules/gcclibs.make |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/rules/gcclibs.make b/rules/gcclibs.make
index 60c474c..a1079c2 100644
--- a/rules/gcclibs.make
+++ b/rules/gcclibs.make
@@ -36,15 +36,15 @@ $(STATEDIR)/gcclibs.targetinstall:
 	@$(call install_fixup, gcclibs,DESCRIPTION,missing)
 
 ifdef PTXCONF_GCCLIBS_GCC_S
-	@$(call install_copy_toolchain_lib, gcclibs, libgcc_s.so, /lib)
+	@$(call install_copy_toolchain_lib, gcclibs, libgcc_s.so)
 endif
 
 ifdef PTXCONF_GCCLIBS_CXX
-	@$(call install_copy_toolchain_lib, gcclibs, libstdc++.so, /usr/lib)
+	@$(call install_copy_toolchain_lib, gcclibs, libstdc++.so)
 endif
 
 ifdef PTXCONF_GCCLIBS_GCJ
-	@$(call install_copy_toolchain_lib, gcclibs, libgcj.so, /usr/lib)
+	@$(call install_copy_toolchain_lib, gcclibs, libgcj.so)
 endif
 
 	@$(call install_finish, gcclibs)
-- 
1.7.5.4


-- 
ptxdist mailing list
ptxdist@pengutronix.de

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ptxdist] [PATCH 3/9] [x86_64, multilib] Remove all hardcoded paths from glibc.make
  2012-03-18 19:10 [ptxdist] [PATCH 0/9] Add preliminary multilib support for x86_64 Remy Bohmer
  2012-03-18 19:10 ` [ptxdist] [PATCH 1/9] [x86_64] Add x86_64 architecture strings Remy Bohmer
  2012-03-18 19:10 ` [ptxdist] [PATCH 2/9] [x86_64] libgcc need to be install in /lib64 instead of /lib Remy Bohmer
@ 2012-03-18 19:10 ` Remy Bohmer
  2012-03-18 19:10 ` [ptxdist] [PATCH 4/9] [x86_64, multilib] Make packages install their libraries at the right place Remy Bohmer
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Remy Bohmer @ 2012-03-18 19:10 UTC (permalink / raw)
  To: ptxdist

These hardcoded paths do not work for a multilib environment where
libraries are typically installed in /lib64 for x86-64 instead of /lib
All correct paths can be found by interrogating the compiler toolchain
for the location of these files.

Signed-off-by: Remy Bohmer <linux@bohmer.net>
---
 rules/glibc.make                  |   23 +++++++++++------------
 rules/post/install.make           |   18 ++++++------------
 scripts/install_copy_toolchain.sh |   20 +++++++++++++-------
 3 files changed, 30 insertions(+), 31 deletions(-)

diff --git a/rules/glibc.make b/rules/glibc.make
index 2de7a13..0d110ef 100644
--- a/rules/glibc.make
+++ b/rules/glibc.make
@@ -104,33 +104,32 @@ ifdef PTXCONF_GLIBC_NSL
 endif
 
 ifdef PTXCONF_GLIBC_GCONF_BASE
-	@$(call install_copy, glibc, 0, 0, 0755, /usr/lib/gconv)
-	@$(call install_copy_toolchain_lib, glibc, gconv/gconv-modules, /usr/lib/gconv, n)
+	@$(call install_copy_toolchain_lib, glibc, gconv/gconv-modules, n)
 endif
 
 ifdef PTXCONF_GLIBC_GCONV_DEF
-	@$(call install_copy_toolchain_lib, glibc, gconv/ISO8859-1.so, /usr/lib/gconv)
-	@$(call install_copy_toolchain_lib, glibc, gconv/ISO8859-15.so, /usr/lib/gconv)
+	@$(call install_copy_toolchain_lib, glibc, gconv/ISO8859-1.so)
+	@$(call install_copy_toolchain_lib, glibc, gconv/ISO8859-15.so)
 endif
 
 ifdef PTXCONF_GLIBC_GCONV_UTF
-	@$(call install_copy_toolchain_lib, glibc, gconv/UNICODE.so, /usr/lib/gconv)
-	@$(call install_copy_toolchain_lib, glibc, gconv/UTF-16.so, /usr/lib/gconv)
-	@$(call install_copy_toolchain_lib, glibc, gconv/UTF-32.so, /usr/lib/gconv)
-	@$(call install_copy_toolchain_lib, glibc, gconv/UTF-7.so, /usr/lib/gconv)
+	@$(call install_copy_toolchain_lib, glibc, gconv/UNICODE.so)
+	@$(call install_copy_toolchain_lib, glibc, gconv/UTF-16.so)
+	@$(call install_copy_toolchain_lib, glibc, gconv/UTF-32.so)
+	@$(call install_copy_toolchain_lib, glibc, gconv/UTF-7.so)
 endif
 
 ifdef PTXCONF_GLIBC_GCONV_ZH
-	@$(call install_copy_toolchain_lib, glibc, gconv/GBBIG5.so, /usr/lib/gconv)
-	@$(call install_copy_toolchain_lib, glibc, gconv/GB18030.so, /usr/lib/gconv)
+	@$(call install_copy_toolchain_lib, glibc, gconv/GBBIG5.so)
+	@$(call install_copy_toolchain_lib, glibc, gconv/GB18030.so)
 endif
 
 ifdef PTXCONF_GLIBC_I18N_BIN_LOCALE
-	@$(call install_copy_toolchain_usr, glibc, bin/locale)
+	@$(call install_copy_toolchain_lib, glibc, bin/locale)
 endif
 
 ifdef PTXCONF_GLIBC_I18N_BIN_LOCALEDEF
-	@$(call install_copy_toolchain_usr, glibc, bin/localedef)
+	@$(call install_copy_toolchain_lib, glibc, bin/localedef)
 endif
 
 ifdef PTXCONF_GLIBC_I18N_RAWDATA
diff --git a/rules/post/install.make b/rules/post/install.make
index 190ec28..cfc73a4 100644
--- a/rules/post/install.make
+++ b/rules/post/install.make
@@ -300,18 +300,15 @@ install_script_replace = \
 #
 # $1: xpkg label
 # $2: source
-# $3: destination
-# $4: strip (y|n)	default is to strip
+# $3: strip (y|n)	default is to strip
 #
 install_copy_toolchain_lib =									\
 	XPKG=$(subst _,-,$(strip $(1)));							\
 	LIB="$(strip $2)";									\
-	DST="$(strip $3)";									\
-	STRIP="$(strip $4)";									\
-	test "$${DST}" != "" && DST="-d $${DST}";						\
+	STRIP="$(strip $3)";									\
 	$(call install_check, install_copy_toolchain_lib);					\
 	${CROSS_ENV_CC} $(CROSS_ENV_STRIP) PKGDIR="$(PKGDIR)"					\
-		$(SCRIPTSDIR)/install_copy_toolchain.sh -p "$${XPKG}" -l "$${LIB}" $${DST} -s "$${STRIP}"
+		$(SCRIPTSDIR)/install_copy_toolchain.sh -p "$${XPKG}" -l "$${LIB}" -s "$${STRIP}"
 
 #
 # install_copy_toolchain_dl
@@ -331,18 +328,15 @@ install_copy_toolchain_dl =									\
 #
 # $1: xpkg label
 # $2: source
-# $3: destination
-# $4: strip (y|n)	default is to strip
+# $3: strip (y|n)	default is to strip
 #
 install_copy_toolchain_usr =									\
 	XPKG=$(subst _,-,$(strip $(1)));							\
 	LIB="$(strip $2)";									\
-	DST="$(strip $3)";									\
-	STRIP="$(strip $4)";									\
-	test "$${DST}" != "" && DST="-d $${DST}";						\
+	STRIP="$(strip $3)";									\
 	$(call install_check, install_copy_toolchain_other);					\
 	${CROSS_ENV_CC} $(CROSS_ENV_STRIP) PKGDIR="$(PKGDIR)"					\
-		$(SCRIPTSDIR)/install_copy_toolchain.sh -p "$${XPKG}" -u "$${LIB}" $${DST} -s "$${STRIP}"
+		$(SCRIPTSDIR)/install_copy_toolchain.sh -p "$${XPKG}" -u "$${LIB}" -s "$${STRIP}"
 
 #
 # install_link
diff --git a/scripts/install_copy_toolchain.sh b/scripts/install_copy_toolchain.sh
index 726cc61..27e0a9e 100755
--- a/scripts/install_copy_toolchain.sh
+++ b/scripts/install_copy_toolchain.sh
@@ -50,7 +50,7 @@ ptxd_abs2rel() {
 # out: $lib_path
 #
 ptxd_get_lib_path() {
-    local lib lib_dir lib_path extra_cflags
+    local lib lib_dir lib_path extra_cppflags extra_cflags
 
     lib="${1}"
     extra_cppflags="$(ptxd_get_ptxconf PTXCONF_TARGET_EXTRA_CPPFLAGS)"
@@ -78,7 +78,7 @@ ptxd_get_lib_path() {
 # out: dynamic linker name
 #
 ptxd_get_dl() {
-    local dl
+    local dl extra_cppflags extra_cflags
     extra_cppflags="$(ptxd_get_ptxconf PTXCONF_TARGET_EXTRA_CPPFLAGS)"
     extra_cflags="$(ptxd_get_ptxconf PTXCONF_TARGET_EXTRA_CFLAGS)"
 
@@ -106,7 +106,7 @@ ptxd_split_lib_prefix_sysroot_eval() {
     lib_dir="${lib_path%/${lib}}"		# abs path to that lib
 
     # try to identify sysroot part of that path
-    for prefix in {/usr,}/lib{64,32,}{/tls,} ""; do
+    for prefix in {/usr,}/lib{64,32,}{/tls,/gconv,/bin,} ""; do
 	tmp="${lib_dir%${prefix}}"
 	if test "${lib_dir}" != "${tmp}"; then
 	    break
@@ -241,10 +241,13 @@ ptxd_install_toolchain_lib() {
 
 
 _ptxd_get_sysroot_usr_by_sysroot() {
-    local sysroot
+    local sysroot extra_cppflags extra_cflags
+
+    extra_cppflags="$(ptxd_get_ptxconf PTXCONF_TARGET_EXTRA_CPPFLAGS)"
+    extra_cflags="$(ptxd_get_ptxconf PTXCONF_TARGET_EXTRA_CFLAGS)"
 
     sysroot="$(echo 'int main(void){return 0;}' | \
-	${CC} -x c -o /dev/null -v - 2>&1 | \
+	${CC} ${extra_cppflags} ${extra_cflags} -x c -o /dev/null -v - 2>&1 | \
 	sed -ne "/.*collect2.*/s,.*--sysroot=\([^[:space:]]*\).*,\1,p")"
 
     test -n "${sysroot}" || return 1
@@ -254,9 +257,12 @@ _ptxd_get_sysroot_usr_by_sysroot() {
 
 
 _ptxd_get_sysroot_usr_by_progname() {
-    local prog_name
+    local prog_name extra_cppflags extra_cflags
+
+    extra_cppflags="$(ptxd_get_ptxconf PTXCONF_TARGET_EXTRA_CPPFLAGS)"
+    extra_cflags="$(ptxd_get_ptxconf PTXCONF_TARGET_EXTRA_CFLAGS)"
 
-    prog_name="$(${CC} -print-prog-name=gcc)"
+    prog_name="$(${CC} ${extra_cppflags} ${extra_cflags} -print-prog-name=gcc)"
     case "${prog_name}" in
 	/*)
 	    prog_name="$(ptxd_abspath ${prog_name%/bin/gcc})"
-- 
1.7.5.4


-- 
ptxdist mailing list
ptxdist@pengutronix.de

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ptxdist] [PATCH 4/9] [x86_64, multilib] Make packages install their libraries at the right place
  2012-03-18 19:10 [ptxdist] [PATCH 0/9] Add preliminary multilib support for x86_64 Remy Bohmer
                   ` (2 preceding siblings ...)
  2012-03-18 19:10 ` [ptxdist] [PATCH 3/9] [x86_64, multilib] Remove all hardcoded paths from glibc.make Remy Bohmer
@ 2012-03-18 19:10 ` Remy Bohmer
  2012-03-19 14:58   ` Remy Bohmer
  2012-03-19 16:17   ` Michael Olbrich
  2012-03-18 19:10 ` [ptxdist] [PATCH 5/9] [x86_64, multilib] Install Zlib " Remy Bohmer
                   ` (4 subsequent siblings)
  8 siblings, 2 replies; 16+ messages in thread
From: Remy Bohmer @ 2012-03-18 19:10 UTC (permalink / raw)
  To: ptxdist

While cross-compiling for x86_64 in a multilib configuration we need to
install the libraries conform the Filesystem Hierarchy Standard (FHS).
Summarised this will be for multilib:
* All libraries compiled for and used in 64-bit applications need to be
  installed in /lib64 or /usr/lib64.
* All libraries compiled for and used in 32-bit applications need to be
  installed in /lib or /usr/lib.
* All executables will still find its way in the regular /bin and /sbin
  paths.
* The Operating System itself and all its libraries should only be compiled
  in 64 bit mode. It should not be a mix between 32 and 64 bit libraries.
  32 bit support will only contain the libraries that are required by
  32-bit-applications to link against.

This is also conform what many distros derived from Redhat have in their
setup. Note that Debian based distros follow a somewhat different setup.

Note that we use the compiler toolchain to tell us at which paths we
need to install the libraries. This means that if you build for a x86_64
target _without_ multilib support the libraries will likely end up in the
classical /lib and /usr/lib directories, but that is completely steered
by the compiler toolchain configuration. (it follows the location where
the corresponding dynamic linker is expected to be installed)

So, this change makes ptxdist follow the sysroot of the compiler toolchain
more such that preliminary multilib support can be achieved. Preliminary
in the sense that only still one C-library is being installed.
In another changeset the support for a 2nd C-library installation will be
added. At least after this change (and a few subsequent ptxdist makefile
fixes) the /lib and /usr/lib area will only contain the contents that belong
there in multilib environment.

Signed-off-by: Remy Bohmer <linux@bohmer.net>
---
 rules/pre/Rules.make              |   11 ++++++++++-
 scripts/lib/ptxd_make_00-init.sh  |   30 ++++++++++++++++++++++++++----
 scripts/lib/ptxd_make_xpkg_pkg.sh |    4 ++--
 3 files changed, 38 insertions(+), 7 deletions(-)

diff --git a/rules/pre/Rules.make b/rules/pre/Rules.make
index 1d6da52..d6d40e0 100644
--- a/rules/pre/Rules.make
+++ b/rules/pre/Rules.make
@@ -174,6 +174,15 @@ CROSS_ENV_PROGS := \
 	$(CROSS_ENV_CPP_FOR_BUILD) \
 	$(CROSS_ENV_LINK_FOR_BUILD)
 
+# Outputs 'lib' or 'lib64', derived from the ld-linux.so.2 from the compiler toolchain
+CROSS_LIB_DIR	:= $(shell   \
+	dl="$$(echo 'int main(void){return 0;}' | \
+	${CROSS_CC} ${CROSS_CPPFLAGS} ${CROSS_CFLAGS} -x c -o /dev/null -v - 2>&1 | \
+	sed -n -e 's/.* -dynamic-linker \([^ ]*\).*/\1/p')"; \
+	lib_dir="$${dl%%/ld-linux*}"; \
+	echo "$${lib_dir\#/}" \
+)
+
 #
 # prepare to use pkg-config with wrapper which takes care of
 # $(PTXDIST_SYSROOT_TARGET). The wrapper's magic doesn't work when
@@ -266,7 +275,7 @@ CROSS_ENV := \
 #
 
 CROSS_AUTOCONF_SYSROOT_USR := \
-	--prefix=/usr --sysconfdir=/etc --localstatedir=/var
+	--prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=/usr/$(CROSS_LIB_DIR)
 
 CROSS_AUTOCONF_SYSROOT_ROOT := \
 	--prefix=
diff --git a/scripts/lib/ptxd_make_00-init.sh b/scripts/lib/ptxd_make_00-init.sh
index da72d29..d08cb92 100644
--- a/scripts/lib/ptxd_make_00-init.sh
+++ b/scripts/lib/ptxd_make_00-init.sh
@@ -63,7 +63,10 @@ ptxd_init_arch() {
 # out:	PTXDIST_SYSROOT_TOOLCHAIN
 #
 ptxd_init_sysroot_toolchain() {
-    local compiler_prefix="$(ptxd_get_ptxconf PTXCONF_COMPILER_PREFIX)"
+    local compiler_prefix extra_cppflags extra_cflags
+    compiler_prefix="$(ptxd_get_ptxconf PTXCONF_COMPILER_PREFIX)"
+    extra_cppflags="$(ptxd_get_ptxconf PTXCONF_TARGET_EXTRA_CPPFLAGS)"
+    extra_cflags="$(ptxd_get_ptxconf PTXCONF_TARGET_EXTRA_CFLAGS)"
 
     #
     # no compiler prefix specified means using plain "gcc"
@@ -75,7 +78,7 @@ ptxd_init_sysroot_toolchain() {
 	local sysroot
 
 	sysroot="$(echo 'int main(void){return 0;}' | \
-	${compiler_prefix}gcc -x c -o /dev/null -v - 2>&1 | \
+	${compiler_prefix}gcc ${extra_cppflags} ${extra_cflags} -x c -o /dev/null -v - 2>&1 | \
 	sed -ne "/.*collect2.*/s,.*--sysroot=\([^[:space:]]*\).*,\1,p" && \
 	check_pipe_status)"
 
@@ -119,6 +122,22 @@ ptxd_init_collectionconfig() {
 
 
 #
+# out: 'lib' or 'lib64', derived from the ld-linux.so.2 from the compiler toolchain
+#
+ptxd_get_lib_dir() {
+    local dl lib_dir extra_cppflags extra_cflags
+    compiler_prefix="$(ptxd_get_ptxconf PTXCONF_COMPILER_PREFIX)"
+    extra_cppflags="$(ptxd_get_ptxconf PTXCONF_TARGET_EXTRA_CPPFLAGS)"
+    extra_cflags="$(ptxd_get_ptxconf PTXCONF_TARGET_EXTRA_CFLAGS)"
+
+    dl="$(echo 'int main(void){return 0;}' | \
+	${compiler_prefix}gcc ${extra_cppflags} ${extra_cflags} -x c -o /dev/null -v - 2>&1 | \
+	sed -n -e 's/.* -dynamic-linker \([^ ]*\).*/\1/p')"
+    lib_dir="${dl%%/ld-linux*}"
+    echo "${lib_dir#/}"
+}
+
+#
 # setup compiler and pkgconfig environment
 #
 # in:
@@ -140,6 +159,9 @@ ptxd_init_cross_env() {
     prefix=( ${PTXDIST_PATH_SYSROOT_PREFIX} )
     IFS="${orig_IFS}"
 
+    local -a lib_dir
+    lib_dir=$(ptxd_get_lib_dir)
+
     # add "-isystem <DIR>/include"
     local -a cppflags
     cppflags=( "${prefix[@]/%//include}" )
@@ -147,7 +169,7 @@ ptxd_init_cross_env() {
 
     # add "-L<DIR>/lib -Wl,-rpath-link -Wl,<DIR>"
     local -a ldflags
-    ldflags=( "${prefix[@]/%//lib}" )
+    ldflags=( "${prefix[@]/%//${lib_dir}}" )
     ldflags=( "${ldflags[@]/#/-L}" "${ldflags[@]/#/-Wl,-rpath-link -Wl,}" )
 
     export \
@@ -166,7 +188,7 @@ ptxd_init_cross_env() {
 
     # add <DIR>/lib/pkgconfig and <DIR>/share/pkgconfig
     local -a pkg_libdir
-    pkg_libdir=( "${prefix[@]/%//lib/pkgconfig}" "${prefix[@]/%//share/pkgconfig}" )
+    pkg_libdir=( "${prefix[@]/%//${lib_dir}/pkgconfig}" "${prefix[@]/%//share/pkgconfig}" )
 
     #
     # PKG_CONFIG_PATH contains additional pkg-config search
diff --git a/scripts/lib/ptxd_make_xpkg_pkg.sh b/scripts/lib/ptxd_make_xpkg_pkg.sh
index c03f19e..239fa06 100644
--- a/scripts/lib/ptxd_make_xpkg_pkg.sh
+++ b/scripts/lib/ptxd_make_xpkg_pkg.sh
@@ -605,7 +605,7 @@ ptxd_install_package() {
 	done
     done
 
-    for dir in "${pkg_pkg_dir}/"{,usr/}lib; do
+    for dir in "${pkg_pkg_dir}/"{,usr/}lib{,64}; do
 	find "${dir}" \( -type f -o -type l \) \
 		    -a -name "*.so*" 2>/dev/null | while read file; do
 	    ptxd_install_generic - "${file#${pkg_pkg_dir}}" ||
@@ -638,7 +638,7 @@ ptxd_install_lib() {
     local lib="$1"
     shift
 
-    local file="$(for dir in "${pkg_pkg_dir}/"{,usr/}lib; do
+    local file="$(for dir in "${pkg_pkg_dir}/"{,usr/}lib{,64}; do
 	    find "${dir}" -type f -path "${dir}/${lib}.so*"; done 2>/dev/null)"
 
     if [ ! -f "${file}" ]; then
-- 
1.7.5.4


-- 
ptxdist mailing list
ptxdist@pengutronix.de

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ptxdist] [PATCH 5/9] [x86_64, multilib] Install Zlib libraries at the right place
  2012-03-18 19:10 [ptxdist] [PATCH 0/9] Add preliminary multilib support for x86_64 Remy Bohmer
                   ` (3 preceding siblings ...)
  2012-03-18 19:10 ` [ptxdist] [PATCH 4/9] [x86_64, multilib] Make packages install their libraries at the right place Remy Bohmer
@ 2012-03-18 19:10 ` Remy Bohmer
  2012-03-18 19:10 ` [ptxdist] [PATCH 6/9] [x86_64, multilib] Install Ncurses " Remy Bohmer
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Remy Bohmer @ 2012-03-18 19:10 UTC (permalink / raw)
  To: ptxdist

Signed-off-by: Remy Bohmer <linux@bohmer.net>
---
 rules/zlib.make |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/rules/zlib.make b/rules/zlib.make
index 1618e1b..2c15ccb 100644
--- a/rules/zlib.make
+++ b/rules/zlib.make
@@ -48,7 +48,8 @@ ZLIB_CONF_ENV := \
 #
 ZLIB_AUTOCONF := \
 	--prefix=/usr \
-	--uname=Linux
+	--uname=Linux \
+	--libdir=/usr/$(CROSS_LIB_DIR)
 
 ifdef PTXCONF_ZLIB_STATIC
 ZLIB_AUTOCONF += --static
-- 
1.7.5.4


-- 
ptxdist mailing list
ptxdist@pengutronix.de

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ptxdist] [PATCH 6/9] [x86_64, multilib] Install Ncurses libraries at the right place
  2012-03-18 19:10 [ptxdist] [PATCH 0/9] Add preliminary multilib support for x86_64 Remy Bohmer
                   ` (4 preceding siblings ...)
  2012-03-18 19:10 ` [ptxdist] [PATCH 5/9] [x86_64, multilib] Install Zlib " Remy Bohmer
@ 2012-03-18 19:10 ` Remy Bohmer
  2012-03-18 19:10 ` [ptxdist] [PATCH 7/9] [x86_64, multilib] Install Util-linux-ng " Remy Bohmer
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Remy Bohmer @ 2012-03-18 19:10 UTC (permalink / raw)
  To: ptxdist

Signed-off-by: Remy Bohmer <linux@bohmer.net>
---
 rules/ncurses.make |   30 +++++++++++++++---------------
 1 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/rules/ncurses.make b/rules/ncurses.make
index 19247bd..bf25512 100644
--- a/rules/ncurses.make
+++ b/rules/ncurses.make
@@ -37,7 +37,7 @@ NCURSES_AUTOCONF_SHARED := \
 	--disable-nls \
 	--enable-const \
 	--enable-overwrite \
-	--libdir=/lib \
+	--libdir=/$(CROSS_LIB_DIR) \
 	--with-debug \
 	--with-normal \
 	--with-shared \
@@ -115,9 +115,9 @@ ifdef PTXCONF_NCURSES_WIDE_CHAR
 # For this, the links at runtime are required
 #
 	for lib in $(NCURSES_LIBRARY_LIST); do \
-		echo "INPUT(-l$${lib}w)" > $(NCURSES_PKGDIR)/lib/lib$${lib}.so ; \
+		echo "INPUT(-l$${lib}w)" > $(NCURSES_PKGDIR)/$(CROSS_LIB_DIR)/lib$${lib}.so ; \
 	done
-	ln -sf libncurses++w.a $(NCURSES_PKGDIR)/lib/libncurses++.a
+	ln -sf libncurses++w.a $(NCURSES_PKGDIR)/$(CROSS_LIB_DIR)/libncurses++.a
 
 	ln -sf -- "ncursesw$(NCURSES_MAJOR)-config" \
 		"$(NCURSES_PKGDIR)/usr/bin/ncurses$(NCURSES_MAJOR)-config"
@@ -147,22 +147,22 @@ $(STATEDIR)/ncurses.targetinstall:
 
 ifdef PTXCONF_NCURSES_BACKWARD_COMPATIBLE_NON_WIDE_CHAR
 	@$(call install_link, ncurses, libncursesw.so.$(NCURSES_VERSION), \
-		/lib/libncurses.so.$(NCURSES_VERSION))
+		/$(CROSS_LIB_DIR)/libncurses.so.$(NCURSES_VERSION))
 	@$(call install_link, ncurses, libncursesw.so.$(NCURSES_VERSION), \
-		/lib/libncurses.so.$(NCURSES_MAJOR))
+		/$(CROSS_LIB_DIR)/libncurses.so.$(NCURSES_MAJOR))
 	@$(call install_link, ncurses, libncursesw.so.$(NCURSES_VERSION), \
-		/lib/libncurses.so)
+		/$(CROSS_LIB_DIR)/libncurses.so)
 endif
 
 ifdef PTXCONF_NCURSES_FORM
 	@$(call install_lib, ncurses, 0, 0, 0644, libform$(NCURSES_WIDE))
 ifdef PTXCONF_NCURSES_BACKWARD_COMPATIBLE_NON_WIDE_CHAR
 	@$(call install_link, ncurses, libformw.so.$(NCURSES_VERSION), \
-		/lib/libform.so.$(NCURSES_VERSION))
+		/$(CROSS_LIB_DIR)/libform.so.$(NCURSES_VERSION))
 	@$(call install_link, ncurses, libformw.so.$(NCURSES_VERSION), \
-		/lib/libform.so.$(NCURSES_MAJOR))
+		/$(CROSS_LIB_DIR)/libform.so.$(NCURSES_MAJOR))
 	@$(call install_link, ncurses, libformw.so.$(NCURSES_VERSION), \
-		/lib/libform.so)
+		/$(CROSS_LIB_DIR)/libform.so)
 endif
 endif
 
@@ -171,11 +171,11 @@ ifdef PTXCONF_NCURSES_MENU
 	@$(call install_lib, ncurses, 0, 0, 0644, libmenu$(NCURSES_WIDE))
 ifdef PTXCONF_NCURSES_BACKWARD_COMPATIBLE_NON_WIDE_CHAR
 	@$(call install_link, ncurses, libmenuw.so.$(NCURSES_VERSION), \
-		/lib/libmenu.so.$(NCURSES_VERSION))
+		/$(CROSS_LIB_DIR)/libmenu.so.$(NCURSES_VERSION))
 	@$(call install_link, ncurses, libmenuw.so.$(NCURSES_VERSION), \
-		/lib/libmenu.so.$(NCURSES_MAJOR))
+		/$(CROSS_LIB_DIR)/libmenu.so.$(NCURSES_MAJOR))
 	@$(call install_link, ncurses, libmenuw.so.$(NCURSES_VERSION), \
-		/lib/libmenu.so)
+		/$(CROSS_LIB_DIR)/libmenu.so)
 endif
 endif
 
@@ -184,11 +184,11 @@ ifdef PTXCONF_NCURSES_PANEL
 	@$(call install_lib, ncurses, 0, 0, 0644, libpanel$(NCURSES_WIDE))
 ifdef PTXCONF_NCURSES_BACKWARD_COMPATIBLE_NON_WIDE_CHAR
 	@$(call install_link, ncurses, libpanelw.so.$(NCURSES_VERSION), \
-		/lib/libpanel.so.$(NCURSES_VERSION))
+		/$(CROSS_LIB_DIR)/libpanel.so.$(NCURSES_VERSION))
 	@$(call install_link, ncurses, libpanelw.so.$(NCURSES_VERSION), \
-		/lib/libpanel.so.$(NCURSES_MAJOR))
+		/$(CROSS_LIB_DIR)/libpanel.so.$(NCURSES_MAJOR))
 	@$(call install_link, ncurses, libpanelw.so.$(NCURSES_VERSION), \
-		/lib/libpanel.so)
+		/$(CROSS_LIB_DIR)/libpanel.so)
 endif
 endif
 
-- 
1.7.5.4


-- 
ptxdist mailing list
ptxdist@pengutronix.de

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ptxdist] [PATCH 7/9] [x86_64, multilib] Install Util-linux-ng libraries at the right place
  2012-03-18 19:10 [ptxdist] [PATCH 0/9] Add preliminary multilib support for x86_64 Remy Bohmer
                   ` (5 preceding siblings ...)
  2012-03-18 19:10 ` [ptxdist] [PATCH 6/9] [x86_64, multilib] Install Ncurses " Remy Bohmer
@ 2012-03-18 19:10 ` Remy Bohmer
  2012-03-18 19:10 ` [ptxdist] [PATCH 8/9] [x86_64, multilib] Install Readline " Remy Bohmer
  2012-03-18 19:10 ` [ptxdist] [PATCH 9/9] [x86_64, multilib] Install Procps " Remy Bohmer
  8 siblings, 0 replies; 16+ messages in thread
From: Remy Bohmer @ 2012-03-18 19:10 UTC (permalink / raw)
  To: ptxdist

Notice that CROSS_AUTOCONF_USR contains --libdir=/usr/lib{,64} setting.
We want this library in /lib{,64} so we override this setting here
explicitly.

Signed-off-by: Remy Bohmer <linux@bohmer.net>
---
 rules/util-linux-ng.make |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/rules/util-linux-ng.make b/rules/util-linux-ng.make
index d9a3651..45bb9c2 100644
--- a/rules/util-linux-ng.make
+++ b/rules/util-linux-ng.make
@@ -45,6 +45,7 @@ UTIL_LINUX_NG_ENV 	:= \
 #
 UTIL_LINUX_NG_AUTOCONF := \
 	$(CROSS_AUTOCONF_USR) \
+	--libdir=/$(CROSS_LIB_DIR) \
 	--enable-shared \
 	--disable-static \
 	--disable-gtk-doc \
-- 
1.7.5.4


-- 
ptxdist mailing list
ptxdist@pengutronix.de

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ptxdist] [PATCH 8/9] [x86_64, multilib] Install Readline libraries at the right place
  2012-03-18 19:10 [ptxdist] [PATCH 0/9] Add preliminary multilib support for x86_64 Remy Bohmer
                   ` (6 preceding siblings ...)
  2012-03-18 19:10 ` [ptxdist] [PATCH 7/9] [x86_64, multilib] Install Util-linux-ng " Remy Bohmer
@ 2012-03-18 19:10 ` Remy Bohmer
  2012-03-18 19:10 ` [ptxdist] [PATCH 9/9] [x86_64, multilib] Install Procps " Remy Bohmer
  8 siblings, 0 replies; 16+ messages in thread
From: Remy Bohmer @ 2012-03-18 19:10 UTC (permalink / raw)
  To: ptxdist

Signed-off-by: Remy Bohmer <linux@bohmer.net>
---
 rules/readline.make |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/rules/readline.make b/rules/readline.make
index d5a8ec0..6e6c55a 100644
--- a/rules/readline.make
+++ b/rules/readline.make
@@ -41,7 +41,8 @@ READLINE_AUTOCONF := \
 	$(CROSS_AUTOCONF_ROOT) \
 	--enable-shared \
 	--disable-static\
-	--disable-multibyte
+	--disable-multibyte \
+	--libdir=/$(CROSS_LIB_DIR)
 
 ifdef PTXCONF_READLINE_TERMCAP
 READLINE_AUTOCONF += --without-curses
-- 
1.7.5.4


-- 
ptxdist mailing list
ptxdist@pengutronix.de

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ptxdist] [PATCH 9/9] [x86_64, multilib] Install Procps libraries at the right place
  2012-03-18 19:10 [ptxdist] [PATCH 0/9] Add preliminary multilib support for x86_64 Remy Bohmer
                   ` (7 preceding siblings ...)
  2012-03-18 19:10 ` [ptxdist] [PATCH 8/9] [x86_64, multilib] Install Readline " Remy Bohmer
@ 2012-03-18 19:10 ` Remy Bohmer
  8 siblings, 0 replies; 16+ messages in thread
From: Remy Bohmer @ 2012-03-18 19:10 UTC (permalink / raw)
  To: ptxdist

Signed-off-by: Remy Bohmer <linux@bohmer.net>
---
 rules/procps.make |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/rules/procps.make b/rules/procps.make
index 7ab3786..44d7ea5 100644
--- a/rules/procps.make
+++ b/rules/procps.make
@@ -51,7 +51,7 @@ PROCPS_MAKEVARS	:= \
 	CFLAGS=-O2 \
 	CPPFLAGS='$(CROSS_CPPFLAGS)' \
 	LDFLAGS='$(CROSS_LDFLAGS)' \
-	lib64=lib \
+	lib64=$(CROSS_LIB_DIR) \
 	ldconfig=true \
 	MANFILES="" \
 	BINFILES="$(PROCPS_ALL-y)"
@@ -73,8 +73,7 @@ $(STATEDIR)/procps.targetinstall:
 	@$(call install_fixup, procps,AUTHOR,"Robert Schwebel <r.schwebel@pengutronix.de>")
 	@$(call install_fixup, procps,DESCRIPTION,missing)
 
-	@$(call install_copy, procps, 0, 0, 0644, -, \
-		/lib/libproc-3.2.8.so)
+	@$(call install_lib, procps, 0, 0, 0644, libproc-3.2.8)
 
 ifdef PTXCONF_PROCPS_TOP
 	@$(call install_copy, procps, 0, 0, 0755, -,\
-- 
1.7.5.4


-- 
ptxdist mailing list
ptxdist@pengutronix.de

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [ptxdist] [PATCH 4/9] [x86_64, multilib] Make packages install their libraries at the right place
  2012-03-18 19:10 ` [ptxdist] [PATCH 4/9] [x86_64, multilib] Make packages install their libraries at the right place Remy Bohmer
@ 2012-03-19 14:58   ` Remy Bohmer
  2012-03-19 16:17   ` Michael Olbrich
  1 sibling, 0 replies; 16+ messages in thread
From: Remy Bohmer @ 2012-03-19 14:58 UTC (permalink / raw)
  To: ptxdist

Hi,

> diff --git a/rules/pre/Rules.make b/rules/pre/Rules.make
> index 1d6da52..d6d40e0 100644
> --- a/rules/pre/Rules.make
> +++ b/rules/pre/Rules.make
> @@ -174,6 +174,15 @@ CROSS_ENV_PROGS := \
>        $(CROSS_ENV_CPP_FOR_BUILD) \
>        $(CROSS_ENV_LINK_FOR_BUILD)
>
> +# Outputs 'lib' or 'lib64', derived from the ld-linux.so.2 from the compiler toolchain
> +CROSS_LIB_DIR  := $(shell   \
> +       dl="$$(echo 'int main(void){return 0;}' | \
> +       ${CROSS_CC} ${CROSS_CPPFLAGS} ${CROSS_CFLAGS} -x c -o /dev/null -v - 2>&1 | \
> +       sed -n -e 's/.* -dynamic-linker \([^ ]*\).*/\1/p')"; \
> +       lib_dir="$${dl%%/ld-linux*}"; \

This does not work uClibc based toolchains, there the linker is called
ld-uClibc.so.0. I will post an update of the series.

Kind regards,

Remy

-- 
ptxdist mailing list
ptxdist@pengutronix.de

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [ptxdist] [PATCH 4/9] [x86_64, multilib] Make packages install their libraries at the right place
  2012-03-18 19:10 ` [ptxdist] [PATCH 4/9] [x86_64, multilib] Make packages install their libraries at the right place Remy Bohmer
  2012-03-19 14:58   ` Remy Bohmer
@ 2012-03-19 16:17   ` Michael Olbrich
  2012-03-19 19:07     ` Remy Bohmer
  1 sibling, 1 reply; 16+ messages in thread
From: Michael Olbrich @ 2012-03-19 16:17 UTC (permalink / raw)
  To: ptxdist

On Sun, Mar 18, 2012 at 08:10:13PM +0100, Remy Bohmer wrote:
> While cross-compiling for x86_64 in a multilib configuration we need to
> install the libraries conform the Filesystem Hierarchy Standard (FHS).
> Summarised this will be for multilib:
> * All libraries compiled for and used in 64-bit applications need to be
>   installed in /lib64 or /usr/lib64.
> * All libraries compiled for and used in 32-bit applications need to be
>   installed in /lib or /usr/lib.
> * All executables will still find its way in the regular /bin and /sbin
>   paths.
> * The Operating System itself and all its libraries should only be compiled
>   in 64 bit mode. It should not be a mix between 32 and 64 bit libraries.
>   32 bit support will only contain the libraries that are required by
>   32-bit-applications to link against.
> 
> This is also conform what many distros derived from Redhat have in their
> setup. Note that Debian based distros follow a somewhat different setup.
> 
> Note that we use the compiler toolchain to tell us at which paths we
> need to install the libraries. This means that if you build for a x86_64
> target _without_ multilib support the libraries will likely end up in the
> classical /lib and /usr/lib directories, but that is completely steered
> by the compiler toolchain configuration. (it follows the location where
> the corresponding dynamic linker is expected to be installed)
> 
> So, this change makes ptxdist follow the sysroot of the compiler toolchain
> more such that preliminary multilib support can be achieved. Preliminary
> in the sense that only still one C-library is being installed.
> In another changeset the support for a 2nd C-library installation will be
> added. At least after this change (and a few subsequent ptxdist makefile
> fixes) the /lib and /usr/lib area will only contain the contents that belong
> there in multilib environment.
> 
> Signed-off-by: Remy Bohmer <linux@bohmer.net>
> ---
>  rules/pre/Rules.make              |   11 ++++++++++-
>  scripts/lib/ptxd_make_00-init.sh  |   30 ++++++++++++++++++++++++++----
>  scripts/lib/ptxd_make_xpkg_pkg.sh |    4 ++--
>  3 files changed, 38 insertions(+), 7 deletions(-)
> 
> diff --git a/rules/pre/Rules.make b/rules/pre/Rules.make
> index 1d6da52..d6d40e0 100644
> --- a/rules/pre/Rules.make
> +++ b/rules/pre/Rules.make
> @@ -174,6 +174,15 @@ CROSS_ENV_PROGS := \
>  	$(CROSS_ENV_CPP_FOR_BUILD) \
>  	$(CROSS_ENV_LINK_FOR_BUILD)
>  
> +# Outputs 'lib' or 'lib64', derived from the ld-linux.so.2 from the compiler toolchain
> +CROSS_LIB_DIR	:= $(shell   \
> +	dl="$$(echo 'int main(void){return 0;}' | \
> +	${CROSS_CC} ${CROSS_CPPFLAGS} ${CROSS_CFLAGS} -x c -o /dev/null -v - 2>&1 | \
> +	sed -n -e 's/.* -dynamic-linker \([^ ]*\).*/\1/p')"; \
> +	lib_dir="$${dl%%/ld-linux*}"; \
> +	echo "$${lib_dir\#/}" \
> +)

This is the same as ptxd_get_lib_dir, right? This function should be
defined here:

CROSS_LIB_DIR	:= $(shell ptxd_get_lib_dir)

I think.

Michael

> +
>  #
>  # prepare to use pkg-config with wrapper which takes care of
>  # $(PTXDIST_SYSROOT_TARGET). The wrapper's magic doesn't work when
> @@ -266,7 +275,7 @@ CROSS_ENV := \
>  #
>  
>  CROSS_AUTOCONF_SYSROOT_USR := \
> -	--prefix=/usr --sysconfdir=/etc --localstatedir=/var
> +	--prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=/usr/$(CROSS_LIB_DIR)
>  
>  CROSS_AUTOCONF_SYSROOT_ROOT := \
>  	--prefix=
> diff --git a/scripts/lib/ptxd_make_00-init.sh b/scripts/lib/ptxd_make_00-init.sh
> index da72d29..d08cb92 100644
> --- a/scripts/lib/ptxd_make_00-init.sh
> +++ b/scripts/lib/ptxd_make_00-init.sh
> @@ -63,7 +63,10 @@ ptxd_init_arch() {
>  # out:	PTXDIST_SYSROOT_TOOLCHAIN
>  #
>  ptxd_init_sysroot_toolchain() {
> -    local compiler_prefix="$(ptxd_get_ptxconf PTXCONF_COMPILER_PREFIX)"
> +    local compiler_prefix extra_cppflags extra_cflags
> +    compiler_prefix="$(ptxd_get_ptxconf PTXCONF_COMPILER_PREFIX)"
> +    extra_cppflags="$(ptxd_get_ptxconf PTXCONF_TARGET_EXTRA_CPPFLAGS)"
> +    extra_cflags="$(ptxd_get_ptxconf PTXCONF_TARGET_EXTRA_CFLAGS)"
>  
>      #
>      # no compiler prefix specified means using plain "gcc"
> @@ -75,7 +78,7 @@ ptxd_init_sysroot_toolchain() {
>  	local sysroot
>  
>  	sysroot="$(echo 'int main(void){return 0;}' | \
> -	${compiler_prefix}gcc -x c -o /dev/null -v - 2>&1 | \
> +	${compiler_prefix}gcc ${extra_cppflags} ${extra_cflags} -x c -o /dev/null -v - 2>&1 | \
>  	sed -ne "/.*collect2.*/s,.*--sysroot=\([^[:space:]]*\).*,\1,p" && \
>  	check_pipe_status)"
>  
> @@ -119,6 +122,22 @@ ptxd_init_collectionconfig() {
>  
>  
>  #
> +# out: 'lib' or 'lib64', derived from the ld-linux.so.2 from the compiler toolchain
> +#
> +ptxd_get_lib_dir() {
> +    local dl lib_dir extra_cppflags extra_cflags
> +    compiler_prefix="$(ptxd_get_ptxconf PTXCONF_COMPILER_PREFIX)"
> +    extra_cppflags="$(ptxd_get_ptxconf PTXCONF_TARGET_EXTRA_CPPFLAGS)"
> +    extra_cflags="$(ptxd_get_ptxconf PTXCONF_TARGET_EXTRA_CFLAGS)"
> +
> +    dl="$(echo 'int main(void){return 0;}' | \
> +	${compiler_prefix}gcc ${extra_cppflags} ${extra_cflags} -x c -o /dev/null -v - 2>&1 | \
> +	sed -n -e 's/.* -dynamic-linker \([^ ]*\).*/\1/p')"
> +    lib_dir="${dl%%/ld-linux*}"
> +    echo "${lib_dir#/}"
> +}
> +
> +#
>  # setup compiler and pkgconfig environment
>  #
>  # in:
> @@ -140,6 +159,9 @@ ptxd_init_cross_env() {
>      prefix=( ${PTXDIST_PATH_SYSROOT_PREFIX} )
>      IFS="${orig_IFS}"
>  
> +    local -a lib_dir
> +    lib_dir=$(ptxd_get_lib_dir)
> +
>      # add "-isystem <DIR>/include"
>      local -a cppflags
>      cppflags=( "${prefix[@]/%//include}" )
> @@ -147,7 +169,7 @@ ptxd_init_cross_env() {
>  
>      # add "-L<DIR>/lib -Wl,-rpath-link -Wl,<DIR>"
>      local -a ldflags
> -    ldflags=( "${prefix[@]/%//lib}" )
> +    ldflags=( "${prefix[@]/%//${lib_dir}}" )
>      ldflags=( "${ldflags[@]/#/-L}" "${ldflags[@]/#/-Wl,-rpath-link -Wl,}" )
>  
>      export \
> @@ -166,7 +188,7 @@ ptxd_init_cross_env() {
>  
>      # add <DIR>/lib/pkgconfig and <DIR>/share/pkgconfig
>      local -a pkg_libdir
> -    pkg_libdir=( "${prefix[@]/%//lib/pkgconfig}" "${prefix[@]/%//share/pkgconfig}" )
> +    pkg_libdir=( "${prefix[@]/%//${lib_dir}/pkgconfig}" "${prefix[@]/%//share/pkgconfig}" )
>  
>      #
>      # PKG_CONFIG_PATH contains additional pkg-config search
> diff --git a/scripts/lib/ptxd_make_xpkg_pkg.sh b/scripts/lib/ptxd_make_xpkg_pkg.sh
> index c03f19e..239fa06 100644
> --- a/scripts/lib/ptxd_make_xpkg_pkg.sh
> +++ b/scripts/lib/ptxd_make_xpkg_pkg.sh
> @@ -605,7 +605,7 @@ ptxd_install_package() {
>  	done
>      done
>  
> -    for dir in "${pkg_pkg_dir}/"{,usr/}lib; do
> +    for dir in "${pkg_pkg_dir}/"{,usr/}lib{,64}; do
>  	find "${dir}" \( -type f -o -type l \) \
>  		    -a -name "*.so*" 2>/dev/null | while read file; do
>  	    ptxd_install_generic - "${file#${pkg_pkg_dir}}" ||
> @@ -638,7 +638,7 @@ ptxd_install_lib() {
>      local lib="$1"
>      shift
>  
> -    local file="$(for dir in "${pkg_pkg_dir}/"{,usr/}lib; do
> +    local file="$(for dir in "${pkg_pkg_dir}/"{,usr/}lib{,64}; do

I don't like the explicit lib64 here. Next we'll get some debian like
multilib toolchain and it's lib/x86_64-linux-gnu oor so. Can't we get that
from ptxd_get_lib_dir?

Michael

>  	    find "${dir}" -type f -path "${dir}/${lib}.so*"; done 2>/dev/null)"
>  
>      if [ ! -f "${file}" ]; then
> -- 
> 1.7.5.4
> 
> 
> -- 
> ptxdist mailing list
> ptxdist@pengutronix.de
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

-- 
ptxdist mailing list
ptxdist@pengutronix.de

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [ptxdist] [PATCH 4/9] [x86_64, multilib] Make packages install their libraries at the right place
  2012-03-19 16:17   ` Michael Olbrich
@ 2012-03-19 19:07     ` Remy Bohmer
  2012-03-20  8:40       ` Michael Olbrich
  0 siblings, 1 reply; 16+ messages in thread
From: Remy Bohmer @ 2012-03-19 19:07 UTC (permalink / raw)
  To: ptxdist

Hi,

2012/3/19 Michael Olbrich <m.olbrich@pengutronix.de>:
>> +# Outputs 'lib' or 'lib64', derived from the ld-linux.so.2 from the compiler toolchain
>> +CROSS_LIB_DIR        := $(shell   \
>> +     dl="$$(echo 'int main(void){return 0;}' | \
>> +     ${CROSS_CC} ${CROSS_CPPFLAGS} ${CROSS_CFLAGS} -x c -o /dev/null -v - 2>&1 | \
>> +     sed -n -e 's/.* -dynamic-linker \([^ ]*\).*/\1/p')"; \
>> +     lib_dir="$${dl%%/ld-linux*}"; \
>> +     echo "$${lib_dir\#/}" \
>> +)
>
> This is the same as ptxd_get_lib_dir, right? This function should be
> defined here:

This is indeed the same function, but for some reason the
ptxd_get_lib_dir was not available.
I will look at it again.

>> -    local file="$(for dir in "${pkg_pkg_dir}/"{,usr/}lib; do
>> +    local file="$(for dir in "${pkg_pkg_dir}/"{,usr/}lib{,64}; do
>
> I don't like the explicit lib64 here. Next we'll get some debian like
> multilib toolchain and it's lib/x86_64-linux-gnu oor so. Can't we get that
> from ptxd_get_lib_dir?

I think you are right and we can get it from ptxd_get_lib_dir, did not
thought about that before. Good idea!

Kind regards,

Remy

-- 
ptxdist mailing list
ptxdist@pengutronix.de

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [ptxdist] [PATCH 4/9] [x86_64, multilib] Make packages install their libraries at the right place
  2012-03-19 19:07     ` Remy Bohmer
@ 2012-03-20  8:40       ` Michael Olbrich
  2012-03-20  9:28         ` Remy Bohmer
  0 siblings, 1 reply; 16+ messages in thread
From: Michael Olbrich @ 2012-03-20  8:40 UTC (permalink / raw)
  To: ptxdist

On Mon, Mar 19, 2012 at 08:07:26PM +0100, Remy Bohmer wrote:
> Hi,
> 
> 2012/3/19 Michael Olbrich <m.olbrich@pengutronix.de>:
> >> +# Outputs 'lib' or 'lib64', derived from the ld-linux.so.2 from the compiler toolchain
> >> +CROSS_LIB_DIR        := $(shell   \
> >> +     dl="$$(echo 'int main(void){return 0;}' | \
> >> +     ${CROSS_CC} ${CROSS_CPPFLAGS} ${CROSS_CFLAGS} -x c -o /dev/null -v - 2>&1 | \
> >> +     sed -n -e 's/.* -dynamic-linker \([^ ]*\).*/\1/p')"; \
> >> +     lib_dir="$${dl%%/ld-linux*}"; \
> >> +     echo "$${lib_dir\#/}" \
> >> +)
> >
> > This is the same as ptxd_get_lib_dir, right? This function should be
> > defined here:
> 
> This is indeed the same function, but for some reason the
> ptxd_get_lib_dir was not available.
> I will look at it again.
> 
> >> -    local file="$(for dir in "${pkg_pkg_dir}/"{,usr/}lib; do
> >> +    local file="$(for dir in "${pkg_pkg_dir}/"{,usr/}lib{,64}; do
> >
> > I don't like the explicit lib64 here. Next we'll get some debian like
> > multilib toolchain and it's lib/x86_64-linux-gnu oor so. Can't we get that
> > from ptxd_get_lib_dir?
> 
> I think you are right and we can get it from ptxd_get_lib_dir, did not
> thought about that before. Good idea!

export -f ptxd_get_lib_dir

directly after the function.

Michael

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

-- 
ptxdist mailing list
ptxdist@pengutronix.de

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [ptxdist] [PATCH 4/9] [x86_64, multilib] Make packages install their libraries at the right place
  2012-03-20  8:40       ` Michael Olbrich
@ 2012-03-20  9:28         ` Remy Bohmer
  2012-03-21  9:19           ` Remy Bohmer
  0 siblings, 1 reply; 16+ messages in thread
From: Remy Bohmer @ 2012-03-20  9:28 UTC (permalink / raw)
  To: ptxdist

Hi,

2012/3/20 Michael Olbrich <m.olbrich@pengutronix.de>:
>> >> -    local file="$(for dir in "${pkg_pkg_dir}/"{,usr/}lib; do
>> >> +    local file="$(for dir in "${pkg_pkg_dir}/"{,usr/}lib{,64}; do
>> >
>> > I don't like the explicit lib64 here. Next we'll get some debian like
>> > multilib toolchain and it's lib/x86_64-linux-gnu oor so. Can't we get that
>> > from ptxd_get_lib_dir?
>>
>> I think you are right and we can get it from ptxd_get_lib_dir, did not
>> thought about that before. Good idea!
>
> export -f ptxd_get_lib_dir
>
> directly after the function.

Was already part of my v2 patch ;-)

Thanks.

Kind regards,

Remy

-- 
ptxdist mailing list
ptxdist@pengutronix.de

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [ptxdist] [PATCH 4/9] [x86_64, multilib] Make packages install their libraries at the right place
  2012-03-20  9:28         ` Remy Bohmer
@ 2012-03-21  9:19           ` Remy Bohmer
  0 siblings, 0 replies; 16+ messages in thread
From: Remy Bohmer @ 2012-03-21  9:19 UTC (permalink / raw)
  To: ptxdist

Hi Michael,

2012/3/20 Remy Bohmer <linux@bohmer.net>:
> Hi,
>
> 2012/3/20 Michael Olbrich <m.olbrich@pengutronix.de>:
>>> >> -    local file="$(for dir in "${pkg_pkg_dir}/"{,usr/}lib; do
>>> >> +    local file="$(for dir in "${pkg_pkg_dir}/"{,usr/}lib{,64}; do
>>> >
>>> > I don't like the explicit lib64 here. Next we'll get some debian like
>>> > multilib toolchain and it's lib/x86_64-linux-gnu oor so. Can't we get that
>>> > from ptxd_get_lib_dir?
>>>
>>> I think you are right and we can get it from ptxd_get_lib_dir, did not
>>> thought about that before. Good idea!
>>
>> export -f ptxd_get_lib_dir
>>
>> directly after the function.
>
> Was already part of my v2 patch ;-)
>

Just curious, did you already find some time to look at the complete changeset?

Kind regards,

Remy

-- 
ptxdist mailing list
ptxdist@pengutronix.de

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2012-03-21  9:19 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-03-18 19:10 [ptxdist] [PATCH 0/9] Add preliminary multilib support for x86_64 Remy Bohmer
2012-03-18 19:10 ` [ptxdist] [PATCH 1/9] [x86_64] Add x86_64 architecture strings Remy Bohmer
2012-03-18 19:10 ` [ptxdist] [PATCH 2/9] [x86_64] libgcc need to be install in /lib64 instead of /lib Remy Bohmer
2012-03-18 19:10 ` [ptxdist] [PATCH 3/9] [x86_64, multilib] Remove all hardcoded paths from glibc.make Remy Bohmer
2012-03-18 19:10 ` [ptxdist] [PATCH 4/9] [x86_64, multilib] Make packages install their libraries at the right place Remy Bohmer
2012-03-19 14:58   ` Remy Bohmer
2012-03-19 16:17   ` Michael Olbrich
2012-03-19 19:07     ` Remy Bohmer
2012-03-20  8:40       ` Michael Olbrich
2012-03-20  9:28         ` Remy Bohmer
2012-03-21  9:19           ` Remy Bohmer
2012-03-18 19:10 ` [ptxdist] [PATCH 5/9] [x86_64, multilib] Install Zlib " Remy Bohmer
2012-03-18 19:10 ` [ptxdist] [PATCH 6/9] [x86_64, multilib] Install Ncurses " Remy Bohmer
2012-03-18 19:10 ` [ptxdist] [PATCH 7/9] [x86_64, multilib] Install Util-linux-ng " Remy Bohmer
2012-03-18 19:10 ` [ptxdist] [PATCH 8/9] [x86_64, multilib] Install Readline " Remy Bohmer
2012-03-18 19:10 ` [ptxdist] [PATCH 9/9] [x86_64, multilib] Install Procps " Remy Bohmer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox