📄 gcc-3.3.mk
字号:
--includedir=$(STAGING_DIR)/include \ --with-gxx-include-dir=$(STAGING_DIR)/include/c++ \ --oldincludedir=$(STAGING_DIR)/include \ --enable-shared $(MULTILIB) \ --enable-target-optspace $(DISABLE_NLS) \ --with-gnu-ld --disable-__cxa_atexit \ --enable-languages=$(TARGET_LANGUAGES) \ $(EXTRA_GCC_CONFIG_OPTIONS) \ --program-prefix=$(ARCH)-linux- \ ); touch $(GCC_BUILD_DIR2)/.configured$(GCC_BUILD_DIR2)/.compiled: $(GCC_BUILD_DIR2)/.configured $(SED) 's/\-lc//' $(GCC_BUILD_DIR2)/gcc/Makefile PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) \ CC="$(HOSTCC)" \ LDFLAGS="$(HOSTLDFLAGS)" \ AR_FOR_TARGET=$(TARGET_CROSS)ar RANLIB_FOR_TARGET=$(TARGET_CROSS)ranlib \ LD_FOR_TARGET=$(TARGET_CROSS)ld NM_FOR_TARGET=$(TARGET_CROSS)nm \ CC_FOR_TARGET=$(GCC_BUILD_DIR2)/target_gcc \ GCC_FOR_TARGET=$(GCC_BUILD_DIR2)/target_gcc \ CXX_FOR_TARGET=$(GCC_BUILD_DIR2)/target_g++ \ -C $(GCC_BUILD_DIR2) touch $(GCC_BUILD_DIR2)/.compiled$(GCC_BUILD_DIR2)/.installed: $(GCC_BUILD_DIR2)/.compiled $(STAGING_DIR)/lib/libc.a PATH=$(TARGET_PATH) $(MAKE) $(JLEVEL) \ CC="$(HOSTCC)" \ LDFLAGS="$(HOSTLDFLAGS)" \ -C $(GCC_BUILD_DIR2) install; -mv $(STAGING_DIR)/bin/gcc $(STAGING_DIR)/usr/bin; -mv $(STAGING_DIR)/bin/protoize $(STAGING_DIR)/usr/bin; -mv $(STAGING_DIR)/bin/unprotoize $(STAGING_DIR)/usr/bin; -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 -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-c++ $(STAGING_DIR)/bin/$(ARCH)-linux-c++ -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-g++ $(STAGING_DIR)/bin/$(ARCH)-linux-g++ -mv $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-c++filt $(STAGING_DIR)/bin/$(ARCH)-linux-c++filt rm -f $(STAGING_DIR)/bin/cpp $(STAGING_DIR)/bin/gcov $(STAGING_DIR)/bin/*gccbug rm -f $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)-$(ARCH)-linux-* rm -rf $(STAGING_DIR)/info $(STAGING_DIR)/man $(STAGING_DIR)/share/doc \ $(STAGING_DIR)/share/locale # Strip the host binaries -strip --strip-all -R .note -R .comment $(STAGING_DIR)/bin/* 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; \ set -e; \ for app in cc gcc c89 cpp c++ g++ ; do \ if [ -x $(STAGING_DIR)/bin/$(ARCH)-linux-$${app} ] ; then \ (cd $(STAGING_DIR)/usr/bin; \ ln -fs ../../bin/$(ARCH)-linux-$${app} $${app}; \ ); \ fi; \ done; (cd $(STAGING_DIR)/usr/bin; \ ln -fs gcc cc; \ ) touch $(GCC_BUILD_DIR2)/.installedifneq ($(TARGET_DIR),)$(TARGET_DIR)/lib/libstdc++.so.5.0.5: $(GCC_BUILD_DIR2)/.installed cp -a $(STAGING_DIR)/lib/libstdc++.so* $(TARGET_DIR)/lib/$(GCC_BUILD_DIR2)/.shared_libgcc: $(GCC_BUILD_DIR2)/.installed # Make sure a copy of libgcc_s is in the target's /lib. if [ -f $(STAGING_DIR)/lib/libgcc_s.so.0.9.9 ] ; then \ cp -a $(STAGING_DIR)/lib/libgcc_s.so* $(TARGET_DIR)/lib/ ; \ fi touch $(GCC_BUILD_DIR2)/.shared_libgccGCC_TARGETS:=$(GCC_BUILD_DIR2)/.shared_libgccifeq ($(INSTALL_LIBSTDCPP),true)GCC_TARGETS+=$(TARGET_DIR)/lib/libstdc++.so.5.0.5endifendifgcc3_3: binutils uclibc-configured gcc3_3_initial $(LIBFLOAT_TARGET) uclibc \ $(GCC_BUILD_DIR2)/.installed $(GCC_TARGETS)gcc3_3-source: $(DL_DIR)/$(GCC_SOURCE)gcc3_3-clean: rm -rf $(GCC_BUILD_DIR2) rm -f $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)*gcc3_3-dirclean: rm -rf $(GCC_BUILD_DIR2)############################################################### Next build target gcc compiler##############################################################GCC_BUILD_DIR3:=$(BUILD_DIR)/gcc-3.3-targetTARGET_GCC_ARGS= $(TARGET_CONFIGURE_OPTS) \ AR_FOR_BUILD=ar \ AS_FOR_BUILD=as \ LD_FOR_BUILD=ld \ NM_FOR_BUILD=nm \ RANLIB_FOR_BUILD=ranlib \ CC="$(HOSTCC)" \ LDFLAGS="$(HOSTLDFLAGS)" \ CC_FOR_BUILD="$(HOSTCC)" \ GCC_FOR_BUILD="$(HOSTCC)" \ CXX_FOR_BUILD="$(HOSTCC)" \ AR_FOR_TARGET=$(TARGET_CROSS)ar \ AS_FOR_TARGET=$(TARGET_CROSS)as \ LD_FOR_TARGET=$(TARGET_CROSS)ld \ NM_FOR_TARGET=$(TARGET_CROSS)nm \ CC="$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \ GCC="$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \ CXX="$(TARGET_CROSS)g++$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \ CC_FOR_TARGET="$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \ GCC_FOR_TARGET="$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \ CXX_FOR_TARGET="$(TARGET_CROSS)g++$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \ RANLIB_FOR_TARGET=$(TARGET_CROSS)ranlib# We need to unpack a pristine source tree to avoid some of# the previously applied hacks, which do not apply here...$(GCC_BUILD_DIR3)/.unpacked: $(DL_DIR)/$(GCC_SOURCE) $(GCC_CAT) $(DL_DIR)/$(GCC_SOURCE) | tar -C $(BUILD_DIR) -xvf - mv $(BUILD_DIR)/gcc-$(GCC_VERSION) $(GCC_BUILD_DIR3) touch $(GCC_BUILD_DIR3)/.unpacked$(GCC_BUILD_DIR3)/.patched: $(GCC_BUILD_DIR3)/.unpacked # Apply any files named gcc-*.patch from the source directory to gcc $(SOURCE_DIR)/patch-kernel.sh $(GCC_BUILD_DIR3) $(SOURCE_DIR) gcc-*.patchifeq ("$(strip $(ARCH))","i386") $(SOURCE_DIR)/patch-kernel.sh $(GCC_BUILD_DIR3) $(SOURCE_DIR) i386-gcc-*.patchendif touch $(GCC_BUILD_DIR3)/.patched$(GCC_BUILD_DIR3)/.gcc3_3_build_hacks: $(GCC_BUILD_DIR3)/.patched # # Hack things to use the correct shared lib loader # (cd $(GCC_BUILD_DIR3); 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_BUILD_DIR3)/gcc/unwind-dw2-fde-glibc.c; touch $(GCC_BUILD_DIR3)/.gcc3_3_build_hacks$(GCC_BUILD_DIR3)/.configured: $(GCC_BUILD_DIR3)/.gcc3_3_build_hacks mkdir -p $(GCC_BUILD_DIR3) #(cd $(GCC_BUILD_DIR3); ln -fs $(ARCH)-linux build-$(GNU_TARGET_NAME)) (cd $(GCC_BUILD_DIR3); \ $(TARGET_GCC_ARGS) \ gcc_cv_as_hidden=no \ ./configure \ --verbose \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ --build=`./config.guess` \ --prefix=/usr \ --mandir=/usr/man \ --infodir=/usr/info \ --with-gxx-include-dir=/usr/include/c++/3.3 \ --enable-target-optspace \ --enable-shared \ $(MULTILIB) \ $(DISABLE_NLS) \ --with-gnu-ld --disable-__cxa_atexit \ --enable-languages=$(TARGET_LANGUAGES) \ $(EXTRA_GCC_CONFIG_OPTIONS) \ ); touch $(GCC_BUILD_DIR3)/.configured$(GCC_BUILD_DIR3)/.compiled: $(GCC_BUILD_DIR3)/.configured $(MAKE) $(JLEVEL) $(TARGET_GCC_ARGS) -C $(GCC_BUILD_DIR3) touch $(GCC_BUILD_DIR3)/.compiled$(TARGET_DIR)/usr/bin/gcc: $(GCC_BUILD_DIR3)/.compiled $(MAKE) $(JLEVEL) $(TARGET_GCC_ARGS) DESTDIR=$(TARGET_DIR) \ -C $(GCC_BUILD_DIR3) install (cd $(TARGET_DIR)/usr/bin; ln -fs gcc cc) (cd $(TARGET_DIR)/lib; ln -fs /usr/bin/cpp) rm -rf $(TARGET_DIR)/usr/$(GNU_TARGET_NAME)/include rm -rf $(TARGET_DIR)/usr/$(GNU_TARGET_NAME)/sys-include rm -rf $(TARGET_DIR)/usr/include/include $(TARGET_DIR)/usr/usr -mv $(TARGET_DIR)/lib/*.a $(TARGET_DIR)/usr/lib/ -mv $(TARGET_DIR)/lib/*.la $(TARGET_DIR)/usr/lib/ rm -f $(TARGET_DIR)/lib/libstdc++.so* # Make sure gcc does not think we are cross compiling $(SED) "s/^1/0/;" $(TARGET_DIR)/usr/lib/gcc-lib/$(ARCH)-linux/$(GCC_VERSION)/specs -(cd $(TARGET_DIR)/bin; find -type f | xargs $(STRIP) > /dev/null 2>&1) -(cd $(TARGET_DIR)/usr/bin; find -type f | xargs $(STRIP) > /dev/null 2>&1) -(cd $(TARGET_DIR)/usr/lib/gcc-lib/$(ARCH)-linux/$(GCC_VERSION); $(STRIP) cc1 cc1plus collect2 > /dev/null 2>&1) -(cd $(TARGET_DIR)/usr/lib; $(STRIP) libstdc++.so.*.*.* > /dev/null 2>&1) -(cd $(TARGET_DIR)/lib; $(STRIP) libgcc_s.so.*.*.* > /dev/null 2>&1) # rm -f $(TARGET_DIR)/usr/lib/*.la* rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \ $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc # Work around problem of missing syslimits.h cp -f $(STAGING_DIR)/usr/lib/gcc-lib/$(ARCH)-linux/$(GCC_VERSION)/include/syslimits.h $(TARGET_DIR)/usr/lib/gcc-lib/$(ARCH)-linux/$(GCC_VERSION)/include/ # These are in /lib, so... rm -rf $(TARGET_DIR)/usr/lib/libgcc_s.so* touch -c $(TARGET_DIR)/usr/bin/gccgcc3_3_target: uclibc_target binutils_target $(TARGET_DIR)/usr/bin/gccgcc3_3_target-clean: rm -rf $(GCC_BUILD_DIR3) rm -f $(TARGET_DIR)/bin/$(GNU_TARGET_NAME)*gcc3_3_target-dirclean: rm -rf $(GCC_BUILD_DIR3)endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -