Skip to content

Commit 72b734e

Browse files
committed
merge
2 parents f562df7 + 0913d42 commit 72b734e

81 files changed

Lines changed: 61383 additions & 13 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

build.sh

Lines changed: 54 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -50,17 +50,38 @@ if [ "$ENV" = "all" ]; then
5050
exit 0
5151
fi
5252

53+
PYTHON_BIN="${PYTHON:-}"
54+
if [ -z "$PYTHON_BIN" ]; then
55+
if command -v python >/dev/null 2>&1; then
56+
PYTHON_BIN=python
57+
elif command -v python3 >/dev/null 2>&1; then
58+
PYTHON_BIN=python3
59+
else
60+
echo "Error: python or python3 not found" && exit 1
61+
fi
62+
fi
63+
5364
# Linux/mac
5465
PLATFORM="$(uname -s)"
5566
if [ "$PLATFORM" = "Linux" ]; then
5667
RAYLIB_NAME='raylib-5.5_linux_amd64'
5768
OMP_LIB=-lomp5
69+
OMP_CFLAGS=(-fopenmp)
70+
OMP_LDFLAGS=(-fopenmp "$OMP_LIB")
5871
SANITIZE_FLAGS=(-fsanitize=address,undefined,bounds,pointer-overflow,leak -fno-omit-frame-pointer)
5972
STANDALONE_LDFLAGS=(-lGL)
6073
SHARED_LDFLAGS=(-Bsymbolic-functions -Wl,--gc-sections)
6174
else
6275
RAYLIB_NAME='raylib-5.5_macos'
6376
OMP_LIB=-lomp
77+
OMP_PREFIX="$(brew --prefix libomp 2>/dev/null || true)"
78+
if [ -n "$OMP_PREFIX" ]; then
79+
OMP_CFLAGS=(-I"$OMP_PREFIX/include" -Xclang -fopenmp)
80+
OMP_LDFLAGS=(-L"$OMP_PREFIX/lib" "$OMP_LIB")
81+
else
82+
OMP_CFLAGS=(-Xclang -fopenmp)
83+
OMP_LDFLAGS=("$OMP_LIB")
84+
fi
6485
SANITIZE_FLAGS=()
6586
STANDALONE_LDFLAGS=(-framework Cocoa -framework IOKit -framework CoreVideo -framework OpenGL)
6687
SHARED_LDFLAGS=(-framework Cocoa -framework OpenGL -framework IOKit -undefined dynamic_lookup)
@@ -122,6 +143,20 @@ else
122143
echo "Error: environment '$ENV' not found" && exit 1
123144
fi
124145

146+
if [ "$ENV" = "osrs_inferno" ]; then
147+
bash ocean/osrs/scripts/setup-data.sh
148+
fi
149+
150+
CPU_STUB_INCLUDE=()
151+
if [ "$MODE" = "cpu" ] && [ -d "$SRC_DIR/cpu_stubs" ]; then
152+
CPU_STUB_INCLUDE=(-I"$SRC_DIR/cpu_stubs")
153+
fi
154+
155+
NVCC_ENV_HOST_FLAGS=()
156+
if [ "$ENV" = "osrs_inferno" ]; then
157+
NVCC_ENV_HOST_FLAGS=(-Xcompiler=-fpermissive)
158+
fi
159+
125160
OUTPUT_NAME=${OUTPUT_NAME:-$ENV}
126161

127162
# Standalone environment build
@@ -140,7 +175,9 @@ if [ "$MODE" = "local" ] || [ "$MODE" = "fast" ]; then
140175
"$SRC_DIR/$ENV.c" $EXTRA_SRC -o "$OUTPUT_NAME"
141176
"${LINK_ARCHIVES[@]}"
142177
"${STANDALONE_LDFLAGS[@]}"
143-
-lm -lpthread -fopenmp
178+
-lm -lpthread
179+
"${OMP_CFLAGS[@]}"
180+
"${OMP_LDFLAGS[@]}"
144181
-DPLATFORM_DESKTOP
145182
)
146183
echo "Compiling $ENV..."
@@ -185,10 +222,10 @@ for dir in /usr/local/cuda/lib64 /usr/lib/x86_64-linux-gnu; do
185222
fi
186223
done
187224
if [ -z "$CUDNN_IFLAG" ]; then
188-
CUDNN_IFLAG=$(python -c "import nvidia.cudnn, os; print('-I' + os.path.join(nvidia.cudnn.__path__[0], 'include'))" 2>/dev/null || echo "")
225+
CUDNN_IFLAG=$("$PYTHON_BIN" -c "import nvidia.cudnn, os; print('-I' + os.path.join(nvidia.cudnn.__path__[0], 'include'))" 2>/dev/null || echo "")
189226
fi
190227
if [ -z "$CUDNN_LFLAG" ]; then
191-
CUDNN_LFLAG=$(python -c "import nvidia.cudnn, os; print('-L' + os.path.join(nvidia.cudnn.__path__[0], 'lib'))" 2>/dev/null || echo "")
228+
CUDNN_LFLAG=$("$PYTHON_BIN" -c "import nvidia.cudnn, os; print('-L' + os.path.join(nvidia.cudnn.__path__[0], 'lib'))" 2>/dev/null || echo "")
192229
fi
193230

