summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 244de7461d5eec5067c106f167c2139f886a4013 (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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# Maintainer:  Vitalii Kuzhdin <vitaliikuzhdin@gmail.com>
# Contributor: Samuel Fernando Mesa Giraldo <samuelmesa@linuxmail.org>
# Contributor: James Duley <jagduley gmail>
# Contributor: A. Weiss <adam [at] archlinux.us>

_Name="osgEarth"
pkgbase="${_Name,,}"
pkgname=("${pkgbase}"{,'-docs'})
pkgver=3.7.2
pkgrel=2
pkgdesc="A terrain rendering toolkit for OpenSceneGraph"
arch=('aarch64' 'i686' 'x86_64')
url="https://www.pelicanmapping.com/home-1/opensource"
_url="https://github.com/gwaldron/${pkgbase}"
license=('LGPL-3.0-only')
makedepends=('blend2d' 'cmake>=3.20' 'curl' 'doxygen' 'gcc-libs' 'gdal' 'geos'
             'glew' 'glibc' 'lerc' 'libgl' 'libwebp' 'meshoptimizer'
             'openscenegraph' 'protobuf' 'python-sphinx-markdown-tables'
             'python-myst-parser' 'rapidjson' 'spdlog' 'sqlite')
_pkgsrc="${pkgbase}-${pkgbase}-${pkgver}"
source=("${_pkgsrc}.tar.gz::${_url}/archive/refs/tags/${pkgbase}-${pkgver}.tar.gz"
        "${pkgbase}_optional_fastdxt.patch"
        "${pkgbase}_unbundle.patch"
        "${pkgbase}_link_lerc.patch")
b2sums=('c794995bbe221d8f719a46d4a0c456184975feb6359a37d8bb23ed6d5abd038611df89239e57e57fdfd2a5fd1943515639ec72916d9ff05d1a5eebaab1167a4c'
        'e57fd25c5cf3eeecd6830cacddfabe690c5f0c50d5191588210519aa4ba8d7f6c0dc317c8b32629f235a6f0cba9c21d79449b41c4613bf28bf5627d962917add'
        'e493e05367befdc963a3561bfd04f5b25fc04c02fa3aeb7a7bcecc48945369c22ff91f2b049e36209b95c7f10a06ab68d1607ce23e23a1475eb37b0193ee33e8'
        'c1f8f84d6e9477a26489e55a743cb727fbe327c5d472d35a7b58292db6d2312002a277b3c4ed8986f5b89106a544f8e203da25f682678c2b22a3c7eb9be9b0dd')

prepare() {
  cd "${srcdir}/${_pkgsrc}"
  patch -Np1 -i "${srcdir}/${pkgbase}_optional_fastdxt.patch"
  patch -Np1 -i "${srcdir}/${pkgbase}_unbundle.patch"
  patch -Np1 -i "${srcdir}/${pkgbase}_link_lerc.patch"

  sed -i 's/set(CMAKE_CXX_STANDARD 14)/set(CMAKE_CXX_STANDARD 17)/' 'CMakeLists.txt'
}

build() {
  export CXXFLAGS+=" -Wno-error=format-security"
  local cmake_options=(
    -G 'Unix Makefiles'
    -B "${_pkgsrc}/build"
    -S "${_pkgsrc}"
    -DCMAKE_BUILD_TYPE:STRING='None'
    -DCMAKE_INSTALL_PREFIX:PATH='/usr'
    -DCMAKE_INSTALL_LIBDIR:STRING='lib'
    -DOSGEARTH_INSTALL_SHADERS:BOOL=ON
    -DOSGEARTH_BUILD_TESTS:BOOL=ON
    -DOSGEARTH_BUILD_ZIP_PLUGIN:BOOL=OFF # provided by openscenegraph
    -Wno-dev
  )
  # Disable fastdxt driver on non x86 arches, requires x86 intrinsics
  if [[ "${CARCH}" != "x86_64" && ! "${CARCH}" =~ ^i[3-6]86$ ]]; then
    cmake_options+=(-DDISABLE_FASTDXT=ON)
  fi

  cd "${srcdir}"
  cmake "${cmake_options[@]}"
  cmake --build "${_pkgsrc}/build"

  cd "${_pkgsrc}"
  make -C docs html
  rm -f docs/build/html/.buildinfo
}

check() {
  local excluded_tests=""
  local ctest_flags=(
    --test-dir "${_pkgsrc}/build"
    --output-on-failure
    --parallel $(nproc)
    --exclude-regex "${excluded_tests}"
  )

  cd "${srcdir}"
  ctest "${ctest_flags[@]}"
}

package_osgearth() {
  depends=('blend2d' 'curl' 'gcc-libs' 'gdal' 'geos' 'glew' 'glibc' 'lerc'
           'libgl' 'libwebp' 'meshoptimizer' 'openscenegraph' 'protobuf'
           'spdlog' 'sqlite')
  provides=("lib${_Name}"{,'ImGui'}'.so')

  cd "${srcdir}"
  DESTDIR="${pkgdir}" cmake --install "${_pkgsrc}/build"
  
  cd "${_pkgsrc}"
  install -vDm644 "README.md"   "${pkgdir}/usr/share/doc/${pkgbase}/README.md"
  install -vDm644 "LICENSE.txt" "${pkgdir}/usr/share/licenses/${pkgbase}/LICENSE"

  find "data" "tests" -type f -exec \
    install -Dm644 "{}" "${pkgdir}/usr/share/${pkgbase}/{}" \;
}

package_osgearth-docs() {
  pkgdesc+=" (documentation)"
  arch=('any')

  cd "${srcdir}/${_pkgsrc}/docs/build"
  find "html" -type f -exec \
    install -vDm644 "{}" "${pkgdir}/usr/share/doc/${pkgbase}/{}" \;
}