Skip to content

Commit f451b71

Browse files
committed
Add meson wrapper
1 parent 82362bc commit f451b71

File tree

4 files changed

+103
-0
lines changed

4 files changed

+103
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ gc/ogc/libversion.h
99
*.bz2
1010
docs
1111
warn.log
12+
.meson-subproject-wrap-hash.txt

configure

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#!/usr/bin/env bash
2+
3+
src=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
4+
5+
if [[ "$(readlink -f "$PWD")" == "$src" ]]; then
6+
printf '%s\n' 'This script must be run out of tree!'
7+
exit 1
8+
fi
9+
10+
tmp=$(mktemp -t Makefile.XXXXXXXXXX)
11+
trap 'rm -f "$tmp"' EXIT
12+
13+
function write() {
14+
printf '%s\n' "$*" >> "$tmp"
15+
}
16+
17+
write '# Automatically generated file'
18+
19+
platforms=()
20+
libs=()
21+
22+
for arg in "$@"; do
23+
val="${arg#*=}"
24+
case $arg in
25+
--prefix=*)
26+
write export INSTALL_PREFIX := "$val"
27+
;;
28+
--incdir=*)
29+
write export INCDEST := "$val"
30+
;;
31+
--libdir=*)
32+
write export LIBDEST := "$val"
33+
;;
34+
--bindir=*)
35+
# no-op
36+
;;
37+
--opt-level=*)
38+
write export OPTLEVEL := "$val"
39+
;;
40+
--with-platform=*)
41+
platforms+=("$val")
42+
;;
43+
--with-lib=*)
44+
libs+=("$val")
45+
;;
46+
*)
47+
printf '%s\n' "$arg: Invalid argument"
48+
exit 1
49+
esac
50+
done
51+
52+
if (( ${#platforms[@]} )); then
53+
write export PLATFORMS := "${platforms[@]}"
54+
fi
55+
56+
if (( ${#libs[@]} )); then
57+
write export LIBRARIES := "${libs[@]}"
58+
fi
59+
60+
write "include $src/Makefile"
61+
cp "$tmp" Makefile

meson.build

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
project(
2+
'libogc2',
3+
['c'],
4+
meson_version: '>=1.1',
5+
)
6+
7+
external_project = import('unstable-external_project')
8+
9+
opt_level = get_option('optimization')
10+
platform = get_option('platform')
11+
libraries = get_option('libraries')
12+
13+
if libraries.length() == 0
14+
error('Must specify libraries to build.')
15+
endif
16+
17+
lib_args = []
18+
foreach lib: libraries
19+
lib_args += '--with-lib=' + lib
20+
endforeach
21+
22+
p = external_project.add_project(
23+
'configure',
24+
configure_options: [
25+
'--prefix=@PREFIX@',
26+
'--bindir=@BINDIR@',
27+
'--libdir=@LIBDIR@',
28+
'--incdir=@INCLUDEDIR@',
29+
'--opt-level=' + opt_level,
30+
'--with-platform=' + platform,
31+
] + lib_args,
32+
cross_configure_options: [],
33+
)
34+
35+
deps = {}
36+
foreach lib: libraries
37+
dep = p.dependency(':' + platform + '/lib' + lib + '.a')
38+
deps += {lib: dep}
39+
endforeach

meson.options

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
option('platform', type: 'combo', choices: ['cube', 'wii'])
2+
option('libraries', type: 'array')

0 commit comments

Comments
 (0)