-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
catnip
executable file
·104 lines (98 loc) · 2.15 KB
/
catnip
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
#!/usr/bin/env bash
set -e
shopt -s extglob
catnip_help() {
echo "Catnip - build helper tool for devkitPro CMake projects"
echo "Usage:"
echo ""
echo "catnip [options] [<verb>] [<selectors>...]"
echo ""
echo "Verbs:"
echo " build (Default)"
echo " clean"
echo " install"
echo ""
echo "Options:"
echo " -S <path-to-root> = Explicitly specify the source root"
echo " -B <path-to-build> = Explicitly specify the build folder"
echo " -D <var>[:<type>]=<value> = Create or update a Catnip cache entry"
echo " -U <var> = Remove matching entries from Catnip cache"
echo " -T <toolset> = Specify default toolset used to build projects"
echo " -p = Enable package selector mode"
echo " -v = Enable verbose mode"
echo " -f = Enable forceful mode"
echo ""
exit 0
}
cmake_list() {
local IFS=";"
echo "$*"
}
args=()
flags=()
cache=()
while [[ $# -gt 0 ]]; do
case "$1" in
--help)
catnip_help
;;
--*)
echo "Invalid option: $1"
catnip_help
;;
-*)
OPTIND=1
while getopts "S:B:D:U:T:t:pvf?h" opt; do
case "$opt" in
h|\?)
catnip_help
;;
S)
flags+=("-DCATNIP_ROOT:STRING=${OPTARG}")
;;
B)
flags+=("-DCATNIP_BUILD_DIR:STRING=${OPTARG}")
;;
D)
case "${OPTARG}" in
+([a-zA-Z0-9_])?(:BOOL|:FILEPATH|:PATH|:STRING|:INTERNAL)=*)
cache+=("${OPTARG}")
;;
*)
echo "Invalid cache entry: ${OPTARG}"
catnip_help
;;
esac
;;
U)
cache+=("${OPTARG}:UNSET=")
;;
[Tt])
flags+=("-DCATNIP_DEFAULT_TOOLSET:STRING=${OPTARG}")
;;
p)
flags+=("-DCATNIP_PACKAGE_SELECTORS:BOOL=ON")
;;
v)
flags+=("-DCATNIP_VERBOSE:BOOL=ON")
;;
f)
flags+=("-DCATNIP_FORCE_FLAG:BOOL=ON")
;;
esac
done
shift $((OPTIND-1))
;;
+([a-zA-Z0-9_.]))
args+=("$1")
shift
;;
*)
echo "Invalid argument: $1"
catnip_help
;;
esac
done
flags+=("-DCATNIP_CACHE:STRING=$(cmake_list "${cache[@]}")")
flags+=("-DCATNIP_ARGV:STRING=$(cmake_list "${args[@]}")")
exec cmake "${flags[@]}" -P ${DEVKITPRO}/cmake/catnip-main.cmake