Created
March 26, 2011 01:34
-
-
Save Jessidhia/887950 to your computer and use it in GitHub Desktop.
mingw maker
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
prefix = /usr | |
target = i686-mingw32 | |
# where cross-compiled libraries go / cross compiler searches for lib / include | |
tprefix = $(prefix)/$(target) | |
# version of packages to install | |
binutils_version = 2.21 | |
gcc_version = 4.5.2 | |
mingwrt_version = 3.18 | |
pkgconfig_version = 0.25 | |
# current w32api package is 3.17-1, the folder is 3.17; hack to support that | |
w32api_version = 3.17 | |
w32api_tag = -1 | |
# common options for autotools configures | |
# gcc always gives --disable-shared --enable-static to stage1, | |
# even if removed from common_opts, to avoid a circular dependency on mingwrt | |
common_opts = --disable-shared --enable-static | |
# additional options to give to gcc's configure | |
gcc_opts = | |
# for packages that go in $(prefix) | |
sudo = sudo | |
#sudo = | |
# for backages that go in $(tprefix) | |
#tsudo = sudo | |
tsudo = | |
# parameters to the inner make calls | |
MKARG = -j4 | |
# edit to your favorite leeching program if you don't want wget | |
# wget NEEDS --content-disposition or it will misname downloads from sf.net | |
wget = wget -c -t 0 --content-disposition | |
# gcc depends on gmp, mpfr and mpc (`apt-get install libmpc-dev` on debian-based) | |
# ftp://gcc.gnu.org/pub/gcc/infrastructure/ | |
# MUST NOT have a trailing slash | |
gnu_mirror = http://ftp.gnu.org/gnu | |
mingw_sfnet = http://sourceforge.net/projects/mingw/files/MinGW/BaseSystem/RuntimeLibrary | |
all: base-toolchain | |
base-toolchain: gcc-stage2 directx pthreads pkg-config | |
distclean: clean | |
clean: | |
rm -rf binutils-$(binutils_version) gcc-$(gcc_version) gccbuild \ | |
pthreads-win32-CVS_17072009_1420-autostatic \ | |
mingwrt-$(mingwrt_version)-mingw32 w32api \ | |
w32api-$(w32api_version)$(w32api_tag)-mingw32 \ | |
pkg-config-$(pkgconfig_version) | |
pkg-config: extract-pkg-config | |
cd pkg-config-$(pkgconfig_version) && \ | |
./configure --prefix=$(prefix) --program-prefix=$(target)- --enable-indirect-deps \ | |
--with-pc-path=$(tprefix)/lib/pkgconfig && \ | |
make $(MKARG) && \ | |
$(sudo) make install | |
pthreads: extract-pthreads | |
cd pthreads-w32-2-8-0-release && \ | |
make $(MKARG) GC-static CROSS=$(target)- && \ | |
$(tsudo) cp -fv libpthreadGC2.a $(tprefix)/lib/libpthread.a && \ | |
$(tsudo) ln -fvs libpthread.a $(tprefix)/lib/libpthreadGC2.a && \ | |
$(tsudo) cp -fv pthread.h semaphore.h $(tprefix)/include/ && \ | |
$(tsudo) cp -fv sched2.h $(tprefix)/include/sched.h | |
gcc-stage2: mingwrt extract-gcc-gpp | |
cd gccbuild && \ | |
../gcc-$(gcc_version)/configure --prefix=$(prefix) --target=$(target) \ | |
$(gcc_opts) --with-sysroot=$(tprefix) && \ | |
make $(MKARG) && \ | |
$(sudo) make install | |
mingwrt: gcc-stage1 w32api extract-mingwrt | |
cd mingwrt-$(mingwrt_version)-mingw32 && \ | |
./configure --prefix=$(tprefix) --host=$(target) $(common_opts) && \ | |
make $(MKARG) && \ | |
$(tsudo) make install | |
w32api: gcc-stage1 extract-w32api | |
cd w32api && \ | |
./configure --prefix=$(tprefix) --host=$(target) $(common_opts) && \ | |
make $(MKARG) && \ | |
$(tsudo) make install | |
gcc-stage1: binutils extract-gcc-core mingw-headers | |
mkdir -p gccbuild && \ | |
cd gccbuild && \ | |
../gcc-$(gcc_version)/configure --prefix=$(prefix) --target=$(target) \ | |
$(gcc_opts) --enable-languages=c \ | |
--disable-shared --enable-static --with-sysroot=$(tprefix) && \ | |
make $(MKARG) && \ | |
$(sudo) make install | |
binutils: extract-binutils mkdirs | |
cd binutils-$(binutils_version) && \ | |
./configure --prefix=$(prefix) --target=$(target) $(common_opts) \ | |
--with-sysroot=$(tprefix) && \ | |
make $(MKARG) && \ | |
$(sudo) make install | |
mkdirs: | |
$(tsudo) mkdir -p $(tprefix)/bin $(tprefix)/lib $(tprefix)/include \ | |
$(tprefix)/share | |
mingw-headers: extract-mingwrt extract-w32api mkdirs | |
$(tsudo) cp -r mingwrt-$(mingwrt_version)-mingw32/include/* w32api/include/* \ | |
$(tprefix)/include/ | |
extract-pkg-config: files/pkg-config-$(pkgconfig_version).tar.gz | |
tar xf $< | |
extract-pthreads: files/pthreads-w32-2-8-0-release.tar.gz | |
tar xf $< | |
sed 's/pid_t pid/int pid/g' pthreads-w32-2-8-0-release/sched.h > pthreads-w32-2-8-0-release/sched2.h | |
extract-gcc-gpp: files/gcc-g++-$(gcc_version).tar.bz2 | |
tar xf $< | |
extract-mingwrt: files/mingwrt-$(mingwrt_version)-mingw32-src.tar.gz \ | |
files/mingwrt_file64.diff | |
tar xf $< | |
cd mingwrt-$(mingwrt_version)-mingw32 && \ | |
patch -Np1 -i ../files/mingwrt_file64.diff | |
extract-w32api: files/w32api-$(w32api_version)$(w32api_tag)-mingw32-src.tar.lzma | |
tar xf $< || xzcat $< | tar xf - # workaround for systems with old tars / bsdtars | |
ln -sf w32api-$(w32api_version)$(w32api_tag)-mingw32 w32api # needed by mingwrt | |
extract-gcc-core: files/gcc-core-$(gcc_version).tar.bz2 | |
tar xf $< | |
test -h $(tprefix)/mingw || ln -s . $(tprefix)/mingw # stupid fixincludes script | |
extract-binutils: files/binutils-$(binutils_version).tar.bz2 | |
tar xf $< | |
files: | |
# test not redundant (this might be reached by -B) | |
test -d files || mkdir files | |
FILES = files/binutils-$(binutils_version).tar.bz2 \ | |
files/gcc-core-$(gcc_version).tar.bz2 \ | |
files/gcc-g++-$(gcc_version).tar.bz2 \ | |
files/mingwrt-$(mingwrt_version)-mingw32-src.tar.gz \ | |
files/mingwrt_file64.diff \ | |
files/pkg-config-$(pkgconfig_version).tar.gz \ | |
files/pthreads-w32-2-8-0-release.tar.gz \ | |
files/w32api-$(w32api_version)$(w32api_tag)-mingw32-src.tar.lzma | |
DXHEADERS = directx/Amvideo.h \ | |
directx/control.h \ | |
directx/ddraw.h \ | |
directx/dshow.h \ | |
directx/dsound.h \ | |
directx/dxerr9.h \ | |
directx/ksuuids.h \ | |
directx/mingw_dshow_port.h \ | |
directx/strmif.h \ | |
directx/uuids.h | |
.PRECIOUS: $(FILES) $(DXHEADERS) | |
download: $(FILES) $(DXHEADERS) | |
directx: $(DXHEADERS) mkdirs | |
$(tsudo) cp directx/*.h $(tprefix)/include/ | |
$(DXHEADERS): directxdir | |
cd directx && \ | |
$(wget) http://git.gnome.org/browse/ekiga/plain/win32/$@ | |
directxdir: | |
test -d directx || mkdir directx | |
redownload: | |
make -B download | |
.PHONY: all base-toolchain distclean clean pkg-config pthreads gcc-stage2 mingwrt \ | |
w32api gcc-stage1 binutils extract-pkg-config extract-pthreads extract-gcc-gpp \ | |
extract-mingwrt extract-w32api extract-gcc-core extract-binutils | |
files/binutils-$(binutils_version).tar.bz2: files | |
cd files && \ | |
$(wget) $(gnu_mirror)/binutils/binutils-$(binutils_version).tar.bz2 | |
files/gcc-core-$(gcc_version).tar.bz2: files | |
cd files && \ | |
$(wget) $(gnu_mirror)/gcc/gcc-$(gcc_version)/gcc-core-$(gcc_version).tar.bz2 | |
files/gcc-g++-$(gcc_version).tar.bz2: files | |
cd files && \ | |
$(wget) $(gnu_mirror)/gcc/gcc-$(gcc_version)/gcc-g++-$(gcc_version).tar.bz2 | |
files/mingwrt-$(mingwrt_version)-mingw32-src.tar.gz: files | |
cd files && \ | |
$(wget) $(mingw_sfnet)/MinGW-RT/mingwrt-$(mingwrt_version)/mingwrt-$(mingwrt_version)-mingw32-src.tar.gz/download | |
files/mingwrt_file64.diff: files | |
cd files && \ | |
$(wget) http://oss.netfarm.it/mplayer/misc/mingwrt_file64.diff | |
files/pkg-config-$(pkgconfig_version).tar.gz: files | |
cd files && \ | |
$(wget) http://pkgconfig.freedesktop.org/releases/pkg-config-0.25.tar.gz | |
files/pthreads-w32-2-8-0-release.tar.gz: files | |
cd files && \ | |
$(wget) ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-8-0-release.tar.gz | |
files/w32api-$(w32api_version)$(w32api_tag)-mingw32-src.tar.lzma: files | |
cd files && \ | |
$(wget) $(mingw_sfnet)/Win32-API/w32api-$(w32api_version)/w32api-$(w32api_version)$(w32api_tag)-mingw32-src.tar.lzma/download | |
.NOTPARALLEL: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment