Mercurial > mxe-octave
annotate src/gcc.mk @ 2997:4f9b72cf7ee7
allow native builds too
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 28 May 2013 17:31:59 -0400 |
parents | a9fa640c348c |
children | 100e618349f7 |
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 |
306
85ffa9259036
validate downloads using SHA-1 checksums
Volker Grabsch <vog@notjusthosting.com>
parents:
266
diff
changeset
|
4 PKG := gcc |
938
795dbc19e055
detangle package pthreads from package gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
922
diff
changeset
|
5 $(PKG)_IGNORE := |
2769 | 6 $(PKG)_CHECKSUM := a464ba0f26eef24c29bcd1e7489421117fb9ee35 |
504
0fd340b5a6a8
improved structure of the gcc-* packages
Volker Grabsch <vog@notjusthosting.com>
parents:
475
diff
changeset
|
7 $(PKG)_SUBDIR := gcc-$($(PKG)_VERSION) |
0fd340b5a6a8
improved structure of the gcc-* packages
Volker Grabsch <vog@notjusthosting.com>
parents:
475
diff
changeset
|
8 $(PKG)_FILE := gcc-$($(PKG)_VERSION).tar.bz2 |
0fd340b5a6a8
improved structure of the gcc-* packages
Volker Grabsch <vog@notjusthosting.com>
parents:
475
diff
changeset
|
9 $(PKG)_URL := ftp://ftp.gnu.org/pub/gnu/gcc/gcc-$($(PKG)_VERSION)/$($(PKG)_FILE) |
2769 | 10 $(PKG)_URL_2 := ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-$($(PKG)_VERSION)/$($(PKG)_FILE) |
2997 | 11 ifeq ($(USE_SYSTEM_GCC),yes) |
12 $(PKG)_DEPS := | |
13 else | |
14 ifeq ($(MXE_NATIVE_BUILD),yes) | |
15 $(PKG)_DEPS := binutils gcc-gmp gcc-mpc gcc-mpfr | |
16 else | |
17 ifeq ($(MXE_SYSTEM),mingw) | |
18 $(PKG)_DEPS := mingwrt w32api binutils gcc-gmp gcc-mpc gcc-mpfr | |
19 else | |
20 endif | |
21 endif | |
22 endif | |
2855
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
23 ifneq ($(BUILD_SHARED),yes) |
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
24 $(PKG)_STATIC_FLAG := --static |
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
25 endif |
115
ae21cae1b378
translated packages: mingwrt, w32api, binutils, gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
diff
changeset
|
26 |
ae21cae1b378
translated packages: mingwrt, w32api, binutils, gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
diff
changeset
|
27 define $(PKG)_UPDATE |
2525
4d0f3a9da57e
all packages: use $(WGET) portability variable
Tony Theodore <tonyt@logyst.com>
parents:
2365
diff
changeset
|
28 $(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
|
29 $(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
|
30 grep -v '^4\.[543]\.' | \ |
504
0fd340b5a6a8
improved structure of the gcc-* packages
Volker Grabsch <vog@notjusthosting.com>
parents:
475
diff
changeset
|
31 head -1 |
115
ae21cae1b378
translated packages: mingwrt, w32api, binutils, gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
diff
changeset
|
32 endef |
ae21cae1b378
translated packages: mingwrt, w32api, binutils, gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
diff
changeset
|
33 |
2997 | 34 ifeq ($(USE_SYSTEM_GCC),yes) |
35 define $(PKG)_BUILD | |
36 # create the CMake toolchain file | |
37 [ -d '$(dir $(CMAKE_TOOLCHAIN_FILE))' ] || mkdir -p '$(dir $(CMAKE_TOOLCHAIN_FILE))' | |
38 (if [ $(MXE_SYSTEM) = mingw ]; then \ | |
39 echo 'set(CMAKE_SYSTEM_NAME Windows)'; \ | |
40 echo 'set(MSYS 1)'; \ | |
41 fi; \ | |
42 if [ $(BUILD_SHARED) = yes ]; then \ | |
43 echo 'set(BUILD_SHARED_LIBS ON)'; \ | |
44 else \ | |
45 echo 'set(BUILD_SHARED_LIBS OFF)'; \ | |
46 fi; \ | |
47 if [ $(BUILD_STATIC) = yes ]; then \ | |
48 echo 'set(BUILD_STATIC_LIBS ON)'; \ | |
49 else \ | |
50 echo 'set(BUILD_STATIC_LIBS OFF)'; \ | |
51 fi; \ | |
52 echo 'set(CMAKE_BUILD_TYPE Release)'; \ | |
53 echo 'set(CMAKE_FIND_ROOT_PATH $(PREFIX)/$(TARGET))'; \ | |
54 echo 'set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)'; \ | |
55 echo 'set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)'; \ | |
56 echo 'set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)'; \ | |
57 echo 'set(CMAKE_C_COMPILER $(MXE_CC))'; \ | |
58 echo 'set(CMAKE_CXX_COMPILER $(MXE_CXX))'; \ | |
59 echo 'set(CMAKE_Fortran_COMPILER $(MXE_F77))'; \ | |
60 echo 'set(CMAKE_RC_COMPILER $(MXE_WINDRES))'; \ | |
61 echo 'set(PKG_CONFIG_EXECUTABLE $(MXE_PKG_CONFIG))'; \ | |
62 echo 'set(QT_QMAKE_EXECUTABLE $(MXE_QMAKE))'; \ | |
63 echo 'set(CMAKE_INSTALL_PREFIX $(PREFIX)/$(TARGET) CACHE PATH "Installation Prefix")'; \ | |
64 echo 'set(CMAKE_BUILD_TYPE Release CACHE STRING "Debug|Release|RelWithDebInfo|MinSizeRel")') \ | |
65 > '$(CMAKE_TOOLCHAIN_FILE)' | |
66 endef | |
67 else | |
938
795dbc19e055
detangle package pthreads from package gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
922
diff
changeset
|
68 define $(PKG)_BUILD |
795dbc19e055
detangle package pthreads from package gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
922
diff
changeset
|
69 # unpack support libraries |
795dbc19e055
detangle package pthreads from package gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
922
diff
changeset
|
70 cd '$(1)' && $(call UNPACK_PKG_ARCHIVE,gcc-gmp) |
795dbc19e055
detangle package pthreads from package gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
922
diff
changeset
|
71 mv '$(1)/$(gcc-gmp_SUBDIR)' '$(1)/gmp' |
795dbc19e055
detangle package pthreads from package gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
922
diff
changeset
|
72 cd '$(1)' && $(call UNPACK_PKG_ARCHIVE,gcc-mpc) |
795dbc19e055
detangle package pthreads from package gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
922
diff
changeset
|
73 mv '$(1)/$(gcc-mpc_SUBDIR)' '$(1)/mpc' |
795dbc19e055
detangle package pthreads from package gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
922
diff
changeset
|
74 cd '$(1)' && $(call UNPACK_PKG_ARCHIVE,gcc-mpfr) |
795dbc19e055
detangle package pthreads from package gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
922
diff
changeset
|
75 mv '$(1)/$(gcc-mpfr_SUBDIR)' '$(1)/mpfr' |
795dbc19e055
detangle package pthreads from package gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
922
diff
changeset
|
76 |
795dbc19e055
detangle package pthreads from package gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
922
diff
changeset
|
77 # build GCC and support libraries |
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
|
78 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
|
79 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
|
80 --target='$(TARGET)' \ |
2153
e4c83fa61a5b
replaced $(BUILD) with a more direct and less brittle construct
Volker Grabsch <vog@notjusthosting.com>
parents:
2151
diff
changeset
|
81 --build="`config.guess`" \ |
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
|
82 --prefix='$(PREFIX)' \ |
1950
f97ce88183f5
packages gcc libmikmod: explicitly specify --libdir
Mark Brand <mabrand@mabrand.nl>
parents:
1905
diff
changeset
|
83 --libdir='$(PREFIX)/lib' \ |
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
|
84 --enable-languages='c,c++,objc,fortran' \ |
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
|
85 --enable-version-specific-runtime-libs \ |
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
|
86 --with-gcc \ |
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
|
87 --with-gnu-ld \ |
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
|
88 --with-gnu-as \ |
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
|
89 --disable-nls \ |
2855
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
90 $(ENABLE_SHARED_OR_STATIC) \ |
1759
544f2ac34b4d
disable SJLJ exceptions explicitly, as those cause trouble
Kay Hayen <kayhayen@gmx.de>
parents:
1692
diff
changeset
|
91 --disable-sjlj-exceptions \ |
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
|
92 --without-x \ |
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
|
93 --disable-win32-registry \ |
943
bc40d4f60207
provide GCC OpenMP functionality as extra package libgomp (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents:
942
diff
changeset
|
94 --enable-threads=win32 \ |
bc40d4f60207
provide GCC OpenMP functionality as extra package libgomp (by Tony Theodore)
Volker Grabsch <vog@notjusthosting.com>
parents:
942
diff
changeset
|
95 --disable-libgomp \ |
2010 | 96 --disable-libmudflap \ |
97 --with-mpfr-include='$(1)/mpfr/src' \ | |
2731
7dece766f419
package gcc: fix for OSX ASLR issues with pre-compiled headers
Tony Theodore <tonyt@logyst.com>
parents:
2707
diff
changeset
|
98 --with-mpfr-lib='$(1).build/mpfr/src/.libs' \ |
7dece766f419
package gcc: fix for OSX ASLR issues with pre-compiled headers
Tony Theodore <tonyt@logyst.com>
parents:
2707
diff
changeset
|
99 $(shell [ `uname -s` == Darwin ] && echo "LDFLAGS='-Wl,-no_pie'") |
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
|
100 $(MAKE) -C '$(1).build' -j '$(JOBS)' |
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
|
101 $(MAKE) -C '$(1).build' -j 1 install |
2997 | 102 mkdir -p $(PREFIX)/../cross-tools/$(MXE_BINDIR) |
2916
c90f5757f351
also install cross and native tools in separate destdir locations
John W. Eaton <jwe@octave.org>
parents:
2895
diff
changeset
|
103 $(MAKE) -C '$(1).build' -j 1 DESTDIR=$(PREFIX)/../cross-tools install |
695
b930f92b1f77
use the natively installed pkg-config instead of building a custom pkg-config
Volker Grabsch <vog@notjusthosting.com>
parents:
650
diff
changeset
|
104 |
b930f92b1f77
use the natively installed pkg-config instead of building a custom pkg-config
Volker Grabsch <vog@notjusthosting.com>
parents:
650
diff
changeset
|
105 # create pkg-config script |
b930f92b1f77
use the natively installed pkg-config instead of building a custom pkg-config
Volker Grabsch <vog@notjusthosting.com>
parents:
650
diff
changeset
|
106 (echo '#!/bin/sh'; \ |
2997 | 107 echo 'PKG_CONFIG_PATH="$$PKG_CONFIG_PATH_$(subst -,_,$(TARGET))" PKG_CONFIG_LIBDIR='\''$(MXE_LIBDIR)/pkgconfig'\'' exec pkg-config $($(PKG)_STATIC_FLAG) "$$@"') \ |
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 > '$(PREFIX)/bin/$(TARGET)-pkg-config' |
b930f92b1f77
use the natively installed pkg-config instead of building a custom pkg-config
Volker Grabsch <vog@notjusthosting.com>
parents:
650
diff
changeset
|
109 chmod 0755 '$(PREFIX)/bin/$(TARGET)-pkg-config' |
2329
466e77a78672
Fix annoying whitespaces at EOL
Volker Grabsch <vog@notjusthosting.com>
parents:
2296
diff
changeset
|
110 |
1663
9577f70222f8
add cmake toolchain file and simplify build rules of relevant packages
Tony Theodore <tonyt@logyst.com>
parents:
1524
diff
changeset
|
111 # create the CMake toolchain file |
9577f70222f8
add cmake toolchain file and simplify build rules of relevant packages
Tony Theodore <tonyt@logyst.com>
parents:
1524
diff
changeset
|
112 [ -d '$(dir $(CMAKE_TOOLCHAIN_FILE))' ] || mkdir -p '$(dir $(CMAKE_TOOLCHAIN_FILE))' |
2707
4c2874e00f0c
Move CMAKE_BUILD_TYPE into toolchain file
Volker Grabsch <vog@notjusthosting.com>
parents:
2706
diff
changeset
|
113 (echo 'set(CMAKE_SYSTEM_NAME Windows)'; \ |
1965
2a749f1c6756
additional variable for the cmake toolchain file
Zach Thibeau <zachary.thibeau@gmail.com>
parents:
1950
diff
changeset
|
114 echo 'set(MSYS 1)'; \ |
2855
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
115 if [ $(BUILD_SHARED) = yes ]; then \ |
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
116 echo 'set(BUILD_SHARED_LIBS ON)'; \ |
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
117 else \ |
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
118 echo 'set(BUILD_SHARED_LIBS OFF)'; \ |
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
119 fi; \ |
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
120 if [ $(BUILD_STATIC) = yes ]; then \ |
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
121 echo 'set(BUILD_STATIC_LIBS ON)'; \ |
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
122 else \ |
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
123 echo 'set(BUILD_STATIC_LIBS OFF)'; \ |
47558e958113
Allow static/shared libraries to be configured in top-level Makefile.
John W. Eaton <jwe@octave.org>
parents:
2769
diff
changeset
|
124 fi; \ |
2707
4c2874e00f0c
Move CMAKE_BUILD_TYPE into toolchain file
Volker Grabsch <vog@notjusthosting.com>
parents:
2706
diff
changeset
|
125 echo 'set(CMAKE_BUILD_TYPE Release)'; \ |
1663
9577f70222f8
add cmake toolchain file and simplify build rules of relevant packages
Tony Theodore <tonyt@logyst.com>
parents:
1524
diff
changeset
|
126 echo 'set(CMAKE_FIND_ROOT_PATH $(PREFIX)/$(TARGET))'; \ |
9577f70222f8
add cmake toolchain file and simplify build rules of relevant packages
Tony Theodore <tonyt@logyst.com>
parents:
1524
diff
changeset
|
127 echo 'set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)'; \ |
9577f70222f8
add cmake toolchain file and simplify build rules of relevant packages
Tony Theodore <tonyt@logyst.com>
parents:
1524
diff
changeset
|
128 echo 'set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)'; \ |
9577f70222f8
add cmake toolchain file and simplify build rules of relevant packages
Tony Theodore <tonyt@logyst.com>
parents:
1524
diff
changeset
|
129 echo 'set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)'; \ |
9577f70222f8
add cmake toolchain file and simplify build rules of relevant packages
Tony Theodore <tonyt@logyst.com>
parents:
1524
diff
changeset
|
130 echo 'set(CMAKE_C_COMPILER $(PREFIX)/bin/$(TARGET)-gcc)'; \ |
9577f70222f8
add cmake toolchain file and simplify build rules of relevant packages
Tony Theodore <tonyt@logyst.com>
parents:
1524
diff
changeset
|
131 echo 'set(CMAKE_CXX_COMPILER $(PREFIX)/bin/$(TARGET)-g++)'; \ |
2092
5af000bfab36
add cmake definition for fortran
Mark Brand <mabrand@mabrand.nl>
parents:
2054
diff
changeset
|
132 echo 'set(CMAKE_Fortran_COMPILER $(PREFIX)/bin/$(TARGET)-gfortran)'; \ |
1663
9577f70222f8
add cmake toolchain file and simplify build rules of relevant packages
Tony Theodore <tonyt@logyst.com>
parents:
1524
diff
changeset
|
133 echo 'set(CMAKE_RC_COMPILER $(PREFIX)/bin/$(TARGET)-windres)'; \ |
9577f70222f8
add cmake toolchain file and simplify build rules of relevant packages
Tony Theodore <tonyt@logyst.com>
parents:
1524
diff
changeset
|
134 echo 'set(PKG_CONFIG_EXECUTABLE $(PREFIX)/bin/$(TARGET)-pkg-config)'; \ |
2015
b289b25fa9c0
set QT_QMAKE_EXECUTABLE in cmake toolchain file
Mark Brand <mabrand@mabrand.nl>
parents:
2010
diff
changeset
|
135 echo 'set(QT_QMAKE_EXECUTABLE $(PREFIX)/bin/$(TARGET)-qmake)'; \ |
1663
9577f70222f8
add cmake toolchain file and simplify build rules of relevant packages
Tony Theodore <tonyt@logyst.com>
parents:
1524
diff
changeset
|
136 echo 'set(CMAKE_INSTALL_PREFIX $(PREFIX)/$(TARGET) CACHE PATH "Installation Prefix")'; \ |
9577f70222f8
add cmake toolchain file and simplify build rules of relevant packages
Tony Theodore <tonyt@logyst.com>
parents:
1524
diff
changeset
|
137 echo 'set(CMAKE_BUILD_TYPE Release CACHE STRING "Debug|Release|RelWithDebInfo|MinSizeRel")') \ |
9577f70222f8
add cmake toolchain file and simplify build rules of relevant packages
Tony Theodore <tonyt@logyst.com>
parents:
1524
diff
changeset
|
138 > '$(CMAKE_TOOLCHAIN_FILE)' |
115
ae21cae1b378
translated packages: mingwrt, w32api, binutils, gcc
Volker Grabsch <vog@notjusthosting.com>
parents:
diff
changeset
|
139 endef |
2997 | 140 endif |