Guest User

build tesseract AND libtiff

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