Changeset 17682


Ignore:
Timestamp:
2009-09-23T04:27:38+02:00 (7 years ago)
Author:
nico
Message:

[toolchain] add external toolchain support, enhance native toolchain support (special thanks to Luigi Mantellini for his help... and patience ;)

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Config.in

    r17560 r17682  
    1 # Copyright (C) 2006-2007 OpenWrt.org 
     1# Copyright (C) 2006-2009 OpenWrt.org 
    22# 
    33# This is free software, licensed under the GNU General Public License v2. 
     
    139139choice 
    140140        prompt "Binary stripping method" 
     141        default USE_STRIP   if EXTERNAL_TOOLCHAIN 
    141142        default USE_STRIP   if USE_GLIBC || USE_EGLIBC 
    142143        default USE_SSTRIP 
     
    232233        bool "Advanced configuration options (for developers)" 
    233234        default n 
    234         select TOOLCHAINOPTS if !NATIVE_TOOLCHAIN 
    235235 
    236236config BROKEN 
  • trunk/package/base-files/Makefile

    r17618 r17682  
    6262endef 
    6363 
     64 
    6465define Package/gcc/Default 
    6566  SECTION:=libs 
    6667  CATEGORY:=Base system 
    67   DEPENDS:=@!NATIVE_TOOLCHAIN 
    6868  URL:=http://gcc.gnu.org/ 
    6969  VERSION:=$(LIBGCC_VERSION)-$(PKG_RELEASE) 
    7070endef 
     71 
    7172 
    7273define Package/libgcc 
     
    7677endef 
    7778 
     79define Package/libgcc/config 
     80        menu "Configuration" 
     81                depends EXTERNAL_TOOLCHAIN && PACKAGE_libgcc 
     82 
     83        config LIBGCC_ROOT_DIR 
     84                string 
     85                prompt "libgcc shared library base directory" 
     86                depends EXTERNAL_TOOLCHAIN && PACKAGE_libgcc 
     87                default TOOLCHAIN_ROOT  if !NATIVE_TOOLCHAIN 
     88                default "/"  if NATIVE_TOOLCHAIN 
     89 
     90        config LIBGCC_FILE_SPEC 
     91                string 
     92                prompt "libgcc shared library files (use wildcards)" 
     93                depends EXTERNAL_TOOLCHAIN && PACKAGE_libgcc 
     94                default "./lib/libgcc_s.so.*" 
     95 
     96        endmenu 
     97endef 
     98 
     99 
    78100define Package/libssp 
    79101$(call Package/gcc/Default) 
     
    81103  TITLE:=GCC support library 
    82104endef 
     105 
     106define Package/libssp/config 
     107        menu "Configuration" 
     108                depends EXTERNAL_TOOLCHAIN && PACKAGE_libssp 
     109 
     110        config LIBSPP_ROOT_DIR 
     111                string 
     112                prompt "libssp shared library base directory" 
     113                depends EXTERNAL_TOOLCHAIN && PACKAGE_libssp 
     114                default TOOLCHAIN_ROOT  if !NATIVE_TOOLCHAIN 
     115                default "/"  if NATIVE_TOOLCHAIN 
     116 
     117        config LIBSSP_FILE_SPEC 
     118                string 
     119                prompt "libssp shared library files (use wildcards)" 
     120                depends EXTERNAL_TOOLCHAIN && PACKAGE_libssp 
     121                default "./lib/libssp.so.*" 
     122 
     123        endmenu 
     124endef 
     125 
    83126 
    84127define Package/libstdcpp 
     
    89132endef 
    90133 
     134define Package/libstdcpp/config 
     135        menu "Configuration" 
     136        depends EXTERNAL_TOOLCHAIN && PACKAGE_libstdcpp 
     137 
     138        config LIBSTDCPP_ROOT_DIR 
     139                string 
     140                prompt "libstdcpp shared library base directory" 
     141                depends EXTERNAL_TOOLCHAIN && PACKAGE_libstdcpp 
     142                default TOOLCHAIN_ROOT  if !NATIVE_TOOLCHAIN 
     143                default "/"  if NATIVE_TOOLCHAIN 
     144 
     145        config LIBSTDCPP_FILE_SPEC 
     146                string 
     147                prompt "libstdc++ shared library files (use wildcards)" 
     148                depends EXTERNAL_TOOLCHAIN && PACKAGE_libstdcpp 
     149                default "./lib/libstdc++.so.*" 
     150 
     151        endmenu 
     152endef 
     153 
     154 
    91155define Package/libc/Default 
    92156  SECTION:=libs 
    93157  CATEGORY:=Base system 
    94   DEPENDS:=@!NATIVE_TOOLCHAIN 
    95158  VERSION:=$(LIBC_VERSION)-$(PKG_RELEASE) 
    96159  URL:=$(LIBC_URL) 
    97160endef 
     161 
    98162 
    99163define Package/libc 
     
    101165  TITLE:=C library 
    102166endef 
     167 
     168define Package/libc/config 
     169        menu "Configuration" 
     170        depends EXTERNAL_TOOLCHAIN && PACKAGE_libc 
     171 
     172        config LIBC_ROOT_DIR 
     173                string 
     174                prompt "libc shared library base directory" 
     175                depends EXTERNAL_TOOLCHAIN && PACKAGE_libc 
     176                default TOOLCHAIN_ROOT  if !NATIVE_TOOLCHAIN 
     177                default "/"  if NATIVE_TOOLCHAIN 
     178 
     179        config LIBC_FILE_SPEC 
     180                string 
     181                prompt "libc shared library files (use wildcards)" 
     182                depends EXTERNAL_TOOLCHAIN && PACKAGE_libc 
     183                default "./lib/ld{-*.so,-linux*.so.*} ./lib/lib{anl,c,cidn,crypt,dl,m,nsl,nss_dns,nss_files,resolv,util}{-*.so,.so.*}" 
     184 
     185        endmenu 
     186endef 
     187 
    103188 
    104189define Package/libpthread 
     
    108193endef 
    109194 
     195define Package/libpthread/config 
     196        menu "Configuration" 
     197        depends EXTERNAL_TOOLCHAIN && PACKAGE_libpthread 
     198 
     199        config LIBPTHREAD_ROOT_DIR 
     200                string 
     201                prompt "libpthread shared library base directory" 
     202                depends EXTERNAL_TOOLCHAIN && PACKAGE_libpthread 
     203                default TOOLCHAIN_ROOT  if !NATIVE_TOOLCHAIN 
     204                default "/"  if NATIVE_TOOLCHAIN 
     205 
     206        config LIBPTHREAD_FILE_SPEC 
     207                string 
     208                prompt "libpthread shared library files (use wildcards)" 
     209                depends EXTERNAL_TOOLCHAIN && PACKAGE_libpthread 
     210                default "./lib/libpthread{-*.so,.so.*}" 
     211 
     212        endmenu 
     213endef 
     214 
     215 
    110216define Package/librt 
    111217$(call Package/libc/Default) 
    112218  TITLE:=POSIX.1b RealTime extension library 
    113219endef 
     220 
     221define Package/librt/config 
     222        menu "Configuration" 
     223        depends EXTERNAL_TOOLCHAIN && PACKAGE_librt 
     224 
     225        config LIBRT_ROOT_DIR 
     226                string 
     227                prompt "librt shared library base directory" 
     228                depends EXTERNAL_TOOLCHAIN && PACKAGE_librt 
     229                default TOOLCHAIN_ROOT  if !NATIVE_TOOLCHAIN 
     230                default "/"  if NATIVE_TOOLCHAIN 
     231 
     232        config LIBRT_FILE_SPEC 
     233                string 
     234                prompt "librt shared library files (use wildcards)" 
     235                depends EXTERNAL_TOOLCHAIN && PACKAGE_librt 
     236                default "./lib/librt{-*.so,.so.*}" 
     237 
     238        endmenu 
     239endef 
     240 
    114241 
    115242define Package/ldd 
     
    120247endef 
    121248 
     249define Package/ldd/config 
     250        menu "Configuration" 
     251                depends EXTERNAL_TOOLCHAIN && PACKAGE_ldd 
     252 
     253        config LDD_ROOT_DIR 
     254                string 
     255                prompt "ldd trace utility base directory" 
     256                depends EXTERNAL_TOOLCHAIN && PACKAGE_ldd 
     257                default TOOLCHAIN_ROOT  if !NATIVE_TOOLCHAIN 
     258                default "/"  if NATIVE_TOOLCHAIN 
     259 
     260        config LDD_FILE_SPEC 
     261                string 
     262                prompt "ldd trace utility file" 
     263                depends EXTERNAL_TOOLCHAIN && PACKAGE_ldd 
     264                default "./usr/bin/ldd" 
     265 
     266        endmenu 
     267endef 
     268 
     269 
    122270define Package/ldconfig 
    123271$(call Package/libc/Default) 
     
    125273  CATEGORY:=Utilities 
    126274  TITLE:=Shared library path configuration 
     275endef 
     276 
     277define Package/ldconfig/config 
     278        menu "Configuration" 
     279                depends EXTERNAL_TOOLCHAIN && PACKAGE_ldconfig 
     280 
     281        config LDCONFIG_ROOT_DIR 
     282                string 
     283                prompt "ldconfig base directory" 
     284                depends EXTERNAL_TOOLCHAIN && PACKAGE_ldconfig 
     285                default TOOLCHAIN_ROOT  if !NATIVE_TOOLCHAIN 
     286                default "/"  if NATIVE_TOOLCHAIN 
     287 
     288        config LDCONFIG_FILE_SPEC 
     289                string 
     290                prompt "ldconfig file" 
     291                depends EXTERNAL_TOOLCHAIN && PACKAGE_ldconfig 
     292                default "./sbin/ldconfig" 
     293 
     294        endmenu 
    127295endef 
    128296 
     
    201369endef 
    202370 
    203 define Package/libgcc/install 
     371ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) 
     372 
     373  define Package/libgcc/install 
    204374        $(INSTALL_DIR) $(1)/lib 
    205375        $(CP) $(TOOLCHAIN_DIR)/lib$(LIB_SUFFIX)/libgcc_s.so.* $(1)/lib/ 
    206 endef 
    207  
    208 define Package/libssp/install 
     376  endef 
     377 
     378  define Package/libssp/install 
    209379        $(INSTALL_DIR) $(1)/lib 
    210380        $(CP) $(TOOLCHAIN_DIR)/lib$(LIB_SUFFIX)/libssp.so.* $(1)/lib/ 
    211 endef 
    212  
    213 define Package/libstdcpp/install 
     381  endef 
     382 
     383  define Package/libstdcpp/install 
    214384        $(INSTALL_DIR) $(1)/usr/lib 
    215385        $(CP) $(TOOLCHAIN_DIR)/usr/lib$(LIB_SUFFIX)/libstdc++.so.* $(1)/usr/lib/ 
    216 endef 
    217  
    218 use_libutil=$(if $(CONFIG_USE_GLIBC)$(CONFIG_EGLIBC_OPTION_EGLIBC_UTMP),libutil) 
    219 use_libnsl=$(if $(CONFIG_USE_GLIBC)$(CONFIG_EGLIBC_OPTION_EGLIBC_NIS),libnsl) 
    220 use_nsswitch=$(if $(CONFIG_USE_GLIBC)$(CONFIG_EGLIBC_OPTION_EGLIBC_NSSWITCH),libnss_dns libnss_files) 
    221  
    222 define Package/glibc/install 
     386  endef 
     387 
     388  use_libutil=$(if $(CONFIG_USE_GLIBC)$(CONFIG_EGLIBC_OPTION_EGLIBC_UTMP),libutil) 
     389  use_libnsl=$(if $(CONFIG_USE_GLIBC)$(CONFIG_EGLIBC_OPTION_EGLIBC_NIS),libnsl) 
     390  use_nsswitch=$(if $(CONFIG_USE_GLIBC)$(CONFIG_EGLIBC_OPTION_EGLIBC_NSSWITCH),libnss_dns libnss_files) 
     391 
     392  define Package/glibc/install 
    223393        $(INSTALL_DIR) $(1)/lib 
    224394        $(CP) $(TOOLCHAIN_DIR)/lib/ld*.so.* $(1)/lib/ 
     
    228398                $(CP) $(TOOLCHAIN_DIR)/lib/$$$$file-$(LIBC_SO_VERSION).so $(1)/lib/; \ 
    229399        done 
    230 endef 
    231  
    232 define Package/eglibc/install 
    233 $(call Package/glibc/install,$1) 
    234 endef 
    235  
    236 define Package/uClibc/install 
     400  endef 
     401 
     402  define Package/eglibc/install 
     403    $(call Package/glibc/install,$1) 
     404  endef 
     405 
     406  define Package/uClibc/install 
    237407        $(INSTALL_DIR) $(1)/lib 
    238408        for file in ld$(LIB_SUFFIX)-uClibc libc libcrypt libdl libm libnsl libresolv libuClibc libutil; do \ 
     
    240410                $(CP) $(TOOLCHAIN_DIR)/lib/$$$$file-$(LIBC_SO_VERSION).so $(1)/lib/; \ 
    241411        done 
    242 endef 
    243  
    244 define Package/libc/install 
    245 $(call Package/$(LIBC)/install,$1) 
    246 endef 
    247  
    248 define Package/libc/install_lib 
     412  endef 
     413 
     414  define Package/libc/install 
     415    $(call Package/$(LIBC)/install,$1) 
     416  endef 
     417 
     418  define Package/libc/install_lib 
    249419        $(CP) $(filter-out %/libdl_pic.a,$(wildcard $(TOOLCHAIN_DIR)/usr/lib/lib*.a)) $(1)/lib/ 
    250420        $(if $(wildcard $(TOOLCHAIN_DIR)/usr/lib/libc_so.a),$(CP) $(TOOLCHAIN_DIR)/usr/lib/libc_so.a $(1)/lib/libc_pic.a) 
    251421        $(CP) $(TOOLCHAIN_DIR)/usr/lib/gcc/*/*/libgcc.a $(1)/lib/libgcc_s_pic.a 
    252 endef 
    253  
    254 define Package/libpthread/install 
     422  endef 
     423 
     424  define Package/libpthread/install 
    255425        $(INSTALL_DIR) $(1)/lib 
    256426        $(CP) $(TOOLCHAIN_DIR)/lib/libpthread.so.* $(1)/lib/ 
    257427        $(CP) $(TOOLCHAIN_DIR)/lib/libpthread-$(LIBC_SO_VERSION).so $(1)/lib/ 
    258 endef 
    259  
    260 define Package/librt/install 
     428  endef 
     429 
     430  define Package/librt/install 
    261431        $(INSTALL_DIR) $(1)/lib 
    262432        $(CP) $(TOOLCHAIN_DIR)/lib/librt.so.* $(1)/lib/ 
    263433        $(CP) $(TOOLCHAIN_DIR)/lib/librt-$(LIBC_SO_VERSION).so $(1)/lib/ 
    264 endef 
    265  
    266 define Package/ldd/install 
     434  endef 
     435 
     436  define Package/ldd/install 
    267437        $(INSTALL_DIR) $(1)/usr/bin/ 
    268438        $(CP) $(TOOLCHAIN_DIR)/usr/bin/ldd $(1)/usr/bin/ 
    269 endef 
    270  
    271 define Package/ldconfig/install 
     439  endef 
     440 
     441  define Package/ldconfig/install 
    272442        $(INSTALL_DIR) $(1)/sbin/ 
    273443        $(CP) $(TOOLCHAIN_DIR)/sbin/ldconfig $(1)/sbin/ 
    274 endef 
     444  endef 
     445 
     446else 
     447 
     448  define Package/libgcc/install 
     449        for file in $(call qstrip,$(CONFIG_LIBGCC_FILE_SPEC)); do \ 
     450                dir=`dirname $$$$file` ; \ 
     451                $(INSTALL_DIR) $(1)/$$$$dir ; \ 
     452                $(CP) $(call qstrip,$(CONFIG_LIBGCC_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \ 
     453        done 
     454  endef 
     455 
     456  define Package/libssp/install 
     457        for file in $(call qstrip,$(CONFIG_LIBSSP_FILE_SPEC)); do \ 
     458                dir=`dirname $$$$file` ; \ 
     459                $(INSTALL_DIR) $(1)/$$$$dir ; \ 
     460                $(CP) $(call qstrip,$(CONFIG_LIBSSP_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \ 
     461        done 
     462  endef 
     463 
     464  define Package/libstdcpp/install 
     465        for file in $(call qstrip,$(CONFIG_LIBSTDCPP_FILE_SPEC)); do \ 
     466                dir=`dirname $$$$file` ; \ 
     467                $(INSTALL_DIR) $(1)/$$$$dir ; \ 
     468                $(CP) $(call qstrip,$(CONFIG_LIBSTDCPP_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \ 
     469        done 
     470  endef 
     471 
     472  define Package/libc/install 
     473        for file in $(call qstrip,$(CONFIG_LIBC_FILE_SPEC)); do \ 
     474                dir=`dirname $$$$file` ; \ 
     475                $(INSTALL_DIR) $(1)/$$$$dir ; \ 
     476                $(CP) $(call qstrip,$(CONFIG_LIBC_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \ 
     477        done 
     478  endef 
     479 
     480  define Package/libpthread/install 
     481        for file in $(call qstrip,$(CONFIG_LIBPTHREAD_FILE_SPEC)); do \ 
     482                dir=`dirname $$$$file` ; \ 
     483                $(INSTALL_DIR) $(1)/$$$$dir ; \ 
     484                $(CP) $(call qstrip,$(CONFIG_LIBPTHREAD_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \ 
     485        done 
     486  endef 
     487 
     488  define Package/librt/install 
     489        for file in $(call qstrip,$(CONFIG_LIBRT_FILE_SPEC)); do \ 
     490                dir=`dirname $$$$file` ; \ 
     491                $(INSTALL_DIR) $(1)/$$$$dir ; \ 
     492                $(CP) $(call qstrip,$(CONFIG_LIBRT_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \ 
     493        done 
     494  endef 
     495 
     496  define Package/ldd/install 
     497        for file in $(call qstrip,$(CONFIG_LDD_FILE_SPEC)); do \ 
     498                dir=`dirname $$$$file` ; \ 
     499                $(INSTALL_DIR) $(1)/$$$$dir ; \ 
     500                $(CP) $(call qstrip,$(CONFIG_LDD_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \ 
     501        done 
     502  endef 
     503 
     504  define Package/ldconfig/install 
     505        for file in $(call qstrip,$(CONFIG_LDCONFIG_FILE_SPEC)); do \ 
     506                dir=`dirname $$$$file` ; \ 
     507                $(INSTALL_DIR) $(1)/$$$$dir ; \ 
     508                $(CP) $(call qstrip,$(CONFIG_LDCONFIG_ROOT_DIR))/$$$$file $(1)/$$$$dir/ ; \ 
     509        done 
     510  endef 
     511 
     512endif 
    275513 
    276514ifneq ($(DUMP),1) 
  • trunk/rules.mk

    r17329 r17682  
    11# 
    2 # Copyright (C) 2006-2008 OpenWrt.org 
     2# Copyright (C) 2006-2009 OpenWrt.org 
    33# 
    44# This is free software, licensed under the GNU General Public License v2. 
     
    3535TARGET_SUFFIX=$(call qstrip,$(CONFIG_TARGET_SUFFIX)) 
    3636BUILD_SUFFIX:=$(call qstrip,$(CONFIG_BUILD_SUFFIX)) 
    37 GCCV:=$(call qstrip,$(CONFIG_GCC_VERSION)) 
    38 LIBC:=$(call qstrip,$(CONFIG_LIBC)) 
    39 LIBCV:=$(call qstrip,$(CONFIG_LIBC_VERSION)) 
    4037SUBDIR:=$(patsubst $(TOPDIR)/%,%,${CURDIR}) 
    4138 
     
    5350SCRIPT_DIR:=$(TOPDIR)/scripts 
    5451BUILD_DIR_BASE:=$(TOPDIR)/build_dir 
    55 BUILD_DIR:=$(BUILD_DIR_BASE)/target-$(ARCH)_$(LIBC)-$(LIBCV)$(if $(BUILD_SUFFIX),_$(BUILD_SUFFIX)) 
    5652BUILD_DIR_HOST:=$(BUILD_DIR_BASE)/host 
    57 BUILD_DIR_TOOLCHAIN:=$(BUILD_DIR_BASE)/toolchain-$(ARCH)_gcc-$(GCCV)_$(LIBC)-$(LIBCV) 
    58 STAGING_DIR:=$(TOPDIR)/staging_dir/target-$(ARCH)_$(LIBC)-$(LIBCV) 
    5953STAGING_DIR_HOST:=$(TOPDIR)/staging_dir/host 
    60 TOOLCHAIN_DIR:=$(TOPDIR)/staging_dir/toolchain-$(ARCH)_gcc-$(GCCV)_$(LIBC)-$(LIBCV) 
    61 PACKAGE_DIR:=$(BIN_DIR)/packages/$(BOARD)_$(LIBC)-$(LIBCV) 
     54ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) 
     55  GCCV:=$(call qstrip,$(CONFIG_GCC_VERSION)) 
     56  LIBC:=$(call qstrip,$(CONFIG_LIBC)) 
     57  LIBCV:=$(call qstrip,$(CONFIG_LIBC_VERSION)) 
     58  REAL_GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-openwrt-linux$(if $(TARGET_SUFFIX),-$(TARGET_SUFFIX)) 
     59  GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-openwrt-linux 
     60  BUILD_DIR:=$(BUILD_DIR_BASE)/target-$(ARCH)_$(LIBC)-$(LIBCV)$(if $(BUILD_SUFFIX),_$(BUILD_SUFFIX)) 
     61  STAGING_DIR:=$(TOPDIR)/staging_dir/target-$(ARCH)_$(LIBC)-$(LIBCV) 
     62  BUILD_DIR_TOOLCHAIN:=$(BUILD_DIR_BASE)/toolchain-$(ARCH)_gcc-$(GCCV)_$(LIBC)-$(LIBCV) 
     63  TOOLCHAIN_DIR:=$(TOPDIR)/staging_dir/toolchain-$(ARCH)_gcc-$(GCCV)_$(LIBC)-$(LIBCV) 
     64  PACKAGE_DIR:=$(BIN_DIR)/packages/$(BOARD)_$(LIBC)-$(LIBCV) 
     65else 
     66  ifeq ($(CONFIG_NATIVE_TOOLCHAIN),) 
     67    GNU_TARGET_NAME=$(call qstrip,$(CONFIG_TARGET_NAME)) 
     68  else 
     69    GNU_TARGET_NAME=$(shell gcc -dumpmachine) 
     70  endif 
     71  REAL_GNU_TARGET_NAME=$(GNU_TARGET_NAME) 
     72  BUILD_DIR:=$(BUILD_DIR_BASE)/target-$(GNU_TARGET_NAME)$(if $(BUILD_SUFFIX),_$(BUILD_SUFFIX)) 
     73  STAGING_DIR:=$(TOPDIR)/staging_dir/target-$(GNU_TARGET_NAME) 
     74  BUILD_DIR_TOOLCHAIN:=$(BUILD_DIR_BASE)/toolchain-$(GNU_TARGET_NAME) 
     75  TOOLCHAIN_DIR:=$(TOPDIR)/staging_dir/toolchain-$(GNU_TARGET_NAME) 
     76  PACKAGE_DIR:=$(BIN_DIR)/packages/$(BOARD)_$(GNU_TARGET_NAME) 
     77endif 
    6278STAMP_DIR:=$(BUILD_DIR)/stamp 
    6379STAMP_DIR_HOST=$(BUILD_DIR_HOST)/stamp 
     
    6884BUILD_LOG_DIR:=$(TOPDIR)/logs 
    6985 
    70 TARGET_PATH:=$(TOOLCHAIN_DIR)/usr/bin:$(STAGING_DIR_HOST)/bin:$(PATH) 
    71 TARGET_PATH_PKG:=$(STAGING_DIR)/host/bin:$(TARGET_PATH) 
     86TARGET_PATH:=$(STAGING_DIR_HOST)/bin:$(PATH) 
    7287TARGET_CFLAGS:=$(TARGET_OPTIMIZATION)$(if $(CONFIG_DEBUG), -g3) 
    7388TARGET_CPPFLAGS:=-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include 
    74 TARGET_LDFLAGS:=-L$(TOOLCHAIN_DIR)/usr/lib -L$(TOOLCHAIN_DIR)/lib -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib 
     89TARGET_LDFLAGS:=-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib 
    7590LIBGCC_S=$(if $(wildcard $(TOOLCHAIN_DIR)/lib/libgcc_s.so),-L$(TOOLCHAIN_DIR)/lib -lgcc_s,$(wildcard $(TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc.a)) 
    7691 
    7792ifndef DUMP 
    78 ifeq ($(CONFIG_NATIVE_TOOLCHAIN),) 
    79   -include $(TOOLCHAIN_DIR)/info.mk 
    80   REAL_GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-openwrt-linux$(if $(TARGET_SUFFIX),-$(TARGET_SUFFIX)) 
    81   GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-openwrt-linux 
    82   TARGET_CROSS:=$(if $(TARGET_CROSS),$(TARGET_CROSS),$(OPTIMIZE_FOR_CPU)-openwrt-linux$(if $(TARGET_SUFFIX),-$(TARGET_SUFFIX))-) 
    83   TARGET_CFLAGS+= -fhonour-copts 
    84 endif 
    85 endif 
     93  ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) 
     94    -include $(TOOLCHAIN_DIR)/info.mk 
     95    TARGET_CROSS:=$(if $(TARGET_CROSS),$(TARGET_CROSS),$(OPTIMIZE_FOR_CPU)-openwrt-linux$(if $(TARGET_SUFFIX),-$(TARGET_SUFFIX))-) 
     96    TARGET_CFLAGS+= -fhonour-copts 
     97    TARGET_CPPFLAGS+= -I$(TOOLCHAIN_DIR)/usr/include -I$(TOOLCHAIN_DIR)/include 
     98    TARGET_LDFLAGS+= -L$(TOOLCHAIN_DIR)/usr/lib -L$(TOOLCHAIN_DIR)/lib 
     99    TARGET_PATH:=$(TOOLCHAIN_DIR)/usr/bin:$(TARGET_PATH) 
     100  else 
     101    ifeq ($(CONFIG_NATIVE_TOOLCHAIN),) 
     102      TARGET_CROSS:=$(call qstrip,$(CONFIG_TOOLCHAIN_PREFIX)) 
     103      TOOLCHAIN_ROOT_DIR:=$(call qstrip,$(CONFIG_TOOLCHAIN_ROOT)) 
     104      TOOLCHAIN_BIN_DIRS:=$(patsubst ./%,$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_BIN_PATH))) 
     105      TOOLCHAIN_INC_DIRS:=$(patsubst ./%,$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_INC_PATH))) 
     106      TOOLCHAIN_LIB_DIRS:=$(patsubst ./%,$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_LIB_PATH))) 
     107      ifneq ($(TOOLCHAIN_BIN_DIRS),) 
     108        TARGET_PATH:=$(subst $(space),:,$(TOOLCHAIN_BIN_DIRS)):$(TARGET_PATH) 
     109      endif 
     110      ifneq ($(TOOLCHAIN_INC_DIRS),) 
     111        TARGET_CPPFLAGS+= $(patsubst %,-I%,$(TOOLCHAIN_INC_DIRS)) 
     112      endif 
     113      ifneq ($(TOOLCHAIN_LIB_DIRS),) 
     114        TARGET_LDFLAGS+= $(patsubst %,-L%,$(TOOLCHAIN_LIB_DIRS)) 
     115      endif 
     116    endif 
     117  endif 
     118endif 
     119TARGET_PATH_PKG:=$(STAGING_DIR)/host/bin:$(TARGET_PATH) 
    86120 
    87121ifeq ($(CONFIG_SOFT_FLOAT),y) 
  • trunk/toolchain/Config.in

    r17561 r17682  
    11# 
    2 config NATIVE_TOOLCHAIN 
    3         bool 
    4         prompt "Use host's toolchain" if DEVEL && BROKEN 
    5         default n 
    6         help 
    7                 If enabled, OpenWrt will compile using your existing toolchain instead of compiling one 
     2 
     3menuconfig EXTERNAL_TOOLCHAIN 
     4        bool 
     5        prompt "Use external toolchain"  if DEVEL 
     6        help 
     7          If enabled, OpenWrt will compile using an existing toolchain instead of compiling one 
     8 
     9        config NATIVE_TOOLCHAIN 
     10                bool 
     11                prompt "Use host's toolchain"  if DEVEL 
     12                depends EXTERNAL_TOOLCHAIN 
     13                select NO_STRIP 
     14                help 
     15                  If enabled, OpenWrt will compile using the native toolchain for your host instead of compiling one 
     16 
     17        config TARGET_NAME 
     18                string 
     19                prompt "Target name"  if DEVEL 
     20                depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN 
     21                default "arm-unknown-linux-gnu"      if arm 
     22                default "armeb-unknown-linux-gnu"    if armeb 
     23                default "i486-unknown-linux-gnu"     if i386 
     24                default "mips-unknown-linux-gnu"     if mips 
     25                default "mipsel-unknown-linux-gnu"   if mipsel 
     26                default "powerpc-unknown-linux-gnu"  if powerpc 
     27                default "x86_64-unknown-linux-gnu"   if x86_64 
     28 
     29        config TOOLCHAIN_PREFIX 
     30                string 
     31                prompt "Toolchain prefix"  if DEVEL 
     32                depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN 
     33                default "arm-unknown-linux-gnu-"      if arm 
     34                default "armeb-unknown-linux-gnu-"    if armeb 
     35                default "i486-unknown-linux-gnu-"     if i386 
     36                default "mips-unknown-linux-gnu-"     if mips 
     37                default "mipsel-unknown-linux-gnu-"   if mipsel 
     38                default "powerpc-unknown-linux-gnu-"  if powerpc 
     39                default "x86_64-unknown-linux-gnu-"   if x86_64 
     40 
     41        config TOOLCHAIN_ROOT 
     42                string 
     43                prompt "Toolchain root"  if DEVEL 
     44                depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN 
     45                default "/opt/cross/arm-unknown-linux-gnu"      if arm 
     46                default "/opt/cross/armeb-unknown-linux-gnu"    if armeb 
     47                default "/opt/cross/i486-unknown-linux-gnu"     if i386 
     48                default "/opt/cross/mips-unknown-linux-gnu"     if mips 
     49                default "/opt/cross/mipsel-unknown-linux-gnu"   if mipsel 
     50                default "/opt/cross/powerpc-unknown-linux-gnu"  if powerpc 
     51                default "/opt/cross/x86_64-unknown-linux-gnu"   if x86_64 
     52 
     53        config TOOLCHAIN_BIN_PATH 
     54                string 
     55                prompt "Toolchain program path"  if DEVEL 
     56                depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN 
     57                default "./usr/bin ./bin" 
     58                help 
     59                  Specify additional directories searched for toolchain binaries (override PATH) 
     60                  Use ./DIR for directories relative to the root above 
     61 
     62        config TOOLCHAIN_INC_PATH 
     63                string 
     64                prompt "Toolchain include path"  if DEVEL 
     65                depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN 
     66                default "./usr/include ./include" 
     67                help 
     68                  Specify additional directories searched for header files (override CPPFLAGS) 
     69                  Use ./DIR for directories relative to the root above 
     70 
     71        config TOOLCHAIN_LIB_PATH 
     72                string 
     73                prompt "Toolchain library path"  if DEVEL 
     74                depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN 
     75                default "./usr/lib ./lib" 
     76                help 
     77                  Specify additional directories searched for libraries (override LDFLAGS) 
     78                  Use ./DIR for directories relative to the root above 
     79 
     80config NEED_TOOLCHAIN 
     81        bool 
     82        depends DEVEL 
     83        default y if !EXTERNAL_TOOLCHAIN 
    884 
    985menuconfig TOOLCHAINOPTS 
    10         bool "Toolchain Options" if DEVEL 
    11         depends !NATIVE_TOOLCHAIN 
     86        bool "Toolchain Options"  if DEVEL 
     87        depends NEED_TOOLCHAIN 
    1288 
    1389menuconfig EXTRA_TARGET_ARCH 
  • trunk/toolchain/Makefile

    r17019 r17682  
    11#  
    2 # Copyright (C) 2007-2008 OpenWrt.org 
     2# Copyright (C) 2007-2009 OpenWrt.org 
    33# 
    44# This is free software, licensed under the GNU General Public License v2. 
     
    2929 
    3030# subdirectories to descend into 
    31 $(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)) 
     31$(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)) 
    3232$(curdir)/builddirs-compile:=$($(curdir)/builddirs-prepare) 
    3333$(curdir)/builddirs-install:=$($(curdir)/builddirs-compile) 
    3434 
    3535# builddir dependencies 
    36 $(curdir)/$(LIBC)/prepare:=$(curdir)/kernel-headers/install 
    37 ifeq ($(CONFIG_NATIVE_TOOLCHAIN),) 
     36ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) 
     37  $(curdir)/$(LIBC)/prepare:=$(curdir)/kernel-headers/install 
    3838  $(curdir)/gcc/prepare:=$(curdir)/binutils/install 
    3939  $(curdir)/kernel-headers/install:=$(curdir)/gcc/prepare 
Note: See TracChangeset for help on using the changeset viewer.