ROOT_DIR = $(PWD)
ARCHIVE_DIR = $(ROOT_DIR)/archives
BUILD_DIR = $(ROOT_DIR)/build
INSTALL_DIR = $(ROOT_DIR)/install
TARGET = x86_64-pc-mingw32
# BINUTILS_SRC = $(ARCHIVE_DIR)/binutils-2.19
# BINUTILS_BLD = $(BUILD_DIR)/binutils-2.19
#
# MINGW32_SRC = $(ARCHIVE_DIR)/mingw-runtime-3.14
# MINGW32_BLD = $(BUILD_DIR)/mingw-runtime-3.14
#
# MINGW64_SRC = $(ARCHIVE_DIR)/trunk
# MINGW64_BLD = $(BUILD_DIR)/mingw-w64
#
# W32API_SRC = $(ARCHIVE_DIR)/w32api-3.11
# W32API_BLD = $(BUILD_DIR)/w32api-3.11
#
# W64API_SRC = $(ARCHIVE_DIR)/trunk/mingw-w64-crt
# W64API_BLD = $(BUILD_DIR)/mingw-w64-crt
#
# GDB_SRC = $(ARCHIVE_DIR)/gdb-6.8
# GDB_BLD = $(BUILD_DIR)/gdb-6.8
#
# GMP_SRC = $(ARCHIVE_DIR)/gmp-4.2.2
# GMP_BLD = $(BUILD_DIR)/gmp-4.2.2
#
# MPFR_SRC = $(ARCHIVE_DIR)/mpfr-2.4.1
# MPFR_BLD = $(BUILD_DIR)/mpfr-2.4.1
#
# MAKE = make -j8
#
# LOCAL_PREFIX = /usr/data/david/local
# GCC_CONFIGURE_OPTS = --with-gmp=$(LOCAL_PREFIX) --with-mpfr=$(LOCAL_PREFIX) \
# --with-sysroot=$(INSTALL_DIR) --with-gnu-ld --with-gnu-as
#
# GCC_SRC = $(ARCHIVE_DIR)/gcc-4.4-20090320
# GCC_BLD = $(BUILD_DIR)/gcc-4.4-20090320
#
# GCC_LANGUAGES = c,fortran,c++
BINUTILS_SRC = $(ARCHIVE_DIR)/binutils/src
BINUTILS_BLD = $(BUILD_DIR)/binutils-2.19
MINGW64_SRC = $(ARCHIVE_DIR)/mingw
MINGW64_BLD = $(BUILD_DIR)/mingw-w64
W64API_SRC = $(ARCHIVE_DIR)/mingw/mingw-w64-crt
W64API_BLD = $(BUILD_DIR)/mingw-w64-crt
MAKE = make -j3
GCC_CONFIGURE_OPTS = --with-sysroot=$(INSTALL_DIR) --with-gnu-ld --with-gnu-as
GCC_SRC = $(ARCHIVE_DIR)/gcc/gcc
GCC_BLD = $(BUILD_DIR)/gcc-4.4
GCC_LANGUAGES = c#,fortran,c++
export PATH:=$(INSTALL_DIR)/bin:$(PATH)
gdb_install: gdb_build $(GDB_BLD)/install.done
$(GDB_BLD)/install.done:
(cd $(GDB_BLD) && make install)
touch $@
gdb_build: gdb_configure $(GDB_BLD)/build.done
$(GDB_BLD)/build.done:
(cd $(GDB_BLD) && $(MAKE))
touch $@
gdb_configure: gcc_install $(GDB_BLD)/configure.done
$(GDB_BLD)/configure.done:
mkdir -p $(GDB_BLD)
(cd $(GDB_BLD) && $(GDB_SRC)/configure --prefix=$(INSTALL_DIR)/$(TARGET) \
--target=$(TARGET) --disable-werror)
touch $@
mpfr_install: mpfr_build $(MPFR_BLD)/install.done
$(MPFR_BLD)/install.done:
(cd $(MPFR_BLD) && make install)
touch $@
mpfr_build: mpfr_configure $(MPFR_BLD)/build.done
$(MPFR_BLD)/build.done:
(cd $(MPFR_BLD) && $(MAKE))
touch $@
mpfr_configure: gmp_install $(MPFR_BLD)/configure.done
$(MPFR_BLD)/configure.done:
mkdir -p $(MPFR_BLD)
(cd $(MPFR_BLD) && $(MPFR_SRC)/configure \
--prefix=$(INSTALL_DIR)/$(TARGET) \
--host=$(TARGET) --with-gmp=$(INSTALL_DIR)/$(TARGET))
touch $@
gmp_install: gmp_build $(GMP_BLD)/install.done
$(GMP_BLD)/install.done:
(cd $(GMP_BLD) && make install)
touch $@
gmp_build: gmp_configure $(GMP_BLD)/build.done
$(GMP_BLD)/build.done:
(cd $(GMP_BLD) && $(MAKE))
touch $@
gmp_configure: gcc_install $(GMP_BLD)/configure.done
$(GMP_BLD)/configure.done:
mkdir -p $(GMP_BLD)
(cd $(GMP_BLD) && $(GMP_SRC)/configure \
--prefix=$(INSTALL_DIR)/$(TARGET) \
--host=$(TARGET))
touch $@
gcc_install: gcc_build $(GCC_BLD)/install.done
$(GCC_BLD)/install.done:
(cd $(GCC_BLD) && make install)
touch $@
gcc_build: w64api_install $(GCC_BLD)/build.done
$(GCC_BLD)/build.done:
(cd $(GCC_BLD) && $(MAKE))
touch $@
w64api_install: w64api_build $(W64API_BLD)/install.done
$(W64API_BLD)/install.done:
(cd $(W64API_BLD) && make install)
touch $@
w64api_build: w64api_configure $(W64API_BLD)/build.done
$(W64API_BLD)/build.done:
(cd $(W64API_BLD) && $(MAKE))
touch $@
w64api_configure: gcc_bootstrap_install $(W64API_BLD)/configure.done
$(W64API_BLD)/configure.done:
mkdir -p $(W64API_BLD)
(cd $(W64API_BLD) && $(W64API_SRC)/configure \
--prefix=$(INSTALL_DIR) \
--host=$(TARGET))
touch $@
gcc_bootstrap_install: gcc_bootstrap_build $(GCC_BLD)/install.bootstrap.done
$(GCC_BLD)/install.bootstrap.done:
(cd $(GCC_BLD) && make install-gcc)
touch $@
gcc_bootstrap_build: gcc_bootstrap_configure $(GCC_BLD)/build.bootstrap.done
$(GCC_BLD)/build.bootstrap.done:
(cd $(GCC_BLD) && $(MAKE) all-gcc)
touch $@
gcc_bootstrap_configure: sysheader_install $(GCC_BLD)/configure.done
$(GCC_BLD)/configure.done:
mkdir -p $(GCC_BLD)
(cd $(GCC_BLD) && $(GCC_SRC)/configure \
--prefix=$(INSTALL_DIR) --target=$(TARGET) --enable-languages=$(GCC_LANGUAGES) \
$(GCC_CONFIGURE_OPTS))
touch $@
sysheader_install: binutils $(BUILD_DIR)/sys.done
$(BUILD_DIR)/sys.done:
mkdir -p $(INSTALL_DIR)/$(TARGET)/include
cp -r $(MINGW64_SRC)/mingw-w64-headers/include/* $(INSTALL_DIR)/$(TARGET)/include
ln -s $(INSTALL_DIR)/$(TARGET) $(INSTALL_DIR)/mingw
touch $@
binutils: binutils_install
binutils_install: binutils_build $(BINUTILS_BLD)/install.done
$(BINUTILS_BLD)/install.done:
(cd $(BINUTILS_BLD) && make install)
touch $@
binutils_build: binutils_configure $(BINUTILS_BLD)/build.done
$(BINUTILS_BLD)/build.done:
(cd $(BINUTILS_BLD) && $(MAKE))
touch $@
binutils_configure: $(BINUTILS_BLD)/configure.done
$(BINUTILS_BLD)/configure.done:
mkdir -p $(BINUTILS_BLD)
(cd $(BINUTILS_BLD) && $(BINUTILS_SRC)/configure \
--prefix=$(INSTALL_DIR) --target=$(TARGET) \
--with-sysroot=$(INSTALL_DIR)/$(TARGET))
touch $@
clean:
rm -rf $(BUILD_DIR)
rm -rf $(INSTALL_DIR)