diff options
author | Joerg Koenig <Joerg.Koenig@techsat.com> | 2018-11-28 13:51:49 (GMT) |
---|---|---|
committer | Joerg Koenig <Joerg.Koenig@techsat.com> | 2018-11-28 13:51:49 (GMT) |
commit | cea9b2d0b6ee11b0a9adaae4d6d922e601546e49 (patch) | |
tree | 502910dc606380e5a6dc69c4e00e55bdd5990309 /Makefile.32 | |
parent | beb1727dc678545e02cf2e5437ecaf562a9c9f20 (diff) | |
download | gcc-compiler-suite-cea9b2d0b6ee11b0a9adaae4d6d922e601546e49.zip gcc-compiler-suite-cea9b2d0b6ee11b0a9adaae4d6d922e601546e49.tar.gz gcc-compiler-suite-cea9b2d0b6ee11b0a9adaae4d6d922e601546e49.tar.bz2 |
Next Compiler Suite Version 1.2.0refs/changes/84/6284/1
Updates of compilers, tools & libs
Change-Id: I27758e16124b4129d32cf37ce64b658cf090ad7b
Diffstat (limited to 'Makefile.32')
-rwxr-xr-x | Makefile.32 | 726 |
1 files changed, 726 insertions, 0 deletions
diff --git a/Makefile.32 b/Makefile.32 new file mode 100755 index 0000000..4bc0008 --- /dev/null +++ b/Makefile.32 @@ -0,0 +1,726 @@ +################################################################### +# 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. +# +# Build order: +# +# linux hosted nativ compiler -> linux hosted mingw cross compiler -> windows hosted nativ compiler +# +# + +include versions.mk.inc + +ifeq ($(BUILD_NUMBER),) +VERSION_SUITE = $(SUITE)-unofficial +else +VERSION_SUITE = $(SUITE)-$(BUILD_NUMBER) +endif + +TOP = $(shell readlink -f .) +ARCH = x86-linux +ARCH32 = i686-linux-gnu + +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 -static-libgcc" +XGCC64 = "$(XGCC_BINPATH)/$(XGCC_PREFIX)gcc -m64 -static-libgcc" +XGPP32 = "$(XGCC_BINPATH)/$(XGCC_PREFIX)g++ -m32 -static-libgcc -static-libstdc++" +XGPP64 = "$(XGCC_BINPATH)/$(XGCC_PREFIX)g++ -m64 -static-libgcc -static-libstdc++" + +GCC_BINPATH = $(INST_BASE)/gcc-$(VERSION_GCC)/bin +GCC32 = "$(GCC_BINPATH)/gcc -static-libgcc" +GXX32 = "$(GCC_BINPATH)/g++ -static-libgcc -static-libstdc++" +GCC64 = "$(GCC_BINPATH)/gcc -static-libgcc" +GXX64 = "$(GCC_BINPATH)/g++ -static-libgcc -static-libstdc++" +GCC = "$(GCC_BINPATH)/gcc -static-libgcc" +GXX = "$(GCC_BINPATH)/g++ -static-libgcc -static-libstdc++" + + +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.gz \ + $(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 2>&1 +$(SOURCE_DIR)/gcc-$(VERSION_GCC).tar.gz: + wget -c https://ftp.gnu.org/gnu/gcc/gcc-$(VERSION_GCC)/gcc-$(VERSION_GCC).tar.gz -O \ + $(SOURCE_DIR)/gcc-$(VERSION_GCC).tar.gz +$(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://datapacket.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 https://netcologne.dl.sourceforge.net/project/bzip2/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: \ + lingcc-all \ + xgcc-all \ + wingcc-all \ + fullclean +ifneq ($(LOCAL_INST_PATH),) + mkdir -p $(LOCAL_INST_PATH) + mkdir -p $(LOCAL_INST_PATH)/../x86-mingw64 + cd $(LOCAL_INST_PATH); \ + tar -zxf $(PWD)/gcc-suite-$(VERSION_SUITE)-gcc-$(VERSION_GCC)-x86-linux64.tgz + cd $(LOCAL_INST_PATH); \ + tar -zxf $(PWD)/gcc-suite-$(VERSION_SUITE)-xgcc-$(VERSION_GCC)-$(VERSION_MINGW)-x86-linux64.tgz + cd $(LOCAL_INST_PATH)/../x86-mingw64; \ + unzip -o $(PWD)/gcc-suite-$(VERSION_SUITE)-gcc-$(VERSION_GCC)-$(VERSION_MINGW)-x86-mingw64.zip +endif + +prepare: + mkdir -p $(UNPACK_DIR) + tar -zxf $(SOURCE_DIR)/gcc-$(VERSION_GCC).tar.gz -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) + +############################################################################## +# Nativ Multilib Linux Compiler (64 -Bit) +############################################################################## +lingcc-all: + make -f Makefile.32 ARCH=x86-linux clean + make -f Makefile.32 ARCH=x86-linux prepare + # + make -f Makefile.32 ARCH=x86-linux lingcc-binutils + make -f Makefile.32 ARCH=x86-linux lingcc-gcc + make -f Makefile.32 ARCH=x86-linux lingcc-finish + make -f Makefile.32 ARCH=x86-linux lingcc-gdb + make -f Makefile.32 ARCH=x86-linux lingcc-pack + +lingcc-binutils: + mkdir -p $(BUILD_DIR)/binutils + cd $(BUILD_DIR)/binutils ;\ + export CFLAGS="-m32" && \ + export CXXLAGS="-m32" && \ + $(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 \ + --build=$(ARCH32) \ + --host=$(ARCH32) \ + --enable-targets=$(ARCH32) && \ + make $(JOBS) && make $(JOBS) install + + +lingcc-gcc: + mkdir -p $(BUILD_DIR)/gcc + cd $(BUILD_DIR)/gcc && \ + export CC="gcc -m32" && \ + export CXX="g++ -m32" && \ + export CFLAGS="-m32" && \ + export CXXLAGS="-m32" && \ + export LDLAGS="-m32" && \ + $(UNPACK_DIR)/gcc-$(VERSION_GCC)/configure \ + --with-pkgversion=$(GCC_PKGVERSION) \ + --prefix=$(INST_BASE)/gcc-$(VERSION_GCC) \ + --build=$(ARCH32) \ + --host=$(ARCH32) \ + --target=$(ARCH32) \ + --disable-nls \ + --disable-multilib \ + --with-arch-32=i686 \ + --with-tune=generic\ + --enable-checking=release \ + --enable-languages=$(LANGUAGES) \ + --without-included-gettext \ + --enable-threads=posix \ + --enable-shared \ + --enable-static \ + --disable-werror \ + --disable--long-long \ + --disable-symvers \ + --enable-libstdcxx-time=yes \ + --enable-libstdcxx-debug \ + --enable-linker-build-id \ + --enable-nls \ + --disable-plugin \ + --enable-gnu-unique-object \ + --disable-vtable-verify \ + --enable-clocale=gnu \ + && \ + 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 + 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 && \ + export PATH=$(INST_BASE)/gcc-$(VERSION_GCC)/bin:$(PATH) && \ + CFLAGS="-g -O2" \ + LDLAGS="-static-libgcc -static-libstdc++" \ + 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) + + +############################################################################## +# Linux based MinGW multilib cross compiler +############################################################################## +xgcc-all: + make clean + 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 ;\ + LDLAGS="-static-libgcc -static-libstdc++" \ + CFLAGS="-m32 -O2 -pipe" \ + CXXFLAGS="-m32 -O2 -pipe" \ + $(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_TARGET32) \ + --host=$(ARCH32) \ + --build=$(ARCH32) \ + --target=$(XGCC_TARGET32) ;\ + make $(JOBS) ;\ + make $(JOBS) install + +xgcc-mingw-pass1: + mkdir -p $(BUILD_DIR)/mingw + cd $(BUILD_DIR)/mingw ;\ + LDLAGS="-static-libgcc -static-libstdc++" \ + CFLAGS="-m32 -O2 -pipe" \ + CXXFLAGS="-m32 -O2 -pipe" \ + $(UNPACK_DIR)/mingw-w64-v$(VERSION_MINGW)/mingw-w64-headers/configure \ + --prefix=$(XGCC_INST_DIR)/$(XGCC_TARGET32) \ + --host=$(XGCC_TARGET32) ;\ + make $(JOBS) install + cd $(XGCC_INST_DIR) && rm -f mingw && ln -s $(XGCC_TARGET32) mingw + +xgcc-gcc-pass1: + mkdir -p $(BUILD_DIR)/gcc + cd $(BUILD_DIR)/gcc && \ + LDLAGS="-static-libgcc -static-libstdc++" \ + CFLAGS="-m32 -O2 -pipe" \ + CXXFLAGS="-m32 -O2 -pipe" \ + $(UNPACK_DIR)/gcc-$(VERSION_GCC)/configure \ + --with-pkgversion=$(GCC_PKGVERSION) \ + --prefix=$(XGCC_INST_DIR) \ + --with-sysroot=$(XGCC_INST_DIR) \ + --disable-nls \ + --host=$(ARCH32) \ + --build=$(ARCH32) \ + --target=$(XGCC_TARGET32) \ + --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 \ + --disable-multilib \ + --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=$(XGCC_INST_DIR)/bin:$(PATH) && \ + LDLAGS="-static-libgcc -static-libstdc++" \ + CFLAGS="-m32 -O2 -pipe" \ + CXXFLAGS="-m32 -O2 -pipe" \ + $(UNPACK_DIR)/mingw-w64-v$(VERSION_MINGW)/configure \ + --prefix=$(XGCC_INST_DIR)/$(XGCC_TARGET32) \ + --host=$(XGCC_TARGET32) \ + --disable-nls \ + --enable-sdk=all \ + --enable-idl \ + --enable-secure-api \ + --disable-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_TARGET32)/$(VERSION_GCC)/specs + cp -f $(SOURCE_DIR)/dll2a \ + $(XGCC_INST_DIR)/bin/$(XGCC_TARGET32)-dll2a + chmod a+x $(XGCC_INST_DIR)/bin/$(XGCC_TARGET32)-dll2a + sed -i -e 's/__LIB64__/lib\/gcc\/$(XGCC_TARGET32)\/lib/g' \ + $(XGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET32)/$(VERSION_GCC)/specs + cat $(XGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET32)/$(VERSION_GCC)/specs \ + $(SOURCE_DIR)/gcc.msvcr90.spec > \ + $(XGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET32)/$(VERSION_GCC)/msvcr90 + cat $(XGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET32)/$(VERSION_GCC)/specs \ + $(SOURCE_DIR)/gcc.msvcr100.spec > \ + $(XGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET32)/$(VERSION_GCC)/msvcr100 + cat $(XGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET32)/$(VERSION_GCC)/specs \ + $(SOURCE_DIR)/gcc.msvcr110.spec > \ + $(XGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET32)/$(VERSION_GCC)/msvcr110 + +xgcc-gdb: + rm -rf $(BUILD_DIR)/gdb && mkdir -p $(BUILD_DIR)/gdb + cd $(BUILD_DIR)/gdb && \ + export PATH=$(XGCC_BINPATH):$(INST_BASE)/gcc-$(VERSION_GCC)/bin:$(PATH) && \ + LDLAGS="-static-libgcc -static-libstdc++" \ + CFLAGS="-m32 -O2 -pipe" \ + CXXFLAGS="-m32 -O2 -pipe -fpermissive" \ + $(UNPACK_DIR)/gdb-$(VERSION_GDB)/configure \ + --prefix=$(XGCC_INST_DIR) \ + --target=$(XGCC_TARGET32) \ + --build=$(ARCH32) \ + --host=$(ARCH32) && \ + 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_TARGET32)-reimp + +xgcc-genpeimg: + rm -Rf $(BUILD_DIR)/genpeimg + cd $(BUILD_DIR)/ && \ + tar -zxf $(SOURCE_DIR)/genpeimg.tar.gz + export PATH=$(GCC_BINPATH):$(PATH) && \ + CC=$(GCC) CXX=$(GXX) \ + cd $(BUILD_DIR)/genpeimg && \ + LDLAGS="-static-libgcc" \ + CFLAGS="-m32 -pipe -Werror=implicit-fallthrough=0" \ + ./configure && \ + make + cp -f $(BUILD_DIR)/genpeimg/genpeimg $(XGCC_INST_DIR)/bin/$(XGCC_TARGET32)-genpeimg + +xgcc-gendef: + rm -Rf $(BUILD_DIR)/gendef + cd $(BUILD_DIR)/ && \ + tar -zxf $(SOURCE_DIR)/gendef.tar.gz + export PATH=$(GCC_BINPATH):$(PATH) && \ + CC=$(GCC) CXX=$(GXX) \ + cd $(BUILD_DIR)/gendef && \ + CFLAGS="-m32 -pipe -Werror=implicit-fallthrough=0" \ + LDLAGS="-static-libgcc" \ + ./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=$(XGCC_INST_DIR)/bin:$(PATH) && \ + CC=$(XGCC32) \ + AR=$(XGCC_BINPATH)/$(XGCC_PREFIX)ar \ + RANLIB=$(XGCC_BINPATH)/$(XGCC_PREFIX)ranlib \ + ./configure \ + --prefix=$(XGCC_INST_DIR)/$(XGCC_TARGET32) --static && \ + make clean && make + # + cd $(BUILD_DIR)/zlib-$(VERSION_ZLIB) && \ + export PATH=$(XGCC_INST_DIR)/bin:$(PATH) && \ + 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=$(XGCC_BINPATH)/bin:$(PATH) && \ + make \ + CC=$(XGCC32) \ + PREFIX=$(XGCC_INST_DIR)/$(XGCC_TARGET32) clean libbz2.a + cd $(UNPACK_DIR)/bzip2-$(VERSION_BZ2) && \ + cp -f libbz2.a $(XGCC_INST_DIR)/$(XGCC_TARGET32)/lib + 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-linux.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=$(XGCC_BINPATH):$(PATH) && \ + CC=$(XGCC32) CXX=$(XGPP32) \ + $(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_TARGET32) \ + --host=$(XGCC_TARGET32) \ + --target=$(XGCC_TARGET32) &&\ + make $(JOBS) && make $(JOBS) install + +wingcc-mingw: + rm -Rf $(BUILD_DIR)/mingw && mkdir -p $(BUILD_DIR)/mingw + cd $(BUILD_DIR)/mingw && \ + export PATH=$(XGCC_BINPATH):$(PATH) && \ + CC=$(XGCC32) CXX=$(XGPP32) \ + $(UNPACK_DIR)/mingw-w64-v$(VERSION_MINGW)/configure \ + --prefix=$(WINGCC_INST_DIR)/$(XGCC_TARGET32) \ + --host=$(XGCC_TARGET32) \ + --disable-nls \ + --enable-sdk=all \ + --enable-idl \ + --enable-secure-api \ + --disable-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=$(XGCC_BINPATH):$(PATH) && \ + CC=$(XGCC32) CXX=$(XGPP32) \ + $(UNPACK_DIR)/gcc-$(VERSION_GCC)/configure \ + --with-pkgversion=$(GCC_PKGVERSION) \ + --prefix=$(WINGCC_INST_DIR) \ + --with-sysroot=$(WINGCC_INST_DIR) \ + --disable-nls \ + --host=$(XGCC_TARGET32) \ + --target=$(XGCC_TARGET32) \ + --build=$(ARCH32) \ + --enable-languages=$(LANGUAGES) \ + --with-gcc \ + --with-gnu-ld \ + --with-gnu-as \ + --without-x \ + --enable-shared \ + --with-tune-64=core2 \ + --disable-werror \ + --disable-win32-registry \ + --disable-symvers \ + --disable-multilib \ + --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_TARGET32)-*.exe ../tmp ; \ + for f in *.exe; do \ + cp -f $$f $(XGCC_TARGET32)-`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_TARGET32)/$(VERSION_GCC)/specs + sed -i -e 's/__LIB64__/lib\/gcc\/$(XGCC_TARGET32)\/lib/g' \ + $(WINGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET32)/$(VERSION_GCC)/specs + cat $(WINGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET32)/$(VERSION_GCC)/specs \ + $(SOURCE_DIR)/gcc.msvcr90.spec > \ + $(WINGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET32)/$(VERSION_GCC)/msvcr90 + cat $(WINGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET32)/$(VERSION_GCC)/specs \ + $(SOURCE_DIR)/gcc.msvcr100.spec > \ + $(WINGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET32)/$(VERSION_GCC)/msvcr100 + cat $(WINGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET32)/$(VERSION_GCC)/specs \ + $(SOURCE_DIR)/gcc.msvcr110.spec > \ + $(WINGCC_INST_DIR)/lib/gcc/$(XGCC_TARGET32)/$(VERSION_GCC)/msvcr110 + +wingcc-reimp: + rm -Rf $(BUILD_DIR)/reimp + cd $(BUILD_DIR)/ && \ + tar -zxf $(SOURCE_DIR)/reimp.tar.gz + export PATH=$(XGCC_BINPATH):$(PATH) && \ + cd $(BUILD_DIR)/reimp/src && \ + make CC="$(XGCC_TARGET32)-gcc -m32" + 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_TARGET32)-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=$(XGCC_BINPATH):$(PATH) && \ + CC=$(XGCC32) CXX=$(XGPP32) genpeimg_CFLAGS="" CFLAGS="-O3 -g -Werror=implicit-fallthrough=0"\ + ./configure \ + --host=$(XGCC_TARGET32) && \ + 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_TARGET32)-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=$(XGCC_BINPATH):$(PATH) && \ + CC=$(XGCC32) CXX=$(XGPP32) genpeimg_CFLAGS="" CFLAGS="-O3 -g -Werror=implicit-fallthrough=0"\ + ./configure \ + --host=$(XGCC_TARGET32) && \ + 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_TARGET32)-gendef.exe + +wingcc-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=$(XGCC_BINPATH):$(PATH) && \ + CC=$(XGCC32) \ + AR=$(XGCC_BINPATH)/$(XGCC_PREFIX)ar \ + RANLIB=$(XGCC_BINPATH)/$(XGCC_PREFIX)ranlib \ + ./configure \ + --prefix=$(WINGCC_INST_DIR)/$(XGCC_TARGET32) --static && \ + make clean && make + # + cd $(BUILD_DIR)/zlib-$(VERSION_ZLIB) && \ + cp -f libz.a $(WINGCC_INST_DIR)/$(XGCC_TARGET32)/lib && \ + cp -f zlib.h zconf.h $(WINGCC_INST_DIR)/$(XGCC_TARGET32)/include + # + chmod 644 $(WINGCC_INST_DIR)/$(XGCC_TARGET32)/lib/libz.a + chmod 644 $(WINGCC_INST_DIR)/$(XGCC_TARGET32)/include/zlib.h + chmod 644 $(WINGCC_INST_DIR)/$(XGCC_TARGET32)/include/zconf.h + +wingcc-bzip2: + cd $(UNPACK_DIR)/bzip2-$(VERSION_BZ2) && \ + export PATH=$(XGCC_BINPATH)/bin:$(PATH) && \ + 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_TARGET32)/lib32 + chmod 644 $(WINGCC_INST_DIR)/$(XGCC_TARGET32)/lib/libbz2.a + +wingcc-gdb: + rm -Rf $(BUILD_DIR)/gdb && mkdir -p $(BUILD_DIR)/gdb + cd $(BUILD_DIR)/gdb && \ + export PATH=$(XGCC_BINPATH):$(INST_BASE)/gcc-$(VERSION_GCC)/bin:$(PATH) && \ + CC=$(XGCC32) CXX=$(XGPP32) \ + CXXFLAGS="-m32 -g -O2 -fpermissive" \ + CFLAGS="-m32 -g -O2" \ + $(UNPACK_DIR)/gdb-$(VERSION_GDB)/configure \ + --prefix=$(WINGCC_INST_DIR) \ + --target=$(XGCC_TARGET32) \ + --host=$(XGCC_TARGET32) \ + --build=$(ARCH32) && \ + make $(JOBS) && make $(JOBS) install + mv -f $(WINGCC_INST_DIR)/bin/gdb.exe \ + $(WINGCC_INST_DIR)/bin/$(XGCC_TARGET32)-gdb.exe + mv -f $(WINGCC_INST_DIR)/bin/gdbserver.exe \ + $(WINGCC_INST_DIR)/bin/$(XGCC_TARGET32)-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-mingw32.zip ./$(WINGCC_ROOTNAME) +# ---------------------------------------------------------------------------- + +clean: + rm -Rf $(UNPACK_DIR) + rm -Rf $(BUILD_DIR) + +fullclean: clean + rm -Rf inst.* + rm -Rf build.* + rm -Rf unpack.* + |