compress.sh 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. #!/bin/bash
  2. if [ "$#" -eq 0 ]
  3. then
  4. USAGE="Usage:
  5. scripts/compress.sh igl.h igl.cpp
  6. Compresses all headers into igl.h and all sources into igl.cpp
  7. Or:
  8. scripts/compress.sh igl.h
  9. Compresses all headers *and* sources into igl.h (IGL_HEADER_ONLY)
  10. ";
  11. echo "$USAGE"
  12. exit 1
  13. fi
  14. #while getopts "I:" opt; do
  15. # case $opt in
  16. # I)
  17. # LIBIGL_INCLUDE=$OPTARG
  18. # ;;
  19. # \?)
  20. # echo "Invalid option: -$OPTARG"
  21. # ;;
  22. # esac
  23. #done
  24. #shift $((OPTIND-1))
  25. if [ "$#" -eq 1 ]
  26. then
  27. H_OUT=$1
  28. CPP_OUT=$H_OUT
  29. fi
  30. if [ "$#" -eq 2 ]
  31. then
  32. H_OUT=$1
  33. CPP_OUT=$2
  34. fi
  35. # Prepare output files
  36. #H_OUT=igl.h
  37. #CPP_OUT=igl.cpp
  38. rm -f $H_OUT
  39. rm -f $CPP_OUT
  40. HEADER="
  41. Automatically generated by libigl/scripts/compress.sh **Do not edit**
  42. libigl - A simple c++ geometry processing library
  43. http://igl.ethz.ch/projects/libigl/
  44. Copyright (C) 2013 - Alec Jacobson, Daniele Panozzo, Olga Diamanti, Kenshi
  45. Takayama, Leo Sacht, Interactive Geometry Lab - ETH Zurich
  46. This Source Code Form is subject to the terms of the Mozilla Public License
  47. v. 2.0. If a copy of the MPL was not distributed with this file, You can
  48. obtain one at http://mozilla.org/MPL/2.0/.
  49. `cat $LIBIGL/VERSION.txt | sed -ne "s/^\([^\#]\)/VERSION \1/p"`
  50. Compressed on `date`
  51. "
  52. echo "$HEADER" | sed -e "s/^/\/\/ /" >> $H_OUT
  53. WIDGET_OPEN="
  54. #ifndef IGL_HEADER_ONLY
  55. # define IGL_HEADER_ONLY
  56. # define IGL_HEADER_ONLY_WAS_NOT_DEFINED
  57. #endif
  58. ";
  59. WIDGET_CLOSE="
  60. #ifdef IGL_HEADER_ONLY_WAS_NOT_DEFINED
  61. # undef IGL_HEADER_ONLY
  62. #endif
  63. ";
  64. # No cpp file, just header
  65. if [ $H_OUT == $CPP_OUT ]
  66. then
  67. echo "$WIDGET_OPEN" >> $H_OUT
  68. fi
  69. echo "" >> $H_OUT
  70. echo "#ifndef IGL_H" >> $H_OUT
  71. echo "#define IGL_H" >> $H_OUT
  72. LIBIGL=/usr/local/igl/libigl
  73. FIRST_H_FILES="\
  74. $LIBIGL/include/igl/igl_inline.h \
  75. ";
  76. H_FILES="$FIRST_H_FILES `ls $LIBIGL/include/igl/*.h`"
  77. for h in $H_FILES
  78. do
  79. short=`echo $h | sed -e 's/.*igl\///'`
  80. echo "//////////////////////////////////////////////////////////////////" >> $H_OUT
  81. echo "// $short begin" >> $H_OUT
  82. echo "//" >> $H_OUT
  83. # Remove "local" header or cpp files
  84. cat $h | sed -E '/^\# *include *"*[A-z_]*.(cpp|h)"/d' >> $H_OUT
  85. echo "//" >> $H_OUT
  86. echo "// $short end" >> $H_OUT
  87. echo "//////////////////////////////////////////////////////////////////" >> $H_OUT
  88. echo "" >> $H_OUT
  89. done
  90. echo "#endif" >> $H_OUT
  91. # Distinct h and cpp files
  92. if [ $H_OUT != $CPP_OUT ]
  93. then
  94. echo "$HEADER" | sed -e "s/^/\/\/ /" >> $CPP_OUT
  95. echo "#include \"igl.h\"" >> $CPP_OUT
  96. echo "" >> $CPP_OUT
  97. fi
  98. LAST_CPP_FILES="\
  99. $LIBIGL/include/igl/MCTables.hh \
  100. ";
  101. CPP_FILES=`ls $LIBIGL/include/igl/*.cpp $LAST_CPP_FILES`
  102. for cpp in $CPP_FILES
  103. do
  104. short=`echo $cpp | sed -e 's/.*igl\///'`
  105. echo "//////////////////////////////////////////////////////////////////" >> $CPP_OUT
  106. echo "// $short begin" >> $CPP_OUT
  107. echo "//" >> $CPP_OUT
  108. # Remove "local" header or cpp files
  109. cat $cpp | sed -E '/^\# *include *"*[A-z_]*.(cpp|h)"/d' >> $CPP_OUT
  110. echo "//" >> $CPP_OUT
  111. echo "// $short end" >> $CPP_OUT
  112. echo "//////////////////////////////////////////////////////////////////" >> $CPP_OUT
  113. echo "" >> $CPP_OUT
  114. done
  115. # No cpp file, just header
  116. if [ $H_OUT == $CPP_OUT ]
  117. then
  118. echo "$WIDGET_CLOSE" >> $CPP_OUT
  119. fi
  120. # Try to compile it
  121. echo "Compile with:"
  122. echo ""
  123. echo " g++ -o igl.o -c igl.cpp -I/opt/local/include/eigen3"
  124. echo " rm -f libigl.a"
  125. echo " ar cqs libigl.a igl.o"
  126. echo " rm igl.o"
  127. echo ""