Advertisement
maciekish

Tesseract 3.01 build script for iOS

Mar 25th, 2012
386
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.27 KB | None | 0 0
  1. #!/bin/sh
  2. # build.sh
  3.  
  4. GLOBAL_OUTDIR="`pwd`/dependencies"
  5. LOCAL_OUTDIR="./outdir"
  6. LEPTON_LIB="`pwd`/leptonica-1.68"
  7. TESSERACT_LIB="`pwd`/tesseract-3.01"
  8.  
  9. IOS_BASE_SDK="5.0"
  10. IOS_DEPLOY_TGT="3.2"
  11.  
  12. setenv_all()
  13. {
  14.     # Add internal libs
  15.     export CFLAGS="$CFLAGS -I$GLOBAL_OUTDIR/include -L$GLOBAL_OUTDIR/lib"
  16.    
  17.     export CXX="$DEVROOT/usr/bin/llvm-g++"
  18.     export CC="$DEVROOT/usr/bin/llvm-gcc"
  19.  
  20.     export LD=$DEVROOT/usr/bin/ld
  21.     export AR=$DEVROOT/usr/bin/ar
  22.     export AS=$DEVROOT/usr/bin/as
  23.     export NM=$DEVROOT/usr/bin/nm
  24.     export RANLIB=$DEVROOT/usr/bin/ranlib
  25.     export LDFLAGS="-L$SDKROOT/usr/lib/"
  26.    
  27.     export CPPFLAGS=$CFLAGS
  28.     export CXXFLAGS=$CFLAGS
  29. }
  30.  
  31. setenv_arm6()
  32. {
  33.     unset DEVROOT SDKROOT CFLAGS CC LD CPP CXX AR AS NM CXXCPP RANLIB LDFLAGS CPPFLAGS CXXFLAGS
  34.    
  35.     export DEVROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
  36.     export SDKROOT=$DEVROOT/SDKs/iPhoneOS5.1.sdk
  37.    
  38.     export CFLAGS="-arch armv6 -pipe -no-cpp-precomp -isysroot $SDKROOT -miphoneos-version-min=$IOS_DEPLOY_TGT -I$SDKROOT/usr/include/"
  39.    
  40.     setenv_all
  41. }
  42.  
  43. setenv_arm7()
  44. {
  45.     unset DEVROOT SDKROOT CFLAGS CC LD CPP CXX AR AS NM CXXCPP RANLIB LDFLAGS CPPFLAGS CXXFLAGS
  46.    
  47.     export DEVROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
  48.     export SDKROOT=$DEVROOT/SDKs/iPhoneOS5.1.sdk
  49.    
  50.     export CFLAGS="-arch armv7 -pipe -no-cpp-precomp -isysroot $SDKROOT -miphoneos-version-min=$IOS_DEPLOY_TGT -I$SDKROOT/usr/include/"
  51.    
  52.     setenv_all
  53. }
  54.  
  55. setenv_i386()
  56. {
  57.     unset DEVROOT SDKROOT CFLAGS CC LD CPP CXX AR AS NM CXXCPP RANLIB LDFLAGS CPPFLAGS CXXFLAGS
  58.    
  59.     export DEVROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer
  60.     export SDKROOT=$DEVROOT/SDKs/iPhoneSimulator4.3.sdk
  61.    
  62.     export CFLAGS="-arch i386 -pipe -no-cpp-precomp -isysroot $SDKROOT -miphoneos-version-min=$IOS_DEPLOY_TGT"
  63.    
  64.     setenv_all
  65. }
  66.  
  67. create_outdir_lipo()
  68. {
  69.     for lib_i386 in `find $LOCAL_OUTDIR/i386 -name "lib*\.a"`; do
  70.         lib_arm6=`echo $lib_i386 | sed "s/i386/arm6/g"`
  71.         lib_arm7=`echo $lib_i386 | sed "s/i386/arm7/g"`
  72.         lib=`echo $lib_i386 | sed "s/i386\///g"`
  73.         lipo -arch armv6 $lib_arm6 -arch armv7 $lib_arm7 -arch i386 $lib_i386 -create -output $lib
  74.     done
  75. }
  76.  
  77. merge_libfiles()
  78. {
  79.     DIR=$1
  80.     LIBNAME=$2
  81.    
  82.     cd $DIR
  83.     for i in `find . -name "lib*.a"`; do
  84.         $AR -x $i
  85.     done
  86.     $AR -r $LIBNAME *.o
  87.     rm -rf *.o __*
  88.     cd -
  89. }
  90.  
  91.  
  92. #######################
  93. # LEPTONLIB
  94. #######################
  95. cd $LEPTON_LIB
  96. rm -rf $LOCAL_OUTDIR
  97. mkdir -p $LOCAL_OUTDIR/arm6 $LOCAL_OUTDIR/arm7 $LOCAL_OUTDIR/i386
  98.  
  99. make clean 2> /dev/null
  100. make distclean 2> /dev/null
  101. setenv_arm6
  102. ./configure --host=arm-apple-darwin6 --enable-shared=no --disable-programs --without-zlib --without-libpng --without-jpeg --without-giflib --without-libtiff
  103. make -j4
  104. cp -rvf src/.libs/lib*.a $LOCAL_OUTDIR/arm6
  105.  
  106. make clean 2> /dev/null
  107. make distclean 2> /dev/null
  108. setenv_arm7
  109. ./configure --host=arm-apple-darwin7 --enable-shared=no --disable-programs --without-zlib --without-libpng --without-jpeg --without-giflib --without-libtiff
  110. make -j4
  111. cp -rvf src/.libs/lib*.a $LOCAL_OUTDIR/arm7
  112.  
  113. make clean 2> /dev/null
  114. make distclean 2> /dev/null
  115. setenv_i386
  116. ./configure --enable-shared=no --disable-programs --without-zlib --without-libpng --without-jpeg --without-giflib --without-libtiff
  117. make -j4
  118. cp -rvf src/.libs/lib*.a $LOCAL_OUTDIR/i386
  119.  
  120. create_outdir_lipo
  121. mkdir -p $GLOBAL_OUTDIR/include/leptonica && cp -rvf src/*.h $GLOBAL_OUTDIR/include/leptonica
  122. mkdir -p $GLOBAL_OUTDIR/lib && cp -rvf $LOCAL_OUTDIR/lib*.a $GLOBAL_OUTDIR/lib
  123. cd ..
  124.  
  125.  
  126. #######################
  127. # TESSERACT-OCR (v3)
  128. #######################
  129. cd $TESSERACT_LIB
  130. rm -rf $LOCAL_OUTDIR
  131. mkdir -p $LOCAL_OUTDIR/arm6 $LOCAL_OUTDIR/arm7 $LOCAL_OUTDIR/i386
  132.  
  133. make clean 2> /dev/null
  134. make distclean 2> /dev/null
  135. setenv_arm6
  136. bash autogen.sh
  137. ./configure --host=arm-apple-darwin6 --enable-shared=no LIBLEPT_HEADERSDIR=$GLOBAL_OUTDIR/include/
  138. make -j4
  139. for i in `find . -name "lib*.a"`; do cp -rvf $i $LOCAL_OUTDIR/arm6; done
  140. merge_libfiles $LOCAL_OUTDIR/arm6 libtesseract_all.a
  141.  
  142. make clean 2> /dev/null
  143. make distclean 2> /dev/null
  144. setenv_arm7
  145. bash autogen.sh
  146. ./configure --host=arm-apple-darwin7 --enable-shared=no LIBLEPT_HEADERSDIR=$GLOBAL_OUTDIR/include/
  147. make -j4
  148. for i in `find . -name "lib*.a" | grep -v arm`; do cp -rvf $i $LOCAL_OUTDIR/arm7; done
  149. merge_libfiles $LOCAL_OUTDIR/arm7 libtesseract_all.a
  150.  
  151. make clean 2> /dev/null
  152. make distclean 2> /dev/null
  153. setenv_i386
  154. bash autogen.sh
  155. ./configure --enable-shared=no LIBLEPT_HEADERSDIR=$GLOBAL_OUTDIR/include/
  156. make -j4
  157. for i in `find . -name "lib*.a" | grep -v arm`; do cp -rvf $i $LOCAL_OUTDIR/i386; done
  158. merge_libfiles $LOCAL_OUTDIR/i386 libtesseract_all.a
  159.  
  160. create_outdir_lipo
  161. mkdir -p $GLOBAL_OUTDIR/include/tesseract
  162. tess_inc=( api/apitypes.h api/baseapi.h ccmain/thresholder.h ccstruct/publictypes.h ccutil/errcode.h
  163.            ccutil/genericvector.h ccutil/helpers.h ccutil/host.h ccutil/ndminx.h ccutil/ocrclass.h
  164.            ccutil/platform.h ccutil/tesscallback.h ccutil/unichar.h )
  165. for i in "${tess_inc[@]}"; do
  166.    cp -rvf $i $GLOBAL_OUTDIR/include/tesseract
  167. done
  168. mkdir -p $GLOBAL_OUTDIR/lib && cp -rvf $LOCAL_OUTDIR/lib*.a $GLOBAL_OUTDIR/lib
  169. make clean 2> /dev/null
  170. make distclean 2> /dev/null
  171. rm -rf $LOCAL_OUTDIR
  172. cd ..
  173.  
  174. echo "Finished!"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement