Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

error: 'system' is unavailable: not available on iOS #403

Open
CaiJingLong opened this issue Mar 19, 2023 · 0 comments
Open

error: 'system' is unavailable: not available on iOS #403

CaiJingLong opened this issue Mar 19, 2023 · 0 comments

Comments

@CaiJingLong
Copy link

CaiJingLong commented Mar 19, 2023

I want to compile for iOS.

I run with next script to create MakeFile and make -j4

As far as I know, the system function was removed from the iOS SDK 11 (5 years ago), so libde265 has no hope of being compatible with the iOS platform?

log

rd-curves.cc:377:16: error: 'system' is unavailable: not available on iOS
  int retval = system(replace_variables(sstr.str()).c_str());
               ^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/include/stdlib.h:190:6: note: 'system' has been explicitly marked
      unavailable here
int      system(const char *) __DARWIN_ALIAS_C(system);
         ^
rd-curves.cc:399ld: warning: ignoring file ../libde265/.libs/libde265.a, building for iOS-arm64 but attempting to link with file built for iOS-arm64
:16: error: 'system' is unavailable: not available on iOS
  int retval = system(replace_variables(sstr.str()).c_str());
               ^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/include/stdlib.h:190:6: note: 'system' has been explicitly marked
      unavailable here
int      system(const char *) __DARWIN_ALIAS_C(system);
         ^
rd-curves.cc:557:16: error: 'system' is unavailable: not available on iOS
  int retval = system(cmd2.c_str());
               ^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/include/stdlib.h:190:6: note: 'system' has been explicitly marked
      unavailable here
int      system(const char *) __DARWIN_ALIAS_C(system);
         ^
rd-curves.cc:634:16: error: 'system' is unavailable: not available on iOS
  int retval = system(cmd2.c_str());

iconfigure

#!/bin/sh
set -e

usage () {
  echo "Usage: [VARIABLE...] $(basename $0) architecture"
  echo ""
  echo "  architecture   Target architecture. [armv7|armv7s|arm64|i386|x86_64]"
  echo ""
  echo "  VARIABLEs are:"
  echo "    SDKVERSION   Target a specific SDK version."
  echo "    PREFIX       Custom install prefix, useful for local installs."
  echo "    CHOST        Configure host, set if not deducable by ARCH."
  echo "    SDK          SDK target, set if not deducable by ARCH. [iphoneos|iphonesimulator]"
  echo ""
  echo "    CFLAGS CPPFLAGS CXXFLAGS LDFLAGS PKG_CONFIG_PATH"
  echo ""
  echo "  All additional parameters are passed to the configure script."
  exit 1
}

ScriptDir="$( cd "$( dirname "$0" )" && pwd )"

# Sanity checks
if [ "$#" -lt 1 ]; then
  echo "Please supply an architecture name."
  usage
fi

if [ ! -x "./configure" ] ; then
  echo "No configure script found."
  usage
fi

# Build architecture
export ARCH=$1

# Export supplied CHOST or deduce by ARCH
if [ ! -z "$CHOST" ]; then
  export CHOST
else
  case $ARCH in
    armv7 | armv7s )
      export CHOST=arm-apple-darwin*
      ;;
    arm64 )
      export CHOST=aarch64-apple-darwin*
      ;;
    i386 | x86_64 )
      export CHOST=$ARCH-apple-darwin*
      ;;
    * )
      usage
    ;;
  esac
fi

# Export supplied SDK or deduce by ARCH
if [ ! -z "$SDK" ]; then
  export SDK
else
  case $ARCH in
    armv7 | armv7s | arm64 )
      export SDK=iphoneos
      ;;
    i386 | x86_64 )
      export SDK=iphonesimulator
      ;;
    * )
      usage
    ;;
  esac
fi

# Export supplied SDKVERSION or use system default
if [ ! -z "$SDKVERSION" ]; then
  SDKNAME=$(basename $(xcrun --sdk $SDK --show-sdk-platform-path) .platform)
  export SDKVERSION
  export SDKROOT=$(xcrun --sdk $SDK --show-sdk-platform-path)"/Developer/SDKs/$SDKNAME.$SDKVERSION.sdk"
else
  export SDKVERSION=$(xcrun --sdk $SDK --show-sdk-version) # current version
  export SDKROOT=$(xcrun --sdk $SDK --show-sdk-path) # current version
fi

# Export supplied PREFIX or use default
if [ ! -z "$PREFIX" ]; then
  export PREFIX
else
  export PREFIX="$ScriptDir/$SDK-$SDKVERSION/$ARCH"
fi

# Binaries
export CC=$(xcrun --sdk $SDK --find clang)
export CPP=$(xcrun --sdk $SDK --find clang)" -E"
export CXX=$(xcrun --sdk $SDK --find clang++)
export LD=$(xcrun --sdk $SDK --find ld)

# Flags
export CFLAGS="$CFLAGS -arch $ARCH -isysroot $SDKROOT -I$PREFIX/include -miphoneos-version-min=$SDKVERSION"
export CPPFLAGS="$CPPFLAGS -arch $ARCH -isysroot $SDKROOT -I$PREFIX/include -miphoneos-version-min=$SDKVERSION"
export CXXFLAGS="$CXXFLAGS -arch $ARCH -isysroot $SDKROOT -I$PREFIX/include"
export LDFLAGS="$LDFLAGS -arch $ARCH -isysroot $SDKROOT -L$PREFIX/lib"
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH":"$SDKROOT/usr/lib/pkgconfig":"$PREFIX/lib/pkgconfig"

# Remove script parameters
shift 1

# Run configure
./configure \
	--prefix="$PREFIX" \
	--host="$CHOST" \
	--enable-static \
	--disable-shared \
	$@

My command:

./iconfigure arm64  --disable-dec265  --disable-sherlock265
make -j4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant