build 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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. modules_ppremake=$modules
  74. modules_clean=""
  75. modules_uninstall=""
  76. modules_install=""
  77. ;;
  78. ( clean )
  79. modules_ppremake=$modules
  80. modules_clean=$modules
  81. modules_uninstall=""
  82. modules_install=""
  83. ;;
  84. ( uninstall )
  85. modules_ppremake=$modules
  86. modules_clean=""
  87. modules_uninstall=$modules
  88. modules_install=""
  89. ;;
  90. ( install )
  91. modules_ppremake=$modules
  92. modules_clean=""
  93. modules_uninstall=$modules
  94. modules_install=$modules
  95. ;;
  96. ( "" )
  97. modules_ppremake=$modules
  98. # Some modules are small enough that we clean them for good measure:
  99. modules_clean="direct $modules_clean"
  100. modules_uninstall=$modules
  101. modules_install=$modules
  102. ;;
  103. ( genpy )
  104. modules_ppremake=""
  105. modules_clean=""
  106. modules_uninstall=""
  107. modules_install=""
  108. ;;
  109. ( * )
  110. echo -e "\nThat mode is not recognized ($mode)"
  111. echo "$usage"
  112. exit 1
  113. ;;
  114. esac
  115. echo " modules_ppremake =$modules_ppremake"
  116. echo " modules_clean =$modules_clean"
  117. echo " modules_uninstall =$modules_uninstall"
  118. echo " modules_install =$modules_install"
  119. for i in $modules_ppremake; do
  120. echo -e "\nStarting Ppremake of $i\n"
  121. cd "$base/$i" || exit
  122. ppremake || exit
  123. done
  124. for i in $modules_clean; do
  125. echo -e "\nStarting Clean of $i\n"
  126. cd "$base/$i" || exit
  127. make clean || exit
  128. done
  129. for i in $modules_uninstall; do
  130. echo -e "\nStarting Uninstall of $i\n"
  131. cd "$base/$i" || exit
  132. make uninstall || exit
  133. done
  134. for i in $modules_install; do
  135. echo -e "\nStarting Install (build) of $i\n"
  136. cd "$base/$i" || exit
  137. make install || exit
  138. done
  139. if (($wantGenPy)); then
  140. # Generate Python code:
  141. echo "Generating Python/C++ interface code"
  142. #cd $base || exit
  143. genPyCode || exit
  144. fi
  145. echo "done"