CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
hrydgard

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: hrydgard/ppsspp
Path: blob/master/b.sh
Views: 1400
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
--no-png) CMAKE_ARGS="-DUSE_SYSTEM_LIBPNG=OFF ${CMAKE_ARGS}"
25
;;
26
--no-sdl2) CMAKE_ARGS="-DUSE_SYSTEM_LIBSDL2=OFF ${CMAKE_ARGS}"
27
;;
28
--rpi-armv6)
29
CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/raspberry.armv6.cmake ${CMAKE_ARGS}"
30
;;
31
--rpi)
32
CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/raspberry.armv7.cmake ${CMAKE_ARGS}"
33
;;
34
--rpi64)
35
CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/raspberry.armv8.cmake ${CMAKE_ARGS}"
36
;;
37
--android) CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=android/android.toolchain.cmake ${CMAKE_ARGS}"
38
TARGET_OS=Android
39
PACKAGE=1
40
;;
41
--simulator) echo "Simulator mode enabled"
42
CMAKE_ARGS="-DSIMULATOR=ON ${CMAKE_ARGS}"
43
;;
44
--release)
45
CMAKE_ARGS="-DCMAKE_BUILD_TYPE=Release ${CMAKE_ARGS}"
46
;;
47
--debug)
48
CMAKE_ARGS="-DCMAKE_BUILD_TYPE=Debug ${CMAKE_ARGS}"
49
;;
50
--reldebug)
51
CMAKE_ARGS="-DCMAKE_BUILD_TYPE=RelWithDebInfo ${CMAKE_ARGS}"
52
;;
53
--headless) echo "Headless mode enabled"
54
CMAKE_ARGS="-DHEADLESS=ON ${CMAKE_ARGS}"
55
;;
56
--libretro) echo "Build Libretro core"
57
CMAKE_ARGS="-DLIBRETRO=ON ${CMAKE_ARGS}"
58
;;
59
--libretro_android) echo "Build Libretro Android core"
60
CMAKE_ARGS="-DLIBRETRO=ON -DCMAKE_TOOLCHAIN_FILE=${NDK}/build/cmake/android.toolchain.cmake -DANDROID_ABI=${APP_ABI} ${CMAKE_ARGS}"
61
;;
62
--unittest) echo "Build unittest"
63
CMAKE_ARGS="-DUNITTEST=ON ${CMAKE_ARGS}"
64
;;
65
--no-package) echo "Packaging disabled"
66
PACKAGE=0
67
;;
68
--clang) echo "Clang enabled"
69
export CC=/usr/bin/clang
70
export CXX=/usr/bin/clang++
71
;;
72
--sanitize) echo "Enabling address-sanitizer if available"
73
CMAKE_ARGS="-DUSE_ASAN=ON ${CMAKE_ARGS}"
74
;;
75
--sanitizeub) echo "Enabling ub-sanitizer if available"
76
CMAKE_ARGS="-DUSE_UBSAN=ON ${CMAKE_ARGS}"
77
;;
78
--gold) echo "Gold build enabled"
79
CMAKE_ARGS="-DGOLD=ON ${CMAKE_ARGS}"
80
;;
81
--alderlake) echo "Alderlake opt"
82
CMAKE_ARGS="-DCMAKE_C_FLAGS=\"-march=alderlake\" -DCMAKE_CPP_FLAGS=\"-march=alderlake\""
83
;;
84
--no_mmap) echo "Disable mmap"
85
CMAKE_ARGS="-DUSE_NO_MMAP=ON ${CMAKE_ARGS}"
86
;;
87
*) MAKE_OPT="$1 ${MAKE_OPT}"
88
;;
89
esac
90
shift
91
done
92
93
if [ ! -z "$TARGET_OS" ]; then
94
echo "Building for $TARGET_OS"
95
BUILD_DIR="$(tr [A-Z] [a-z] <<< build-"$TARGET_OS")"
96
else
97
echo "Building for native host."
98
BUILD_DIR="build"
99
fi
100
101
CORES_COUNT=4
102
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
103
CORES_COUNT="$(nproc)"
104
elif [[ "$OSTYPE" == "darwin"* ]]; then
105
CORES_COUNT="$(sysctl -n hw.physicalcpu)"
106
fi
107
108
# Strict errors. Any non-zero return exits this script
109
set -e
110
111
mkdir -p ${BUILD_DIR}
112
pushd ${BUILD_DIR}
113
114
cmake $CMAKE_ARGS ..
115
make -j$CORES_COUNT $MAKE_OPT
116
popd
117
118