Advertisement
Ancurio

build.sh

Apr 20th, 2015
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.84 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. source ../../sources.def
  4. source /path/to/build_env
  5.  
  6. STATIC_LIBS=(
  7.     ruby-static
  8.     SDL2main
  9.     SDL2_image
  10.     SDL_sound
  11.     SDL2_ttf
  12.     freetype
  13.     png16
  14.     jpeg
  15.     vorbisfile
  16.     vorbis
  17.     ogg
  18. #   z
  19.     physfs
  20.     pixman-1
  21.     sigc-2.0
  22.     SDL2
  23.     openal
  24.     boost_program_options
  25. #   fluidsynth
  26. )
  27.  
  28.  
  29. LIBS_l=()
  30. SED_LIB_REGEX=""
  31. for l in ${STATIC_LIBS[*]}
  32. do
  33.     ld_com="-l${l}"
  34.     LIBS_l+=($ld_com)
  35.     SED_LIB_REGEX+="|-l${l}"
  36. done
  37.  
  38. SED_LIB_CMD="sed -r s/$SED_LIB_REGEX|-lruby//g"
  39.  
  40. PKGS=(sigc++-2.0 pixman-1 zlib physfs vorbisfile
  41.       sdl2 SDL2_image SDL2_ttf SDL_sound openal)
  42.  
  43. CC="ccache $HOST-gcc"
  44. CXX="ccache $HOST-g++"
  45. STRIP=$HOST-strip
  46.  
  47. CFLAGS=$(pkg-config --cflags ${PKGS[*]})
  48. CFLAGS+=" -pipe -DGLES2_HEADER"
  49.  
  50. RUBY_CFLAGS=$(pkg-config --cflags ruby-2.1)
  51.  
  52.  
  53. LD_UNDEF="-Wl,--undefined=SDL_main_sym"
  54.  
  55. DYN_LIBS=$(pkg-config --libs --static ${PKGS[*]} ruby-2.1)
  56. DYN_LIBS+=" -lOpenSLES"
  57. DYN_LIBS=$(echo "${DYN_LIBS}" | $SED_LIB_CMD)
  58.  
  59. LDFLAGS="-Wl,-Bdynamic ${DYN_LIBS} -Wl,-Bstatic ${LIBS_l[*]} -Wl,-Bdynamic"
  60.  
  61. echo $LDFLAGS
  62. #exit
  63.  
  64. OBJECTS=()
  65.  
  66. ARG_DESC=(
  67.   "--link-only" "LINK_ONLY"
  68.   "--debug"     "DEBUG"
  69.   "--no-strip"  "NO_STRIP"
  70. )
  71.  
  72. # Init option vars to false
  73. for (( i=0; i<$((${#ARG_DESC[@]}/2)); i++ )); do
  74.     arg_var=${ARG_DESC[$((i*2+1))]}
  75.     declare $arg_var=false
  76. done
  77.  
  78. # Parse args
  79. for arg in $@; do
  80.     for (( i=0; i<$((${#ARG_DESC[@]}/2)); i++ )); do
  81.         if [ ${arg} == ${ARG_DESC[$((i*2))]} ]; then
  82.             arg_var=${ARG_DESC[$((i*2+1))]}
  83.             declare $arg_var=true
  84.         fi
  85.     done
  86. done
  87.  
  88. if [ $DEBUG == true ]; then
  89.     CFLAGS+=" -g"
  90. else
  91.     CFLAGS+=" -O2 -DNDEBUG"
  92. fi
  93.  
  94. function check_success {
  95.     if [ $? -ne 0 ]; then
  96.         exit
  97.     fi
  98. }
  99.  
  100. BUILD_DIR=`pwd`
  101. cd ../..
  102. for embed in ${EMBED[*]}
  103. do
  104.     file="${embed}"
  105.     base=$(basename $file)
  106.     out="${BUILD_DIR}/${base}.xxd"
  107.  
  108.     if [ $LINK_ONLY == false ]; then
  109.         echo "Generating ${out}"
  110.         xxd -i $file > "${out}"
  111.         check_success
  112.     fi
  113. done
  114. cd -
  115.  
  116. for src in ${SOURCES[*]}
  117. do
  118.     file="../../${src}"
  119.     base=$(basename --suffix=.cpp $src)
  120.     out="${base}.o"
  121.     OBJECTS+=" ${out}"
  122.    
  123.     if [ $LINK_ONLY == false ]; then
  124.         echo "Compiling ${out}"
  125.         $CXX -c -o $out $file -I. -I../../src $CFLAGS
  126.         check_success
  127.     fi
  128. done
  129.  
  130. for src in ${MRI_SOURCES[*]}
  131. do
  132.     file="../../${src}"
  133.     base=$(basename --suffix=.cpp $src)
  134.     out="${base}.o"
  135.     OBJECTS+=" ${out}"
  136.    
  137.     if [ $LINK_ONLY == false ]; then
  138.         echo "Compiling ${out}"
  139.         $CXX -c -o $out $file -I. -I../../src -I../../binding-mri $CFLAGS $RUBY_CFLAGS
  140.         check_success
  141.     fi
  142. done
  143.  
  144. function link_so {
  145.     SO_F="lib${1}.so"
  146.     echo "Linking ${SO_F}"
  147.     $CXX $CFLAGS -shared -Wl,-soname="${SO_F}" -o $SO_F ${OBJECTS[*]} $LDFLAGS $2
  148.     check_success
  149.     if [ $DEBUG == false  -a  $NO_STRIP == false ]; then
  150.         echo "Stripping ${SO_F}"
  151.         $STRIP -s $SO_F
  152.     fi
  153. }
  154.  
  155. link_so mkxp
  156.  
  157. echo "Installing libmkxp.so"
  158. cp libmkxp.so ../android-project/libs/armeabi-v7a/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement