compress.sh 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  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 2013 - Alec Jacobson, Daniele Panozzo, Olga Diamanti, Kenshi
  45. Takayama, Leo Sacht, Interactive Geometry Lab - ETH Zurich
  46. `cat $LIBIGL/VERSION.txt | sed -ne "s/^\([^\#]\)/VERSION \1/p"`
  47. Compressed on `date`
  48. "
  49. echo "$HEADER" | sed -e "s/^/\/\/ /" >> $H_OUT
  50. WIDGET_OPEN="
  51. #ifndef IGL_HEADER_ONLY
  52. # define IGL_HEADER_ONLY
  53. # define IGL_HEADER_ONLY_WAS_NOT_DEFINED
  54. #endif
  55. ";
  56. WIDGET_CLOSE="
  57. #ifdef IGL_HEADER_ONLY_WAS_NOT_DEFINED
  58. # undef IGL_HEADER_ONLY
  59. #endif
  60. ";
  61. # No cpp file, just header
  62. if [ $H_OUT == $CPP_OUT ]
  63. then
  64. echo "$WIDGET_OPEN" >> $H_OUT
  65. fi
  66. echo "" >> $H_OUT
  67. echo "#ifndef IGL_H" >> $H_OUT
  68. echo "#define IGL_H" >> $H_OUT
  69. LIBIGL=/usr/local/igl/libigl
  70. FIRST_H_FILES="\
  71. $LIBIGL/include/igl/igl_inline.h \
  72. ";
  73. H_FILES="$FIRST_H_FILES `ls $LIBIGL/include/igl/*.h`"
  74. for h in $H_FILES
  75. do
  76. short=`echo $h | sed -e 's/.*igl\///'`
  77. echo "//////////////////////////////////////////////////////////////////" >> $H_OUT
  78. echo "// $short begin" >> $H_OUT
  79. echo "//" >> $H_OUT
  80. # Remove "local" header or cpp files
  81. cat $h | sed -E '/^\# *include *"*[A-z_]*.(cpp|h)"/d' >> $H_OUT
  82. echo "//" >> $H_OUT
  83. echo "// $short end" >> $H_OUT
  84. echo "//////////////////////////////////////////////////////////////////" >> $H_OUT
  85. echo "" >> $H_OUT
  86. done
  87. echo "#endif" >> $H_OUT
  88. # Distinct h and cpp files
  89. if [ $H_OUT != $CPP_OUT ]
  90. then
  91. echo "$HEADER" | sed -e "s/^/\/\/ /" >> $CPP_OUT
  92. echo "#include \"igl.h\"" >> $CPP_OUT
  93. echo "" >> $CPP_OUT
  94. fi
  95. LAST_CPP_FILES="\
  96. $LIBIGL/include/igl/MCTables.hh \
  97. ";
  98. CPP_FILES=`ls $LIBIGL/include/igl/*.cpp $LAST_CPP_FILES`
  99. for cpp in $CPP_FILES
  100. do
  101. short=`echo $cpp | sed -e 's/.*igl\///'`
  102. echo "//////////////////////////////////////////////////////////////////" >> $CPP_OUT
  103. echo "// $short begin" >> $CPP_OUT
  104. echo "//" >> $CPP_OUT
  105. # Remove "local" header or cpp files
  106. cat $cpp | sed -E '/^\# *include *"*[A-z_]*.(cpp|h)"/d' >> $CPP_OUT
  107. echo "//" >> $CPP_OUT
  108. echo "// $short end" >> $CPP_OUT
  109. echo "//////////////////////////////////////////////////////////////////" >> $CPP_OUT
  110. echo "" >> $CPP_OUT
  111. done
  112. # No cpp file, just header
  113. if [ $H_OUT == $CPP_OUT ]
  114. then
  115. echo "$WIDGET_CLOSE" >> $CPP_OUT
  116. fi
  117. # Try to compile it
  118. echo "Compile with:"
  119. echo ""
  120. echo " g++ -o igl.o -c igl.cpp -I/opt/local/include/eigen3"
  121. echo " rm -f libigl.a"
  122. echo " ar cqs libigl.a igl.o"
  123. echo " rm igl.o"
  124. echo ""