⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gcc-3.3.mk

📁 IPcop软路由防火墙 FREE 开源源代码
💻 MK
📖 第 1 页 / 共 2 页
字号:
# Makefile for to build a gcc/uClibc toolchain## Copyright (C) 2002-2003 Erik Andersen <andersen@uclibc.org>## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU# General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USAifneq ($(GCC_2_95_TOOLCHAIN),true)# Older stuff...#GCC_SITE:=ftp://ftp.gnu.org/gnu/gcc/#GCC_SOURCE:=gcc-3.3.tar.gz#GCC_DIR:=$(TOOL_BUILD_DIR)/gcc-3.3#GCC_CAT:=zcat# Shiny new stuff...GCC_VERSION:=3.3.1#GCC_SITE:=ftp://ftp.gnu.org/gnu/gcc/gcc-$(GCC_VERSION)#GCC_SITE:=http://www.binarycode.org/gcc/releases/gcc-$(GCC_VERSION)GCC_SITE:=http://gcc.get-software.com/releases/gcc-$(GCC_VERSION)## snapshots....#GCC_VERSION:=3.3-20031013#GCC_SITE:=http://gcc.get-software.com/snapshots/$(GCC_VERSION)#GCC_SOURCE:=gcc-$(GCC_VERSION).tar.gzGCC_DIR:=$(TOOL_BUILD_DIR)/gcc-$(GCC_VERSION)GCC_CAT:=gzip -dc############################################################### Setup some initial stuff##############################################################ifeq ($(INSTALL_LIBSTDCPP),true)TARGET_LANGUAGES:=c,c++elseTARGET_LANGUAGES:=cendif############################################################### build the first pass gcc compiler##############################################################GCC_BUILD_DIR1:=$(TOOL_BUILD_DIR)/gcc-3.3-initial$(DL_DIR)/$(GCC_SOURCE):#	$(WGET) -P $(DL_DIR) $(GCC_SITE)/$(GCC_SOURCE)$(GCC_DIR)/.unpacked: $(DL_DIR)/$(GCC_SOURCE)	$(GCC_CAT) $(DL_DIR)/$(GCC_SOURCE) | tar -C $(TOOL_BUILD_DIR) -xvf -	touch $(GCC_DIR)/.unpacked$(GCC_DIR)/.patched: $(GCC_DIR)/.unpacked	# Apply any files named gcc-*.patch from the source directory to gcc	$(SOURCE_DIR)/patch-kernel.sh $(GCC_DIR) $(SOURCE_DIR) gcc-*.patchifeq ($(SOFT_FLOAT),true)ifeq ("$(strip $(ARCH))","i386")	$(SOURCE_DIR)/patch-kernel.sh $(GCC_DIR) $(SOURCE_DIR) i386-gcc-soft-float.patchendifendif	touch $(GCC_DIR)/.patched$(GCC_DIR)/.gcc3_3_build_hacks: $(GCC_DIR)/.patched	#	# Hack things to use the correct shared lib loader	#	(cd $(GCC_DIR); set -e; export LIST=`grep -lr -- "-dynamic-linker.*\.so[\.0-9]*" *`;\		if [ -n "$$LIST" ] ; then \		$(SED) "s,-dynamic-linker.*\.so[\.0-9]*},\		    -dynamic-linker /lib/ld-uClibc.so.0},;" $$LIST; fi);	#	# Prevent gcc from using the unwind-dw2-fde-glibc code used for	# unwinding stack frames for C++ exception handling.  The	# unwind-dw2-fde-glibc code depends on glibc's ldso, we want to	# use the generic version instead.	#	$(SED) "s,^#ifndef inhibit_libc,#define inhibit_libc\n\		#ifndef inhibit_libc,g;" $(GCC_DIR)/gcc/unwind-dw2-fde-glibc.c;	#	# Prevent system glibc start files from leaking in uninvited...	#	$(SED) "s,standard_startfile_prefix_1 = \".*,standard_startfile_prefix_1 =\		\"$(STAGING_DIR)/lib/\";,;" $(GCC_DIR)/gcc/gcc.c;	$(SED) "s,standard_startfile_prefix_2 = \".*,standard_startfile_prefix_2 =\		\"$(STAGING_DIR)/usr/lib/\";,;" $(GCC_DIR)/gcc/gcc.c;	#	# Prevent system glibc include files from leaking in uninvited...	#	$(SED) "s,^NATIVE_SYSTEM_HEADER_DIR.*,NATIVE_SYSTEM_HEADER_DIR=\		$(STAGING_DIR)/include,;" $(GCC_DIR)/gcc/Makefile.in;	$(SED) "s,^CROSS_SYSTEM_HEADER_DIR.*,CROSS_SYSTEM_HEADER_DIR=\		$(STAGING_DIR)/include,;" $(GCC_DIR)/gcc/Makefile.in;	$(SED) "s,^#define.*STANDARD_INCLUDE_DIR.*,#define STANDARD_INCLUDE_DIR \		\"$(STAGING_DIR)/include\",;" $(GCC_DIR)/gcc/cppdefault.h;	#	# Prevent system glibc libraries from being found by collect2 	# when it calls locatelib() and rummages about the system looking 	# for libraries with the correct name...	#	$(SED) "s,\"/lib,\"$(STAGING_DIR)/lib,g;" $(GCC_DIR)/gcc/collect2.c	$(SED) "s,\"/usr/,\"$(STAGING_DIR)/usr/,g;" $(GCC_DIR)/gcc/collect2.c	touch $(GCC_DIR)/.gcc3_3_build_hacks# The --without-headers option stopped working with gcc 3.0 and has never been# # fixed, so we need to actually have working C library header files prior to# # the step or libgcc will not build...$(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.gcc3_3_build_hacks	mkdir -p $(GCC_BUILD_DIR1)	echo -e "#!/bin/sh\nexec $(GCC_BUILD_DIR1)/gcc/xgcc -B$(GCC_BUILD_DIR1)/gcc/ -B$(STAGING_DIR)/$(ARCH)-linux/bin/ -B$(STAGING_DIR)/$(ARCH)-linux/lib/ -isystem $(STAGING_DIR)/$(ARCH)-linux/include $(TARGET_SOFT_FLOAT) \$$@" > $(GCC_BUILD_DIR1)/target_gcc	chmod a+x $(GCC_BUILD_DIR1)/target_gcc	(cd $(GCC_BUILD_DIR1); PATH=$(TARGET_PATH) AR=$(TARGET_CROSS)ar \		RANLIB=$(TARGET_CROSS)ranlib \		CC="$(HOSTCC)" \		LDFLAGS="$(HOSTLDFLAGS)" \		gcc_cv_as_hidden=no \		$(GCC_DIR)/configure \		--target=$(GNU_TARGET_NAME) \		--host=$(GNU_HOST_NAME) \		--build=$(GNU_HOST_NAME) \		--prefix=$(STAGING_DIR) \		--exec-prefix=$(STAGING_DIR) \		--bindir=$(STAGING_DIR)/bin \		--sbindir=$(STAGING_DIR)/sbin \		--sysconfdir=$(STAGING_DIR)/etc \		--datadir=$(STAGING_DIR)/share \		--includedir=$(STAGING_DIR)/include \		--libdir=$(STAGING_DIR)/lib \		--localstatedir=$(STAGING_DIR)/var \		--mandir=$(STAGING_DIR)/man \		--infodir=$(STAGING_DIR)/info \		--with-local-prefix=$(STAGING_DIR)/usr/local \		--oldincludedir=$(STAGING_DIR)/include $(MULTILIB) \		--enable-target-optspace $(DISABLE_NLS) --with-gnu-ld \		--disable-shared --enable-languages=c --disable-__cxa_atexit \		$(SOFT_FLOAT_CONFIG_OPTION) \		$(EXTRA_GCC_CONFIG_OPTIONS) --program-prefix=$(ARCH)-linux-);	touch $(GCC_BUILD_DIR1)/.configured$(GCC_BUILD_DIR1)/.compiled: $(GCC_BUILD_DIR1)/.configured	PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) -C $(GCC_BUILD_DIR1) \	    CC="$(HOSTCC)" \	    LDFLAGS="$(HOSTLDFLAGS)" \	    AR_FOR_TARGET=$(STAGING_DIR)/bin/$(ARCH)-linux-ar \	    RANLIB_FOR_TARGET=$(STAGING_DIR)/bin/$(ARCH)-linux-ranlib \	    CC_FOR_TARGET=$(GCC_BUILD_DIR1)/target_gcc \	    GCC_FOR_TARGET=$(GCC_BUILD_DIR1)/target_gcc	touch $(GCC_BUILD_DIR1)/.compiled$(STAGING_DIR)/bin/$(ARCH)-linux-gcc: $(GCC_BUILD_DIR1)/.compiled	PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) \	    CC="$(HOSTCC)" \	    LDFLAGS="$(HOSTLDFLAGS)" \	    -C $(GCC_BUILD_DIR1) install;	#Cleanup then mess when --program-prefix mysteriously fails 	-mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-cpp $(STAGING_DIR)/bin/$(ARCH)-linux-cpp	-mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-gcc $(STAGING_DIR)/bin/$(ARCH)-linux-gcc	if [ -n "$(strip $(TARGET_SOFT_FLOAT))" ] ; then \		for app in gcc c++ g++ ; do \			if [ -x $(STAGING_DIR)/bin/$(ARCH)-linux-$${app} ] ; then \			    (cd $(STAGING_DIR)/bin; \				rm -f $(ARCH)-linux-$${app}$(TARGET_SOFT_FLOAT); \				echo -e "#!/bin/sh\nexec $(STAGING_DIR)/bin/$(ARCH)-linux-$${app} -msoft-float \$$@" > $(ARCH)-linux-$${app}$(TARGET_SOFT_FLOAT); \				chmod a+x $(ARCH)-linux-$${app}$(TARGET_SOFT_FLOAT); \			    ); \			fi; \		done; \	fi; \	rm -f $(STAGING_DIR)/bin/gccbug $(STAGING_DIR)/bin/gcov	rm -rf $(STAGING_DIR)/info $(STAGING_DIR)/man $(STAGING_DIR)/share/doc \		$(STAGING_DIR)/share/localegcc3_3_initial: binutils uclibc-configured $(STAGING_DIR)/bin/$(ARCH)-linux-gccgcc3_3_initial-clean:	rm -rf $(GCC_BUILD_DIR1)	rm -f $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)*gcc3_3_initial-dirclean:	rm -rf $(GCC_BUILD_DIR1)############################################################### second pass compiler build.  Build the compiler targeting # the newly built shared uClibc library.##############################################################GCC_BUILD_DIR2:=$(TOOL_BUILD_DIR)/gcc-3.3-final$(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.patched	mkdir -p $(GCC_BUILD_DIR2)	echo -e "#!/bin/sh\nexec $(GCC_BUILD_DIR2)/gcc/xgcc -B$(GCC_BUILD_DIR2)/gcc/ -B$(STAGING_DIR)/$(ARCH)-linux/bin/ -B$(STAGING_DIR)/$(ARCH)-linux/lib/ -isystem $(STAGING_DIR)/$(ARCH)-linux/include $(TARGET_SOFT_FLOAT) \$$@" > $(GCC_BUILD_DIR2)/target_g++	chmod a+x $(GCC_BUILD_DIR2)/target_g++	echo -e "#!/bin/sh\nexec $(GCC_BUILD_DIR2)/gcc/xgcc -B$(GCC_BUILD_DIR2)/gcc/ -B$(STAGING_DIR)/$(ARCH)-linux/bin/ -B$(STAGING_DIR)/$(ARCH)-linux/lib/ -isystem $(STAGING_DIR)/$(ARCH)-linux/include $(TARGET_SOFT_FLOAT) \$$@" > $(GCC_BUILD_DIR2)/target_gcc	chmod a+x $(GCC_BUILD_DIR2)/target_gcc	(cd $(GCC_BUILD_DIR2); PATH=$(TARGET_PATH) AR=$(TARGET_CROSS)ar \		RANLIB=$(TARGET_CROSS)ranlib LD=$(TARGET_CROSS)ld \		NM=$(TARGET_CROSS)nm \		CC="$(HOSTCC)" \		LDFLAGS="$(HOSTLDFLAGS)" \		gcc_cv_as_hidden=no \		$(GCC_DIR)/configure \		--target=$(GNU_TARGET_NAME) \		--host=$(GNU_HOST_NAME) \		--build=$(GNU_HOST_NAME) \		--prefix=$(STAGING_DIR) \		--exec-prefix=$(STAGING_DIR) \		--bindir=$(STAGING_DIR)/bin \		--sbindir=$(STAGING_DIR)/sbin \		--sysconfdir=$(STAGING_DIR)/etc \		--datadir=$(STAGING_DIR)/share \		--localstatedir=$(STAGING_DIR)/var \		--mandir=$(STAGING_DIR)/man \		--infodir=$(STAGING_DIR)/info \		--with-local-prefix=$(STAGING_DIR)/usr/local \		--libdir=$(STAGING_DIR)/lib \

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -