build 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. #!/bin/bash
  2. usage="build [\"\"|new|uninstall|install|clean|only|genpy [\"\"|dtool|panda|direct|<relative path>] ]"
  3. usage=$(cat <<-EOS
  4. Usage: ./$(basename $0) [ mode [ module [ package ] ] ]
  5. [Be sure to cd to the panda3d directory first.]
  6. mode ""|new|uninstall|install|clean|only|genpy|--help
  7. module ""|dtool|panda|direct|<relative path>
  8. package one of the */src/* directories.
  9. Examples:
  10. ./build new
  11. ./build install
  12. ./build install panda
  13. ./build clean
  14. ./build clean panda
  15. ./build genpy
  16. ./build only panda express
  17. ./build quick panda express
  18. EOS
  19. )
  20. mode=$1
  21. module=$2
  22. base=$(pwd)
  23. wantGenPy=1
  24. #trap "exit" INT
  25. if [ "$mode" == "--help" ]; then
  26. echo "$usage"
  27. exit
  28. fi
  29. echo -e "\nSetting up build environment\n"
  30. if [ -f ./build_env ]; then
  31. source ./build_env || exit
  32. fi
  33. modules="dtool panda pandatool direct $modules"
  34. if [ "$module" != "" ]; then
  35. modules="$module"
  36. fi
  37. case "$mode" in
  38. ( only )
  39. cd $base/$module || exit
  40. ppremake || exit
  41. make uninstall install || exit
  42. modules_ppremake=""
  43. modules_clean=""
  44. modules_uninstall=""
  45. modules_install=""
  46. ;;
  47. ( quick )
  48. cd $base/$module/src/$3 || exit
  49. make || exit
  50. cd $base/$module || exit
  51. make install || exit
  52. wantGenPy=0
  53. modules_ppremake=""
  54. modules_clean=""
  55. modules_uninstall=""
  56. modules_install=""
  57. ;;
  58. ( new )
  59. # ...build the newest version of the code:
  60. echo -e "\nUpdating cvs\n"
  61. cd "$base" || exit
  62. ./cvs_update || exit
  63. cd "$base" || exit
  64. # This next command is allowed to fail (no || exit):
  65. echo -e "\nBuilding tags file\n"
  66. ctags -nR -h '+.I' --langmap='c:+.I' -h '+.T' --langmap='c:+.T' --fields=fmisS
  67. modules_ppremake=$modules
  68. modules_clean="direct $modules_clean"
  69. modules_uninstall=$modules
  70. modules_install=$modules
  71. ;;
  72. ( ppremake )
  73. wantGenPy=0
  74. modules_ppremake=$modules
  75. modules_clean=""
  76. modules_uninstall=""
  77. modules_install=""
  78. ;;
  79. ( clean )
  80. wantGenPy=0
  81. modules_ppremake=$modules
  82. modules_clean=$modules
  83. modules_uninstall=""
  84. modules_install=""
  85. ;;
  86. ( uninstall )
  87. wantGenPy=0
  88. modules_ppremake=$modules
  89. modules_clean=""
  90. modules_uninstall=$modules
  91. modules_install=""
  92. ;;
  93. ( install )
  94. modules_ppremake=$modules
  95. modules_clean=""
  96. modules_uninstall=$modules
  97. modules_install=$modules
  98. ;;
  99. ( "" )
  100. modules_ppremake=$modules
  101. # Some modules are small enough that we clean them for good measure:
  102. modules_clean="direct $modules_clean"
  103. modules_uninstall=$modules
  104. modules_install=$modules
  105. ;;
  106. ( genpy )
  107. wantGenPy=1
  108. modules_ppremake=""
  109. modules_clean=""
  110. modules_uninstall=""
  111. modules_install=""
  112. ;;
  113. ( * )
  114. echo -e "\nThat mode is not recognized ($mode)"
  115. echo "$usage"
  116. exit 1
  117. ;;
  118. esac
  119. echo " modules_ppremake =$modules_ppremake"
  120. echo " modules_clean =$modules_clean"
  121. echo " modules_uninstall =$modules_uninstall"
  122. echo " modules_install =$modules_install"
  123. for i in $modules_ppremake; do
  124. echo -e "\nStarting Ppremake of $i\n"
  125. cd "$base/$i" || exit
  126. ppremake $ppremake_args || exit
  127. done
  128. for i in $modules_clean; do
  129. echo -e "\nStarting Clean of $i\n"
  130. cd "$base/$i" || exit
  131. make clean || exit
  132. done
  133. for i in $modules_uninstall; do
  134. echo -e "\nStarting Uninstall of $i\n"
  135. cd "$base/$i" || exit
  136. make uninstall || exit
  137. done
  138. for i in $modules_install; do
  139. echo -e "\nStarting Install (build) of $i\n"
  140. cd "$base/$i" || exit
  141. make install || exit
  142. done
  143. if (($wantGenPy)); then
  144. # Generate Python code:
  145. echo "Generating Python/C++ interface code"
  146. #cd $base || exit
  147. genPyCode || exit
  148. fi
  149. echo "done"