Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
hrydgard
GitHub Repository: hrydgard/ppsspp
Path: blob/master/b.sh
5668 views
1
#!/bin/bash
2
CMAKE=1
3
4
# Check arguments
5
while test $# -gt 0
6
do
7
case "$1" in
8
--qt) echo "Qt enabled"
9
QT=1
10
CMAKE_ARGS="-DUSING_QT_UI=ON ${CMAKE_ARGS}"
11
;;
12
--qtbrew) echo "Qt enabled (homebrew)"
13
QT=1
14
CMAKE_ARGS="-DUSING_QT_UI=ON -DCMAKE_PREFIX_PATH=$(brew --prefix qt5) ${CMAKE_ARGS}"
15
;;
16
--ios) CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/ios.cmake ${CMAKE_ARGS}"
17
TARGET_OS=iOS
18
;;
19
--ios-xcode) CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/ios.cmake -DIOS_PLATFORM=OS -GXcode ${CMAKE_ARGS}"
20
TARGET_OS=iOS-xcode
21
;;
22
--fat) CMAKE_ARGS="-DCMAKE_OSX_ARCHITECTURES=arm64;x86_64 ${CMAKE_ARGS}"
23
;;
24
--x64) CMAKE_ARGS="-DCMAKE_OSX_ARCHITECTURES=x86_64 ${CMAKE_ARGS}"
25
;;
26
--arm64) CMAKE_ARGS="-DCMAKE_OSX_ARCHITECTURES=arm64 ${CMAKE_ARGS}"
27
;;
28
--no-png) CMAKE_ARGS="-DUSE_SYSTEM_LIBPNG=OFF ${CMAKE_ARGS}"
29
;;
30
--no-sdl2) CMAKE_ARGS="-DUSE_SYSTEM_LIBSDL2=OFF ${CMAKE_ARGS}"
31
;;
32
--rpi-armv6)
33
CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/raspberry.armv6.cmake ${CMAKE_ARGS}"
34
;;
35
--rpi)
36
CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/raspberry.armv7.cmake ${CMAKE_ARGS}"
37
;;
38
--rpi64)
39
CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/raspberry.armv8.cmake ${CMAKE_ARGS}"
40
;;
41
--android) CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=android/android.toolchain.cmake ${CMAKE_ARGS}"
42
TARGET_OS=Android
43
PACKAGE=1
44
;;
45
--simulator) echo "Simulator mode enabled"
46
CMAKE_ARGS="-DSIMULATOR=ON ${CMAKE_ARGS}"
47
;;
48
--release)
49
CMAKE_ARGS="-DCMAKE_BUILD_TYPE=Release ${CMAKE_ARGS}"
50
;;
51
--debug)
52
CMAKE_ARGS="-DCMAKE_BUILD_TYPE=Debug ${CMAKE_ARGS}"
53
;;
54
--reldebug)
55
CMAKE_ARGS="-DCMAKE_BUILD_TYPE=RelWithDebInfo ${CMAKE_ARGS}"
56
;;
57
--headless) echo "Headless mode enabled"
58
CMAKE_ARGS="-DHEADLESS=ON ${CMAKE_ARGS}"
59
;;
60
--atlas-tool) echo "Atlas tool enabled"
61
CMAKE_ARGS="-DATLAS_TOOL=ON ${CMAKE_ARGS}"
62
;;
63
--libretro) echo "Build Libretro core"
64
CMAKE_ARGS="-DLIBRETRO=ON ${CMAKE_ARGS}"
65
;;
66
--libretro_android) echo "Build Libretro Android core"
67
CMAKE_ARGS="-DLIBRETRO=ON -DCMAKE_TOOLCHAIN_FILE=${NDK}/build/cmake/android.toolchain.cmake -DANDROID_ABI=${APP_ABI} ${CMAKE_ARGS}"
68
;;
69
--unittest) echo "Build unittest"
70
CMAKE_ARGS="-DUNITTEST=ON ${CMAKE_ARGS}"
71
;;
72
--no-package) echo "Packaging disabled"
73
PACKAGE=0
74
;;
75
--clang) echo "Clang enabled"
76
export CC=/usr/bin/clang
77
export CXX=/usr/bin/clang++
78
;;
79
--sanitize) echo "Enabling address-sanitizer if available"
80
CMAKE_ARGS="-DUSE_ASAN=ON ${CMAKE_ARGS}"
81
;;
82
--sanitizeub) echo "Enabling ub-sanitizer if available"
83
CMAKE_ARGS="-DUSE_UBSAN=ON ${CMAKE_ARGS}"
84
;;
85
--gold) echo "Gold build enabled"
86
CMAKE_ARGS="-DGOLD=ON ${CMAKE_ARGS}"
87
;;
88
--alderlake) echo "Alderlake opt"
89
CMAKE_ARGS="-DCMAKE_C_FLAGS=\"-march=alderlake\" -DCMAKE_CPP_FLAGS=\"-march=alderlake\""
90
;;
91
--no_mmap) echo "Disable mmap"
92
CMAKE_ARGS="-DUSE_NO_MMAP=ON ${CMAKE_ARGS}"
93
;;
94
--gles) echo "Using GLES/EGL"
95
CMAKE_ARGS="-DUSING_GLES2=ON -DUSING_EGL=ON ${CMAKE_ARGS}"
96
;;
97
*) MAKE_OPT="$1 ${MAKE_OPT}"
98
;;
99
esac
100
shift
101
done
102
103
if [ ! -z "$TARGET_OS" ]; then
104
echo "Building for $TARGET_OS"
105
BUILD_DIR="$(tr [A-Z] [a-z] <<< build-"$TARGET_OS")"
106
else
107
echo "Building for native host."
108
BUILD_DIR="build"
109
fi
110
111
CORES_COUNT=4
112
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
113
CORES_COUNT="$(nproc)"
114
elif [[ "$OSTYPE" == "darwin"* ]]; then
115
CORES_COUNT="$(sysctl -n hw.physicalcpu)"
116
fi
117
118
# Strict errors. Any non-zero return exits this script
119
set -e
120
121
echo Building with $CORES_COUNT threads
122
123
mkdir -p ${BUILD_DIR}
124
pushd ${BUILD_DIR}
125
126
cmake $CMAKE_ARGS ..
127
make -j$CORES_COUNT $MAKE_OPT
128
popd
129
130