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

cannot find libstdc++ headers #160

Closed
mgood7123 opened this issue Sep 7, 2018 · 9 comments
Closed

cannot find libstdc++ headers #160

mgood7123 opened this issue Sep 7, 2018 · 9 comments

Comments

@mgood7123
Copy link

mgood7123 commented Sep 7, 2018

$ target/bin/o32-clang
osxcross: error: cannot find libstdc++ headers
osxcross: error: while detecting target

compiled with

#!/usr/bin/env bash
#
# Package the OS X SDKs into a tar file to be used by `build.sh`.
#

export LC_ALL=C

function set_xcode_dir()
{
  local tmp=$(ls $1 2>/dev/null | grep "^Xcode.*.app" | grep -v "beta" | head -n1)

  if [ -z "$tmp" ]; then
    tmp=$(ls $1 2>/dev/null | grep "^Xcode.*.app" | head -n1)
  fi

  if [ -n "$tmp" ]; then
    XCODEDIR="$1/$tmp"
  fi
}

if [ $(uname -s) != "Darwin" ]; then
  if [ -z "$XCODEDIR" ]; then
    echo "This script must be run on OS X" 1>&2
    echo "... Or with XCODEDIR=... on Linux" 1>&2
    exit 1
  else
    case $XCODEDIR in
      /*) ;;
      *) XCODEDIR="$PWD/$XCODEDIR" ;;
    esac
    set_xcode_dir $XCODEDIR
  fi
else
  set_xcode_dir $(echo /Volumes/Xcode* | tr ' ' '\n' | grep -v "beta" | head -n1)

  if [ -z "$XCODEDIR" ]; then
    set_xcode_dir /Applications

    if [ -z "$XCODEDIR" ]; then
      set_xcode_dir $(echo /Volumes/Xcode* | tr ' ' '\n' | head -n1)

      if [ -z "$XCODEDIR" ]; then
        echo "please mount Xcode.dmg" 1>&2
        exit 1
      fi
    fi
  fi
fi

if [ ! -d $XCODEDIR ]; then
  echo "cannot find Xcode (XCODEDIR=$XCODEDIR)" 1>&2
  exit 1
fi

echo -e "found Xcode: $XCODEDIR"

WDIR=$(pwd)

which gnutar &>/dev/null

if [ $? -eq 0 ]; then
  TAR=gnutar
else
  TAR=tar
fi

which xz &>/dev/null

if [ $? -eq 0 ]; then
  COMPRESSOR=xz
  PKGEXT="tar.xz"
else
  COMPRESSOR=bzip2
  PKGEXT="tar.bz2"
fi

set -e

pushd $XCODEDIR &>/dev/null

if [ -d "Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs" ]; then
  pushd "Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs" &>/dev/null
else
  if [ -d "../Packages" ]; then
    pushd "../Packages" &>/dev/null
  elif [ -d "Packages" ]; then
    pushd "Packages" &>/dev/null
  else
    if [ $? -ne 0 ]; then
      echo "Xcode (or this script) is out of date" 1>&2
      echo "trying some magic to find the SDKs anyway ..." 1>&2

      SDKDIR=$(find . -name SDKs -type d | grep MacOSX | head -n1)

      if [ -z "$SDKDIR" ]; then
        echo "cannot find SDKs!" 1>&2
        exit 1
      fi

      pushd $SDKDIR &>/dev/null
    fi
  fi
fi

SDKS=$(ls | grep "^MacOSX10.*" | grep -v "Patch")

if [ -z "$SDKS" ]; then
    echo "No SDK found" 1>&2
    exit 1
fi

# Xcode 5
LIBCXXDIR1="Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c++/v1"

# Xcode 6
LIBCXXDIR2="Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1"

# Manual directory
MANDIR="Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man"
declare -p SDKS
declare -p WDIR
for SDK in $SDKS; do
  echo -n "packaging $(echo "$SDK" | sed -E "s/(.sdk|.pkg)//g") SDK "
  echo "(this may take several minutes) ..."

  if [[ $SDK == *.pkg ]]; then
    cp $SDK $WDIR
    continue
  fi
  TMP=$(mktemp -d /tmp/XXXXXXXXXXX)
  mkdir $WDIR/$(readlink $SDK)
  ln -sv $WDIR/$(readlink $SDK) $TMP/$SDK

  pushd $XCODEDIR &>/dev/null

  # libc++ headers for C++11/C++14
  mkdir -p $TMP/$SDK/usr/include/c++
  if [ -d $LIBCXXDIR1 ]; then
    cp -rf $LIBCXXDIR1 "$TMP/$SDK/usr/include/c++"
  elif [ -d $LIBCXXDIR2 ]; then
    cp -rf $LIBCXXDIR2 "$TMP/$SDK/usr/include/c++"
  fi

  if [ -d $MANDIR ]; then
    mkdir -p $TMP/$SDK/usr/share/man
    cp -rf $MANDIR/* $TMP/$SDK/usr/share/man
  fi

  popd &>/dev/null

  pushd $TMP &>/dev/null
  $TAR -cf - * | $COMPRESSOR -9 -c - > "$WDIR/$SDK.$PKGEXT"
  popd &>/dev/null

  rm -rf $TMP
done

popd &>/dev/null
popd &>/dev/null

echo ""
ls -lh | grep MacOSX

and Xcode_10_Beta_6.xip SDK

SDK contents:

Your paste can be seen here: http://bpaste.net/show/23a7d3a11898
mobile_c@Mobile-C:~/git/ccr_resources/diss/apple/osxcross$ find MacOSX.sdk/
MacOSX.sdk/
MacOSX.sdk/usr
MacOSX.sdk/usr/share
MacOSX.sdk/usr/share/man
MacOSX.sdk/usr/share/man/man5
MacOSX.sdk/usr/share/man/man5/a.out.5
MacOSX.sdk/usr/share/man/man5/ranlib.5
MacOSX.sdk/usr/share/man/man5/stab.5
MacOSX.sdk/usr/share/man/man5/ar.5
MacOSX.sdk/usr/share/man/man5/Mach-O.5
MacOSX.sdk/usr/share/man/man1
MacOSX.sdk/usr/share/man/man1/m4.1
MacOSX.sdk/usr/share/man/man1/swift.1
MacOSX.sdk/usr/share/man/man1/ranlib.1
MacOSX.sdk/usr/share/man/man1/segedit.1
MacOSX.sdk/usr/share/man/man1/c99.1
MacOSX.sdk/usr/share/man/man1/lex.1
MacOSX.sdk/usr/share/man/man1/dsymutil.1
MacOSX.sdk/usr/share/man/man1/gperf.1
MacOSX.sdk/usr/share/man/man1/unifdefall.1
MacOSX.sdk/usr/share/man/man1/c++.1
MacOSX.sdk/usr/share/man/man1/ld.1
MacOSX.sdk/usr/share/man/man1/tapi-archive.1
MacOSX.sdk/usr/share/man/man1/mig.1
MacOSX.sdk/usr/share/man/man1/rpcgen.1
MacOSX.sdk/usr/share/man/man1/rebase.1
MacOSX.sdk/usr/share/man/man1/strings.1
MacOSX.sdk/usr/share/man/man1/yacc.1
MacOSX.sdk/usr/share/man/man1/tapi.1
MacOSX.sdk/usr/share/man/man1/unifdef.1
MacOSX.sdk/usr/share/man/man1/otool-classic.1
MacOSX.sdk/usr/share/man/man1/ar.1
MacOSX.sdk/usr/share/man/man1/gm4.1
MacOSX.sdk/usr/share/man/man1/codesign_allocate.1
MacOSX.sdk/usr/share/man/man1/libtool.1
MacOSX.sdk/usr/share/man/man1/nmedit.1
MacOSX.sdk/usr/share/man/man1/nm.1
MacOSX.sdk/usr/share/man/man1/llvm-otool.1
MacOSX.sdk/usr/share/man/man1/tapi-stubify.1
MacOSX.sdk/usr/share/man/man1/strip.1
MacOSX.sdk/usr/share/man/man1/ctags.1
MacOSX.sdk/usr/share/man/man1/unwinddump.1
MacOSX.sdk/usr/share/man/man1/clang.1
MacOSX.sdk/usr/share/man/man1/cc.1
MacOSX.sdk/usr/share/man/man1/gcov.1
MacOSX.sdk/usr/share/man/man1/lipo.1
MacOSX.sdk/usr/share/man/man1/size-classic.1
MacOSX.sdk/usr/share/man/man1/otool.1
MacOSX.sdk/usr/share/man/man1/migcom.1
MacOSX.sdk/usr/share/man/man1/llvm-cov.1
MacOSX.sdk/usr/share/man/man1/llvm-profdata.1
MacOSX.sdk/usr/share/man/man1/dyldinfo.1
MacOSX.sdk/usr/share/man/man1/asa.1
MacOSX.sdk/usr/share/man/man1/redo_prebinding.1
MacOSX.sdk/usr/share/man/man1/indent.1
MacOSX.sdk/usr/share/man/man1/pagestuff.1
MacOSX.sdk/usr/share/man/man1/tapi-reexport.1
MacOSX.sdk/usr/share/man/man1/dwarfdump.1
MacOSX.sdk/usr/share/man/man1/flex++.1
MacOSX.sdk/usr/share/man/man1/bison.1
MacOSX.sdk/usr/share/man/man1/nm-classic.1
MacOSX.sdk/usr/share/man/man1/clang++.1
MacOSX.sdk/usr/share/man/man1/size.1
MacOSX.sdk/usr/share/man/man1/as.1
MacOSX.sdk/usr/share/man/man1/install_name_tool.1
MacOSX.sdk/usr/share/man/man1/tapi-installapi.1
MacOSX.sdk/usr/share/man/man1/cmpdylib.1
MacOSX.sdk/usr/share/man/man1/bitcode_strip.1
MacOSX.sdk/usr/share/man/man1/flex.1
MacOSX.sdk/usr/share/man/man1/ctf_insert.1
MacOSX.sdk/usr/share/man/man1/lorder.1
MacOSX.sdk/usr/share/man/man1/c89.1
MacOSX.sdk/usr/share/man/man3
MacOSX.sdk/usr/share/man/man3/getsegbyname.3
MacOSX.sdk/usr/share/man/man3/end.3
MacOSX.sdk/usr/share/man/man3/get_end.3
MacOSX.sdk/usr/share/man/man3/getsectdatafromheader.3
MacOSX.sdk/usr/share/man/man3/getsectdata.3
MacOSX.sdk/usr/share/man/man3/getsectbynamefromheader.3
MacOSX.sdk/usr/share/man/man3/getsectbyname.3
MacOSX.sdk/usr/share/man/man3/kld.3
MacOSX.sdk/usr/share/man/man3/arch.3
MacOSX.sdk/usr/include
MacOSX.sdk/usr/include/std*.h
MacOSX.sdk/usr/include/float.h
MacOSX.sdk/usr/include/c++
MacOSX.sdk/usr/include/c++/v1
MacOSX.sdk/usr/include/c++/v1/variant
MacOSX.sdk/usr/include/c++/v1/cinttypes
MacOSX.sdk/usr/include/c++/v1/exception
MacOSX.sdk/usr/include/c++/v1/module.modulemap
MacOSX.sdk/usr/include/c++/v1/map
MacOSX.sdk/usr/include/c++/v1/memory
MacOSX.sdk/usr/include/c++/v1/tuple
MacOSX.sdk/usr/include/c++/v1/fstream
MacOSX.sdk/usr/include/c++/v1/bitset
MacOSX.sdk/usr/include/c++/v1/__libcpp_version
MacOSX.sdk/usr/include/c++/v1/tgmath.h
MacOSX.sdk/usr/include/c++/v1/ratio
MacOSX.sdk/usr/include/c++/v1/__mutex_base
MacOSX.sdk/usr/include/c++/v1/string_view
MacOSX.sdk/usr/include/c++/v1/limits
MacOSX.sdk/usr/include/c++/v1/chrono
MacOSX.sdk/usr/include/c++/v1/__sso_allocator
MacOSX.sdk/usr/include/c++/v1/errno.h
MacOSX.sdk/usr/include/c++/v1/regex
MacOSX.sdk/usr/include/c++/v1/ctime
MacOSX.sdk/usr/include/c++/v1/wctype.h
MacOSX.sdk/usr/include/c++/v1/__bsd_locale_defaults.h
MacOSX.sdk/usr/include/c++/v1/__functional_base_03
MacOSX.sdk/usr/include/c++/v1/initializer_list
MacOSX.sdk/usr/include/c++/v1/float.h
MacOSX.sdk/usr/include/c++/v1/cassert
MacOSX.sdk/usr/include/c++/v1/locale.h
MacOSX.sdk/usr/include/c++/v1/atomic
MacOSX.sdk/usr/include/c++/v1/cctype
MacOSX.sdk/usr/include/c++/v1/optional
MacOSX.sdk/usr/include/c++/v1/system_error
MacOSX.sdk/usr/include/c++/v1/cstddef
MacOSX.sdk/usr/include/c++/v1/set
MacOSX.sdk/usr/include/c++/v1/cstring
MacOSX.sdk/usr/include/c++/v1/ios
MacOSX.sdk/usr/include/c++/v1/shared_mutex
MacOSX.sdk/usr/include/c++/v1/__undef_macros
MacOSX.sdk/usr/include/c++/v1/ccomplex
MacOSX.sdk/usr/include/c++/v1/typeindex
MacOSX.sdk/usr/include/c++/v1/cfenv
MacOSX.sdk/usr/include/c++/v1/deque
MacOSX.sdk/usr/include/c++/v1/utility
MacOSX.sdk/usr/include/c++/v1/__config
MacOSX.sdk/usr/include/c++/v1/ctgmath
MacOSX.sdk/usr/include/c++/v1/__debug
MacOSX.sdk/usr/include/c++/v1/scoped_allocator
MacOSX.sdk/usr/include/c++/v1/iostream
MacOSX.sdk/usr/include/c++/v1/stdlib.h
MacOSX.sdk/usr/include/c++/v1/ostream
MacOSX.sdk/usr/include/c++/v1/__threading_support
MacOSX.sdk/usr/include/c++/v1/cmath
MacOSX.sdk/usr/include/c++/v1/typeinfo
MacOSX.sdk/usr/include/c++/v1/queue
MacOSX.sdk/usr/include/c++/v1/inttypes.h
MacOSX.sdk/usr/include/c++/v1/forward_list
MacOSX.sdk/usr/include/c++/v1/type_traits
MacOSX.sdk/usr/include/c++/v1/mutex
MacOSX.sdk/usr/include/c++/v1/cstdlib
MacOSX.sdk/usr/include/c++/v1/__tuple
MacOSX.sdk/usr/include/c++/v1/__functional_03
MacOSX.sdk/usr/include/c++/v1/locale
MacOSX.sdk/usr/include/c++/v1/cstdbool
MacOSX.sdk/usr/include/c++/v1/__tree
MacOSX.sdk/usr/include/c++/v1/functional
MacOSX.sdk/usr/include/c++/v1/limits.h
MacOSX.sdk/usr/include/c++/v1/numeric
MacOSX.sdk/usr/include/c++/v1/cwchar
MacOSX.sdk/usr/include/c++/v1/condition_variable
MacOSX.sdk/usr/include/c++/v1/string.h
MacOSX.sdk/usr/include/c++/v1/cstdio
MacOSX.sdk/usr/include/c++/v1/string
MacOSX.sdk/usr/include/c++/v1/clocale
MacOSX.sdk/usr/include/c++/v1/cstdint
MacOSX.sdk/usr/include/c++/v1/new
MacOSX.sdk/usr/include/c++/v1/cwctype
MacOSX.sdk/usr/include/c++/v1/ctype.h
MacOSX.sdk/usr/include/c++/v1/codecvt
MacOSX.sdk/usr/include/c++/v1/list
MacOSX.sdk/usr/include/c++/v1/complex.h
MacOSX.sdk/usr/include/c++/v1/ciso646
MacOSX.sdk/usr/include/c++/v1/unordered_set
MacOSX.sdk/usr/include/c++/v1/cerrno
MacOSX.sdk/usr/include/c++/v1/complex
MacOSX.sdk/usr/include/c++/v1/csetjmp
MacOSX.sdk/usr/include/c++/v1/iterator
MacOSX.sdk/usr/include/c++/v1/stdbool.h
MacOSX.sdk/usr/include/c++/v1/__bit_reference
MacOSX.sdk/usr/include/c++/v1/streambuf
MacOSX.sdk/usr/include/c++/v1/math.h
MacOSX.sdk/usr/include/c++/v1/sstream
MacOSX.sdk/usr/include/c++/v1/climits
MacOSX.sdk/usr/include/c++/v1/iosfwd
MacOSX.sdk/usr/include/c++/v1/valarray
MacOSX.sdk/usr/include/c++/v1/__nullptr
MacOSX.sdk/usr/include/c++/v1/__split_buffer
MacOSX.sdk/usr/include/c++/v1/iomanip
MacOSX.sdk/usr/include/c++/v1/stdio.h
MacOSX.sdk/usr/include/c++/v1/stdint.h
MacOSX.sdk/usr/include/c++/v1/__std_stream
MacOSX.sdk/usr/include/c++/v1/cstdarg
MacOSX.sdk/usr/include/c++/v1/__bsd_locale_fallbacks.h
MacOSX.sdk/usr/include/c++/v1/stddef.h
MacOSX.sdk/usr/include/c++/v1/experimental
MacOSX.sdk/usr/include/c++/v1/experimental/map
MacOSX.sdk/usr/include/c++/v1/experimental/tuple
MacOSX.sdk/usr/include/c++/v1/experimental/ratio
MacOSX.sdk/usr/include/c++/v1/experimental/string_view
MacOSX.sdk/usr/include/c++/v1/experimental/chrono
MacOSX.sdk/usr/include/c++/v1/experimental/regex
MacOSX.sdk/usr/include/c++/v1/experimental/dynarray
MacOSX.sdk/usr/include/c++/v1/experimental/__memory
MacOSX.sdk/usr/include/c++/v1/experimental/optional
MacOSX.sdk/usr/include/c++/v1/experimental/system_error
MacOSX.sdk/usr/include/c++/v1/experimental/set
MacOSX.sdk/usr/include/c++/v1/experimental/deque
MacOSX.sdk/usr/include/c++/v1/experimental/utility
MacOSX.sdk/usr/include/c++/v1/experimental/__config
MacOSX.sdk/usr/include/c++/v1/experimental/coroutine
MacOSX.sdk/usr/include/c++/v1/experimental/propagate_const
MacOSX.sdk/usr/include/c++/v1/experimental/forward_list
MacOSX.sdk/usr/include/c++/v1/experimental/type_traits
MacOSX.sdk/usr/include/c++/v1/experimental/functional
MacOSX.sdk/usr/include/c++/v1/experimental/numeric
MacOSX.sdk/usr/include/c++/v1/experimental/string
MacOSX.sdk/usr/include/c++/v1/experimental/list
MacOSX.sdk/usr/include/c++/v1/experimental/unordered_set
MacOSX.sdk/usr/include/c++/v1/experimental/iterator
MacOSX.sdk/usr/include/c++/v1/experimental/algorithm
MacOSX.sdk/usr/include/c++/v1/experimental/unordered_map
MacOSX.sdk/usr/include/c++/v1/experimental/memory_resource
MacOSX.sdk/usr/include/c++/v1/experimental/any
MacOSX.sdk/usr/include/c++/v1/experimental/vector
MacOSX.sdk/usr/include/c++/v1/ext
MacOSX.sdk/usr/include/c++/v1/ext/hash_set
MacOSX.sdk/usr/include/c++/v1/ext/__hash
MacOSX.sdk/usr/include/c++/v1/ext/hash_map
MacOSX.sdk/usr/include/c++/v1/stack
MacOSX.sdk/usr/include/c++/v1/__locale
MacOSX.sdk/usr/include/c++/v1/algorithm
MacOSX.sdk/usr/include/c++/v1/__functional_base
MacOSX.sdk/usr/include/c++/v1/unordered_map
MacOSX.sdk/usr/include/c++/v1/csignal
MacOSX.sdk/usr/include/c++/v1/__string
MacOSX.sdk/usr/include/c++/v1/future
MacOSX.sdk/usr/include/c++/v1/wchar.h
MacOSX.sdk/usr/include/c++/v1/cfloat
MacOSX.sdk/usr/include/c++/v1/random
MacOSX.sdk/usr/include/c++/v1/__hash_table
MacOSX.sdk/usr/include/c++/v1/setjmp.h
MacOSX.sdk/usr/include/c++/v1/thread
MacOSX.sdk/usr/include/c++/v1/istream
MacOSX.sdk/usr/include/c++/v1/array
MacOSX.sdk/usr/include/c++/v1/any
MacOSX.sdk/usr/include/c++/v1/strstream
MacOSX.sdk/usr/include/c++/v1/vector
MacOSX.sdk/usr/include/c++/v1/stdexcept
mobile_c@Mobile-C:~/git/ccr_resources/diss/apple/osxcross$ 
@mgood7123
Copy link
Author

/home/mobile_c/git/ccr_resources/diss/apple/osxcross/target/bin/../SDK/MacOSX10.14.sdk/usr/include/c++/4.2.1

@mgood7123
Copy link
Author

mgood7123 commented Sep 7, 2018

it appears to default to -stdlib=libstdc++

@mgood7123
Copy link
Author

as -stdlib=libc++ works (but is untested)

@mgood7123
Copy link
Author

testing o32-clang ... /home/mobile_c/git/ccr_resources/diss/apple/osxcross/oclang/test.c:1:10: fatal error: 'stdio.h' file not found
#include <stdio.h>

@jay-hankins
Copy link

Seeing this as well in macOS 10.14:

root@72bcd326f3f6:/osxcross# CMAKE_CXX_COMPILER=i386-apple-darwin15-clang++-libc++ OSX_VERSION_MIN=10.12 ./build.sh

extracting MacOSX10.14.sdk.tar.xz ...
compiling wrapper ...

installing CMake
testing o32-clang ... osxcross: error: cannot find libc++ headers
osxcross: error: while detecting target

exiting with abnormal exit code (1)

What's going on with this, is there any way I can help? What does @melvinvermeeren's commit change?

@tpoechtrager
Copy link
Owner

Your SDK does not contain libc++ headers. Follow the README to package the SDK properly.

@jay-hankins
Copy link

jay-hankins commented Dec 6, 2018

@tpoechtrager I followed these steps completely:

Packaging the SDK on Mac OS X:

  1. [Download Xcode **]
  2. [Mount Xcode.dmg (Open With -> DiskImageMounter) ***]
  3. Run: ./tools/gen_sdk_package.sh (from the OSXCross package)
  4. Copy the packaged SDK (.tar. or *.pkg) on a USB Stick
  5. (On Linux/BSD) Copy or move the SDK into the tarballs/ directory of OSXCross.

note: I skipped optional steps 1 and 2 because I already have Xcode installed via App Store.

Are there additional steps to make the SDK package include libc++ headers, aside from running gen_sdk_package.sh?

@tpoechtrager
Copy link
Owner

What version of Xcode are you using? Up to 7.3.x is supported by the script.

@jay-hankins
Copy link

@tpoechtrager Yes, that fixed it! My program compiled successfully and I'm thrilled! 😄

I actually had seen the requirement for Xcode 7.3.x but then had trouble locating the download on Apple's site, and by the time I got around to building osxcross, had forgotten about locating the old version.

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

3 participants