Initial commit
This commit is contained in:
32
toolchain/glibc/Makefile
Normal file
32
toolchain/glibc/Makefile
Normal file
@@ -0,0 +1,32 @@
|
||||
PATH_PREFIX := .
|
||||
VARIANT:=final
|
||||
HOST_BUILD_PARALLEL:=1
|
||||
|
||||
include ./common.mk
|
||||
|
||||
define Host/Compile
|
||||
+$(MAKE) -C $(CUR_BUILD_DIR) \
|
||||
PARALLELMFLAGS="$(HOST_JOBS)" \
|
||||
BUILD_CFLAGS="$(HOST_CFLAGS)" \
|
||||
default-rpath="/lib:/usr/lib" \
|
||||
all
|
||||
endef
|
||||
|
||||
define Host/Install
|
||||
$(call Host/SetToolchainInfo)
|
||||
$(MAKE) -C $(CUR_BUILD_DIR) \
|
||||
BUILD_CFLAGS="$(HOST_CFLAGS)" \
|
||||
install_root="$(TOOLCHAIN_DIR)" \
|
||||
install
|
||||
( cd $(TOOLCHAIN_DIR) ; \
|
||||
for d in lib usr/lib ; do \
|
||||
for f in libc.so libpthread.so libgcc_s.so ; do \
|
||||
if [ -f $$$$d/$$$$f -a ! -L $$$$d/$$$$f ] ; then \
|
||||
$(SED) 's,/usr/lib/,,g;s,/lib/,,g' $$$$d/$$$$f ; \
|
||||
fi \
|
||||
done \
|
||||
done \
|
||||
)
|
||||
endef
|
||||
|
||||
$(eval $(call HostBuild))
|
||||
98
toolchain/glibc/common.mk
Normal file
98
toolchain/glibc/common.mk
Normal file
@@ -0,0 +1,98 @@
|
||||
#
|
||||
# Copyright (C) 2006-2016 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=glibc
|
||||
PKG_VERSION:=2.26
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_SOURCE_VERSION:=c5c90b480e4f21ed1d28e0e6d942b06b8d9e8bd7
|
||||
PKG_MIRROR_HASH:=f8e81f714fb5df5b142c0004d69aba87fc73235cffb86b1b1837e993e910bc13
|
||||
PKG_SOURCE_URL:=https://sourceware.org/git/glibc.git
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
|
||||
|
||||
HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(PKG_SOURCE_SUBDIR)
|
||||
CUR_BUILD_DIR:=$(HOST_BUILD_DIR)-$(VARIANT)
|
||||
PATCH_DIR:=$(PATH_PREFIX)/patches
|
||||
|
||||
include $(INCLUDE_DIR)/toolchain-build.mk
|
||||
|
||||
HOST_STAMP_PREPARED:=$(HOST_BUILD_DIR)/.prepared
|
||||
HOST_STAMP_CONFIGURED:=$(CUR_BUILD_DIR)/.configured
|
||||
HOST_STAMP_BUILT:=$(CUR_BUILD_DIR)/.built
|
||||
HOST_STAMP_INSTALLED:=$(TOOLCHAIN_DIR)/stamp/.glibc_$(VARIANT)_installed
|
||||
|
||||
ifeq ($(ARCH),mips64)
|
||||
ifdef CONFIG_MIPS64_ABI_N64
|
||||
TARGET_CFLAGS += -mabi=64
|
||||
endif
|
||||
ifdef CONFIG_MIPS64_ABI_N32
|
||||
TARGET_CFLAGS += -mabi=n32
|
||||
endif
|
||||
ifdef CONFIG_MIPS64_ABI_O32
|
||||
TARGET_CFLAGS += -mabi=32
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
# -Os miscompiles w. 2.24 gcc5/gcc6
|
||||
# only -O2 tested by upstream changeset
|
||||
# "Optimize i386 syscall inlining for GCC 5"
|
||||
GLIBC_CONFIGURE:= \
|
||||
unset LD_LIBRARY_PATH; \
|
||||
BUILD_CC="$(HOSTCC)" \
|
||||
$(TARGET_CONFIGURE_OPTS) \
|
||||
CFLAGS="-O2 $(filter-out -Os,$(call qstrip,$(TARGET_CFLAGS)))" \
|
||||
libc_cv_slibdir="/lib" \
|
||||
use_ldconfig=no \
|
||||
$(HOST_BUILD_DIR)/$(GLIBC_PATH)configure \
|
||||
--prefix= \
|
||||
--build=$(GNU_HOST_NAME) \
|
||||
--host=$(REAL_GNU_TARGET_NAME) \
|
||||
--with-headers=$(TOOLCHAIN_DIR)/include \
|
||||
--disable-profile \
|
||||
--disable-werror \
|
||||
--without-gd \
|
||||
--without-cvs \
|
||||
--enable-add-ons \
|
||||
--$(if $(CONFIG_SOFT_FLOAT),without,with)-fp
|
||||
|
||||
export libc_cv_ssp=no
|
||||
export libc_cv_ssp_strong=no
|
||||
export ac_cv_header_cpuid_h=yes
|
||||
export HOST_CFLAGS := $(HOST_CFLAGS) -idirafter $(CURDIR)/$(PATH_PREFIX)/include
|
||||
|
||||
define Host/SetToolchainInfo
|
||||
$(SED) 's,^\(LIBC_TYPE\)=.*,\1=$(PKG_NAME),' $(TOOLCHAIN_DIR)/info.mk
|
||||
$(SED) 's,^\(LIBC_URL\)=.*,\1=http://www.gnu.org/software/libc/,' $(TOOLCHAIN_DIR)/info.mk
|
||||
$(SED) 's,^\(LIBC_VERSION\)=.*,\1=$(PKG_VERSION),' $(TOOLCHAIN_DIR)/info.mk
|
||||
$(SED) 's,^\(LIBC_SO_VERSION\)=.*,\1=$(PKG_VERSION),' $(TOOLCHAIN_DIR)/info.mk
|
||||
endef
|
||||
|
||||
define Host/Configure
|
||||
[ -f $(HOST_BUILD_DIR)/.autoconf ] || { \
|
||||
cd $(HOST_BUILD_DIR)/; \
|
||||
autoconf --force && \
|
||||
touch $(HOST_BUILD_DIR)/.autoconf; \
|
||||
}
|
||||
mkdir -p $(CUR_BUILD_DIR)
|
||||
( cd $(CUR_BUILD_DIR); rm -f config.cache; \
|
||||
$(GLIBC_CONFIGURE) \
|
||||
);
|
||||
endef
|
||||
|
||||
define Host/Prepare
|
||||
$(call Host/Prepare/Default)
|
||||
ln -snf $(PKG_SOURCE_SUBDIR) $(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)
|
||||
endef
|
||||
|
||||
define Host/Clean
|
||||
rm -rf $(CUR_BUILD_DIR)* \
|
||||
$(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev \
|
||||
$(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)
|
||||
endef
|
||||
28
toolchain/glibc/headers/Makefile
Normal file
28
toolchain/glibc/headers/Makefile
Normal file
@@ -0,0 +1,28 @@
|
||||
PATH_PREFIX:=..
|
||||
VARIANT:=headers
|
||||
|
||||
include ../common.mk
|
||||
|
||||
define Host/Compile
|
||||
|
||||
endef
|
||||
|
||||
define Host/Install
|
||||
$(call Host/SetToolchainInfo)
|
||||
mkdir -p $(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev/{include,lib}
|
||||
$(MAKE) -C $(CUR_BUILD_DIR) \
|
||||
BUILD_CFLAGS="$(HOST_CFLAGS)" \
|
||||
install_root="$(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev" \
|
||||
install-bootstrap-headers=yes \
|
||||
install-headers
|
||||
$(CP) $(BUILD_DIR_TOOLCHAIN)/linux-dev/* $(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev/
|
||||
$(MAKE) -C $(CUR_BUILD_DIR) \
|
||||
csu/subdir_lib
|
||||
( cd $(CUR_BUILD_DIR); \
|
||||
$(CP) csu/crt1.o csu/crti.o csu/crtn.o $(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev/lib/ \
|
||||
)
|
||||
$(TARGET_CC) -nostdlib -nostartfiles -shared -x c /dev/null \
|
||||
-o $(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev/lib/libc.so
|
||||
endef
|
||||
|
||||
$(eval $(call HostBuild))
|
||||
6
toolchain/glibc/include/libintl.h
Normal file
6
toolchain/glibc/include/libintl.h
Normal file
@@ -0,0 +1,6 @@
|
||||
#ifndef __FAKE_LIBINTL_H
|
||||
#define __FAKE_LIBINTL_H
|
||||
|
||||
#define _(X) (X)
|
||||
|
||||
#endif
|
||||
52
toolchain/glibc/patches/100-fix_cross_rpcgen.patch
Normal file
52
toolchain/glibc/patches/100-fix_cross_rpcgen.patch
Normal file
@@ -0,0 +1,52 @@
|
||||
--- a/sunrpc/rpc/types.h
|
||||
+++ b/sunrpc/rpc/types.h
|
||||
@@ -75,18 +75,23 @@ typedef unsigned long rpcport_t;
|
||||
#endif
|
||||
|
||||
#ifndef __u_char_defined
|
||||
-typedef __u_char u_char;
|
||||
-typedef __u_short u_short;
|
||||
-typedef __u_int u_int;
|
||||
-typedef __u_long u_long;
|
||||
-typedef __quad_t quad_t;
|
||||
-typedef __u_quad_t u_quad_t;
|
||||
-typedef __fsid_t fsid_t;
|
||||
+typedef unsigned char u_char;
|
||||
+typedef unsigned short u_short;
|
||||
+typedef unsigned int u_int;
|
||||
+typedef unsigned long u_long;
|
||||
+#if __WORDSIZE == 64
|
||||
+typedef long int quad_t;
|
||||
+typedef unsigned long int u_quad_t;
|
||||
+#elif defined __GLIBC_HAVE_LONG_LONG
|
||||
+typedef long long int quad_t;
|
||||
+typedef unsigned long long int u_quad_t;
|
||||
+#endif
|
||||
+typedef u_quad_t fsid_t;
|
||||
# define __u_char_defined
|
||||
#endif
|
||||
-#ifndef __daddr_t_defined
|
||||
-typedef __daddr_t daddr_t;
|
||||
-typedef __caddr_t caddr_t;
|
||||
+#if !defined(__daddr_t_defined) && defined(linux)
|
||||
+typedef long int daddr_t;
|
||||
+typedef char *caddr_t;
|
||||
# define __daddr_t_defined
|
||||
#endif
|
||||
|
||||
--- a/sunrpc/rpc_main.c
|
||||
+++ b/sunrpc/rpc_main.c
|
||||
@@ -958,9 +958,10 @@ mkfile_output (struct commandline *cmd)
|
||||
abort ();
|
||||
temp = rindex (cmd->infile, '.');
|
||||
cp = stpcpy (mkfilename, "Makefile.");
|
||||
- if (temp != NULL)
|
||||
- *((char *) stpncpy (cp, cmd->infile, temp - cmd->infile)) = '\0';
|
||||
- else
|
||||
+ if (temp != NULL) {
|
||||
+ strncpy(cp, cmd->infile, temp - cmd->infile);
|
||||
+ cp[temp - cmd->infile - 1] = 0;
|
||||
+ } else
|
||||
stpcpy (cp, cmd->infile);
|
||||
|
||||
}
|
||||
14
toolchain/glibc/patches/200-add-dl-search-paths.patch
Normal file
14
toolchain/glibc/patches/200-add-dl-search-paths.patch
Normal file
@@ -0,0 +1,14 @@
|
||||
add /usr/lib to default search path for the dynamic linker
|
||||
|
||||
--- a/Makeconfig
|
||||
+++ b/Makeconfig
|
||||
@@ -571,6 +571,9 @@ else
|
||||
default-rpath = $(libdir)
|
||||
endif
|
||||
|
||||
+# Add /usr/lib to default search path for the dynamic linker
|
||||
+user-defined-trusted-dirs := /usr/lib
|
||||
+
|
||||
ifndef link-extra-libs
|
||||
link-extra-libs = $(LDLIBS-$(@F))
|
||||
link-extra-libs-static = $(link-extra-libs)
|
||||
Reference in New Issue
Block a user