mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-27 19:37:10 +02:00
[toolchain] add external toolchain support, enhance native toolchain support (special thanks to Luigi Mantellini for his help... and patience ;)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@17682 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
e44638b110
commit
6a36104faa
@ -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.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
@ -138,6 +138,7 @@ config SHADOW_PASSWORDS
|
|||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "Binary stripping method"
|
prompt "Binary stripping method"
|
||||||
|
default USE_STRIP if EXTERNAL_TOOLCHAIN
|
||||||
default USE_STRIP if USE_GLIBC || USE_EGLIBC
|
default USE_STRIP if USE_GLIBC || USE_EGLIBC
|
||||||
default USE_SSTRIP
|
default USE_SSTRIP
|
||||||
help
|
help
|
||||||
@ -231,7 +232,6 @@ endmenu
|
|||||||
menuconfig DEVEL
|
menuconfig DEVEL
|
||||||
bool "Advanced configuration options (for developers)"
|
bool "Advanced configuration options (for developers)"
|
||||||
default n
|
default n
|
||||||
select TOOLCHAINOPTS if !NATIVE_TOOLCHAIN
|
|
||||||
|
|
||||||
config BROKEN
|
config BROKEN
|
||||||
bool
|
bool
|
||||||
|
@ -61,26 +61,69 @@ define Package/base-files/description
|
|||||||
This package contains a base filesystem and system scripts for OpenWrt.
|
This package contains a base filesystem and system scripts for OpenWrt.
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
||||||
define Package/gcc/Default
|
define Package/gcc/Default
|
||||||
SECTION:=libs
|
SECTION:=libs
|
||||||
CATEGORY:=Base system
|
CATEGORY:=Base system
|
||||||
DEPENDS:=@!NATIVE_TOOLCHAIN
|
|
||||||
URL:=http://gcc.gnu.org/
|
URL:=http://gcc.gnu.org/
|
||||||
VERSION:=$(LIBGCC_VERSION)-$(PKG_RELEASE)
|
VERSION:=$(LIBGCC_VERSION)-$(PKG_RELEASE)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
||||||
define Package/libgcc
|
define Package/libgcc
|
||||||
$(call Package/gcc/Default)
|
$(call Package/gcc/Default)
|
||||||
TITLE:=GCC support library
|
TITLE:=GCC support library
|
||||||
DEPENDS+=@!(TARGET_avr32||TARGET_coldfire)
|
DEPENDS+=@!(TARGET_avr32||TARGET_coldfire)
|
||||||
endef
|
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
|
define Package/libssp
|
||||||
$(call Package/gcc/Default)
|
$(call Package/gcc/Default)
|
||||||
DEPENDS+=@SSP_SUPPORT
|
DEPENDS+=@SSP_SUPPORT
|
||||||
TITLE:=GCC support library
|
TITLE:=GCC support library
|
||||||
endef
|
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
|
define Package/libstdcpp
|
||||||
$(call Package/gcc/Default)
|
$(call Package/gcc/Default)
|
||||||
NAME:=libstdc++
|
NAME:=libstdc++
|
||||||
@ -88,30 +131,114 @@ $(call Package/gcc/Default)
|
|||||||
DEPENDS+=@INSTALL_LIBSTDCPP
|
DEPENDS+=@INSTALL_LIBSTDCPP
|
||||||
endef
|
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
|
define Package/libc/Default
|
||||||
SECTION:=libs
|
SECTION:=libs
|
||||||
CATEGORY:=Base system
|
CATEGORY:=Base system
|
||||||
DEPENDS:=@!NATIVE_TOOLCHAIN
|
|
||||||
VERSION:=$(LIBC_VERSION)-$(PKG_RELEASE)
|
VERSION:=$(LIBC_VERSION)-$(PKG_RELEASE)
|
||||||
URL:=$(LIBC_URL)
|
URL:=$(LIBC_URL)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
||||||
define Package/libc
|
define Package/libc
|
||||||
$(call Package/libc/Default)
|
$(call Package/libc/Default)
|
||||||
TITLE:=C library
|
TITLE:=C library
|
||||||
endef
|
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
|
define Package/libpthread
|
||||||
$(call Package/libc/Default)
|
$(call Package/libc/Default)
|
||||||
TITLE:=POSIX thread library
|
TITLE:=POSIX thread library
|
||||||
DEPENDS:= +librt
|
DEPENDS:= +librt
|
||||||
endef
|
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
|
define Package/librt
|
||||||
$(call Package/libc/Default)
|
$(call Package/libc/Default)
|
||||||
TITLE:=POSIX.1b RealTime extension library
|
TITLE:=POSIX.1b RealTime extension library
|
||||||
endef
|
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
|
define Package/ldd
|
||||||
$(call Package/libc/Default)
|
$(call Package/libc/Default)
|
||||||
SECTION:=utils
|
SECTION:=utils
|
||||||
@ -119,6 +246,27 @@ $(call Package/libc/Default)
|
|||||||
TITLE:=LDD trace utility
|
TITLE:=LDD trace utility
|
||||||
endef
|
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
|
define Package/ldconfig
|
||||||
$(call Package/libc/Default)
|
$(call Package/libc/Default)
|
||||||
SECTION:=utils
|
SECTION:=utils
|
||||||
@ -126,6 +274,26 @@ $(call Package/libc/Default)
|
|||||||
TITLE:=Shared library path configuration
|
TITLE:=Shared library path configuration
|
||||||
endef
|
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
|
define Build/Prepare
|
||||||
mkdir -p $(PKG_BUILD_DIR)
|
mkdir -p $(PKG_BUILD_DIR)
|
||||||
@ -200,6 +368,8 @@ define Package/base-files/install
|
|||||||
done
|
done
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
||||||
|
|
||||||
define Package/libgcc/install
|
define Package/libgcc/install
|
||||||
$(INSTALL_DIR) $(1)/lib
|
$(INSTALL_DIR) $(1)/lib
|
||||||
$(CP) $(TOOLCHAIN_DIR)/lib$(LIB_SUFFIX)/libgcc_s.so.* $(1)/lib/
|
$(CP) $(TOOLCHAIN_DIR)/lib$(LIB_SUFFIX)/libgcc_s.so.* $(1)/lib/
|
||||||
@ -273,6 +443,74 @@ define Package/ldconfig/install
|
|||||||
$(CP) $(TOOLCHAIN_DIR)/sbin/ldconfig $(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)
|
ifneq ($(DUMP),1)
|
||||||
-include $(PLATFORM_DIR)/base-files.mk
|
-include $(PLATFORM_DIR)/base-files.mk
|
||||||
endif
|
endif
|
||||||
|
60
rules.mk
60
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.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
@ -34,9 +34,6 @@ BOARD:=$(call qstrip,$(CONFIG_TARGET_BOARD))
|
|||||||
TARGET_OPTIMIZATION:=$(call qstrip,$(CONFIG_TARGET_OPTIMIZATION))
|
TARGET_OPTIMIZATION:=$(call qstrip,$(CONFIG_TARGET_OPTIMIZATION))
|
||||||
TARGET_SUFFIX=$(call qstrip,$(CONFIG_TARGET_SUFFIX))
|
TARGET_SUFFIX=$(call qstrip,$(CONFIG_TARGET_SUFFIX))
|
||||||
BUILD_SUFFIX:=$(call qstrip,$(CONFIG_BUILD_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})
|
SUBDIR:=$(patsubst $(TOPDIR)/%,%,${CURDIR})
|
||||||
|
|
||||||
OPTIMIZE_FOR_CPU=$(subst i386,i486,$(ARCH))
|
OPTIMIZE_FOR_CPU=$(subst i386,i486,$(ARCH))
|
||||||
@ -52,13 +49,32 @@ BIN_DIR:=$(TOPDIR)/bin
|
|||||||
INCLUDE_DIR:=$(TOPDIR)/include
|
INCLUDE_DIR:=$(TOPDIR)/include
|
||||||
SCRIPT_DIR:=$(TOPDIR)/scripts
|
SCRIPT_DIR:=$(TOPDIR)/scripts
|
||||||
BUILD_DIR_BASE:=$(TOPDIR)/build_dir
|
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_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
|
STAGING_DIR_HOST:=$(TOPDIR)/staging_dir/host
|
||||||
|
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)
|
TOOLCHAIN_DIR:=$(TOPDIR)/staging_dir/toolchain-$(ARCH)_gcc-$(GCCV)_$(LIBC)-$(LIBCV)
|
||||||
PACKAGE_DIR:=$(BIN_DIR)/packages/$(BOARD)_$(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:=$(BUILD_DIR)/stamp
|
||||||
STAMP_DIR_HOST=$(BUILD_DIR_HOST)/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))
|
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)
|
DEBUG_DIR:=$(BUILD_DIR)/debug-$(BOARD)
|
||||||
BUILD_LOG_DIR:=$(TOPDIR)/logs
|
BUILD_LOG_DIR:=$(TOPDIR)/logs
|
||||||
|
|
||||||
TARGET_PATH:=$(TOOLCHAIN_DIR)/usr/bin:$(STAGING_DIR_HOST)/bin:$(PATH)
|
TARGET_PATH:=$(STAGING_DIR_HOST)/bin:$(PATH)
|
||||||
TARGET_PATH_PKG:=$(STAGING_DIR)/host/bin:$(TARGET_PATH)
|
|
||||||
TARGET_CFLAGS:=$(TARGET_OPTIMIZATION)$(if $(CONFIG_DEBUG), -g3)
|
TARGET_CFLAGS:=$(TARGET_OPTIMIZATION)$(if $(CONFIG_DEBUG), -g3)
|
||||||
TARGET_CPPFLAGS:=-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include
|
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))
|
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
|
ifndef DUMP
|
||||||
ifeq ($(CONFIG_NATIVE_TOOLCHAIN),)
|
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
||||||
-include $(TOOLCHAIN_DIR)/info.mk
|
-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_CROSS:=$(if $(TARGET_CROSS),$(TARGET_CROSS),$(OPTIMIZE_FOR_CPU)-openwrt-linux$(if $(TARGET_SUFFIX),-$(TARGET_SUFFIX))-)
|
||||||
TARGET_CFLAGS+= -fhonour-copts
|
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
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
TARGET_PATH_PKG:=$(STAGING_DIR)/host/bin:$(TARGET_PATH)
|
||||||
|
|
||||||
ifeq ($(CONFIG_SOFT_FLOAT),y)
|
ifeq ($(CONFIG_SOFT_FLOAT),y)
|
||||||
SOFT_FLOAT_CONFIG_OPTION:=--with-float=soft
|
SOFT_FLOAT_CONFIG_OPTION:=--with-float=soft
|
||||||
|
@ -1,14 +1,90 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
menuconfig EXTERNAL_TOOLCHAIN
|
||||||
|
bool
|
||||||
|
prompt "Use external toolchain" if DEVEL
|
||||||
|
help
|
||||||
|
If enabled, OpenWrt will compile using an existing toolchain instead of compiling one
|
||||||
|
|
||||||
config NATIVE_TOOLCHAIN
|
config NATIVE_TOOLCHAIN
|
||||||
bool
|
bool
|
||||||
prompt "Use host's toolchain" if DEVEL && BROKEN
|
prompt "Use host's toolchain" if DEVEL
|
||||||
default n
|
depends EXTERNAL_TOOLCHAIN
|
||||||
|
select NO_STRIP
|
||||||
help
|
help
|
||||||
If enabled, OpenWrt will compile using your existing toolchain instead of compiling one
|
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
|
menuconfig TOOLCHAINOPTS
|
||||||
bool "Toolchain Options" if DEVEL
|
bool "Toolchain Options" if DEVEL
|
||||||
depends !NATIVE_TOOLCHAIN
|
depends NEED_TOOLCHAIN
|
||||||
|
|
||||||
menuconfig EXTRA_TARGET_ARCH
|
menuconfig EXTRA_TARGET_ARCH
|
||||||
bool
|
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.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
@ -28,13 +28,13 @@
|
|||||||
curdir:=toolchain
|
curdir:=toolchain
|
||||||
|
|
||||||
# subdirectories to descend into
|
# 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-compile:=$($(curdir)/builddirs-prepare)
|
||||||
$(curdir)/builddirs-install:=$($(curdir)/builddirs-compile)
|
$(curdir)/builddirs-install:=$($(curdir)/builddirs-compile)
|
||||||
|
|
||||||
# builddir dependencies
|
# builddir dependencies
|
||||||
|
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
||||||
$(curdir)/$(LIBC)/prepare:=$(curdir)/kernel-headers/install
|
$(curdir)/$(LIBC)/prepare:=$(curdir)/kernel-headers/install
|
||||||
ifeq ($(CONFIG_NATIVE_TOOLCHAIN),)
|
|
||||||
$(curdir)/gcc/prepare:=$(curdir)/binutils/install
|
$(curdir)/gcc/prepare:=$(curdir)/binutils/install
|
||||||
$(curdir)/kernel-headers/install:=$(curdir)/gcc/prepare
|
$(curdir)/kernel-headers/install:=$(curdir)/gcc/prepare
|
||||||
$(curdir)/gcc/compile:=$(curdir)/$(LIBC)/prepare
|
$(curdir)/gcc/compile:=$(curdir)/$(LIBC)/prepare
|
||||||
|
Loading…
Reference in New Issue
Block a user