summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rwxr-xr-xMakefile731
1 files changed, 731 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100755
index 0000000..f033a2e
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,731 @@
+###################################################################
+# Makefile to generate a GNU GCC compiler (64-Bit) collection
+#
+# - linux based mingw multilib cross compiler
+# - windows gcc multilib native compiler
+# - linux gcc multilib native compiler
+#
+# all compiler including GDB 7.12
+#
+# Languages: C, C++, Fortran, Obj-C
+# Multilib: -m32, -m64
+#
+# host
+#
+# The system that is going to run the software once it is built. Once the software
+# has been built, it will execute on this particular system.
+#
+# build
+#
+# The system where the build process is being executed. For most uses this
+# would be the same as the host system, but in case of cross-compilation
+# the two obviously differ.
+#
+# target
+#
+# The system against which the software being built will run on. This only exists, or rather
+# has a meaning, when the software being built may interact specifically with a
+# system that differs from the one it's being executed on (our host). This is the case
+# for compilers, debuggers, profilers and analyzers and other tools in general.
+#
+
+SUITE = 1.0.0
+
+ifeq ($(BUILD_NUMBER),)
+VERSION_SUITE = $(SUITE)-unofficial
+else
+VERSION_SUITE = $(SUITE)-$(BUILD_NUMBER)
+endif
+
+TOP = $(shell readlink -f .)
+ARCH = x86-linux64
+ARCH64 = x86_64-linux-gnu
+ARCH32 = i686-linux-gnu
+
+
+VERSION_BINUTILS = 2.28
+VERSION_GCC = 7.1.0
+VERSION_MINGW = 5.0.2
+VERSION_GMP = 6.1.2
+VERSION_MPC = 1.0.2
+VERSION_ISL = 0.16.1
+VERSION_MPFR = 3.1.5
+VERSION_GDB = 7.12
+VERSION_BZ2 = 1.0.6
+VERSION_ZLIB = 1.2.11
+
+GCC_PKGVERSION = "TechSAT GCC-Suite v$(VERSION_SUITE)"
+
+XGCC_TARGET64 = x86_64-w64-mingw32
+XGCC_TARGET32 = i686-w64-mingw32
+
+SOURCE_DIR = $(shell readlink -f $(PWD)/SOURCES)
+PATCHES_DIR = $(shell readlink -f $(PWD)/PATCHES)
+UNPACK_DIR = $(PWD)/unpack.$(ARCH)
+BUILD_DIR = $(PWD)/build.$(ARCH)
+INST_BASE = $(PWD)/inst.$(ARCH)
+
+INST_BASE_LINUX = $(PWD)/inst.x86-linux64
+
+XGCC_INST_DIR = $(INST_BASE_LINUX)/mingw64
+XGCC_PREFIX = $(XGCC_TARGET64)-
+XGCC_BINPATH = $(XGCC_INST_DIR)/bin
+XGCC32 = "$(XGCC_BINPATH)/$(XGCC_PREFIX)gcc -m32"
+XGCC64 = "$(XGCC_BINPATH)/$(XGCC_PREFIX)gcc -m64"
+XGPP32 = "$(XGCC_BINPATH)/$(XGCC_PREFIX)g++ -m32"
+XGPP64 = "$(XGCC_BINPATH)/$(XGCC_PREFIX)g++ -m64"
+
+
+WINGCC_ROOTNAME = gcc-$(VERSION_GCC)
+WINGCC_INST_DIR = $(INST_BASE)/$(WINGCC_ROOTNAME)
+WINGCC_SYSROOT = $(INST_BASE)/$(WINGCC_ROOTNAME)
+
+LANGUAGES = c,c++,fortran,objc
+
+SOURCE_PACKAGES = \
+ $(SOURCE_DIR)/binutils-$(VERSION_BINUTILS).tar.bz2 \
+ $(SOURCE_DIR)/gcc-$(VERSION_GCC).tar.bz2 \
+ $(SOURCE_DIR)/gdb-$(VERSION_GDB).tar.bz2 \
+ $(SOURCE_DIR)/gmp-$(VERSION_GMP).tar.lz \
+ $(SOURCE_DIR)/isl-$(VERSION_ISL).tar.bz2 \
+ $(SOURCE_DIR)/mingw-w64-v$(VERSION_MINGW).tar.bz2 \
+ $(SOURCE_DIR)/mpc-$(VERSION_MPC).tar.gz \
+ $(SOURCE_DIR)/mpfr-$(VERSION_MPFR).tar.bz2 \
+ $(SOURCE_DIR)/zlib-$(VERSION_ZLIB).tar.gz \
+ $(SOURCE_DIR)/bzip2-$(VERSION_BZ2).tar.gz
+
+JOBS = -j4
+
+$(SOURCE_DIR)/binutils-$(VERSION_BINUTILS).tar.bz2: _download_prepare
+ wget -c https://ftp.gnu.org/gnu/binutils/binutils-$(VERSION_BINUTILS).tar.bz2 -O \
+ $(SOURCE_DIR)/binutils-$(VERSION_BINUTILS).tar.bz2
+$(SOURCE_DIR)/gcc-$(VERSION_GCC).tar.bz2:
+ wget -c https://ftp.gnu.org/gnu/gcc/gcc-$(VERSION_GCC)/gcc-$(VERSION_GCC).tar.bz2 -O \
+ $(SOURCE_DIR)/gcc-$(VERSION_GCC).tar.bz2
+$(SOURCE_DIR)/gmp-$(VERSION_GMP).tar.lz:
+ wget -c https://gmplib.org/download/gmp/gmp-$(VERSION_GMP).tar.lz -O \
+ $(SOURCE_DIR)/gmp-$(VERSION_GMP).tar.lz
+$(SOURCE_DIR)/mingw-w64-v$(VERSION_MINGW).tar.bz2:
+ wget -c https://netix.dl.sourceforge.net/project/mingw-w64/mingw-w64/mingw-w64-release/mingw-w64-v$(VERSION_MINGW).tar.bz2 -O \
+ $(SOURCE_DIR)/mingw-w64-v$(VERSION_MINGW).tar.bz2
+$(SOURCE_DIR)/mpc-$(VERSION_MPC).tar.gz:
+ wget -c ftp://ftp.gnu.org/gnu/mpc/mpc-$(VERSION_MPC).tar.gz -O \
+ $(SOURCE_DIR)/mpc-$(VERSION_MPC).tar.gz
+$(SOURCE_DIR)/mpfr-$(VERSION_MPFR).tar.bz2:
+ wget -c http://www.mpfr.org/mpfr-current/mpfr-$(VERSION_MPFR).tar.bz2 -O \
+ $(SOURCE_DIR)/mpfr-$(VERSION_MPFR).tar.bz2
+$(SOURCE_DIR)/zlib-$(VERSION_ZLIB).tar.gz:
+ wget -c https://www.zlib.net/zlib-$(VERSION_ZLIB).tar.gz -O \
+ $(SOURCE_DIR)/zlib-$(VERSION_ZLIB).tar.gz
+$(SOURCE_DIR)/bzip2-$(VERSION_BZ2).tar.gz:
+ wget -c http://www.bzip.org/$(VERSION_BZ2)/bzip2-$(VERSION_BZ2).tar.gz -O \
+ $(SOURCE_DIR)/bzip2-$(VERSION_BZ2).tar.gz
+$(SOURCE_DIR)/gdb-$(VERSION_GDB).tar.gz:
+ wget -c ftp://sourceware.org/pub/gdb/releases/gdb-$(VERSION_GDB).tar.gz -O \
+ $(SOURCE_DIR)/gdb-$(VERSION_GDB).tar.gz
+$(SOURCE_DIR)/isl-$(VERSION_ISL).tar.bz2:
+ wger -c "ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-$(VERSION_ISL).tar.bz2" -O \
+ $(SOURCE_DIR)/isl-$(VERSION_ISL).tar.bz2
+
+download: $(SOURCE_PACKAGES)
+
+_download_prepare:
+ mkdir -p $(SOURCE_DIR)
+
+all: xgcc-all \
+ wingcc-all \
+ lingcc-all \
+ fullclean
+
+prepare:
+ mkdir -p $(UNPACK_DIR)
+ tar -jxf $(SOURCE_DIR)/gcc-$(VERSION_GCC).tar.bz2 -C $(UNPACK_DIR)/
+ cd $(UNPACK_DIR)/gcc-$(VERSION_GCC) && \
+ patch -p1 < $(PATCHES_DIR)/windows-lrealpath-no-force-lowercase-nor-backslash.patch
+ tar -zxf $(SOURCE_DIR)/gdb-$(VERSION_GDB).tar.gz -C $(UNPACK_DIR)/
+ cd $(UNPACK_DIR)/gdb-$(VERSION_GDB) && \
+ patch -p1 < $(PATCHES_DIR)/windows-lrealpath-no-force-lowercase-nor-backslash.patch
+ tar -jxf $(SOURCE_DIR)/binutils-$(VERSION_BINUTILS).tar.bz2 -C $(UNPACK_DIR)/
+ cd $(UNPACK_DIR)/binutils-$(VERSION_BINUTILS) && \
+ patch -p1 < $(PATCHES_DIR)/windows-lrealpath-no-force-lowercase-nor-backslash.patch
+ tar -jxf $(SOURCE_DIR)/mingw-w64-v$(VERSION_MINGW).tar.bz2 -C $(UNPACK_DIR)/
+ tar -jxf $(SOURCE_DIR)/mpfr-$(VERSION_MPFR).tar.bz2 -C $(UNPACK_DIR)/
+ tar -jxf $(SOURCE_DIR)/isl-$(VERSION_ISL).tar.bz2 -C $(UNPACK_DIR)/
+ tar -zxf $(SOURCE_DIR)/mpc-$(VERSION_MPC).tar.gz -C $(UNPACK_DIR)/
+ tar --lzip -xf $(SOURCE_DIR)/gmp-$(VERSION_GMP).tar.lz -C $(UNPACK_DIR)/
+ tar -zxf $(SOURCE_DIR)/zlib-$(VERSION_ZLIB).tar.gz -C $(UNPACK_DIR)/
+ tar -zxf $(SOURCE_DIR)/bzip2-$(VERSION_BZ2).tar.gz -C $(UNPACK_DIR)/
+ #
+ rm -Rf $(UNPACK_DIR)/gcc-$(VERSION_GCC)/gmp
+ mv $(UNPACK_DIR)/gmp-$(VERSION_GMP) $(UNPACK_DIR)/gcc-$(VERSION_GCC)/gmp
+ rm -Rf $(UNPACK_DIR)/gcc-$(VERSION_GCC)/mpc
+ mv $(UNPACK_DIR)/mpc-$(VERSION_MPC) $(UNPACK_DIR)/gcc-$(VERSION_GCC)/mpc
+ rm -Rf $(UNPACK_DIR)/gcc-$(VERSION_GCC)/mpfr
+ mv $(UNPACK_DIR)/mpfr-$(VERSION_MPFR) $(UNPACK_DIR)/gcc-$(VERSION_GCC)/mpfr
+ rm -Rf $(UNPACK_DIR)/gcc-$(VERSION_GCC)/isl
+ mv $(UNPACK_DIR)/isl-$(VERSION_ISL) $(UNPACK_DIR)/gcc-$(VERSION_GCC)/isl
+
+build-common:
+ mkdir -p $(BUILD_DIR)
+
+##############################################################################
+# Linux based MinGW multilib cross compiler
+##############################################################################
+xgcc-all:
+ make fullclean
+ make prepare
+ #
+ make build-common
+ make xgcc-build-binutils
+ make xgcc-mingw-pass1
+ make xgcc-gcc-pass1
+ make xgcc-mingw-pass2
+ make xgcc-gcc-pass2
+ make xgcc-finish
+ make xgcc-gdb
+ make xgcc-zlib
+ make xgcc-bzip2
+ make xgcc-reimp
+ make xgcc-genpeimg
+ make xgcc-gendef
+ make xgcc-pack
+
+xgcc-build-binutils:
+ mkdir -p $(BUILD_DIR)/binutils
+ cd $(BUILD_DIR)/binutils ;\
+ $(UNPACK_DIR)/binutils-$(VERSION_BINUTILS)/configure \
+ --with-pkgversion=$(GCC_PKGVERSION) \
+ --prefix=$(XGCC_INST_DIR) \
+ --disable-nls \
+ --enable-deterministic-archives \
+ --with-gcc \
+ --with-gnu-ld \
+ --with-gnu-as \
+ --disable-werror \
+ --enable-targets=$(XGCC_TARGET64),$(XGCC_TARGET32) \
+ --host=$(ARCH64) \
+ --build=$(ARCH64) \
+ --target=$(XGCC_TARGET64) ;\
+ make $(JOBS) ;\
+ make $(JOBS) install
+
+xgcc-mingw-pass1:
+ mkdir -p $(BUILD_DIR)/mingw
+ cd $(BUILD_DIR)/mingw ;\
+ $(UNPACK_DIR)/mingw-w64-v$(VERSION_MINGW)/mingw-w64-headers/configure \
+ --prefix=$(XGCC_INST_DIR)/$(XGCC_TARGET64) \
+ --host=$(XGCC_TARGET64) ;\
+ make $(JOBS) install
+ cd $(XGCC_INST_DIR) && rm -f mingw && ln -s $(XGCC_TARGET64) mingw
+ cd $(XGCC_INST_DIR)/$(XGCC_TARGET64) && mkdir -p lib32
+ cd $(XGCC_INST_DIR)/$(XGCC_TARGET64) && rm -f lib64 && ln -s lib lib64
+
+xgcc-gcc-pass1:
+ mkdir -p $(BUILD_DIR)/gcc
+ cd $(BUILD_DIR)/gcc && \
+ $(UNPACK_DIR)/gcc-$(VERSION_GCC)/configure \
+ --with-pkgversion=$(GCC_PKGVERSION) \
+ --prefix=$(XGCC_INST_DIR) \
+ --with-sysroot=$(XGCC_INST_DIR) \
+ --disable-nls \
+ --host=$(ARCH64) \
+ --build=$(ARCH64) \
+ --target=$(XGCC_TARGET64) \
+ --enable-languages=$(LANGUAGES) \
+ --disable-win32-registry \
+ --with-gcc \
+ --with-gnu-ld \
+ --with-gnu-as \
+ --without-x \
+ --enable-shared \
+ --enable-static \
+ --disable-werror \
+ --with-tune-64=core2 \
+ --enable-threads=win32 \
+ --enable-multilib \
+ --enable-64bit \
+ --enable-clocale=gnu \
+ --enable-version-specific-runtime-libs \
+ --enable-fully-dynamic-string && \
+ make $(JOBS) all-gcc && \
+ make $(JOBS) install-gcc
+
+xgcc-mingw-pass2:
+ cd $(BUILD_DIR)/mingw && \
+ export PATH=$(PATH):$(XGCC_INST_DIR)/bin && \
+ $(UNPACK_DIR)/mingw-w64-v$(VERSION_MINGW)/configure \
+ --prefix=$(XGCC_INST_DIR)/$(XGCC_TARGET64) \
+ --host=$(XGCC_TARGET64) \
+ --disable-nls \
+ --enable-sdk=all \
+ --enable-idl \
+ --enable-secure-api \
+ --enable-lib64 \
+ --enable-lib32 && \
+ make $(JOBS) && \
+ make $(JOBS) install
+
+xgcc-gcc-pass2:
+ cd $(BUILD_DIR)/gcc && \
+ make $(JOBS) && \
+ make $(JOBS) install
+
+
+xgcc-finish:
+ cd $(XGCC_INST_DIR) && rm -f mingw
+ for f in `find $(XGCC_INST_DIR) -type f -executable -exec file -i '{}' \; | grep 'x-executable; charset=binary' | cut -d: -f1`; do \
+ $(XGCC_INST_DIR)/bin/$(XGCC_TARGET64)-strip $$f ;\
+ done;
+ rm -Rf $(XGCC_INST_DIR)/share
+ find $(XGCC_INST_DIR) -type f -name "*.py" | xargs rm -f
+ cp -f $(SOURCE_DIR)/mingw.gcc.specs \
+ $(XGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/specs
+ sed -i -e 's/__LIB32__/lib\/gcc\/$(XGCC_TARGET64)\/lib32/g' \
+ $(XGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/specs
+ sed -i -e 's/__LIB64__/lib\/gcc\/$(XGCC_TARGET64)\/lib/g' \
+ $(XGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/specs
+ cat $(XGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/specs \
+ $(SOURCE_DIR)/gcc.msvcr90.spec > \
+ $(XGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/msvcr90
+ cat $(XGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/specs \
+ $(SOURCE_DIR)/gcc.msvcr100.spec > \
+ $(XGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/msvcr100
+ cat $(XGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/specs \
+ $(SOURCE_DIR)/gcc.msvcr110.spec > \
+ $(XGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/msvcr110
+
+xgcc-gdb:
+ mkdir -p $(BUILD_DIR)/gdb
+ cd $(BUILD_DIR)/gdb && \
+ export PATH=$(PATH):$(XGCC_BINPATH) && \
+ $(UNPACK_DIR)/gdb-$(VERSION_GDB)/configure \
+ --prefix=$(XGCC_INST_DIR) \
+ --target=$(XGCC_TARGET64) \
+ --build=$(ARCH64) \
+ --host=$(ARCH64) && \
+ make $(JOBS) && make $(JOBS) install
+
+xgcc-reimp:
+ rm -Rf $(BUILD_DIR)/reimp
+ cd $(BUILD_DIR)/ && \
+ tar -zxf $(SOURCE_DIR)/reimp.tar.gz
+ cd $(BUILD_DIR)/reimp/src && \
+ make X=""
+ cp -f $(BUILD_DIR)/reimp/src/reimp $(XGCC_INST_DIR)/bin/$(XGCC_TARGET64)-reimp
+
+xgcc-genpeimg:
+ rm -Rf $(BUILD_DIR)/genpeimg
+ cd $(BUILD_DIR)/ && \
+ tar -zxf $(SOURCE_DIR)/genpeimg.tar.gz
+ cd $(BUILD_DIR)/genpeimg && \
+ ./configure && \
+ make
+ cp -f $(BUILD_DIR)/genpeimg/genpeimg $(XGCC_INST_DIR)/bin/$(XGCC_TARGET64)-genpeimg
+
+xgcc-gendef:
+ rm -Rf $(BUILD_DIR)/gendef
+ cd $(BUILD_DIR)/ && \
+ tar -zxf $(SOURCE_DIR)/gendef.tar.gz
+ cd $(BUILD_DIR)/gendef && \
+ ./configure && \
+ make
+ cp -f $(BUILD_DIR)/gendef/gendef $(XGCC_INST_DIR)/bin/$(XGCC_TARGET64)-gendef
+
+xgcc-zlib:
+ mkdir -p $(BUILD_DIR)
+ cd $(BUILD_DIR) && rm -Rf zlib-$(VERSION_ZLIB)
+ cd $(BUILD_DIR) && tar -zxf $(SOURCE_DIR)/zlib-$(VERSION_ZLIB).tar.gz
+ cd $(BUILD_DIR)/zlib-$(VERSION_ZLIB) && patch -p1 < $(PATCHES_DIR)/zlib_ranlib.patch
+ cd $(BUILD_DIR)/zlib-$(VERSION_ZLIB) && \
+ export PATH=$(PATH):$(XGCC_INST_DIR)/bin && \
+ CC=$(XGCC64) \
+ AR=$(XGCC_BINPATH)/$(XGCC_PREFIX)ar \
+ RANLIB=$(XGCC_BINPATH)/$(XGCC_PREFIX)ranlib \
+ ./configure \
+ --prefix=$(XGCC_INST_DIR)/$(XGCC_TARGET64) --static && \
+ make clean && make
+ cd $(BUILD_DIR)/zlib-$(VERSION_ZLIB) && \
+ cp -f libz.a $(XGCC_INST_DIR)/$(XGCC_TARGET64)/lib && \
+ cp -f zlib.h zconf.h $(XGCC_INST_DIR)/$(XGCC_TARGET64)/include
+ chmod 644 $(XGCC_INST_DIR)/$(XGCC_TARGET64)/lib/libz.a
+ chmod 644 $(XGCC_INST_DIR)/$(XGCC_TARGET64)/include/zlib.h
+ chmod 644 $(XGCC_INST_DIR)/$(XGCC_TARGET64)/include/zconf.h
+ #
+ cd $(BUILD_DIR)/zlib-$(VERSION_ZLIB) && \
+ export PATH=$(PATH):$(XGCC_INST_DIR)/bin && \
+ CC=$(XGCC32) \
+ AR=$(XGCC_BINPATH)/$(XGCC_PREFIX)ar \
+ RANLIB=$(XGCC_BINPATH)/$(XGCC_PREFIX)ranlib \
+ ./configure \
+ --prefix=$(XGCC_INST_DIR)/$(XGCC_TARGET64) --static && \
+ make clean && make
+ cd $(BUILD_DIR)/zlib-$(VERSION_ZLIB) && \
+ cp -f libz.a $(XGCC_INST_DIR)/$(XGCC_TARGET64)/lib32 && \
+ chmod 644 $(XGCC_INST_DIR)/$(XGCC_TARGET64)/lib32/libz.a
+
+xgcc-bzip2:
+ mkdir -p $(BUILD_DIR)
+ cd $(UNPACK_DIR)/bzip2-$(VERSION_BZ2) && \
+ export PATH=$(PATH):$(XGCC_BINPATH) && \
+ make \
+ CC=$(XGCC64) \
+ PREFIX=$(XGCC_INST_DIR)/$(XGCC_TARGET64) clean libbz2.a
+ cd $(UNPACK_DIR)/bzip2-$(VERSION_BZ2) && \
+ cp -f bzlib.h $(XGCC_INST_DIR)/$(XGCC_TARGET64)/include && \
+ cp -f libbz2.a $(XGCC_INST_DIR)/$(XGCC_TARGET64)/lib
+ chmod 644 $(XGCC_INST_DIR)/$(XGCC_TARGET64)/include/bzlib.h
+ chmod 644 $(XGCC_INST_DIR)/$(XGCC_TARGET64)/lib/libbz2.a
+ #
+ cd $(UNPACK_DIR)/bzip2-$(VERSION_BZ2) && \
+ export PATH=$(PATH):$(XGCC_BINPATH)/bin && \
+ make \
+ CC=$(XGCC32) \
+ PREFIX=$(XGCC_INST_DIR)/$(XGCC_TARGET64) clean libbz2.a
+ cd $(UNPACK_DIR)/bzip2-$(VERSION_BZ2) && \
+ cp -f libbz2.a $(XGCC_INST_DIR)/$(XGCC_TARGET64)/lib32
+ chmod 644 $(XGCC_INST_DIR)/$(XGCC_TARGET64)/lib/libbz2.a
+
+xgcc-pack:
+ rm -Rf $(XGCC_INST_DIR)/share
+ cd $(INST_BASE_LINUX) && \
+ tar -zcf $(PWD)/gcc-suite-$(VERSION_SUITE)-xgcc-$(VERSION_GCC)-$(VERSION_MINGW)-x86-linux64.tgz ./mingw64
+
+##############################################################################
+# Nativ Multilib Windows Compiler (64 -Bit)
+##############################################################################
+wingcc-all:
+ make ARCH=x86-mingw64 clean
+ make ARCH=x86-mingw64 prepare
+ #
+ make ARCH=x86-mingw64 wingcc-binutils
+ make ARCH=x86-mingw64 wingcc-mingw
+ make ARCH=x86-mingw64 wingcc-gcc
+ make ARCH=x86-mingw64 wingcc-finish
+ make ARCH=x86-mingw64 wingcc-zlib
+ make ARCH=x86-mingw64 wingcc-bzip2
+ make ARCH=x86-mingw64 wingcc-gendef
+ make ARCH=x86-mingw64 wingcc-genpeimg
+ make ARCH=x86-mingw64 wingcc-reimp
+ make ARCH=x86-mingw64 wingcc-gdb
+ make ARCH=x86-mingw64 wingcc-pack
+
+wingcc-binutils:
+ mkdir -p $(BUILD_DIR)/binutils
+ cd $(BUILD_DIR)/binutils ;\
+ export PATH=$(PATH):$(XGCC_BINPATH) && \
+ CC=$(XGCC64) CXX=$(XGPP64) \
+ $(UNPACK_DIR)/binutils-$(VERSION_BINUTILS)/configure \
+ --with-pkgversion=$(GCC_PKGVERSION) \
+ --prefix=$(WINGCC_INST_DIR) \
+ --disable-nls \
+ --enable-deterministic-archives \
+ --with-gcc \
+ --with-gnu-ld \
+ --with-gnu-as \
+ --enable-static \
+ --disable-werror \
+ --disable-rpath \
+ --enable-targets=$(XGCC_TARGET64),$(XGCC_TARGET32) \
+ --host=$(XGCC_TARGET64) \
+ --target=$(XGCC_TARGET64) &&\
+ make $(JOBS) && make $(JOBS) install
+
+wingcc-mingw:
+ rm -Rf $(BUILD_DIR)/mingw && mkdir -p $(BUILD_DIR)/mingw
+ cd $(BUILD_DIR)/mingw && \
+ export PATH=$(PATH):$(XGCC_BINPATH) && \
+ CC=$(XGCC64) CXX=$(XGPP64) \
+ $(UNPACK_DIR)/mingw-w64-v$(VERSION_MINGW)/configure \
+ --prefix=$(WINGCC_INST_DIR)/$(XGCC_TARGET64) \
+ --host=$(XGCC_TARGET64) \
+ --disable-nls \
+ --enable-sdk=all \
+ --enable-idl \
+ --enable-secure-api \
+ --enable-lib64 \
+ --enable-lib32 && \
+ make $(JOBS) && \
+ make $(JOBS) install
+ cd $(WINGCC_INST_DIR) && rm -f mingw && ln -s $(XGCC_TARGET64) mingw
+
+wingcc-gcc:
+ rm -Rf $(BUILD_DIR)/gcc && mkdir -p $(BUILD_DIR)/gcc
+ cd $(BUILD_DIR)/gcc && \
+ export PATH=$(PATH):$(XGCC_BINPATH) && \
+ CC=$(XGCC64) CXX=$(XGPP64) \
+ $(UNPACK_DIR)/gcc-$(VERSION_GCC)/configure \
+ --with-pkgversion=$(GCC_PKGVERSION) \
+ --prefix=$(WINGCC_INST_DIR) \
+ --with-sysroot=$(WINGCC_INST_DIR) \
+ --disable-nls \
+ --host=$(XGCC_TARGET64) \
+ --target=$(XGCC_TARGET64) \
+ --build=$(ARCH64) \
+ --enable-languages=$(LANGUAGES) \
+ --disable-win32-registry \
+ --with-gcc \
+ --with-gnu-ld \
+ --with-gnu-as \
+ --without-x \
+ --enable-shared \
+ --with-tune-64=core2 \
+ --disable-werror \
+ --disable-win32-registry \
+ --disable-symvers \
+ --enable-multilib \
+ --enable-64bit \
+ --enable-clocale=gnu \
+ --enable-version-specific-runtime-libs \
+ --enable-fully-dynamic-string && \
+ make CFLAGS="-O2 -Wshadow -Wexpansion-to-defined" $(JOBS) all && \
+ make $(JOBS) install
+
+wingcc-finish:
+ cd $(WINGCC_INST_DIR)/bin && \
+ mkdir -p ../tmp; \
+ mv $(XGCC_TARGET64)-*.exe ../tmp ; \
+ for f in *.exe; do \
+ mv $$f $(XGCC_TARGET64)-`basename $$f` > /dev/null 2>&1 ;\
+ done; \
+ mv ../tmp/* . ;\
+ rm -Rf ../tmp ;
+ find $(WINGCC_INST_DIR) -type f -name "*.py" | xargs rm -f
+ cd $(WINGCC_INST_DIR) && rm -Rf share
+ cd $(WINGCC_INST_DIR) && rm -f mingw
+ cd $(WINGCC_INST_DIR) ;\
+ find . -type f -name "*.exe" | xargs $(XGCC_BINPATH)/$(XGCC_PREFIX)strip
+ #
+ cp -f $(SOURCE_DIR)/mingw.gcc.specs \
+ $(WINGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/specs
+ sed -i -e 's/__LIB32__/lib\/gcc\/$(XGCC_TARGET64)\/lib32/g' \
+ $(WINGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/specs
+ sed -i -e 's/__LIB64__/lib\/gcc\/$(XGCC_TARGET64)\/lib/g' \
+ $(WINGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/specs
+ cat $(WINGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/specs \
+ $(SOURCE_DIR)/gcc.msvcr90.spec > \
+ $(WINGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/msvcr90
+ cat $(WINGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/specs \
+ $(SOURCE_DIR)/gcc.msvcr100.spec > \
+ $(WINGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/msvcr100
+ cat $(WINGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/specs \
+ $(SOURCE_DIR)/gcc.msvcr110.spec > \
+ $(WINGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET64)/$(VERSION_GCC)/msvcr110
+
+wingcc-reimp:
+ rm -Rf $(BUILD_DIR)/reimp
+ cd $(BUILD_DIR)/ && \
+ tar -zxf $(SOURCE_DIR)/reimp.tar.gz
+ export PATH=$(PATH):$(XGCC_BINPATH) && \
+ cd $(BUILD_DIR)/reimp/src && \
+ make CC=$(XGCC_TARGET64)-gcc
+ cp -f $(BUILD_DIR)/reimp/src/reimp.exe $(WINGCC_INST_DIR)/bin/reimp.exe
+ cp -f $(BUILD_DIR)/reimp/src/reimp.exe $(WINGCC_INST_DIR)/bin/$(XGCC_TARGET64)-reimp.exe
+
+wingcc-genpeimg:
+ rm -Rf $(BUILD_DIR)/genpeimg
+ cd $(BUILD_DIR)/ && \
+ tar -zxf $(SOURCE_DIR)/genpeimg.tar.gz
+ cd $(BUILD_DIR)/genpeimg && \
+ export PATH=$(PATH):$(XGCC_BINPATH) && \
+ CC=$(XGCC64) CXX=$(XGPP64) genpeimg_CFLAGS="" CFLAGS="-O3 -g -Werror=implicit-fallthrough=0"\
+ ./configure \
+ --host=$(XGCC_TARGET64) && \
+ make
+ cp -f $(BUILD_DIR)/genpeimg/genpeimg.exe \
+ $(WINGCC_INST_DIR)/bin/genpeimg.exe
+ cp -f $(BUILD_DIR)/genpeimg/genpeimg.exe \
+ $(WINGCC_INST_DIR)/bin/$(XGCC_TARGET64)-genpeimg.exe
+
+wingcc-gendef:
+ rm -Rf $(BUILD_DIR)/gendef
+ cd $(BUILD_DIR)/ && \
+ tar -zxf $(SOURCE_DIR)/gendef.tar.gz
+ cd $(BUILD_DIR)/gendef && \
+ export PATH=$(PATH):$(XGCC_BINPATH) && \
+ CC=$(XGCC64) CXX=$(XGPP64) genpeimg_CFLAGS="" CFLAGS="-O3 -g -Werror=implicit-fallthrough=0"\
+ ./configure \
+ --host=$(XGCC_TARGET64) && \
+ make
+ cp -f $(BUILD_DIR)/gendef/gendef.exe $(WINGCC_INST_DIR)/bin/gendef.exe
+ cp -f $(BUILD_DIR)/gendef/gendef.exe $(WINGCC_INST_DIR)/bin/$(XGCC_TARGET64)-gendef.exe
+
+wingcc-zlib:
+ cd $(BUILD_DIR) && rm -Rf zlib-$(VERSION_ZLIB)
+ cd $(BUILD_DIR) && tar -zxf $(SOURCE_DIR)/zlib-$(VERSION_ZLIB).tar.gz
+ cd $(BUILD_DIR)/zlib-$(VERSION_ZLIB) && patch -p1 < $(PATCHES_DIR)/zlib_ranlib.patch
+ cd $(BUILD_DIR)/zlib-$(VERSION_ZLIB) && \
+ export PATH=$(PATH):$(XGCC_BINPATH) && \
+ CC=$(XGCC64) \
+ ./configure \
+ --prefix=$(WINGCC_INST_DIR)/$(XGCC_TARGET64) --static && \
+ make clean && make
+ #
+ cd $(BUILD_DIR)/zlib-$(VERSION_ZLIB) && \
+ cp -f libz.a $(WINGCC_INST_DIR)/$(XGCC_TARGET64)/lib && \
+ cp -f zlib.h zconf.h $(WINGCC_INST_DIR)/$(XGCC_TARGET64)/include
+ #
+ chmod 644 $(WINGCC_INST_DIR)/$(XGCC_TARGET64)/lib/libz.a
+ chmod 644 $(WINGCC_INST_DIR)/$(XGCC_TARGET64)/include/zlib.h
+ chmod 644 $(WINGCC_INST_DIR)/$(XGCC_TARGET64)/include/zconf.h
+ #
+ cd $(BUILDDIR)/zlib-$(VERSION_ZLIB) && \
+ export PATH=$(PATH):$(XGCC_BINPATH) && \
+ CC=$(XGCC32) \
+ ./configure \
+ --prefix=$(WINGCC_INST_DIR)/$(XGCC_TARGET64) --static && \
+ make clean && make
+ cd $(BUILD_DIR)/zlib-$(VERSION_ZLIB) && \
+ cp -f libz.a $(WINGCC_INST_DIR)/$(XGCC_TARGET64)/lib32 && \
+ chmod 644 $(WINGCC_INST_DIR)/$(XGCC_TARGET64)/lib32/libz.a
+
+wingcc-bzip2:
+ cd $(UNPACK_DIR)/bzip2-$(VERSION_BZ2) && \
+ export PATH=$(PATH):$(XGCC_BINPATH) && \
+ make \
+ CC=$(XGCC64) \
+ PREFIX=$(WINGCC_INST_DIR)/$(XGCC_TARGET64) libbz2.a
+ cd $(UNPACK_DIR)/bzip2-$(VERSION_BZ2) && \
+ cp -f bzlib.h $(WINGCC_INST_DIR)/$(XGCC_TARGET64)/include && \
+ cp -f libbz2.a $(WINGCC_INST_DIR)/$(XGCC_TARGET64)/lib
+ chmod 644 $(WINGCC_INST_DIR)/$(XGCC_TARGET64)/include/bzlib.h
+ chmod 644 $(WINGCC_INST_DIR)/$(XGCC_TARGET64)/lib/libbz2.a
+ #
+ cd $(UNPACK_DIR)/bzip2-$(VERSION_BZ2) && \
+ export PATH=$(PATH):$(XGCC_BINPATH)/bin && \
+ make \
+ CC=$(XGCC32) \
+ PREFIX=$(WINGCC_INST_DIR)/$(XGCC_TARGET64) libbz2.a
+ cd $(UNPACK_DIR)/bzip2-$(VERSION_BZ2) && \
+ cp -f libbz2.a $(WINGCC_INST_DIR)/$(XGCC_TARGET64)/lib32
+ chmod 644 $(WINGCC_INST_DIR)/$(XGCC_TARGET64)/lib/libbz2.a
+
+wingcc-gdb:
+ rm -Rf $(BUILD_DIR)/gdb && mkdir -p $(BUILD_DIR)/gdb
+ cd $(BUILD_DIR)/gdb && \
+ export PATH=$(PATH):$(XGCC_BINPATH) && \
+ CC=$(XGCC64) CXX=$(XGPP64) CXXFLAGS="-g -O2 -fpermissive" \
+ $(UNPACK_DIR)/gdb-$(VERSION_GDB)/configure \
+ --prefix=$(WINGCC_INST_DIR) \
+ --target=$(XGCC_TARGET64) \
+ --host=$(XGCC_TARGET64) \
+ --build=$(ARCH64) && \
+ make $(JOBS) && make $(JOBS) install
+ mv -f $(WINGCC_INST_DIR)/bin/gdb.exe \
+ $(WINGCC_INST_DIR)/bin/$(XGCC_TARGET64)-gdb.exe
+ mv -f $(WINGCC_INST_DIR)/bin/gdbserver.exe \
+ $(WINGCC_INST_DIR)/bin/$(XGCC_TARGET64)-gdbserver.exe
+wingcc-pack:
+ rm -Rf $(WINGCC_INST_DIR)/share
+ cd $(INST_BASE) && \
+ zip -qr $(PWD)/gcc-suite-$(VERSION_SUITE)-gcc-$(VERSION_GCC)-$(VERSION_MINGW)-x86-mingw64.zip ./$(WINGCC_ROOTNAME)
+
+##############################################################################
+# Nativ Multilib Linux Compiler (64 -Bit)
+##############################################################################
+lingcc-all:
+ make ARCH=x86-linux64 clean
+ make ARCH=x86-linux64 prepare
+ #
+ make ARCH=x86-linux64 lingcc-binutils
+ make ARCH=x86-linux64 lingcc-gcc
+ make ARCH=x86-linux64 lingcc-finish
+ make ARCH=x86-linux64 lingcc-gdb
+ make ARCH=x86-linux64 lingcc-pack
+
+lingcc-binutils:
+ mkdir -p $(BUILD_DIR)/binutils
+ cd $(BUILD_DIR)/binutils ;\
+ $(UNPACK_DIR)/binutils-$(VERSION_BINUTILS)/configure \
+ --with-pkgversion=$(GCC_PKGVERSION) \
+ --prefix=$(INST_BASE)/gcc-$(VERSION_GCC) \
+ --disable-nls \
+ --enable-deterministic-archives \
+ --with-gcc \
+ --with-gnu-ld \
+ --with-gnu-as \
+ --disable-werror \
+ --enable-targets=$(ARCH64),$(ARCH32) && \
+ make $(JOBS) && make $(JOBS) install
+
+
+lingcc-gcc:
+ mkdir -p $(BUILD_DIR)/gcc
+ cd $(BUILD_DIR)/gcc && \
+ $(UNPACK_DIR)/gcc-$(VERSION_GCC)/configure \
+ --with-pkgversion=$(GCC_PKGVERSION) \
+ --prefix=$(INST_BASE)/gcc-$(VERSION_GCC) \
+ --build=$(ARCH64) \
+ --host=$(ARCH64) \
+ --target=$(ARCH64) \
+ --disable-nls \
+ --enable-languages=$(LANGUAGES) \
+ --with-gcc \
+ --with-gnu-ld \
+ --with-gnu-as \
+ --without-x \
+ --enable-shared \
+ --enable-static \
+ --with-tune-64=core2 \
+ --disable-werror \
+ --disable-symvers \
+ --enable-multilib \
+ --enable-64bit \
+ --enable-clocale=gnu \
+ --enable-version-specific-runtime-libs \
+ --enable-fully-dynamic-string && \
+ make $(JOBS) all && \
+ make $(JOBS) install
+
+lingcc-finish:
+ for f in `find $(INST_BASE)/gcc-$(VERSION_GCC) -type f -executable -exec file -i '{}' \; | grep 'x-executable; charset=binary' | cut -d: -f1`; do \
+ strip $$f ;\
+ done;
+ rm -Rf $(INST_BASE)/gcc-$(VERSION_GCC)/share
+ cp -f $(SOURCE_DIR)/mingw.gcc.specs \
+ $(INST_BASE)/gcc-$(VERSION_GCC)/lib/gcc/$(ARCH64)/$(VERSION_GCC)/specs
+ #
+ sed -i -e 's/__LIB32__/lib\/gcc\/$(ARCH64)\/lib32/g' \
+ $(INST_BASE)/gcc-$(VERSION_GCC)/lib/gcc/$(ARCH64)/$(VERSION_GCC)/specs
+ sed -i -e 's/__LIB64__/lib\/gcc\/$(ARCH64)\/lib64/g' \
+ $(INST_BASE)/gcc-$(VERSION_GCC)/lib/gcc/$(ARCH64)/$(VERSION_GCC)/specs
+ #
+ cat $(INST_BASE)/gcc-$(VERSION_GCC)/lib/gcc/$(ARCH64)/$(VERSION_GCC)/specs \
+ $(SOURCE_DIR)/gcc.msvcr90.spec > \
+ $(INST_BASE)/gcc-$(VERSION_GCC)/lib/gcc/$(ARCH64)/$(VERSION_GCC)/msvcr90
+ cat $(INST_BASE)/gcc-$(VERSION_GCC)/lib/gcc/$(ARCH64)/$(VERSION_GCC)/specs \
+ $(SOURCE_DIR)/gcc.msvcr100.spec > \
+ $(INST_BASE)/gcc-$(VERSION_GCC)/lib/gcc/$(ARCH64)/$(VERSION_GCC)/msvcr100
+ cat $(INST_BASE)/gcc-$(VERSION_GCC)/lib/gcc/$(ARCH64)/$(VERSION_GCC)/specs \
+ $(SOURCE_DIR)/gcc.msvcr110.spec > \
+ $(INST_BASE)/gcc-$(VERSION_GCC)/lib/gcc/$(ARCH64)/$(VERSION_GCC)/msvcr110
+ find $(INST_BASE)/gcc-$(VERSION_GCC) -type f -name "*.py" | xargs rm -f
+
+lingcc-gdb:
+ rm -Rf $(BUILD_DIR)/lingdb
+ mkdir -p $(BUILD_DIR)/lingdb
+ cd $(BUILD_DIR)/lingdb && \
+ CXXFLAGS="-g -O2 -fpermissive" \
+ $(UNPACK_DIR)/gdb-$(VERSION_GDB)/configure \
+ --prefix=$(INST_BASE)/gcc-$(VERSION_GCC) \
+ --target=$(ARCH64) \
+ --host=$(ARCH64) \
+ --build=$(ARCH64) && \
+ make $(JOBS) && make $(JOBS) install
+
+lingcc-pack:
+ rm -Rf $(INST_BASE)/gcc$(VERSION_GCC)/share
+ cd $(INST_BASE) && \
+ tar -zcf $(PWD)/gcc-suite-$(VERSION_SUITE)-gcc-$(VERSION_GCC)-x86-linux64.tgz ./gcc-$(VERSION_GCC)
+
+# ----------------------------------------------------------------------------
+
+
+clean:
+ rm -Rf $(UNPACK_DIR)
+ rm -Rf $(BUILD_DIR)
+
+fullclean: clean
+ rm -Rf inst.*
+ rm -Rf build.*
+ rm -Rf unpack.*
+