Add file Scripts/cross-build-win-binaries.mk.
authorErik de Castro Lopo <erikd@mega-nerd.com>
Tue, 25 Nov 2014 08:07:20 +0000 (19:07 +1100)
committerErik de Castro Lopo <erikd@mega-nerd.com>
Tue, 25 Nov 2014 08:10:31 +0000 (19:10 +1100)
Scripts/cross-build-win-binaries.mk [new file with mode: 0755]

diff --git a/Scripts/cross-build-win-binaries.mk b/Scripts/cross-build-win-binaries.mk
new file mode 100755 (executable)
index 0000000..5263636
--- /dev/null
@@ -0,0 +1,117 @@
+#!/usr/bin/make -f
+
+#  Copyright (C) 2014  Xiph.Org Foundation
+#
+#  This file is part the FLAC project.  FLAC is comprised of several
+#  components distributed under different licenses.  The codec libraries
+#  are distributed under Xiph.Org's BSD-like license (see the file
+#  COPYING.Xiph in this distribution).  All other programs, libraries, and
+#  plugins are distributed under the GPL (see COPYING.GPL).  The documentation
+#  is distributed under the Gnu FDL (see COPYING.FDL).  Each file in the
+#  FLAC distribution contains at the top the terms under which it may be
+#  distributed.
+#
+#  Since this particular file is relevant to all components of FLAC,
+#  it may be distributed under the Xiph.Org license, which is the least
+#  restrictive of those mentioned above.  See the file COPYING.Xiph in this
+#  distribution.
+
+ogg_version = 1.3.2
+ogg_sha256sum = e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692
+
+flac_version = $(shell grep ^AC_INIT configure.ac | sed 's/[^ ]* \[//;s/\].*//')
+
+win_build = $(shell pwd)/win-build
+
+win32_name = i686-w64-mingw32
+win64_name = x86_64-w64-mingw32
+
+win32_target = --host=$(win32_name) --target=$(win32_name)
+win64_target = --host=$(win64_name) --target=$(win64_name)
+
+flac-$(flac_version)-win.zip : flac-$(flac_version)-win//AUTHORS
+       zip -r $@ flac-$(flac_version)-win
+       rm -rf flac-$(flac_version)-win
+
+
+
+flac-$(flac_version)-win//AUTHORS : win-build/.stamp-flac-win32-install win-build/.stamp-flac-win64-install
+       mkdir -p flac-$(flac_version)-win/win32  flac-$(flac_version)-win/win64
+       cp $(win_build)/flac32/bin/flac.exe flac-$(flac_version)-win/win32/
+       cp $(win_build)/flac32/bin/metaflac.exe flac-$(flac_version)-win/win32/
+       cp $(win_build)/flac64/bin/flac.exe flac-$(flac_version)-win/win64/
+       cp $(win_build)/flac64/bin/metaflac.exe flac-$(flac_version)-win/win64/
+       cp -r doc/html flac-$(flac_version)-win/
+       rm -rf flac-$(flac_version)-win/html/api
+       find flac-$(flac_version)-win/ -name Makefile\* -exec rm -f {} \;
+       cp AUTHORS COPYING.* README flac-$(flac_version)-win/
+       touch $@
+
+#-------------------------------------------------------------------------------
+# Build and install 32 and 64 bit versions of a statically linked flac and
+# metaflac executable.
+
+win-build/.stamp-flac-win64-install : win-build/.stamp-flac-win64-config
+       make clean all install
+       touch $@
+
+win-build/.stamp-flac-win64-config : win-build/.stamp-flac-prepare configure
+       mkdir -p $(win_build)/ogg64
+       ./configure --disable-shared  $(win64_target) --with-ogg=$(win_build)/ogg64 --prefix=$(win_build)/flac64
+       touch $@
+
+win-build/.stamp-flac-win32-install : win-build/.stamp-flac-win32-config
+       make clean all install
+       touch $@
+
+win-build/.stamp-flac-win32-config : win-build/.stamp-flac-prepare configure
+       mkdir -p $(win_build)/ogg32
+       ./configure --disable-shared  $(win32_target) --with-ogg=$(win_build)/ogg32 --prefix=$(win_build)/flac32
+       touch $@
+
+win-build/.stamp-flac-prepare : win-build/.stamp-win32-install win-build/.stamp-win64-install
+       touch $@
+
+#-------------------------------------------------------------------------------
+# Build libogg for win32 and win64.
+
+win-build/.stamp-win64-install : win-build/.stamp-win64-configure
+       (cd win-build/libogg-$(ogg_version) && make clean all check install)
+       touch $@
+
+win-build/.stamp-win64-configure : win-build/.stamp-source
+       mkdir -p $(win_build)/win64
+       (cd win-build/libogg-$(ogg_version) && ./configure --prefix=$(win_build)/ogg64 $(win32_target) --disable-shared)
+       touch $@
+
+win-build/.stamp-win32-install : win-build/.stamp-win32-configure
+       (cd win-build/libogg-$(ogg_version) && make clean all check install)
+       touch $@
+
+win-build/.stamp-win32-configure : win-build/.stamp-source
+       mkdir -p $(win_build)/win32
+       (cd win-build/libogg-$(ogg_version) && ./configure --prefix=$(win_build)/ogg32 $(win32_target) --disable-shared)
+       touch $@
+
+win-build/.stamp-source : win-build/.stamp-sha256sum-checked
+       (cd win-build && tar xf libogg-$(ogg_version).tar.gz)
+       touch $@
+
+#-------------------------------------------------------------------------------
+# Retrieve and check libogg tarball.
+
+win-build/.stamp-sha256sum-checked : win-build/libogg-$(ogg_version).tar.gz
+       @if test $$(sha256sum $+ | sed 's/ .*//') != $(ogg_sha256sum) ; then exit 1 ; fi
+       @echo "sha256 sum : ok"
+       touch $@
+
+win-build/libogg-$(ogg_version).tar.gz :
+       mkdir -p win-build
+       wget http://downloads.xiph.org/releases/ogg/$$(basename $@) -O $@
+
+#-------------------------------------------------------------------------------
+# Autotool stuff.
+
+configure : configure.ac autogen.sh
+       ./autogen.sh
+