prepare_developer_tools 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. #!/bin/bash
  2. set -e
  3. CURDIR=$PWD
  4. SCRIPTDIR=$( cd $(dirname $0) ; pwd -P )
  5. SCRIPTNAME=$(basename $0)
  6. AVAILABLE_PROFILES="ivi common mobile"
  7. usage()
  8. {
  9. cat << EOF
  10. usage: $0 [OPTIONS]
  11. Create Qt development tools for certain Tizen profile
  12. OPTIONS:
  13. -h Show this message
  14. -b build architecture
  15. -c use cdn remote server (cdn.download.tizen.org) if available
  16. -d delete gbs repository cache (to download new version of Qt packages)
  17. -e create emulator version (if available)
  18. -f fast - do not recreate sysroot (only Qt cross compiation binaries update)
  19. -l List available profiles and corresponding build architectures
  20. -q qmake executable (default qmake in path)
  21. -p tizen profile
  22. examples:
  23. $0 -b i586 -p common
  24. $0 -b i586 -c -p ivi
  25. $0 -b armv7l -c -p mobile
  26. $0 -b i586 -e -p mobile
  27. $0 -b i586 -e -p -f -c mobile
  28. EOF
  29. exit
  30. }
  31. function load_profile_info() {
  32. source $SCRIPTDIR/$1/profile_include
  33. export PROFILE_DIR=$SCRIPTDIR/$1
  34. if [ "$2" == "1" ]; then
  35. echo -n " emulator available: "
  36. if [ "$AVAILABLE_BUILD_ARCHITECTURES_EMULATOR" == "" ]; then
  37. echo "no"
  38. else
  39. echo " yes"
  40. echo " emulator build architectures: $AVAILABLE_BUILD_ARCHITECTURES_EMULATOR"
  41. fi
  42. echo " profile build architectures: $AVAILABLE_BUILD_ARCHITECTURES"
  43. fi
  44. }
  45. show_profiles_info()
  46. {
  47. echo "Available profiles:"
  48. echo $AVAILABLE_PROFILES | sed "s/ /\n/gi" | sed "s/$/ /gi"
  49. echo ""
  50. echo "Detailed information:"
  51. for profile in $AVAILABLE_PROFILES; do
  52. echo "Profile: $profile"
  53. load_profile_info $profile 1
  54. done
  55. }
  56. validate_parameters() {
  57. if [ "$TIZEN_PROFILE_NAME" == "" ]; then
  58. echo "You need to pick Tizen profile"
  59. usage
  60. fi
  61. if [ "$BUILD_ARCHITECTURE" == "" ]; then
  62. echo "You need to pick build architecture"
  63. usage
  64. fi
  65. if ! `echo " $AVAILABLE_PROFILES " | grep -c " $TIZEN_PROFILE_NAME " &> /dev/null`; then
  66. echo "Profile name: $TIZEN_PROFILE_NAME not recognized"
  67. show_profiles_info
  68. exit 1
  69. fi
  70. load_profile_info $TIZEN_PROFILE_NAME
  71. if [ "$TIZEN_EMULATOR" == "1" ]; then
  72. if ! `echo ",$AVAILABLE_BUILD_ARCHITECTURES_EMULATOR," | grep -c ",$BUILD_ARCHITECTURE," &> /dev/null`; then
  73. echo "Build architecture: $BUILD_ARCHITECTURE not available for $TIZEN_PROFILE_NAME emulator"
  74. show_profiles_info
  75. exit 1
  76. fi
  77. else
  78. if ! `echo ",$AVAILABLE_BUILD_ARCHITECTURES," | grep -c ",$BUILD_ARCHITECTURE," &> /dev/null`; then
  79. echo "Build architecture: $BUILD_ARCHITECTURE not available for $TIZEN_PROFILE_NAME"
  80. show_profiles_info
  81. exit 1
  82. fi
  83. fi
  84. if [ "$QMAKE_EXECUTABLE" == "" ]; then
  85. if ! `type -p qmake &> /dev/null`; then
  86. echo "No qmake in path. Use -q parameter or put qmake in path."
  87. usage
  88. fi
  89. QMAKE_EXECUTABLE=$(type -p qmake)
  90. fi
  91. export QMAKE_EXECUTABLE=$( cd $(dirname $QMAKE_EXECUTABLE) ; pwd -P )/qmake
  92. }
  93. export CDN_PREFIX=""
  94. export TIZEN_EMULATOR="0"
  95. export QMAKE_EXECUTABLE=""
  96. export DELETE_GBS_CACHE="0"
  97. while getopts ":hb:cedflp:q:" opt; do
  98. case $opt in
  99. h)
  100. usage
  101. ;;
  102. b)
  103. export BUILD_ARCHITECTURE="$OPTARG"
  104. ;;
  105. c)
  106. CDN_PREFIX="cdn."
  107. ;;
  108. d)
  109. export DELETE_GBS_CACHE="1"
  110. ;;
  111. e)
  112. export TIZEN_EMULATOR="1"
  113. ;;
  114. f)
  115. export WITHOUT_RECREATING_SYSROOT="1"
  116. ;;
  117. l)
  118. show_profiles_info
  119. exit
  120. ;;
  121. p)
  122. export TIZEN_PROFILE_NAME="$OPTARG"
  123. ;;
  124. q)
  125. export QMAKE_EXECUTABLE="$OPTARG"
  126. ;;
  127. ?)
  128. echo "Invalid option: -$OPTARG"
  129. usage
  130. ;;
  131. esac
  132. done
  133. source $SCRIPTDIR/../common/qt_for_tizen_version
  134. validate_parameters
  135. export QT_DEVICE_MKSPECS=linux-g++-tizen
  136. if [ "$TIZEN_EMULATOR" == "1" ]; then
  137. export GBS_ROOT_DIR=$CURDIR/$TIZEN_PROFILE_NAME/GBS-ROOT-EMULATOR
  138. else
  139. export GBS_ROOT_DIR=$CURDIR/$TIZEN_PROFILE_NAME/GBS-ROOT
  140. fi
  141. export SYSROOT=$GBS_ROOT_DIR/local/BUILD-ROOTS/scratch.$BUILD_ARCHITECTURE.0
  142. export OUTPUT_FILE_NAME=$CURDIR/$TIZEN_PROFILE_NAME/$GBS_PROFILE_NAME.conf
  143. if [ "$CROSS_COMPILER" == "" ]; then
  144. if [ "$BUILD_ARCHITECTURE" == "i586" ]; then
  145. if [ -d $HOME/tizen-sdk/tools/i386-linux-gnueabi-gcc-4.5/bin ]; then
  146. export CROSS_COMPILER=$HOME/tizen-sdk/tools/i386-linux-gnueabi-gcc-4.5/bin/i386-linux-gnueabi-
  147. fi
  148. elif [ "$BUILD_ARCHITECTURE" == "armv7l" ]; then
  149. if [ -d $HOME/tizen-sdk/tools/arm-linux-gnueabi-gcc-4.5/bin ]; then
  150. export CROSS_COMPILER=$HOME/tizen-sdk/tools/arm-linux-gnueabi-gcc-4.5/bin/arm-linux-gnueabi-
  151. fi
  152. elif [ "$BUILD_ARCHITECTURE" == "x86_64" ]; then
  153. if `type gcc &> /dev/null`; then
  154. gcc -v 2>&1| grep -cq "Target: x86_64"
  155. if [ "$?" == "0" ]; then
  156. GCC_PATH=$(type -p gcc)
  157. GCC_DIR=$(dirname $GCC_PATH)
  158. export CROSS_COMPILER=$GCC_DIR/
  159. fi
  160. fi
  161. fi
  162. fi
  163. cat << EOF
  164. Configuration summary:
  165. AVAILABLE_PROFILES: $AVAILABLE_PROFILES
  166. TIZEN_PROFILE_NAME: $TIZEN_PROFILE_NAME
  167. TIZEN_EMULATOR: $TIZEN_EMULATOR
  168. BUILD_ARCHITECTURE: $BUILD_ARCHITECTURE
  169. CROSS_COMPILER: $CROSS_COMPILER
  170. QMAKE_EXECUTABLE: $QMAKE_EXECUTABLE
  171. AVAILABLE_BUILD_ARCHITECTURES: $AVAILABLE_BUILD_ARCHITECTURES
  172. AVAILABLE_BUILD_ARCHITECTURES_EMULATOR: $AVAILABLE_BUILD_ARCHITECTURES_EMULATOR
  173. CDN_PREFIX: $CDN_PREFIX
  174. WITHOUT_RECREATING_SYSROOT: $WITHOUT_RECREATING_SYSROOT
  175. GBS_PROFILE_NAME: $GBS_PROFILE_NAME
  176. BASE_REPO: $BASE_REPO
  177. MAIN_REPO: $MAIN_REPO
  178. QT_REPO: $QT_REPO
  179. GBS_ROOT_DIR: $GBS_ROOT_DIR
  180. QT_DEVICE_MKSPECS: $QT_DEVICE_MKSPECS
  181. GBS_CONF_NAME: $OUTPUT_FILE_NAME
  182. EOF
  183. cd $TIZEN_PROFILE_NAME
  184. if [ "$WITHOUT_RECREATING_SYSROOT" == "" ]; then
  185. $SCRIPTDIR/../common/create_rootstrap.sh
  186. fi
  187. $SCRIPTDIR/../common/create_cross_compilation_env.sh