summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: d7e4591ee1172e4301fb9e4f09d38fdbea7fe249 (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
# Maintainer: Filipe LaĆ­ns (FFY00) <lains@archlinux.org>

_pkgname=KernelPatch
pkgname=kernelpatch-git
pkgver=0.12.0
pkgrel=1
pkgdesc='Patching and hooking the Linux kernel with only a stripped Linux kernel image.'
arch=('x86_64')
url='https://github.com/bmax121/KernelPatch'
license=('GPL-2.0-only')
depends=('glibc' 'zlib')
makedepends=('git' 'cmake' 'aarch64-linux-gnu-gcc' 'aarch64-linux-gnu-binutils')
source=("git+$url.git")
sha512sums=('SKIP')
provides=("$pkgname" 'kpimg' 'kptools')
conflicts=("$pkgname" 'kpimg' 'kptools')

cross_make() {
  CFLAGS='-fno-pic -fno-pie' \
  CXXFLAGS='-fno-pic -fno-pie' \
  LDFLAGS='-fno-pic -fno-pie' \
  TARGET_COMPILE=aarch64-linux-gnu- \
    make $@
}

build() {
  cd $_pkgname

  # Headers (needed by ./tools and ./user)
  echo 'Copying headers...'
  TARGET_COMPILE=placeholder make -Ckernel hdr

  # kptools
  echo 'Building kptools...'
  cmake -S tools -B tools/build -DCMAKE_BUILD_TYPE=None
  cmake --build tools/build

  # kpimg-linux
  echo 'Building kpmg-linux...'
  cp -r kernel{,-linux}
  cross_make -Ckernel-linux kpimg
  echo 'Building kpmg-android...'
  cp -r kernel{,-android}
  cross_make -Ckernel-android kpimg ANDROID=1

  # KPMs
  echo 'Building demo-hello.kpm'
  cross_make -Ckpms/demo-hello
  echo 'Building demo-inlinehook.kpm'
  cross_make -Ckpms/demo-inlinehook
  echo 'Building demo-syscallhook.kpm'
  cross_make -Ckpms/demo-syscallhook
}

package() {
  cd $_pkgname

  # kptools
  install -Dm 755 tools/build/kptools "$pkgdir"/usr/bin/kptools

  # kpimg
  kpimg_dir="$pkgdir"/usr/share/$pkgname/kpimg
  install -dm 755 "$kpimg_dir"
  install -Dm 644 kernel-linux/kpimg       "$kpimg_dir"/kpimg-linux
  install -Dm 644 kernel-linux/kpimg.elf   "$kpimg_dir"/kpimg-linux.elf
  install -Dm 644 kernel-android/kpimg     "$kpimg_dir"/kpimg-android
  install -Dm 644 kernel-android/kpimg.elf "$kpimg_dir"/kpimg-android.elf

  # KPMs
  kpms_dir="$pkgdir"/usr/share/$pkgname/kpms
  install -dm 755 "$kpms_dir"
  install -Dm 644 kpms/demo-hello/hello.kpm              "$kpms_dir"/demo-hello.kpm
  install -Dm 644 kpms/demo-inlinehook/inlinehook.kpm    "$kpms_dir"/demo-inlinehook.kpm
  install -Dm 644 kpms/demo-syscallhook/syscallhook.kpm  "$kpms_dir"/demo-syscallhook.kpm

  # Headers (kpuser)
  install -dm 755 "$pkgdir"/usr/include/$_pkgname
  cp -r user/* "$pkgdir"/usr/include/$_pkgname/

  # Documentation
  install -dm 755 "$pkgdir"/usr/share/doc/$pkgname
  cp -r doc/en/* "$pkgdir"/usr/share/doc/$pkgname/
}