[uClibc]gcc-uclibc use_build_dir/use_rpath

Andreas Neuhaus andy at fasta.fh-dortmund.de
Sun May 27 23:25:54 UTC 2001


hi everybody,

i saw the latest path where gcc-uclibc uses the build dir when called as
*build*. i also noticed that various parts of uClibc are itself compiled
using gcc-uclibc. shouldn't those parts also use the build dir for
libraries/includes to make sure that the right headers are included (patch
below)?

i'm not sure about that rpath options. they seem to affect runtime.
use_build_path should not have any affect on runtime.

i understand build/rpath like this:
use_build_dir: use lib/inc from build dir during compile time, use libs from
INSTALL_DIR during runtime.
use_rpath: use lib/inc from INSTALL_DIR during compile time, use libs from
build dir during runtime.
both set: use lib/inc from build dir during compile time, use libs from
build dir during runtime.
none set: use lib/inc from INSTALL_DIR during compile time, use libs from
INSTALL_DIR during runtime.

the patch below also changes gcc-uclibc to behave like described above.

regards,
andreas neuhaus


Index: extra/gcc-uClibc/Makefile
===================================================================
RCS file: /var/cvs/uClibc/extra/gcc-uClibc/Makefile,v
retrieving revision 1.20
diff -u -r1.20 Makefile
--- extra/gcc-uClibc/Makefile   2001/05/16 20:14:45     1.20
+++ extra/gcc-uClibc/Makefile   2001/05/27 20:58:19
@@ -21,6 +21,8 @@

 gcc-uClibc: gcc-uClibc.h gcc-uClibc.c
        gcc -Wall -O2 -s gcc-uClibc.c -o $(TARGET_ARCH)-uclibc-gcc
+       ln -sf $(TARGET_ARCH)-uclibc-gcc $(TARGET_ARCH)-uclibc-gcc-build
+       ln -sf $(TARGET_ARCH)-uclibc-gcc $(TARGET_ARCH)-uclibc-gcc-rpath

 ld-uClibc:
        @echo "#!/bin/sh" > $(TARGET_ARCH)-uclibc-ld
Index: extra/gcc-uClibc/gcc-uClibc.c
===================================================================
RCS file: /var/cvs/uClibc/extra/gcc-uClibc/gcc-uClibc.c,v
retrieving revision 1.16
diff -u -r1.16 gcc-uClibc.c
--- extra/gcc-uClibc/gcc-uClibc.c       2001/05/27 15:55:18     1.16
+++ extra/gcc-uClibc/gcc-uClibc.c       2001/05/27 22:11:18
@@ -184,16 +184,17 @@
 #else
                                char *dlstr =
"-Wl,--dynamic-linker,"DYNAMIC_LINKER;
                                if (strstr(DYNAMIC_LINKER,"uclibc") != 0)
{     /* custom linker */
-                                       use_rpath = 0; /* so -rpath not
needed for normal case */
-                                       if (use_build_dir) {
+                                       if (use_build_dir && use_rpath) {
                                                dlstr =
"-Wl,--dynamic-linker," \
                                                        UCLIBC_BUILD_DIR
DYNAMIC_LINKER;
                                        }
+                                       if (!use_build_dir)
+                                               use_rpath = 0; /* so -rpath
not needed for normal case */
                                }
                                gcc_argv[i++] = dlstr;
 #endif
                        }
-                       if (use_build_dir || use_rpath) {
+                       if (use_rpath) {
                                gcc_argv[i++] = rpath[use_build_dir];
                        }
                }
Index: ldso/Rules.mak
===================================================================
RCS file: /var/cvs/uClibc/ldso/Rules.mak,v
retrieving revision 1.5
diff -u -r1.5 Rules.mak
--- ldso/Rules.mak      2001/05/25 01:20:51     1.5
+++ ldso/Rules.mak      2001/05/27 20:58:19
@@ -7,7 +7,7 @@
 # Do NOT use -fomit-frame-pointer -- It won't work!
 CFLAGS += -DVERSION=\"$(LDSO_VERSION)\"

-CC = $(TOPDIR)extra/gcc-uClibc/$(NATIVE_ARCH)-uclibc-gcc
+CC = $(TOPDIR)extra/gcc-uClibc/$(NATIVE_ARCH)-uclibc-gcc-build
 ifeq ($(DEVEL),true)
        CFLAGS += -DUCLIBC_INSTALL_DIR=\"$(INSTALL_DIR)\"
 endif
Index: ldso/libdl/Makefile
===================================================================
RCS file: /var/cvs/uClibc/ldso/libdl/Makefile,v
retrieving revision 1.8
diff -u -r1.8 Makefile
--- ldso/libdl/Makefile 2001/05/18 20:31:18     1.8
+++ ldso/libdl/Makefile 2001/05/27 20:58:19
@@ -27,7 +27,7 @@
 LIBDL=libdl.a
 LIBDL_SHARED=libdl.so
 LIBDL_SHARED_FULLNAME=libdl-$(MAJOR_VERSION).$(MINOR_VERSION).so
-TARGET_CC= $(TOPDIR)extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc
+TARGET_CC= $(TOPDIR)extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc-build

 CSRC= dlib.c
 OBJS=$(patsubst %.c,%.o, $(CSRC))
