summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 2aae770a10ee08bf9a5e9012a17a7dad229c2219 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74

pkgname=mingw-w64-intel-tbb
pkgver=4.3_20150424
pkgrel=1
pkgdesc='High level abstract threading library (mingw-w64)'
depends=('mingw-w64-crt')
makedepends=('mingw-w64-gcc')
options=('!buildflags' '!strip' 'staticlibs')
arch=('any')
url='http://www.threadingbuildingblocks.org/'
license=('GPL')
source=("http://threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb${pkgver/\./}oss_src.tgz")
sha1sums=('21a3176bf09677b795df2c529065c265a2ad72ae')

_architectures="i686-w64-mingw32 x86_64-w64-mingw32"

prepare () {
  cd "$srcdir"/tbb${pkgver/\./}oss

  # do not build debug libraries
  sed -i "/debug/d" Makefile

  # platform configuration
  sed -i "s|export SHELL = cmd|export SHELL = sh -c|g" build/windows.inc
  sed -i "s|CMD=cmd /C|CMD=sh -c|g" build/windows.inc
  sed -i "s|CWD=\$(shell cmd /C echo %CD%)|CWD=\$(shell pwd)|g" build/windows.inc
  sed -i "s|RM=cmd /C del /Q /F|RM?=rm -f|g" build/windows.inc
  sed -i "s|RD=cmd /C rmdir|RD?=rmdir|g" build/windows.inc
  sed -i "s|MD=cmd /c mkdir|MD?=mkdir -p|g" build/windows.inc
  sed -i "s|SLASH=\\\\\\\\|SLASH=/|g" build/windows.inc
  sed -i "s|NUL = nul|NUL= /dev/null|g" build/windows.inc
  sed -i "s|.DLL = tbb|.DLL = libtbb|g" build/windows.inc
  sed -i "s|.LIB = tbb|.LIB = libtbb|g" build/windows.inc
  sed -i "/MAKE_VERSIONS/d" build/windows.inc
  echo "MAKE_VERSIONS=sh \$(tbb_root)/build/version_info_linux.sh \$(CPLUS) \$(CPLUS_FLAGS) \$(INCLUDES) >version_string.ver" >> build/windows.inc
  sed -i "/MAKE_TBBVARS/d" build/windows.inc
  echo "MAKE_TBBVARS=sh \$(tbb_root)/build/generate_tbbvars.sh" >> build/windows.inc
  sed -i "s|LIBDL =|LIBDL = -ldl|g" build/windows.inc

  # compiler configuration
  sed -i "s|CPLUS_FLAGS = \-g \-O2|CPLUS_FLAGS = \-O2 \-g \-pipe \-Wall \-Wp,\-D_FORTIFY_SOURCE=2 \-fexceptions \-\-param=ssp\-buffer\-size=4|g" build/windows.gcc.inc
  sed -i "s|OUTPUT_KEY = -o #|OUTPUT_KEY = -Wl,--out-implib,\$(BUILDING_LIBRARY).a -o #|g" build/windows.gcc.inc
  sed -i "s|\$(call detect_js,/minversion gcc 4.4)|ok|g" build/windows.gcc.inc
  sed -i "s|\$(call detect_js,/minversion gcc 4.8)|ok|g" build/windows.gcc.inc
}

build() {
  cd "$srcdir"/tbb${pkgver/\./}oss
  for _arch in ${_architectures}; do
    cp build/windows.gcc.inc build/windows.${_arch}-gcc.inc
    sed -i "s|CPLUS = g++|CPLUS = ${_arch}-g++|g" build/windows.${_arch}-gcc.inc
    sed -i "s|CONLY = gcc|CONLY = ${_arch}-gcc|g" build/windows.${_arch}-gcc.inc
    if test "${_arch}" = "x86_64-w64-mingw32"
    then
      parch=intel64
    else
      parch=ia32
    fi
    unset LDFLAGS
    make arch=$parch tbb_os=windows runtime=mingw compiler=${_arch}-gcc
  done
}

package() {
  cd "$srcdir"/tbb${pkgver/\./}oss
  for _arch in ${_architectures}; do
    install -d "$pkgdir"/usr/${_arch}/{include,lib,bin}
    cp -a include/tbb "$pkgdir"/usr/${_arch}/include
    install -m755 build/windows_*${_arch}*_release/*.dll "$pkgdir"/usr/${_arch}/bin
    install -m755 build/windows_*${_arch}*_release/*.a "$pkgdir"/usr/${_arch}/lib
    ${_arch}-strip --strip-unneeded "$pkgdir"/usr/${_arch}/bin/*.dll
    ${_arch}-strip -g "$pkgdir"/usr/${_arch}/lib/*.a
  done
}