Files
dcfg/build.sh
Slendi ec3bf6061d
Some checks failed
CMake / ubuntu-latest - shared=OFF, pthread=OFF, posix=OFF (push) Successful in 14s
CMake / ubuntu-latest - shared=ON, pthread=OFF, posix=OFF (push) Successful in 15s
CMake / ubuntu-latest - shared=ON, pthread=OFF, posix=ON (push) Has been cancelled
CMake / ubuntu-latest - shared=OFF, pthread=ON, posix=ON (push) Has been cancelled
CMake / ubuntu-latest - shared=ON, pthread=ON, posix=ON (push) Has been cancelled
CMake / ubuntu-latest - shared=OFF, pthread=OFF, posix=ON (push) Has been cancelled
Remove pthreads
Signed-off-by: Slendi <slendi@socopon.com>
2025-08-09 08:39:55 +03:00

85 lines
1.9 KiB
Bash
Executable File

#!/bin/sh
set -e
BUILD_DIR="BUILD"
INSTALL_DIR=$PWD/install
CFLAGS="-Wall -Wextra -pedantic -Werror -Wno-newline-eof -Wno-language-extension-token -Wno-unused-command-line-argument"
BUILD_SHARED=1
POSIX_SUPPORT=1
BUILD_PROGRAMS=1
SRC_DIR="src"
INCLUDE_DIR="include"
PROGRAMS_DIR="programs"
OUTPUT_NAME="libdcfg"
for arg in "$@"; do
case $arg in
--debug) CFLAGS="$CFLAGS -g -O0" ;;
--release) CFLAGS="$CFLAGS -O2" ;;
--no-posix) POSIX_SUPPORT=0 ;;
--no-programs) BUILD_PROGRAMS=0 ;;
--clean) rm -rf "$BUILD_DIR" "$INSTALL_DIR"; echo "Cleaned."; exit 0 ;;
esac
done
# Detect SunOS
OS=`uname`
echo "Detected os:" $OS
SHARED_FLAG="-shared"
PIC_FLAG="-fPIC"
if [ "$OS" = "SunOS" ]; then
SHARED_FLAG="-G"
PIC_FLAG="-KPIC"
CFLAGS=`echo "$CFLAGS" | sed 's/-pedantic//g'`
fi
# Setup directories
mkdir -p "$BUILD_DIR" "$INSTALL_DIR/lib" "$INSTALL_DIR/include" "$INSTALL_DIR/bin"
# Compiler and linker
CC=${CC:-cc}
if [ "$OS" = "SunOS" ] && [ "$CC" = "cc" ]; then
CFLAGS="$CFLAGS -xc99"
else
CFLAGS="$CFLAGS -std=c99"
fi
if [ "$POSIX_SUPPORT" -eq 1 ]; then
CFLAGS="$CFLAGS -DDCFG_POSIX_SUPPORT=1"
fi
CFLAGS="$CFLAGS $PIC_FLAG -lm"
echo "Building DCFG..."
cd "$BUILD_DIR"
set -x
# Shared library
$CC $CFLAGS $SHARED_FLAG "../$SRC_DIR/dcfg.c" -I"../$INCLUDE_DIR" -o "$OUTPUT_NAME.so" $LIBS
# Static library
$CC -c $CFLAGS "../$SRC_DIR/dcfg.c" -I"../$INCLUDE_DIR" -o dcfg.o
if [ "$OS" = "SunOS" ]; then
CC -xar -o "$OUTPUT_NAME.a" dcfg.o
else
ar rcs "$OUTPUT_NAME.a" dcfg.o
fi
cp "$OUTPUT_NAME.so" "$INSTALL_DIR/lib/"
cp "$OUTPUT_NAME.a" "$INSTALL_DIR/lib/"
cp -r "../$INCLUDE_DIR/"* "$INSTALL_DIR/include/"
if [ "$BUILD_PROGRAMS" -eq 1 ]; then
for prog in ../"$PROGRAMS_DIR"/*.c; do
prog_name=`basename "$prog" .c`
$CC $CFLAGS "$prog" -I"../$INCLUDE_DIR" $OUTPUT_NAME.a $LIBS -o "$prog_name"
cp "$prog_name" "$INSTALL_DIR/bin/"
done
fi
echo "Done. Installed to $INSTALL_DIR"