source: freewrt/toolchain/gcc/Makefile@ dae95de

Last change on this file since dae95de was 892d28e, checked in by Thorsten Glaser <tg@…>, 18 years ago
  • fix svn info, like base-files
  • unify GCC_CONFOPTS

git-svn-id: svn://www.freewrt.org/trunk/freewrt@3095 afb5a338-a214-0410-bd46-81f09a774fd1

  • Property mode set to 100644
File size: 4.2 KB
Line 
1# $FreeWRT$
2
3include $(TOPDIR)/rules.mk
4include ../rules.mk
5
6WRKDIR?= ${WRKDIR_BASE}/w-gcc-${GCC_VERSION}
7
8GCC_VERSION:= 3.4.4
9MASTER_SITES:= ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-$(GCC_VERSION)/ \
10 http://mirrors.rcn.net/pub/sourceware/gcc/releases/gcc-$(GCC_VERSION)/
11PKG_MD5SUM:= b594ff4ea4fbef4ba9220887de713dfe
12SOURCE:= gcc-$(GCC_VERSION).tar.bz2
13GCC_DIR:= $(WRKDIR)/gcc-$(GCC_VERSION)
14
15TARGET_LANGUAGES:= c,c++
16
17GCC_BUILD_DIR1:= $(WRKDIR)/gcc-$(GCC_VERSION)-initial
18
19GCC_CONFOPTS= --prefix=$(STAGING_TOOLS) \
20 --build=$(GNU_HOST_NAME) \
21 --host=$(GNU_HOST_NAME) \
22 --target=$(REAL_GNU_TARGET_NAME) \
23 --disable-__cxa_atexit \
24 --enable-target-optspace \
25 --with-gnu-ld \
26 --disable-nls \
27 --disable-dependency-tracking \
28 --disable-libtool-lock
29
30include ${TOPDIR}/mk/fetch.mk
31include ${TOPDIR}/mk/targets.mk
32
33$(GCC_DIR)/.unpacked: ${_CHECKSUM_COOKIE}
34 ${EXTRACT_CMD}
35 touch $@
36
37$(GCC_DIR)/.patched: $(GCC_DIR)/.unpacked
38 # Apply any files named gcc-*.patch from the source directory to gcc
39 ${MBSH} $(SCRIPT_DIR)/patch-kernel.sh $(GCC_DIR) ./$(GCC_VERSION) \*.patch
40 typeset -i REV; \
41 if fgrep xml .svn/entries >/dev/null 2>&1; then \
42 let REV="$$(sed -n '/revision=/s/^.*"\([0-9]*\)".*$$/\1/p' \
43 .svn/entries)"; \
44 else \
45 let REV="$$(head -n 4 .svn/entries | tail -1)"; \
46 fi; ${SED} 's,\(version_string.. = "[0-9\.]*\).*\(";\),\1 (FreeWRT rev. '"$$REV"')\2,' ${GCC_DIR}/gcc/version.c
47 $(SED) 's,\(bug_report_url.. = "\).*\(";\),\1<URL:http://www.freewrt.org/development/freewrt>\2,' $(GCC_DIR)/gcc/version.c
48 touch $@
49
50$(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.patched
51 mkdir -p $(GCC_BUILD_DIR1)
52 (cd $(GCC_BUILD_DIR1); rm -f config.cache; PATH=$(TARGET_PATH) \
53 $(GCC_DIR)/configure \
54 ${GCC_CONFOPTS} \
55 --enable-languages=c \
56 --disable-shared \
57 --with-sysroot=$(TOOLCHAIN_BUILD_DIR)/uClibc_dev/ \
58 );
59 touch $@
60
61$(GCC_BUILD_DIR1)/.compiled: $(GCC_BUILD_DIR1)/.configured
62 PATH=$(TARGET_PATH) $(MAKE) -C $(GCC_BUILD_DIR1) all-gcc
63 touch $@
64
65$(STAGING_TOOLS)/bin/$(REAL_GNU_TARGET_NAME)-gcc: $(GCC_BUILD_DIR1)/.compiled
66 PATH=$(TARGET_PATH) $(MAKE) -C $(GCC_BUILD_DIR1) install-gcc
67
68GCC_BUILD_DIR2:=$(WRKDIR)/gcc-$(GCC_VERSION)-final
69$(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.patched $(STAGING_DIR)/lib/libc.a
70 mkdir -p $(GCC_BUILD_DIR2) ${STAGING_TOOLS}/$(REAL_GNU_TARGET_NAME)
71 # Important! Required for limits.h to be fixed.
72 rm -rf $(STAGING_TOOLS)/$(REAL_GNU_TARGET_NAME)/sys-include
73 ln -sf ${STAGING_DIR}/include $(STAGING_TOOLS)/$(REAL_GNU_TARGET_NAME)/sys-include
74 rm -rf ${STAGING_TOOLS}/$(REAL_GNU_TARGET_NAME)/lib
75 ln -sf ${STAGING_DIR}/lib $(STAGING_TOOLS)/$(REAL_GNU_TARGET_NAME)/lib
76 (cd $(GCC_BUILD_DIR2); rm -f config.cache; PATH=$(TARGET_PATH) \
77 $(GCC_DIR)/configure \
78 ${GCC_CONFOPTS} \
79 --enable-languages=$(TARGET_LANGUAGES) \
80 --enable-shared \
81 --with-sysroot=${STAGING_DIR} \
82 );
83 touch $@
84
85$(GCC_BUILD_DIR2)/.compiled: $(GCC_BUILD_DIR2)/.configured
86 PATH=$(TARGET_PATH) $(MAKE) -C $(GCC_BUILD_DIR2) all
87 touch $@
88
89${STAGING_TOOLS}/gcc_installed: $(GCC_BUILD_DIR2)/.compiled
90 PATH=$(TARGET_PATH) $(MAKE) -C $(GCC_BUILD_DIR2) install
91 echo $(GCC_VERSION) > $(STAGING_TOOLS)/gcc_version
92 # Set up the symlinks to enable lying about target name.
93 set -e; \
94 (cd $(STAGING_TOOLS); \
95 ln -sf $(REAL_GNU_TARGET_NAME) $(GNU_TARGET_NAME); \
96 cd bin; \
97 for app in $(REAL_GNU_TARGET_NAME)-* ; do \
98 ln -sf $${app} \
99 $(GNU_TARGET_NAME)$${app##$(REAL_GNU_TARGET_NAME)}; \
100 done; \
101 )
102# We do another ugly hack here because the standard behaviour is
103# to include a reference to libgcc.so.1 in all binaries. For flash space
104# saving, we change the specs file to link in a static libgcc here.
105ifeq ($(CPU_ARCH),mipsel)
106 if [ -f $(STAGING_TOOLS)/lib/gcc/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs ] ; then \
107 patch -d $(STAGING_TOOLS)/lib/gcc/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/ -p0 < ./$(GCC_VERSION)/static-libgcc.patch.conditional ; \
108 fi
109endif
110 touch $@
111
112source: ${_CHECKSUM_COOKIE}
113prepare: $(STAGING_TOOLS)/bin/$(REAL_GNU_TARGET_NAME)-gcc
114compile: ${STAGING_TOOLS}/gcc_installed
115install:
116clean: gcc-clean
117 rm -rf $(GCC_DIR) $(GCC_BUILD_DIR1) $(GCC_BUILD_DIR2)
118 rm -f $(STAGING_TOOLS)/bin/$(REAL_GNU_TARGET_NAME)-{,g}c* \
119 ${STAGING_TOOLS}/gcc_installed
Note: See TracBrowser for help on using the repository browser.