# Maintainer: Patrick Northon <northon_patrick3@yahoo.ca>
# Contributor: Frederik “Freso” S. Olesen <archlinux@freso.dk>
# Contributor: Levente Polyak <anthraxx[at]archlinux[dot]org>
# Contributor: Frederik Schwan <freswa at archlinux dot org>
# Contributor: Maxime Gauduin <alucryd@archlinux.org>
# Contributor: Guillaume Alaux <guillaume@archlinux.org>
# Contributor: William Gathoye <william + archlinux at gathoye dot be>
# Contributor: Emanuel Couto <emanuel dot amaral dot couto at gmail dot com>
# Contributor: Richard Jackson <rdjack21 at gmail dot com>
# Contributor: Tinx <arch at tinx dot eu>
# Contributor: Jens Kapitza <j dot kapitza at schwarze-allianz dot de>
# Contributor: Olli <olli at coderkun dot de>

: ${_use_gradle_wrapper:=1}

pkgbase=java-openjfx
pkgname=(
  java-openjfx
  java-openjfx-doc
  java-openjfx-src
)
_java_build_ver=25
_java_run_ver=25
_tag='28+2'
pkgver=${_tag//+/.}
pkgrel=1
pkgdesc="Java OpenJFX client application platform (open-source implementation of JavaFX) - latest version"
arch=(x86_64 x86_64_v3)
url='https://wiki.openjdk.java.net/display/OpenJFX/Main'
license=('GPL-2.0-only WITH Classpath-exception-2.0')
makedepends=(
  alsa-lib
  ant
  cairo
  cmake
  ffmpeg
  freetype2
  gdk-pixbuf2
  glib2
  gperf
  gtk3
  java-environment-openjdk=$_java_build_ver
  libgl
  libx11
  libxtst
  libxxf86vm
  pango
  perl
  python
  unzip
  zip
  #ruby
  #ruby-getoptlong
  #ruby-optparse
  #ruby-erb
  #ruby-yaml
  #ruby-fileutils
)
if ((!_use_gradle_wrapper)); then
  makedepends+=(gradle)
fi
options=(!lto)
source=(
  "${pkgbase}-${pkgver}.tar.gz::https://github.com/openjdk/jfx/archive/refs/tags/${_tag}.tar.gz"
  "${pkgbase}-gradle.properties"
  "${pkgbase}-flags.patch"
  "${pkgbase}-profile"{.sh,.csh}
  "${pkgbase}-env.sh"
)
b2sums=('a9513ad80264ad3f32a5ba9e3c3cee3b810940e2f7430e338e73b567e1f22921da65af8a81f148db04f77ebc3115ea475e4d087ab48afea68b253c71120fbc88'
  '0c023ef99e7ee600710c54dad0ad59070620595109ca42c5057fa2ab74ef6d244631745f5cd4c1bea9c0321ee69f1e1efaab820ff124ad1d4f453121e77fd14f'
  '5b6dafc22995b57564fda89aaedeb2b6ee58b2c635336ac43a123ea4ac6ced3a20eba39d99cc4eb7ec7b29fc7541f5c3bee454ee55ca79fd2d7ce5ef4ed65cd3'
  '73cc0da90136a8a564599fb23c321bae64c35c4381e74d00f24604ed9a46dc2c7aa988077846160e8cb6a61e0eaa80d1e153d89a93fb4818d2589b067eff2522'
  '740cf91ce2753953da39082b3923f950ee05f1a1f0129d8766f7eda2579a8acac7a89834014ed5a3a1b511bc8784b955ebeadc57e523823f6df53f45ebf98a99'
  'd29bf9c99adc1769fb3eee9f2fd0d50fb7dc7bcfdd8f25f29b068dbc9be04676a970059f01651fdabac2f290dd8352e649960cafe538d903c48b9e10be20e7c6')

_jfxdir="jfx-${_tag//+/-}"
if ((_use_gradle_wrapper)); then
  _gradle=(sh ./gradlew)
else
  _gradle=(gradle)
fi

prepare() {
  cd $_jfxdir

  # Clean from potential previous runs
  "${_gradle[@]}" --stop
  rm -rf build

  ln -sf "../${pkgbase}-gradle.properties" 'gradle.properties'
  patch -Np1 -i "../${pkgbase}-flags.patch"
  sed 's|, "-Werror"||g' -i buildSrc/linux.gradle
}

build() {
  cd $_jfxdir

  # Build with openjdk $_java_build_ver
  export PATH="/usr/lib/jvm/java-$_java_build_ver-openjdk/bin/:$PATH"

  # Workaround for situation where the linker treats whitespace as arguments
  export LDFLAGS="${LDFLAGS//+([[:space:]]|[[:blank:]])/ }"

  "${_gradle[@]}" --no-daemon zips
}

package_java-openjfx() {
  depends=(
    "java-runtime-openjdk>=$_java_run_ver"
    libgl
    libx11
    libxtst
  )
  optdepends=('gtk3: GTK3 support')
  provides=(java-openjfx=${pkgver%%.*})

  cd $_jfxdir

  install -dm 755 "${pkgdir}"/usr/{lib/$pkgbase,share/java/$pkgbase,share/licenses}
  cp -dr --no-preserve=ownership build/sdk/lib/*.jar "${pkgdir}/usr/share/java/$pkgbase"
  cp -dr --no-preserve=ownership build/sdk/lib/*.so "${pkgdir}/usr/lib/$pkgbase"
  cp -dr --no-preserve=ownership build/jmods "${pkgdir}/usr/share/java/$pkgbase"
  cp -dr --no-preserve=ownership build/sdk/legal "${pkgdir}/usr/share/licenses/$pkgbase"

  install -Dm644 "${srcdir}/${pkgbase}-profile"{.sh,.csh} -t "${pkgdir}/etc/profile.d"
  install -Dm755 "${srcdir}/${pkgbase}-env.sh" "${pkgdir}/usr/bin/${pkgbase}-env"
}

package_java-openjfx-doc() {
  arch=(any)
  cd $_jfxdir

  install -dm 755 "${pkgdir}"/usr/share/{doc,licenses}
  cp -dr --no-preserve=ownership build/javadoc "${pkgdir}/usr/share/doc/$pkgbase"
  ln -s "$pkgbase" "${pkgdir}/usr/share/licenses/$pkgbase-doc"
}

package_java-openjfx-src() {
  arch=(any)
  cd $_jfxdir

  install -dm 755 "${pkgdir}"/usr/{lib/jvm/java-$_java_build_ver-openjdk,share/licenses}
  install -m 644 build/sdk/src.zip "${pkgdir}/usr/lib/jvm/java-$_java_build_ver-openjdk/javafx-src.zip"
  ln -s "$pkgbase" "${pkgdir}/usr/share/licenses/$pkgbase-src"
}

# vim: ts=2 sw=2 et:
