#!/usr/bin/python

######## FOR PETSC 3.6.0
######## I had to
########   change Cxx.py in the PETSc 3.6.0 distrib to replace CXXCPP by CPP
########   edit src/system/err.c to remove the exception throwing code
########   edit android_real/lib/petsc/conf/petscvariables:
########         remove the dylib stuff
########         edit SL_LINKER_FUNCTION
########         add "-Wl,--unresolved-symbols=ignore-all" to the linker flags to
########           fix undefined ref to 'main'

if __name__ == '__main__':
  import sys
  import os
  sys.path.insert(0, os.path.abspath('config'))
  import configure
  ndkroot='/Users/geuzaine/android-ndk-r8b/'
  ndkbin=ndkroot + 'toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/'
  ndklibs=ndkroot + 'toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/user/libs/'
  ndklibs2=ndkroot + 'platforms/android-14/arch-arm/usr/lib/'
  externallibs='/Users/geuzaine/src/gmsh/contrib/mobile/frameworks_android/petsc/'
  configure_options = [
    '--AR=' + ndkbin + 'arm-linux-androideabi-ar',
    '--CC=' + ndkbin + 'arm-linux-androideabi-gcc',
    '--CFLAGS=--sysroot=' + ndkroot + 'platforms/android-8/arch-arm',
    '--CPP=' + ndkbin + 'arm-linux-androideabi-cpp',
    '--CPPFLAGS=--sysroot=' + ndkroot + 'platforms/android-8/arch-arm',
    '--CXX=' + ndkbin + 'arm-linux-androideabi-g++',
    '--CXXFLAGS=--sysroot=' + ndkroot + 'platforms/android-8/arch-arm -fsigned-char -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fdata-sections -ffunction-sections -fPIC -Wno-psabi -frtti -fexceptions -mthumb -O3 -fomit-frame-pointer -DNDEBUG -fPIC -isystem ' + ndkroot + 'platforms/android-8/arch-arm/usr/include -isystem ' + ndkroot + 'sources/cxx-stl/gnu-libstdc++/4.6/include -isystem ' + ndkroot + 'sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include -lstdc++ -I' + ndkroot + 'sources/cxx-stl/gnu-libstdc++/4.6/include/ -I' + ndkroot + 'sources/cxx-stl/gnu-libstdc++/4.6/include/backward -I' + ndkroot + 'sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/include',
    '--LDFLAGS= -L' + ndklibs + 'armeabi-v7a -L' + ndklibs2 + ' -lm',
    '--LD_SHARED=' + ndkbin + 'arm-linux-androideabi-ld',
    '--CLINKER=' + ndkbin + 'arm-linux-androideabi-gcc',
    '--known-bits-per-byte=8',
    '--known-endian=little',
    '--known-level1-dcache-assoc=1',
    '--known-level1-dcache-linesize=16',
    '--known-level1-dcache-size=4000',
    '--known-memcmp-ok=1',
    '--known-sizeof-char=1',
    '--known-sizeof-double=8',
    '--known-sizeof-float=4',
    '--known-sizeof-int=4',
    '--known-sizeof-long-long=8',
    '--known-sizeof-long=8',
    '--known-sizeof-short=2',
    '--known-sizeof-size_t=8',
    '--known-sizeof-void-p=8',
    '--with-blas-lib=' + externallibs + 'libf2cblas.so',
    '--with-clanguage=cxx',
    '--with-cmake=1',
    '--with-debugging=0',
    '--with-fc=0',
    '--with-lapack-lib=' + externallibs + 'libf2clapack.so',
    '--with-mpi=0',
    '--with-shared-libraries=1',
    '--with-x=0',
    '-I' + ndkroot + 'sources/cxx-stl/gnu-libstdc++/4.6/include/',
    '-I' + ndkroot + 'sources/cxx-stl/gnu-libstdc++/4.6/include/backward',
    '-I' + ndkroot + 'sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/include',
    '-lstdc++',
    '-with-batch=1',
    'PETSC_ARCH=android_real',
  ]
  configure.petsc_configure(configure_options)