@@ -50,17 +50,38 @@ if [ "$ENV" = "all" ]; then
5050 exit 0
5151fi
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
5465PLATFORM=" $( uname -s) "
5566if [ " $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)
6174else
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
123144fi
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+
125160OUTPUT_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
186223done
187224if [ -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 " " )
189226fi
190227if [ -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 " " )
192229fi
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
203240done
204241if [ -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 " " )
206243fi
207244if [ -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 " " )
209246fi
210247
211248WHEEL_RPATH_FLAGS=()
@@ -222,10 +259,10 @@ NVCC="ccache $CUDA_HOME/bin/nvcc"
222259CC=" ${CC:- $(command -v ccache >/ dev/ null && echo ' ccache clang' || echo ' clang' )} "
223260ARCH=${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'))" )
229266OUTPUT=" pufferlib/_C${EXT_SUFFIX} "
230267
231268BINDING_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 "
251289fi
@@ -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
284323elif [ " $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