#!/bin/sh
set -e

WORKDIR=$(mktemp -d)
trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM
cd $WORKDIR
cat <<EOF > sample.cpp
class MyClass
{
public:
  MyClass() {};

  /* use virtual otherwise linker will try to perform static linkage */
  virtual void DoSomething() {};

private:
  int x;
};

class foo: public MyClass {
   virtual void DoSomething() {};
};

class foo f;
class MyClass m;
EOF
g++ -g -c -Wall -fPIC sample.cpp -o sample.o
g++ -shared -Wl,-soname,libsample.so.1 -o libsample.so.1.0.1 sample.o
echo "build: OK"
test -x libsample.so.1.0.1
vtable-dumper ./libsample.so.1.0.1
echo "run: OK"