Index: libcrypt/Makefile
===================================================================
RCS file: /var/cvs/uClibc/libcrypt/Makefile,v
retrieving revision 1.8
diff -u -r1.8 Makefile
--- libcrypt/Makefile   2001/05/18 20:31:18     1.8
+++ libcrypt/Makefile   2001/05/27 20:58:19
@@ -26,7 +26,7 @@
 LIBCRYPT=libcrypt.a
 LIBCRYPT_SHARED=libcrypt.so
 LIBCRYPT_SHARED_FULLNAME=libcrypt-$(MAJOR_VERSION).$(MINOR_VERSION).so
-TARGET_CC= $(TOPDIR)extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc
+TARGET_CC= $(TOPDIR)extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc-build

 CSRC = crypt.c des.c md5.c
 OBJS=$(patsubst %.c,%.o, $(CSRC))
Index: libm/Makefile
===================================================================
RCS file: /var/cvs/uClibc/libm/Makefile,v
retrieving revision 1.5
diff -u -r1.5 Makefile
--- libm/Makefile       2001/05/18 20:31:17     1.5
+++ libm/Makefile       2001/05/27 20:58:19
@@ -25,7 +25,7 @@
 LIBM=libm.a
 LIBM_SHARED=libm.so
 LIBM_SHARED_FULLNAME=libm-$(MAJOR_VERSION).$(MINOR_VERSION).so
-TARGET_CC= $(TOPDIR)extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc
+TARGET_CC= $(TOPDIR)extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc-build

 DIRS=
 ifeq ($(strip $(HAS_FLOATS)),true)
Index: libm/double/Makefile
===================================================================
RCS file: /var/cvs/uClibc/libm/double/Makefile,v
retrieving revision 1.4
diff -u -r1.4 Makefile
--- libm/double/Makefile        2001/05/25 07:11:50     1.4
+++ libm/double/Makefile        2001/05/27 20:58:19
@@ -23,7 +23,7 @@
 include $(TOPDIR)Rules.mak

 LIBM=../libm.a
-TARGET_CC= $(TOPDIR)extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc
+TARGET_CC= $(TOPDIR)extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc-build

 CSRC=acosh.c airy.c asin.c asinh.c atan.c atanh.c bdtr.c beta.c \
        btdtr.c cbrt.c chbevl.c chdtr.c clog.c cmplx.c const.c \
Index: libm/float/Makefile
===================================================================
RCS file: /var/cvs/uClibc/libm/float/Makefile,v
retrieving revision 1.2
diff -u -r1.2 Makefile
--- libm/float/Makefile 2001/05/12 06:19:10     1.2
+++ libm/float/Makefile 2001/05/27 20:58:19
@@ -23,7 +23,7 @@
 include $(TOPDIR)Rules.mak

 LIBM=../libm.a
-TARGET_CC= $(TOPDIR)/extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc
+TARGET_CC= $(TOPDIR)/extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc-build

 CSRC= acoshf.c airyf.c asinf.c asinhf.c atanf.c \
        atanhf.c bdtrf.c betaf.c cbrtf.c chbevlf.c chdtrf.c \
Index: libm/ldouble/Makefile
===================================================================
RCS file: /var/cvs/uClibc/libm/ldouble/Makefile,v
retrieving revision 1.2
diff -u -r1.2 Makefile
--- libm/ldouble/Makefile       2001/05/12 06:19:10     1.2
+++ libm/ldouble/Makefile       2001/05/27 20:58:19
@@ -23,7 +23,7 @@
 include $(TOPDIR)Rules.mak

 LIBM=../libm.a
-TARGET_CC= $(TOPDIR)/extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc
+TARGET_CC= $(TOPDIR)/extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc-build

 CSRC=acoshl.c asinhl.c asinl.c atanhl.c atanl.c bdtrl.c btdtrl.c cbrtl.c \
        chdtrl.c coshl.c ellpel.c ellpkl.c elliel.c ellikl.c ellpjl.c \
Index: libresolv/Makefile
===================================================================
RCS file: /var/cvs/uClibc/libresolv/Makefile,v
retrieving revision 1.1
diff -u -r1.1 Makefile
--- libresolv/Makefile  2001/05/21 21:26:59     1.1
+++ libresolv/Makefile  2001/05/27 20:58:19
@@ -26,7 +26,7 @@
 LIBRESOLV=libresolv.a
 LIBRESOLV_SHARED=libresolv.so
 LIBRESOLV_SHARED_FULLNAME=libresolv-$(MAJOR_VERSION).$(MINOR_VERSION).so
-TARGET_CC= $(TOPDIR)extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc
+TARGET_CC= $(TOPDIR)extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc-build

 CSRC = resolv.c
 OBJS=$(patsubst %.c,%.o, $(CSRC))
Index: libutil/Makefile
===================================================================
RCS file: /var/cvs/uClibc/libutil/Makefile,v
retrieving revision 1.5
diff -u -r1.5 Makefile
--- libutil/Makefile    2001/05/18 20:31:18     1.5
+++ libutil/Makefile    2001/05/27 20:58:19
@@ -27,7 +27,7 @@
 LIBUTIL=libutil.a
 LIBUTIL_SHARED=libutil.so
 LIBUTIL_SHARED_FULLNAME=libutil-$(MAJOR_VERSION).$(MINOR_VERSION).so
-TARGET_CC= $(TOPDIR)extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc
+TARGET_CC= $(TOPDIR)extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc-build

 CSRC=forkpty.c login.c login_tty.c logout.c logwtmp.c openpty.c
 OBJS=$(patsubst %.c,%.o, $(CSRC))








More information about the uClibc mailing list