mirror of
https://github.com/openwrt/openwrt.git
synced 2024-11-23 09:56:19 +08:00
add external toolchain support, enhance native toolchain support (special thanks to Luigi Mantellini for his help... and patience ;)
SVN-Revision: 17682
This commit is contained in:
parent
6f4e700acd
commit
c9bc7c504c
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2006-2007 OpenWrt.org
|
||||
# Copyright (C) 2006-2009 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
@ -138,6 +138,7 @@ config SHADOW_PASSWORDS
|
||||
|
||||
choice
|
||||
prompt "Binary stripping method"
|
||||
default USE_STRIP if EXTERNAL_TOOLCHAIN
|
||||
default USE_STRIP if USE_GLIBC || USE_EGLIBC
|
||||
default USE_SSTRIP
|
||||
help
|
||||
@ -231,7 +232,6 @@ endmenu
|
||||
menuconfig DEVEL
|
||||
bool "Advanced configuration options (for developers)"
|
||||
default n
|
||||
select TOOLCHAINOPTS if !NATIVE_TOOLCHAIN
|
||||
|
||||
config BROKEN
|
||||
bool
|
||||
|
@ -61,26 +61,69 @@ define Package/base-files/description
|
||||
This package contains a base filesystem and system scripts for OpenWrt.
|
||||
endef
|
||||
|
||||
|
||||
define Package/gcc/Default
|
||||
SECTION:=libs
|
||||
CATEGORY:=Base system
|
||||
DEPENDS:=@!NATIVE_TOOLCHAIN
|
||||
URL:=http://gcc.gnu.org/
|
||||
VERSION:=$(LIBGCC_VERSION)-$(PKG_RELEASE)
|
||||
endef
|
||||
|
||||
|
||||
define Package/libgcc
|
||||
$(call Package/gcc/Default)
|
||||
TITLE:=GCC support library
|
||||
DEPENDS+=@!(TARGET_avr32||TARGET_coldfire)
|
||||
endef
|
||||
|
||||
define Package/libgcc/config
|
||||
menu "Configuration"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_libgcc
|
||||
|
||||
config LIBGCC_ROOT_DIR
|
||||
string
|
||||
prompt "libgcc shared library base directory"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_libgcc
|
||||
default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN
|
||||
default "/" if NATIVE_TOOLCHAIN
|
||||
|
||||
config LIBGCC_FILE_SPEC
|
||||
string
|
||||
prompt "libgcc shared library files (use wildcards)"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_libgcc
|
||||
default "./lib/libgcc_s.so.*"
|
||||
|
||||
endmenu
|
||||
endef
|
||||
|
||||
|
||||
define Package/libssp
|
||||
$(call Package/gcc/Default)
|
||||
DEPENDS+=@SSP_SUPPORT
|
||||
TITLE:=GCC support library
|
||||
endef
|
||||
|
||||
define Package/libssp/config
|
||||
menu "Configuration"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_libssp
|
||||
|
||||
config LIBSPP_ROOT_DIR
|
||||
string
|
||||
prompt "libssp shared library base directory"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_libssp
|
||||
default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN
|
||||
default "/" if NATIVE_TOOLCHAIN
|
||||
|
||||
config LIBSSP_FILE_SPEC
|
||||
string
|
||||
prompt "libssp shared library files (use wildcards)"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_libssp
|
||||
default "./lib/libssp.so.*"
|
||||
|
||||
endmenu
|
||||
endef
|
||||
|
||||
|
||||
define Package/libstdcpp
|
||||
$(call Package/gcc/Default)
|
||||
NAME:=libstdc++
|
||||
@ -88,30 +131,114 @@ $(call Package/gcc/Default)
|
||||
DEPENDS+=@INSTALL_LIBSTDCPP
|
||||
endef
|
||||
|
||||
define Package/libstdcpp/config
|
||||
menu "Configuration"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_libstdcpp
|
||||
|
||||
config LIBSTDCPP_ROOT_DIR
|
||||
string
|
||||
prompt "libstdcpp shared library base directory"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_libstdcpp
|
||||
default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN
|
||||
default "/" if NATIVE_TOOLCHAIN
|
||||
|
||||
config LIBSTDCPP_FILE_SPEC
|
||||
string
|
||||
prompt "libstdc++ shared library files (use wildcards)"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_libstdcpp
|
||||
default "./lib/libstdc++.so.*"
|
||||
|
||||
endmenu
|
||||
endef
|
||||
|
||||
|
||||
define Package/libc/Default
|
||||
SECTION:=libs
|
||||
CATEGORY:=Base system
|
||||
DEPENDS:=@!NATIVE_TOOLCHAIN
|
||||
VERSION:=$(LIBC_VERSION)-$(PKG_RELEASE)
|
||||
URL:=$(LIBC_URL)
|
||||
endef
|
||||
|
||||
|
||||
define Package/libc
|
||||
$(call Package/libc/Default)
|
||||
TITLE:=C library
|
||||
endef
|
||||
|
||||
define Package/libc/config
|
||||
menu "Configuration"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_libc
|
||||
|
||||
config LIBC_ROOT_DIR
|
||||
string
|
||||
prompt "libc shared library base directory"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_libc
|
||||
default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN
|
||||
default "/" if NATIVE_TOOLCHAIN
|
||||
|
||||
config LIBC_FILE_SPEC
|
||||
string
|
||||
prompt "libc shared library files (use wildcards)"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_libc
|
||||
default "./lib/ld{-*.so,-linux*.so.*} ./lib/lib{anl,c,cidn,crypt,dl,m,nsl,nss_dns,nss_files,resolv,util}{-*.so,.so.*}"
|
||||
|
||||
endmenu
|
||||
endef
|
||||
|
||||
|
||||
define Package/libpthread
|
||||
$(call Package/libc/Default)
|
||||
TITLE:=POSIX thread library
|
||||
DEPENDS:= +librt
|
||||
endef
|
||||
|
||||
define Package/libpthread/config
|
||||
menu "Configuration"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_libpthread
|
||||
|
||||
config LIBPTHREAD_ROOT_DIR
|
||||
string
|
||||
prompt "libpthread shared library base directory"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_libpthread
|
||||
default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN
|
||||
default "/" if NATIVE_TOOLCHAIN
|
||||
|
||||
config LIBPTHREAD_FILE_SPEC
|
||||
string
|
||||
prompt "libpthread shared library files (use wildcards)"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_libpthread
|
||||
default "./lib/libpthread{-*.so,.so.*}"
|
||||
|
||||
endmenu
|
||||
endef
|
||||
|
||||
|
||||
define Package/librt
|
||||
$(call Package/libc/Default)
|
||||
TITLE:=POSIX.1b RealTime extension library
|
||||
endef
|
||||
|
||||
define Package/librt/config
|
||||
menu "Configuration"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_librt
|
||||
|
||||
config LIBRT_ROOT_DIR
|
||||
string
|
||||
prompt "librt shared library base directory"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_librt
|
||||
default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN
|
||||
default "/" if NATIVE_TOOLCHAIN
|
||||
|
||||
config LIBRT_FILE_SPEC
|
||||
string
|
||||
prompt "librt shared library files (use wildcards)"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_librt
|
||||
default "./lib/librt{-*.so,.so.*}"
|
||||
|
||||
endmenu
|
||||
endef
|
||||
|
||||
|
||||
define Package/ldd
|
||||
$(call Package/libc/Default)
|
||||
SECTION:=utils
|
||||
@ -119,6 +246,27 @@ $(call Package/libc/Default)
|
||||
TITLE:=LDD trace utility
|
||||
endef
|
||||
|
||||
define Package/ldd/config
|
||||
menu "Configuration"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_ldd
|
||||
|
||||
config LDD_ROOT_DIR
|
||||
string
|
||||
prompt "ldd trace utility base directory"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_ldd
|
||||
default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN
|
||||
default "/" if NATIVE_TOOLCHAIN
|
||||
|
||||
config LDD_FILE_SPEC
|
||||
string
|
||||
prompt "ldd trace utility file"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_ldd
|
||||
default "./usr/bin/ldd"
|
||||
|
||||
endmenu
|
||||
endef
|
||||
|
||||
|
||||
define Package/ldconfig
|
||||
$(call Package/libc/Default)
|
||||
SECTION:=utils
|
||||
@ -126,6 +274,26 @@ $(call Package/libc/Default)
|
||||
TITLE:=Shared library path configuration
|
||||
endef
|
||||
|
||||
define Package/ldconfig/config
|
||||
menu "Configuration"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_ldconfig
|
||||
|
||||
config LDCONFIG_ROOT_DIR
|
||||
string
|
||||
prompt "ldconfig base directory"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_ldconfig
|
||||
default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN
|
||||
default "/" if NATIVE_TOOLCHAIN
|
||||
|
||||
config LDCONFIG_FILE_SPEC
|
||||
string
|
||||
prompt "ldconfig file"
|
||||
depends EXTERNAL_TOOLCHAIN && PACKAGE_ldconfig
|
||||
default "./sbin/ldconfig"
|
||||
|
||||
endmenu
|
||||
endef
|
||||
|
||||
|
||||
define Build/Prepare
|
||||
mkdir -p $(PKG_BUILD_DIR)
|
||||
@ -200,26 +368,28 @@ define Package/base-files/install
|
||||
done
|
||||
endef
|
||||
|
||||
define Package/libgcc/install
|
||||
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
||||
|
||||
define Package/libgcc/install
|
||||
$(INSTALL_DIR) $(1)/lib
|
||||
$(CP) $(TOOLCHAIN_DIR)/lib$(LIB_SUFFIX)/libgcc_s.so.* $(1)/lib/
|
||||
endef
|
||||
endef
|
||||
|
||||
define Package/libssp/install
|
||||
define Package/libssp/install
|
||||
$(INSTALL_DIR) $(1)/lib
|
||||
$(CP) $(TOOLCHAIN_DIR)/lib$(LIB_SUFFIX)/libssp.so.* $(1)/lib/
|
||||
endef
|
||||
endef
|
||||
|
||||
define Package/libstdcpp/install
|
||||
define Package/libstdcpp/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib
|
||||
$(CP) $(TOOLCHAIN_DIR)/usr/lib$(LIB_SUFFIX)/libstdc++.so.* $(1)/usr/lib/
|
||||
endef
|
||||
endef
|
||||
|
||||
use_libutil=$(if $(CONFIG_USE_GLIBC)$(CONFIG_EGLIBC_OPTION_EGLIBC_UTMP),libutil)
|
||||
use_libnsl=$(if $(CONFIG_USE_GLIBC)$(CONFIG_EGLIBC_OPTION_EGLIBC_NIS),libnsl)
|
||||
use_nsswitch=$(if $(CONFIG_USE_GLIBC)$(CONFIG_EGLIBC_OPTION_EGLIBC_NSSWITCH),libnss_dns libnss_files)
|
||||
use_libutil=$(if $(CONFIG_USE_GLIBC)$(CONFIG_EGLIBC_OPTION_EGLIBC_UTMP),libutil)
|
||||
use_libnsl=$(if $(CONFIG_USE_GLIBC)$(CONFIG_EGLIBC_OPTION_EGLIBC_NIS),libnsl)
|
||||
use_nsswitch=$(if $(CONFIG_USE_GLIBC)$(CONFIG_EGLIBC_OPTION_EGLIBC_NSSWITCH),libnss_dns libnss_files)
|
||||
|
||||
define Package/glibc/install
|
||||
define Package/glibc/install
|
||||
$(INSTALL_DIR) $(1)/lib
|
||||
$(CP) $(TOOLCHAIN_DIR)/lib/ld*.so.* $(1)/lib/
|
||||
$(CP) $(TOOLCHAIN_DIR)/lib/ld-$(LIBC_SO_VERSION).so $(1)/lib/
|
||||
@ -227,51 +397,119 @@ define Package/glibc/install
|
||||
$(CP) $(TOOLCHAIN_DIR)/lib/$$$$file.so.* $(1)/lib/; \
|
||||
$(CP) $(TOOLCHAIN_DIR)/lib/$$$$file-$(LIBC_SO_VERSION).so $(1)/lib/; \
|
||||
done
|
||||
endef
|
||||
endef
|
||||
|
||||
define Package/eglibc/install
|
||||
$(call Package/glibc/install,$1)
|
||||
endef
|
||||
define Package/eglibc/install
|
||||
$(call Package/glibc/install,$1)
|
||||
endef
|
||||
|
||||
define Package/uClibc/install
|
||||
define Package/uClibc/install
|
||||
$(INSTALL_DIR) $(1)/lib
|
||||
for file in ld$(LIB_SUFFIX)-uClibc libc libcrypt libdl libm libnsl libresolv libuClibc libutil; do \
|
||||
$(CP) $(TOOLCHAIN_DIR)/lib/$$$$file.so.* $(1)/lib/; \
|
||||
$(CP) $(TOOLCHAIN_DIR)/lib/$$$$file-$(LIBC_SO_VERSION).so $(1)/lib/; \
|
||||
done
|
||||
endef
|
||||
endef
|
||||
|
||||
define Package/libc/install
|
||||
$(call Package/$(LIBC)/install,$1)
|
||||
endef
|
||||
define Package/libc/install
|
||||
$(call Package/$(LIBC)/install,$1)
|
||||
endef
|
||||
|
||||
define Package/libc/install_lib
|
||||
define Package/libc/install_lib
|
||||
$(CP) $(filter-out %/libdl_pic.a,$(wildcard $(TOOLCHAIN_DIR)/usr/lib/lib*.a)) $(1)/lib/
|
||||
$(if $(wildcard $(TOOLCHAIN_DIR)/usr/lib/libc_so.a),$(CP) $(TOOLCHAIN_DIR)/usr/lib/libc_so.a $(1)/lib/libc_pic.a)
|
||||
$(CP) $(TOOLCHAIN_DIR)/usr/lib/gcc/*/*/libgcc.a $(1)/lib/libgcc_s_pic.a
|
||||
endef
|
||||
endef
|
||||
|
||||
define Package/libpthread/install
|
||||
define Package/libpthread/install
|
||||
$(INSTALL_DIR) $(1)/lib
|
||||
$(CP) $(TOOLCHAIN_DIR)/lib/libpthread.so.* $(1)/lib/
|
||||
$(CP) $(TOOLCHAIN_DIR)/lib/libpthread-$(LIBC_SO_VERSION).so $(1)/lib/
|
||||
endef
|
||||
endef
|
||||
|
||||
define Package/librt/install
|
||||
define Package/librt/install
|
||||
$(INSTALL_DIR) $(1)/lib
|
||||
$(CP) $(TOOLCHAIN_DIR)/lib/librt.so.* $(1)/lib/
|
||||
$(CP) $(TOOLCHAIN_DIR)/lib/librt-$(LIBC_SO_VERSION).so $(1)/lib/
|
||||
endef
|
||||
endef
|
||||
|
||||
define Package/ldd/install
|
||||
define Package/ldd/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin/
|
||||
$(CP) $(TOOLCHAIN_DIR)/usr/bin/ldd $(1)/usr/bin/
|
||||
endef
|
||||
endef
|
||||
|
||||
define Package/ldconfig/install
|
||||
define Package/ldconfig/install
|
||||
$(INSTALL_DIR) $(1)/sbin/
|
||||
$(CP) $(TOOLCHAIN_DIR)/sbin/ldconfig $(1)/sbin/
|
||||
endef
|
||||
endef
|
||||
|
||||
else
|
||||
|
||||
define Package/libgcc/install
|
||||
for file in $(call qstrip,$(CONFIG_LIBGCC_FILE_SPEC)); do \
|
||||
dir=`dirname $$$$file` ; \
|
||||
$(INSTALL_DIR) $(1)/$$$$dir ; \
|
||||
$(CP) $(call qstrip,$(CONFIG_LIBGCC_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \
|
||||
done
|
||||
endef
|
||||
|
||||
define Package/libssp/install
|
||||
for file in $(call qstrip,$(CONFIG_LIBSSP_FILE_SPEC)); do \
|
||||
dir=`dirname $$$$file` ; \
|
||||
$(INSTALL_DIR) $(1)/$$$$dir ; \
|
||||
$(CP) $(call qstrip,$(CONFIG_LIBSSP_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \
|
||||
done
|
||||
endef
|
||||
|
||||
define Package/libstdcpp/install
|
||||
for file in $(call qstrip,$(CONFIG_LIBSTDCPP_FILE_SPEC)); do \
|
||||
dir=`dirname $$$$file` ; \
|
||||
$(INSTALL_DIR) $(1)/$$$$dir ; \
|
||||
$(CP) $(call qstrip,$(CONFIG_LIBSTDCPP_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \
|
||||
done
|
||||
endef
|
||||
|
||||
define Package/libc/install
|
||||
for file in $(call qstrip,$(CONFIG_LIBC_FILE_SPEC)); do \
|
||||
dir=`dirname $$$$file` ; \
|
||||
$(INSTALL_DIR) $(1)/$$$$dir ; \
|
||||
$(CP) $(call qstrip,$(CONFIG_LIBC_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \
|
||||
done
|
||||
endef
|
||||
|
||||
define Package/libpthread/install
|
||||
for file in $(call qstrip,$(CONFIG_LIBPTHREAD_FILE_SPEC)); do \
|
||||
dir=`dirname $$$$file` ; \
|
||||
$(INSTALL_DIR) $(1)/$$$$dir ; \
|
||||
$(CP) $(call qstrip,$(CONFIG_LIBPTHREAD_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \
|
||||
done
|
||||
endef
|
||||
|
||||
define Package/librt/install
|
||||
for file in $(call qstrip,$(CONFIG_LIBRT_FILE_SPEC)); do \
|
||||
dir=`dirname $$$$file` ; \
|
||||
$(INSTALL_DIR) $(1)/$$$$dir ; \
|
||||
$(CP) $(call qstrip,$(CONFIG_LIBRT_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \
|
||||
done
|
||||
endef
|
||||
|
||||
define Package/ldd/install
|
||||
for file in $(call qstrip,$(CONFIG_LDD_FILE_SPEC)); do \
|
||||
dir=`dirname $$$$file` ; \
|
||||
$(INSTALL_DIR) $(1)/$$$$dir ; \
|
||||
$(CP) $(call qstrip,$(CONFIG_LDD_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \
|
||||
done
|
||||
endef
|
||||
|
||||
define Package/ldconfig/install
|
||||
for file in $(call qstrip,$(CONFIG_LDCONFIG_FILE_SPEC)); do \
|
||||
dir=`dirname $$$$file` ; \
|
||||
$(INSTALL_DIR) $(1)/$$$$dir ; \
|
||||
$(CP) $(call qstrip,$(CONFIG_LDCONFIG_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \
|
||||
done
|
||||
endef
|
||||
|
||||
endif
|
||||
|
||||
ifneq ($(DUMP),1)
|
||||
-include $(PLATFORM_DIR)/base-files.mk
|
||||
|
72
rules.mk
72
rules.mk
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (C) 2006-2008 OpenWrt.org
|
||||
# Copyright (C) 2006-2009 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
@ -34,9 +34,6 @@ BOARD:=$(call qstrip,$(CONFIG_TARGET_BOARD))
|
||||
TARGET_OPTIMIZATION:=$(call qstrip,$(CONFIG_TARGET_OPTIMIZATION))
|
||||
TARGET_SUFFIX=$(call qstrip,$(CONFIG_TARGET_SUFFIX))
|
||||
BUILD_SUFFIX:=$(call qstrip,$(CONFIG_BUILD_SUFFIX))
|
||||
GCCV:=$(call qstrip,$(CONFIG_GCC_VERSION))
|
||||
LIBC:=$(call qstrip,$(CONFIG_LIBC))
|
||||
LIBCV:=$(call qstrip,$(CONFIG_LIBC_VERSION))
|
||||
SUBDIR:=$(patsubst $(TOPDIR)/%,%,${CURDIR})
|
||||
|
||||
OPTIMIZE_FOR_CPU=$(subst i386,i486,$(ARCH))
|
||||
@ -52,13 +49,32 @@ BIN_DIR:=$(TOPDIR)/bin
|
||||
INCLUDE_DIR:=$(TOPDIR)/include
|
||||
SCRIPT_DIR:=$(TOPDIR)/scripts
|
||||
BUILD_DIR_BASE:=$(TOPDIR)/build_dir
|
||||
BUILD_DIR:=$(BUILD_DIR_BASE)/target-$(ARCH)_$(LIBC)-$(LIBCV)$(if $(BUILD_SUFFIX),_$(BUILD_SUFFIX))
|
||||
BUILD_DIR_HOST:=$(BUILD_DIR_BASE)/host
|
||||
BUILD_DIR_TOOLCHAIN:=$(BUILD_DIR_BASE)/toolchain-$(ARCH)_gcc-$(GCCV)_$(LIBC)-$(LIBCV)
|
||||
STAGING_DIR:=$(TOPDIR)/staging_dir/target-$(ARCH)_$(LIBC)-$(LIBCV)
|
||||
STAGING_DIR_HOST:=$(TOPDIR)/staging_dir/host
|
||||
TOOLCHAIN_DIR:=$(TOPDIR)/staging_dir/toolchain-$(ARCH)_gcc-$(GCCV)_$(LIBC)-$(LIBCV)
|
||||
PACKAGE_DIR:=$(BIN_DIR)/packages/$(BOARD)_$(LIBC)-$(LIBCV)
|
||||
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
||||
GCCV:=$(call qstrip,$(CONFIG_GCC_VERSION))
|
||||
LIBC:=$(call qstrip,$(CONFIG_LIBC))
|
||||
LIBCV:=$(call qstrip,$(CONFIG_LIBC_VERSION))
|
||||
REAL_GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-openwrt-linux$(if $(TARGET_SUFFIX),-$(TARGET_SUFFIX))
|
||||
GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-openwrt-linux
|
||||
BUILD_DIR:=$(BUILD_DIR_BASE)/target-$(ARCH)_$(LIBC)-$(LIBCV)$(if $(BUILD_SUFFIX),_$(BUILD_SUFFIX))
|
||||
STAGING_DIR:=$(TOPDIR)/staging_dir/target-$(ARCH)_$(LIBC)-$(LIBCV)
|
||||
BUILD_DIR_TOOLCHAIN:=$(BUILD_DIR_BASE)/toolchain-$(ARCH)_gcc-$(GCCV)_$(LIBC)-$(LIBCV)
|
||||
TOOLCHAIN_DIR:=$(TOPDIR)/staging_dir/toolchain-$(ARCH)_gcc-$(GCCV)_$(LIBC)-$(LIBCV)
|
||||
PACKAGE_DIR:=$(BIN_DIR)/packages/$(BOARD)_$(LIBC)-$(LIBCV)
|
||||
else
|
||||
ifeq ($(CONFIG_NATIVE_TOOLCHAIN),)
|
||||
GNU_TARGET_NAME=$(call qstrip,$(CONFIG_TARGET_NAME))
|
||||
else
|
||||
GNU_TARGET_NAME=$(shell gcc -dumpmachine)
|
||||
endif
|
||||
REAL_GNU_TARGET_NAME=$(GNU_TARGET_NAME)
|
||||
BUILD_DIR:=$(BUILD_DIR_BASE)/target-$(GNU_TARGET_NAME)$(if $(BUILD_SUFFIX),_$(BUILD_SUFFIX))
|
||||
STAGING_DIR:=$(TOPDIR)/staging_dir/target-$(GNU_TARGET_NAME)
|
||||
BUILD_DIR_TOOLCHAIN:=$(BUILD_DIR_BASE)/toolchain-$(GNU_TARGET_NAME)
|
||||
TOOLCHAIN_DIR:=$(TOPDIR)/staging_dir/toolchain-$(GNU_TARGET_NAME)
|
||||
PACKAGE_DIR:=$(BIN_DIR)/packages/$(BOARD)_$(GNU_TARGET_NAME)
|
||||
endif
|
||||
STAMP_DIR:=$(BUILD_DIR)/stamp
|
||||
STAMP_DIR_HOST=$(BUILD_DIR_HOST)/stamp
|
||||
TARGET_ROOTFS_DIR?=$(if $(call qstrip,$(CONFIG_TARGET_ROOTFS_DIR)),$(call qstrip,$(CONFIG_TARGET_ROOTFS_DIR)),$(BUILD_DIR))
|
||||
@ -67,22 +83,40 @@ STAGING_DIR_ROOT:=$(STAGING_DIR)/root-$(BOARD)
|
||||
DEBUG_DIR:=$(BUILD_DIR)/debug-$(BOARD)
|
||||
BUILD_LOG_DIR:=$(TOPDIR)/logs
|
||||
|
||||
TARGET_PATH:=$(TOOLCHAIN_DIR)/usr/bin:$(STAGING_DIR_HOST)/bin:$(PATH)
|
||||
TARGET_PATH_PKG:=$(STAGING_DIR)/host/bin:$(TARGET_PATH)
|
||||
TARGET_PATH:=$(STAGING_DIR_HOST)/bin:$(PATH)
|
||||
TARGET_CFLAGS:=$(TARGET_OPTIMIZATION)$(if $(CONFIG_DEBUG), -g3)
|
||||
TARGET_CPPFLAGS:=-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include
|
||||
TARGET_LDFLAGS:=-L$(TOOLCHAIN_DIR)/usr/lib -L$(TOOLCHAIN_DIR)/lib -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib
|
||||
TARGET_LDFLAGS:=-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib
|
||||
LIBGCC_S=$(if $(wildcard $(TOOLCHAIN_DIR)/lib/libgcc_s.so),-L$(TOOLCHAIN_DIR)/lib -lgcc_s,$(wildcard $(TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc.a))
|
||||
|
||||
ifndef DUMP
|
||||
ifeq ($(CONFIG_NATIVE_TOOLCHAIN),)
|
||||
-include $(TOOLCHAIN_DIR)/info.mk
|
||||
REAL_GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-openwrt-linux$(if $(TARGET_SUFFIX),-$(TARGET_SUFFIX))
|
||||
GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-openwrt-linux
|
||||
TARGET_CROSS:=$(if $(TARGET_CROSS),$(TARGET_CROSS),$(OPTIMIZE_FOR_CPU)-openwrt-linux$(if $(TARGET_SUFFIX),-$(TARGET_SUFFIX))-)
|
||||
TARGET_CFLAGS+= -fhonour-copts
|
||||
endif
|
||||
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
||||
-include $(TOOLCHAIN_DIR)/info.mk
|
||||
TARGET_CROSS:=$(if $(TARGET_CROSS),$(TARGET_CROSS),$(OPTIMIZE_FOR_CPU)-openwrt-linux$(if $(TARGET_SUFFIX),-$(TARGET_SUFFIX))-)
|
||||
TARGET_CFLAGS+= -fhonour-copts
|
||||
TARGET_CPPFLAGS+= -I$(TOOLCHAIN_DIR)/usr/include -I$(TOOLCHAIN_DIR)/include
|
||||
TARGET_LDFLAGS+= -L$(TOOLCHAIN_DIR)/usr/lib -L$(TOOLCHAIN_DIR)/lib
|
||||
TARGET_PATH:=$(TOOLCHAIN_DIR)/usr/bin:$(TARGET_PATH)
|
||||
else
|
||||
ifeq ($(CONFIG_NATIVE_TOOLCHAIN),)
|
||||
TARGET_CROSS:=$(call qstrip,$(CONFIG_TOOLCHAIN_PREFIX))
|
||||
TOOLCHAIN_ROOT_DIR:=$(call qstrip,$(CONFIG_TOOLCHAIN_ROOT))
|
||||
TOOLCHAIN_BIN_DIRS:=$(patsubst ./%,$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_BIN_PATH)))
|
||||
TOOLCHAIN_INC_DIRS:=$(patsubst ./%,$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_INC_PATH)))
|
||||
TOOLCHAIN_LIB_DIRS:=$(patsubst ./%,$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_LIB_PATH)))
|
||||
ifneq ($(TOOLCHAIN_BIN_DIRS),)
|
||||
TARGET_PATH:=$(subst $(space),:,$(TOOLCHAIN_BIN_DIRS)):$(TARGET_PATH)
|
||||
endif
|
||||
ifneq ($(TOOLCHAIN_INC_DIRS),)
|
||||
TARGET_CPPFLAGS+= $(patsubst %,-I%,$(TOOLCHAIN_INC_DIRS))
|
||||
endif
|
||||
ifneq ($(TOOLCHAIN_LIB_DIRS),)
|
||||
TARGET_LDFLAGS+= $(patsubst %,-L%,$(TOOLCHAIN_LIB_DIRS))
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
TARGET_PATH_PKG:=$(STAGING_DIR)/host/bin:$(TARGET_PATH)
|
||||
|
||||
ifeq ($(CONFIG_SOFT_FLOAT),y)
|
||||
SOFT_FLOAT_CONFIG_OPTION:=--with-float=soft
|
||||
|
@ -1,14 +1,90 @@
|
||||
#
|
||||
config NATIVE_TOOLCHAIN
|
||||
|
||||
menuconfig EXTERNAL_TOOLCHAIN
|
||||
bool
|
||||
prompt "Use host's toolchain" if DEVEL && BROKEN
|
||||
default n
|
||||
prompt "Use external toolchain" if DEVEL
|
||||
help
|
||||
If enabled, OpenWrt will compile using your existing toolchain instead of compiling one
|
||||
If enabled, OpenWrt will compile using an existing toolchain instead of compiling one
|
||||
|
||||
config NATIVE_TOOLCHAIN
|
||||
bool
|
||||
prompt "Use host's toolchain" if DEVEL
|
||||
depends EXTERNAL_TOOLCHAIN
|
||||
select NO_STRIP
|
||||
help
|
||||
If enabled, OpenWrt will compile using the native toolchain for your host instead of compiling one
|
||||
|
||||
config TARGET_NAME
|
||||
string
|
||||
prompt "Target name" if DEVEL
|
||||
depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
|
||||
default "arm-unknown-linux-gnu" if arm
|
||||
default "armeb-unknown-linux-gnu" if armeb
|
||||
default "i486-unknown-linux-gnu" if i386
|
||||
default "mips-unknown-linux-gnu" if mips
|
||||
default "mipsel-unknown-linux-gnu" if mipsel
|
||||
default "powerpc-unknown-linux-gnu" if powerpc
|
||||
default "x86_64-unknown-linux-gnu" if x86_64
|
||||
|
||||
config TOOLCHAIN_PREFIX
|
||||
string
|
||||
prompt "Toolchain prefix" if DEVEL
|
||||
depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
|
||||
default "arm-unknown-linux-gnu-" if arm
|
||||
default "armeb-unknown-linux-gnu-" if armeb
|
||||
default "i486-unknown-linux-gnu-" if i386
|
||||
default "mips-unknown-linux-gnu-" if mips
|
||||
default "mipsel-unknown-linux-gnu-" if mipsel
|
||||
default "powerpc-unknown-linux-gnu-" if powerpc
|
||||
default "x86_64-unknown-linux-gnu-" if x86_64
|
||||
|
||||
config TOOLCHAIN_ROOT
|
||||
string
|
||||
prompt "Toolchain root" if DEVEL
|
||||
depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
|
||||
default "/opt/cross/arm-unknown-linux-gnu" if arm
|
||||
default "/opt/cross/armeb-unknown-linux-gnu" if armeb
|
||||
default "/opt/cross/i486-unknown-linux-gnu" if i386
|
||||
default "/opt/cross/mips-unknown-linux-gnu" if mips
|
||||
default "/opt/cross/mipsel-unknown-linux-gnu" if mipsel
|
||||
default "/opt/cross/powerpc-unknown-linux-gnu" if powerpc
|
||||
default "/opt/cross/x86_64-unknown-linux-gnu" if x86_64
|
||||
|
||||
config TOOLCHAIN_BIN_PATH
|
||||
string
|
||||
prompt "Toolchain program path" if DEVEL
|
||||
depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
|
||||
default "./usr/bin ./bin"
|
||||
help
|
||||
Specify additional directories searched for toolchain binaries (override PATH)
|
||||
Use ./DIR for directories relative to the root above
|
||||
|
||||
config TOOLCHAIN_INC_PATH
|
||||
string
|
||||
prompt "Toolchain include path" if DEVEL
|
||||
depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
|
||||
default "./usr/include ./include"
|
||||
help
|
||||
Specify additional directories searched for header files (override CPPFLAGS)
|
||||
Use ./DIR for directories relative to the root above
|
||||
|
||||
config TOOLCHAIN_LIB_PATH
|
||||
string
|
||||
prompt "Toolchain library path" if DEVEL
|
||||
depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
|
||||
default "./usr/lib ./lib"
|
||||
help
|
||||
Specify additional directories searched for libraries (override LDFLAGS)
|
||||
Use ./DIR for directories relative to the root above
|
||||
|
||||
config NEED_TOOLCHAIN
|
||||
bool
|
||||
depends DEVEL
|
||||
default y if !EXTERNAL_TOOLCHAIN
|
||||
|
||||
menuconfig TOOLCHAINOPTS
|
||||
bool "Toolchain Options" if DEVEL
|
||||
depends !NATIVE_TOOLCHAIN
|
||||
bool "Toolchain Options" if DEVEL
|
||||
depends NEED_TOOLCHAIN
|
||||
|
||||
menuconfig EXTRA_TARGET_ARCH
|
||||
bool
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (C) 2007-2008 OpenWrt.org
|
||||
# Copyright (C) 2007-2009 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
@ -28,13 +28,13 @@
|
||||
curdir:=toolchain
|
||||
|
||||
# subdirectories to descend into
|
||||
$(curdir)/builddirs := kernel-headers $(if $(CONFIG_GDB),gdb) $(if $(CONFIG_INSIGHT),insight) $(if $(CONFIG_NATIVE_TOOLCHAIN),,binutils gcc $(LIBC) $(if $(CONFIG_GLIBC_PORTS),glibc-ports))
|
||||
$(curdir)/builddirs := $(if $(CONFIG_GDB),gdb) $(if $(CONFIG_INSIGHT),insight) $(if $(CONFIG_EXTERNAL_TOOLCHAIN),,kernel-headers binutils gcc $(LIBC) $(if $(CONFIG_GLIBC_PORTS),glibc-ports))
|
||||
$(curdir)/builddirs-compile:=$($(curdir)/builddirs-prepare)
|
||||
$(curdir)/builddirs-install:=$($(curdir)/builddirs-compile)
|
||||
|
||||
# builddir dependencies
|
||||
$(curdir)/$(LIBC)/prepare:=$(curdir)/kernel-headers/install
|
||||
ifeq ($(CONFIG_NATIVE_TOOLCHAIN),)
|
||||
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
||||
$(curdir)/$(LIBC)/prepare:=$(curdir)/kernel-headers/install
|
||||
$(curdir)/gcc/prepare:=$(curdir)/binutils/install
|
||||
$(curdir)/kernel-headers/install:=$(curdir)/gcc/prepare
|
||||
$(curdir)/gcc/compile:=$(curdir)/$(LIBC)/prepare
|
||||
|
Loading…
Reference in New Issue
Block a user