194231
# NCCL include/lib fallback (mirrors the cuDNN fallback above).
@@ -202,10 +239,10 @@ for dir in /usr/lib/x86_64-linux-gnu /usr/local/cuda/lib64; do
202239
if [ -f "$dir/libnccl.so" ] || [ -f "$dir/libnccl.so.2" ]; then NCCL_LFLAG="-L$dir"; break; fi
203240
done
204241
if [ -z "$NCCL_IFLAG" ]; then
205-
NCCL_IFLAG=$(python -c "import nvidia.nccl, os; print('-I' + os.path.join(nvidia.nccl.__path__[0], 'include'))" 2>/dev/null || echo "")
242+
NCCL_IFLAG=$("$PYTHON_BIN" -c "import nvidia.nccl, os; print('-I' + os.path.join(nvidia.nccl.__path__[0], 'include'))" 2>/dev/null || echo "")
206243
fi
207244
if [ -z "$NCCL_LFLAG" ]; then
208-
NCCL_LFLAG=$(python -c "import nvidia.nccl, os; print('-L' + os.path.join(nvidia.nccl.__path__[0], 'lib'))" 2>/dev/null || echo "")
245+
NCCL_LFLAG=$("$PYTHON_BIN" -c "import nvidia.nccl, os; print('-L' + os.path.join(nvidia.nccl.__path__[0], 'lib'))" 2>/dev/null || echo "")
209246
fi
210247

211248
WHEEL_RPATH_FLAGS=()
@@ -222,10 +259,10 @@ NVCC="ccache $CUDA_HOME/bin/nvcc"
222259
CC="${CC:-$(command -v ccache >/dev/null && echo 'ccache clang' || echo 'clang')}"
223260
ARCH=${NVCC_ARCH:-native}
224261

225-
PYTHON_INCLUDE=$(python -c "import sysconfig; print(sysconfig.get_path('include'))")
226-
PYBIND_INCLUDE=$(python -c "import pybind11; print(pybind11.get_include())")
227-
NUMPY_INCLUDE=$(python -c "import numpy; print(numpy.get_include())")
228-
EXT_SUFFIX=$(python -c "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))")
262+
PYTHON_INCLUDE=$("$PYTHON_BIN" -c "import sysconfig; print(sysconfig.get_path('include'))")
263+
PYBIND_INCLUDE=$("$PYTHON_BIN" -c "import pybind11; print(pybind11.get_include())")
264+
NUMPY_INCLUDE=$("$PYTHON_BIN" -c "import numpy; print(numpy.get_include())")
265+
EXT_SUFFIX=$("$PYTHON_BIN" -c "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))")
229266
OUTPUT="pufferlib/_C${EXT_SUFFIX}"
230267

231268
BINDING_SRC="$SRC_DIR/binding.c"
@@ -242,10 +279,11 @@ if [ "$MODE" = "cpu" ]; then
242279
echo "Compiling static library for $ENV..."
243280
${CC:-clang} -c "${CLANG_OPT[@]}" $EXTRA_CFLAGS \
244281
-I. -Isrc -I$SRC_DIR -Ivendor \
282+
"${CPU_STUB_INCLUDE[@]}" \
245283
-I./$RAYLIB_NAME/include -I$CUDA_HOME/include \
246284
-DPLATFORM_DESKTOP \
247285
-fno-semantic-interposition -fvisibility=hidden \
248-
-fPIC -fopenmp \
286+
-fPIC "${OMP_CFLAGS[@]}" \
249287
"$BINDING_SRC" -o "$STATIC_OBJ"
250288
ar rcs "$STATIC_LIB" "$STATIC_OBJ"
251289
fi
@@ -261,6 +299,7 @@ if [ -z "$MODE" ]; then
261299
-I$PYTHON_INCLUDE -I$PYBIND_INCLUDE -I$NUMPY_INCLUDE \
262300
-I$CUDA_HOME/include $CUDNN_IFLAG $NCCL_IFLAG -I$RAYLIB_NAME/include \
263301
-Xcompiler=-fopenmp \
302+
"${NVCC_ENV_HOST_FLAGS[@]}" \
264303
-Xcompiler=-ffunction-sections \
265304
-Xcompiler=-fdata-sections \
266305
-DENV_BINDING_SRC=\"$BINDING_SRC\" \
@@ -283,19 +322,20 @@ if [ -z "$MODE" ]; then
283322

284323
elif [ "$MODE" = "cpu" ]; then
285324
echo "Compiling CPU training backend..."
286-
${CXX:-g++} -c -fPIC -fopenmp \
325+
${CXX:-g++} -c -fPIC \
287326
-D_GLIBCXX_USE_CXX11_ABI=1 \
288327
-DPLATFORM_DESKTOP \
289328
-std=c++17 \
290329
-I. -Isrc \
291330
-I$PYTHON_INCLUDE -I$PYBIND_INCLUDE \
331+
"${OMP_CFLAGS[@]}" \
292332
-DENV_NAME=$ENV \
293333
$PRECISION $LINK_OPT \
294334
src/bindings_cpu.cpp -o build/bindings_cpu.o
295335
LINK_CMD=(
296-
${CXX:-g++} -shared -fPIC -fopenmp
336+
${CXX:-g++} -shared -fPIC
297337
build/bindings_cpu.o "$STATIC_LIB" "$RAYLIB_A"
298-
-lm -lpthread $OMP_LIB $LINK_OPT
338+
-lm -lpthread "${OMP_LDFLAGS[@]}" $LINK_OPT
299339
"${SHARED_LDFLAGS[@]}"
300340
-o "$OUTPUT"
301341
)
@@ -310,6 +350,7 @@ elif [ "$MODE" = "profile" ]; then
310350
-DENV_NAME=$ENV \
311351
-DENV_BINDING_SRC=\"$BINDING_SRC\" \
312352
-Xcompiler=-DPLATFORM_DESKTOP \
353+
"${NVCC_ENV_HOST_FLAGS[@]}" \
313354
$PRECISION \
314355
-Xcompiler=-fopenmp \
315356
tests/profile_kernels.cu vendor/ini.c \

0 commit comments

Comments
 (0)