mirror of
https://github.com/odin-lang/Odin.git
synced 2026-07-10 18:09:32 +00:00
box3d universal binary
This commit is contained in:
9
vendor/box3d/box3d.odin
vendored
9
vendor/box3d/box3d.odin
vendored
@@ -24,15 +24,10 @@ when ODIN_OS == .Windows {
|
||||
foreign import lib {
|
||||
"lib/linux-arm64/libbox3d.a",
|
||||
}
|
||||
} else when ODIN_OS == .Darwin && (ODIN_ARCH == .amd64) && !BOX3D_SHARED {
|
||||
} else when ODIN_OS == .Darwin && (ODIN_ARCH == .amd64 || ODIN_ARCH == .arm64) && !BOX3D_SHARED {
|
||||
@(export)
|
||||
foreign import lib {
|
||||
"lib/darwin-amd64/libbox3d.a",
|
||||
}
|
||||
} else when ODIN_OS == .Darwin && (ODIN_ARCH == .arm64) && !BOX3D_SHARED {
|
||||
@(export)
|
||||
foreign import lib {
|
||||
"lib/darwin-arm64/libbox3d.a",
|
||||
"lib/darwin/libbox3d.a",
|
||||
}
|
||||
} else {
|
||||
@(export)
|
||||
|
||||
3
vendor/box3d/lib/darwin/libbox3d.a
vendored
Normal file
3
vendor/box3d/lib/darwin/libbox3d.a
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6b000b0b69028af14d6a481b6bf6ca3b70d2c3a29cd9e73eab8b96e0deffa07d
|
||||
size 2524600
|
||||
70
vendor/box3d/src/build.sh
vendored
70
vendor/box3d/src/build.sh
vendored
@@ -1,15 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Detect OS
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
OS="darwin"
|
||||
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||
OS="linux"
|
||||
else
|
||||
echo "Error: Unsupported operating system: $OSTYPE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
LIB_NAME="libbox3d.a"
|
||||
# Detect architecture
|
||||
ARCH=$(uname -m)
|
||||
case "$ARCH" in
|
||||
@@ -25,8 +16,57 @@ case "$ARCH" in
|
||||
;;
|
||||
esac
|
||||
|
||||
LIB_DIR="../lib/${OS}-${ARCH}"
|
||||
mkdir -p "$LIB_DIR"
|
||||
cc -c -O2 -std=c17 -fPIC -Iinclude src/*.c
|
||||
ar rcs "$LIB_DIR/libbox3d.a" *.o
|
||||
rm -f *.o
|
||||
# Detect OS
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
INSTALL_DIR="../lib/darwin"
|
||||
mkdir -p "$INSTALL_DIR" build/x86_64 build/arm64
|
||||
|
||||
# Building box3d for amd64
|
||||
for src in src/*.c; do
|
||||
obj="build/x86_64/$(basename "${src%.c}.o")"
|
||||
clang -c -O2 -std=c17 -fPIC \
|
||||
-arch x86_64 \
|
||||
-mmacosx-version-min=11.0 \
|
||||
-Iinclude \
|
||||
"$src" -o "$obj"
|
||||
done
|
||||
|
||||
# Building box3d for arm64
|
||||
for src in src/*.c; do
|
||||
obj="build/arm64/$(basename "${src%.c}.o")"
|
||||
clang -c -O2 -std=c17 -fPIC \
|
||||
-arch arm64 \
|
||||
-mmacosx-version-min=11.0 \
|
||||
-Iinclude \
|
||||
"$src" -o "$obj"
|
||||
done
|
||||
|
||||
# Turn them into their respective *.a files
|
||||
ar rcs "$INSTALL_DIR/libbox3d_x86_64.a" build/x86_64/*.o
|
||||
ar rcs "$INSTALL_DIR/libbox3d_arm64.a" build/arm64/*.o
|
||||
|
||||
ranlib "$INSTALL_DIR/libbox3d_x86_64.a"
|
||||
ranlib "$INSTALL_DIR/libbox3d_arm64.a"
|
||||
|
||||
# Bundle them into a universal library
|
||||
lipo -create \
|
||||
"$INSTALL_DIR/libbox3d_x86_64.a" \
|
||||
"$INSTALL_DIR/libbox3d_arm64.a" \
|
||||
-output "$INSTALL_DIR/$LIB_NAME"
|
||||
|
||||
# Clean up the single arch .a files and build temp
|
||||
rm "$INSTALL_DIR/libbox3d_x86_64.a" "$INSTALL_DIR/libbox3d_arm64.a"
|
||||
rm -rf build
|
||||
|
||||
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||
OS="linux"
|
||||
LIB_DIR="../lib/${OS}-${ARCH}"
|
||||
mkdir -p "$LIB_DIR"
|
||||
cc -c -O2 -std=c17 -fPIC -Iinclude src/*.c
|
||||
ar rcs "$LIB_DIR/$LIB_NAME" *.o
|
||||
rm -f *.o
|
||||
|
||||
else
|
||||
echo "Error: Unsupported operating system: $OSTYPE"
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user