Ancurio

mkxp mingw build.sh

Feb 28th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.78 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. source ../sources.def
  4.  
  5. AR=(
  6.   libmsvcrt-ruby210-static.a
  7.   libSDL2main.a
  8.   libSDL2_image.a
  9.   libSDL_sound.a
  10.   libSDL2_ttf.a
  11.   libfreetype.a
  12.   libpng16.a
  13.   libjpeg.a
  14.   libvorbisfile.a
  15.   libvorbis.a
  16.   libogg.a
  17.   libz.a
  18.   libphysfs.a
  19.   libpixman-1.a
  20.   libsigc-2.0.a
  21.   libSDL2.a
  22.   libOpenAL32.a
  23. #  libwebp.a
  24.   libmodplug.a
  25. )
  26.  
  27. MINGW_AR=(
  28.   libboost_program_options.a
  29.   libiconv.a
  30. )
  31.  
  32. AR_FILES=()
  33. for ar in ${AR[*]}
  34. do
  35.     AR_FILES+=("../deps-win32/lib/${ar}")
  36. done
  37.  
  38. for ar in ${MINGW_AR[*]}
  39. do
  40.     AR_FILES+=("/usr/i686-w64-mingw32/sys-root/mingw/lib/${ar}")
  41. done
  42.  
  43. BOOST_I=/usr/i686-w64-mingw32/sys-root/mingw/include
  44.  
  45. PKGS=(sigc++-2.0 pixman-1 zlib physfs vorbisfile
  46.       sdl2 SDL2_image SDL2_ttf SDL_sound openal)
  47.      
  48. source ../deps-win32/src/build_env
  49.      
  50. CXX=i686-w64-mingw32-g++
  51. STRIP=i686-w64-mingw32-strip
  52.  
  53. CFLAGS=$(pkg-config --cflags ${PKGS[*]})
  54. CFLAGS+=" -I${BOOST_I}"
  55. CFLAGS+=" -pipe -O2"
  56.  
  57. RUBY_CFLAGS=$(pkg-config --cflags ruby-2.1)
  58.  
  59.  
  60. OPENAL_LDFLAGS=$(pkg-config --libs openal)
  61. LDFLAGS="-lwinmm -lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi -Wl,--no-undefined -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -static -lpthread"
  62.  
  63. OBJECTS=()
  64.  
  65. ARG_DESC=(
  66.   "--link-only" "LINK_ONLY"
  67.   "--debug"     "DEBUG"
  68. )
  69.  
  70. # Init option vars to false
  71. for (( i=0; i<$((${#ARG_DESC[@]}/2)); i++ )); do
  72.     arg_var=${ARG_DESC[$((i*2+1))]}
  73.     declare $arg_var=false
  74. done
  75.  
  76. # Parse args
  77. for arg in $@; do
  78.     for (( i=0; i<$((${#ARG_DESC[@]}/2)); i++ )); do
  79.         if [ ${arg} == ${ARG_DESC[$((i*2))]} ]; then
  80.             arg_var=${ARG_DESC[$((i*2+1))]}
  81.             declare $arg_var=true
  82.         fi
  83.     done
  84. done
  85.  
  86. if [ $DEBUG == true ]; then
  87.     CFLAGS+=" -g"
  88. fi
  89.  
  90. BUILD_DIR=`pwd`
  91. cd ..
  92. for embed in ${EMBED[*]}
  93. do
  94.     file="${embed}"
  95.     base=$(basename $file)
  96.     out="${BUILD_DIR}/${base}.xxd"
  97.  
  98.     if [ $LINK_ONLY == false ]; then
  99.         echo "Generating ${out}"
  100.         xxd -i $file > "${out}"
  101.     fi
  102. done
  103. cd -
  104.  
  105. for src in ${SOURCES[*]}
  106. do
  107.     file="../${src}"
  108.     base=$(basename --suffix=.cpp $src)
  109.     out="${base}.o"
  110.     OBJECTS+=" ${out}"
  111.    
  112.     if [ $LINK_ONLY == false ]; then
  113.         echo "Compiling ${out}"
  114.         $CXX -c -o $out $file -I. -I../src $CFLAGS
  115.     fi
  116. done
  117.  
  118. for src in ${MRI_SOURCES[*]}
  119. do
  120.     file="../${src}"
  121.     base=$(basename --suffix=.cpp $src)
  122.     out="${base}.o"
  123.     OBJECTS+=" ${out}"
  124.    
  125.     if [ $LINK_ONLY == false ]; then
  126.         echo "Compiling ${out}"
  127.         $CXX -c -o $out $file -I. -I../src -I../binding-mri $CFLAGS $RUBY_CFLAGS
  128.     fi
  129. done
  130.  
  131. function link_exe {
  132.     EXE_F="${1}.exe"
  133.     echo "Linking ${EXE_F}"
  134.     $CXX -o $EXE_F ${OBJECTS[*]} -lmingw32 -static-libgcc -static-libstdc++ ${AR_FILES[*]} $LDFLAGS $2
  135.     if [ $DEBUG == false ]; then
  136.         $STRIP -s $EXE_F
  137.     fi
  138. }
  139.  
  140. link_exe mkxp -mwindows &
  141. link_exe mkxp-console
Advertisement
Add Comment
Please, Sign In to add comment