Mercurial > mxe-octave
annotate src/build-gcc.mk @ 3521:2aaa6f511434
also use mingw-w64 sources for i686 build
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 14 Feb 2014 18:01:06 -0500 |
parents | 3350681f52f2 |
children | 1b350761007f |
rev | line source |
---|---|
2333
f653602a0500
Rebrand to new project name MXE
Volker Grabsch <vog@notjusthosting.com>
parents:
2329
diff
changeset
|
1 # This file is part of MXE. |
2353
99516e73b368
Move doc/index.html -> index.html
Volker Grabsch <vog@notjusthosting.com>
parents:
2349
diff
changeset
|
2 # See index.html for further information. |
414
d2a6561bcb6d
add a copyright notice and license to each source file
Volker Grabsch <vog@notjusthosting.com>
parents:
408
diff
changeset
|
3 |
3048
5ef49fb3299d
treat gcc and binutils as build tools
John W. Eaton <jwe@octave.org>
parents:
3031
diff
changeset
|
4 PKG := build-gcc |
938
795dbc19e055
detangle package pthreads from package gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
922
diff
changeset
|
5 $(PKG)_IGNORE := |
3496
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
6 $(PKG)_VERSION := 4.8.2 |
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
7 $(PKG)_CHECKSUM := 810fb70bd721e1d9f446b6503afe0a9088b62986 |
504
0fd340b5a6a8
improved structure of the gcc-* packages
Volker Grabsch <vog@notjusthosting.com>
parents:
475
diff
changeset
|
8 $(PKG)_SUBDIR := gcc-$($(PKG)_VERSION) |
0fd340b5a6a8
improved structure of the gcc-* packages
Volker Grabsch <vog@notjusthosting.com>
parents:
475
diff
changeset
|
9 $(PKG)_FILE := gcc-$($(PKG)_VERSION).tar.bz2 |
0fd340b5a6a8
improved structure of the gcc-* packages
Volker Grabsch <vog@notjusthosting.com>
parents:
475
diff
changeset
|
10 $(PKG)_URL := ftp://ftp.gnu.org/pub/gnu/gcc/gcc-$($(PKG)_VERSION)/$($(PKG)_FILE) |
2769 | 11 $(PKG)_URL_2 := ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-$($(PKG)_VERSION)/$($(PKG)_FILE) |
3496
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
12 |
3500
dfc2729af6ee
use separate packages for GCC dependencies on all systems
John W. Eaton <jwe@octave.org>
parents:
3496
diff
changeset
|
13 $(PKG)_DEPS := build-cmake build-binutils gcc-cloog gcc-gmp gcc-isl gcc-mpc gcc-mpfr |
3496
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
14 ifeq ($(MXE_SYSTEM),mingw) |
3521
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
15 $(PKG)_DEPS += mingw-w64 |
2997 | 16 endif |
3012
100e618349f7
Improve handling of prefix directories by defining HOST_PREFIX and
John W. Eaton <jwe@octave.org>
parents:
2997
diff
changeset
|
17 |
2855
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
18 ifneq ($(BUILD_SHARED),yes) |
3012
100e618349f7
Improve handling of prefix directories by defining HOST_PREFIX and
John W. Eaton <jwe@octave.org>
parents:
2997
diff
changeset
|
19 $(PKG)_STATIC_FLAG := --static |
2855
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
20 endif |
115
ae21cae1b378
translated packages: mingwrt, w32api, binutils, gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
diff
changeset
|
21 |
3012
100e618349f7
Improve handling of prefix directories by defining HOST_PREFIX and
John W. Eaton <jwe@octave.org>
parents:
2997
diff
changeset
|
22 ifeq ($(MXE_SYSTEM),mingw) |
100e618349f7
Improve handling of prefix directories by defining HOST_PREFIX and
John W. Eaton <jwe@octave.org>
parents:
2997
diff
changeset
|
23 $(PKG)_SYSDEP_CONFIGURE_OPTIONS := \ |
3224
ddb4cedc4289
build-gcc.mk: only set --libdir for mingw build
John W. Eaton <jwe@octave.org>
parents:
3210
diff
changeset
|
24 --libdir='$(BUILD_TOOLS_PREFIX)/lib' \ |
3189
e028df4c0e31
omit some configure args for native build-gcc builds
John W. Eaton <jwe@octave.org>
parents:
3188
diff
changeset
|
25 --enable-version-specific-runtime-libs \ |
e028df4c0e31
omit some configure args for native build-gcc builds
John W. Eaton <jwe@octave.org>
parents:
3188
diff
changeset
|
26 --with-gcc \ |
e028df4c0e31
omit some configure args for native build-gcc builds
John W. Eaton <jwe@octave.org>
parents:
3188
diff
changeset
|
27 --with-gnu-ld \ |
e028df4c0e31
omit some configure args for native build-gcc builds
John W. Eaton <jwe@octave.org>
parents:
3188
diff
changeset
|
28 --with-gnu-as \ |
e028df4c0e31
omit some configure args for native build-gcc builds
John W. Eaton <jwe@octave.org>
parents:
3188
diff
changeset
|
29 --disable-nls \ |
e028df4c0e31
omit some configure args for native build-gcc builds
John W. Eaton <jwe@octave.org>
parents:
3188
diff
changeset
|
30 --without-x \ |
3012
100e618349f7
Improve handling of prefix directories by defining HOST_PREFIX and
John W. Eaton <jwe@octave.org>
parents:
2997
diff
changeset
|
31 --disable-win32-registry \ |
100e618349f7
Improve handling of prefix directories by defining HOST_PREFIX and
John W. Eaton <jwe@octave.org>
parents:
2997
diff
changeset
|
32 --enable-threads=win32 |
3496
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
33 ifneq ($(ENABLE_64),yes) |
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
34 $(PKG)_SYSDEP_CONFIGURE_OPTIONS += \ |
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
35 --disable-sjlj-exceptions |
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
36 endif |
3012
100e618349f7
Improve handling of prefix directories by defining HOST_PREFIX and
John W. Eaton <jwe@octave.org>
parents:
2997
diff
changeset
|
37 endif |
100e618349f7
Improve handling of prefix directories by defining HOST_PREFIX and
John W. Eaton <jwe@octave.org>
parents:
2997
diff
changeset
|
38 |
115
ae21cae1b378
translated packages: mingwrt, w32api, binutils, gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
diff
changeset
|
39 define $(PKG)_UPDATE |
2525
4d0f3a9da57e
all packages: use $(WGET) portability variable
Tony Theodore <tonyt@logyst.com>
parents:
2365
diff
changeset
|
40 $(WGET) -q -O- 'http://ftp.gnu.org/gnu/gcc/?C=M;O=D' | \ |
605
96fa8fada1dc
improved speed of version recognition for package gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
504
diff
changeset
|
41 $(SED) -n 's,.*<a href="gcc-\([0-9][^"]*\)/".*,\1,p' | \ |
1799
53a080f97374
package gcc: fix update macro
Mark Brand <mabrand@mabrand.nl>
parents:
1759
diff
changeset
|
42 grep -v '^4\.[543]\.' | \ |
504
0fd340b5a6a8
improved structure of the gcc-* packages
Volker Grabsch <vog@notjusthosting.com>
parents:
475
diff
changeset
|
43 head -1 |
115
ae21cae1b378
translated packages: mingwrt, w32api, binutils, gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
diff
changeset
|
44 endef |
ae21cae1b378
translated packages: mingwrt, w32api, binutils, gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
diff
changeset
|
45 |
3509
3350681f52f2
Don't install cross tools in host directory tree.
John W. Eaton <jwe@octave.org>
parents:
3500
diff
changeset
|
46 ifneq ($(MXE_NATIVE_BUILD),yes) |
3350681f52f2
Don't install cross tools in host directory tree.
John W. Eaton <jwe@octave.org>
parents:
3500
diff
changeset
|
47 define $(PKG)_POST_BUILD |
3350681f52f2
Don't install cross tools in host directory tree.
John W. Eaton <jwe@octave.org>
parents:
3500
diff
changeset
|
48 $(INSTALL) -d '$(BUILD_TOOLS_PREFIX)/bin/$(TARGET)' |
3350681f52f2
Don't install cross tools in host directory tree.
John W. Eaton <jwe@octave.org>
parents:
3500
diff
changeset
|
49 mv $(addprefix $(HOST_PREFIX)/bin/, c++ g++ gcc gfortran) '$(BUILD_TOOLS_PREFIX)/bin/$(TARGET)' |
3350681f52f2
Don't install cross tools in host directory tree.
John W. Eaton <jwe@octave.org>
parents:
3500
diff
changeset
|
50 endef |
3350681f52f2
Don't install cross tools in host directory tree.
John W. Eaton <jwe@octave.org>
parents:
3500
diff
changeset
|
51 endif |
3350681f52f2
Don't install cross tools in host directory tree.
John W. Eaton <jwe@octave.org>
parents:
3500
diff
changeset
|
52 |
3496
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
53 define $(PKG)_CONFIGURE |
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
54 # configure gcc |
1066
c7b2a7ef1bf9
use a build directory separate from the source directory in package gcc (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents:
1060
diff
changeset
|
55 mkdir '$(1).build' |
c7b2a7ef1bf9
use a build directory separate from the source directory in package gcc (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents:
1060
diff
changeset
|
56 cd '$(1).build' && '$(1)/configure' \ |
444
c828215f90ae
enable libgomp (OpenMP) in package gcc by interweaving the pthread build into the gcc build
Volker Grabsch <vog@notjusthosting.com>
parents:
426
diff
changeset
|
57 --target='$(TARGET)' \ |
3013
bcc26ffe9a0f
use variable for --host and --build configure arguments
John W. Eaton <jwe@octave.org>
parents:
3012
diff
changeset
|
58 --build='$(BUILD_SYSTEM)' \ |
3012
100e618349f7
Improve handling of prefix directories by defining HOST_PREFIX and
John W. Eaton <jwe@octave.org>
parents:
2997
diff
changeset
|
59 --prefix='$(BUILD_TOOLS_PREFIX)' \ |
100e618349f7
Improve handling of prefix directories by defining HOST_PREFIX and
John W. Eaton <jwe@octave.org>
parents:
2997
diff
changeset
|
60 --enable-languages='c,c++,fortran' \ |
3205
96f2ec8172a1
always set libdir and disable multilib for gcc build
John W. Eaton <jwe@octave.org>
parents:
3198
diff
changeset
|
61 --disable-multilib \ |
3496
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
62 $($(PKG)_SYSDEP_CONFIGURE_OPTIONS) \ |
2855
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
63 $(ENABLE_SHARED_OR_STATIC) \ |
943
bc40d4f60207
provide GCC OpenMP functionality as extra package libgomp (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents:
942
diff
changeset
|
64 --disable-libgomp \ |
2010 | 65 --disable-libmudflap \ |
3496
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
66 --with-cloog='$(BUILD_TOOLS_PREFIX)' \ |
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
67 --with-gmp='$(BUILD_TOOLS_PREFIX)' \ |
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
68 --with-isl='$(BUILD_TOOLS_PREFIX)' \ |
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
69 --with-mpc='$(BUILD_TOOLS_PREFIX)' \ |
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
70 --with-mpfr='$(BUILD_TOOLS_PREFIX)' \ |
3509
3350681f52f2
Don't install cross tools in host directory tree.
John W. Eaton <jwe@octave.org>
parents:
3500
diff
changeset
|
71 --with-as='$(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-as' \ |
3350681f52f2
Don't install cross tools in host directory tree.
John W. Eaton <jwe@octave.org>
parents:
3500
diff
changeset
|
72 --with-ld='$(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-ld' \ |
3350681f52f2
Don't install cross tools in host directory tree.
John W. Eaton <jwe@octave.org>
parents:
3500
diff
changeset
|
73 --with-nm='$(BUILD_TOOLS_PREFIX)/bin/$(TARGET)-nm' |
2731
7dece766f419
package gcc: fix for OSX ASLR issues with pre-compiled headers
Tony Theodore <tonyt@logyst.com>
parents:
2707
diff
changeset
|
74 $(shell [ `uname -s` == Darwin ] && echo "LDFLAGS='-Wl,-no_pie'") |
3496
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
75 endef |
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
76 |
3521
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
77 define $(PKG)_BUILD |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
78 # build standalone gcc |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
79 $($(PKG)_CONFIGURE) |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
80 $(MAKE) -C '$(1).build' -j '$(JOBS)' all-gcc |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
81 $(MAKE) -C '$(1).build' -j 1 install-gcc |
3496
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
82 |
3521
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
83 # build mingw-w64-crt |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
84 cd '$(1)' && $(call UNPACK_PKG_ARCHIVE,mingw-w64,$(TAR)) |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
85 mkdir '$(1).crt-build' |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
86 cd '$(1).crt-build' && '$(1)/$(mingw-w64_SUBDIR)/mingw-w64-crt/configure' \ |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
87 --host='$(TARGET)' \ |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
88 --prefix='$(HOST_PREFIX)' |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
89 $(MAKE) -C '$(1).crt-build' -j '$(JOBS)' || $(MAKE) -C '$(1).crt-build' -j '$(JOBS)' |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
90 $(MAKE) -C '$(1).crt-build' -j 1 install |
3496
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
91 |
3521
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
92 # build rest of gcc |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
93 cd '$(1).build' |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
94 $(MAKE) -C '$(1).build' -j '$(JOBS)' |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
95 $(MAKE) -C '$(1).build' -j 1 install |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
96 |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
97 if [ -f $(BUILD_TOOLS_PREFIX)/lib/gcc/$(TARGET)/lib/libgcc_s.a ]; then \ |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
98 mv $(BUILD_TOOLS_PREFIX)/lib/gcc/$(TARGET)/lib/libgcc_s.a $(BUILD_TOOLS_PREFIX)/lib/gcc/$(TARGET)/$($(PKG)_VERSION)/libgcc_s.a; \ |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
99 fi |
3496
3c7b3646d0b3
update to gcc 4.8.2 and allow building for MinGW-64
John W. Eaton <jwe@octave.org>
parents:
3480
diff
changeset
|
100 |
3521
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
101 # create pkg-config script |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
102 if [ '$(MXE_NATIVE_BUILD)' = 'no' ]; then \ |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
103 (echo '#!/bin/sh'; \ |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
104 echo 'PKG_CONFIG_PATH="$$PKG_CONFIG_PATH_$(subst -,_,$(TARGET))" PKG_CONFIG_LIBDIR='\''$(HOST_LIBDIR)/pkgconfig'\'' exec pkg-config $($(PKG)_STATIC_FLAG) "$$@"') \ |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
105 > '$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)pkg-config'; \ |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
106 chmod 0755 '$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)pkg-config'; \ |
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
107 fi |
695
b930f92b1f77
use the natively installed pkg-config instead of building a custom pkg-config
Volker Grabsch <vog@notjusthosting.com>
parents:
650
diff
changeset
|
108 |
3521
2aaa6f511434
also use mingw-w64 sources for i686 build
John W. Eaton <jwe@octave.org>
parents:
3509
diff
changeset
|
109 $($(PKG)_POST_BUILD) |
3048
5ef49fb3299d
treat gcc and binutils as build tools
John W. Eaton <jwe@octave.org>
parents:
3031
diff
changeset
|
110 endef |