provide nitc as a wrapper to nitg
[nit.git] / src / mkcsrc
index ba3a198..7be3152 100755 (executable)
 #       * verify any regression
 #       * add/remove files in c_src
 # OPTION
-#      number is the bootstrap level (prefix) to use. It correspond to the nc
-#      level.  By default, the lastest generated nitc is used
+#      number is the bootstrap level to use.  It corresponds to the nc
+#      level.  By default, the lastest generated nitc is used.
 
 # prefix
 p=$1
 
 if [ "x$p" = "x" ]; then
-       p=`ls .nit_compile/nitc*.sh -t | head -1 | sed 's!\.nit_compile/nitc\.\(.*\)_build\.sh!\1!'`
+       p=`ls .nit_compile*/nitc._build.sh -t | head -1 | sed 's!\.nit_compile\(.*\)/nitc\._build\.sh!\1!'`
        if [ "x$p" = "x" ]; then
                echo "No generated nitc"
                exit 1
        fi
-       echo "Lastest generated nitc uses prefix $p"
+       echo "Lastest generated nitc is bootstrap level $p"
 fi
 
 rm -r c_src 2> /dev/null
 mkdir c_src
 
-sed -n "s|.nit_compile/\\(.*\\).${p}_sep.c.*|\\1|p" .nit_compile/nitc.${p}_build.sh | while read -r file; do
-       echo "* $file"
-       sed "/include/s/.${p}_/._/" ".nit_compile/$file.${p}_sep.c" > c_src/${file}._sep.c
-       sed "/include/s/.${p}_/._/" ".nit_compile/$file.${p}_sep.h" > c_src/${file}._sep.h
+# Copy sources
+sed -n '/^  /{s!\\$!!;p}' .nit_compile${p}/nitc._build.sh | while read -r file; do
+       [ -f $file ] || continue
+       cp $file c_src
+       [ -r ${file%.c}.h ] && cp ${file%.c}.h c_src
+       # Copy included files
+       sed -ne 's|^#include "\(.*\)".*|\1|p' $file | while read -r subfile; do
+               cp "$(dirname "$file")/$subfile" c_src
+       done
 done
-sed "/include/s/.${p}_/._/" .nit_compile/nitc.${p}_tables.c > c_src/nitc._tables.c
-sed "s|.nit_compile|.|g;s|../bin/../|../|g;s/.${p}_/._/g;s|nitc_${p}|nitc|" .nit_compile/nitc.${p}_build.sh > c_src/nitc._build.sh 
+sed -i -e 's|include ".*/|include "|' c_src/*[ch] # Cleanup includes
+
+# Prepare the build script
+cp .nit_compile${p}/nitc._build.sh c_src/nitc._build.sh
 chmod +x c_src/nitc._build.sh
-cp ../c_src/Makefile ../c_src/README c_src
+sed -i -e "s|^  [^$].*/|  |g" c_src/nitc._build.sh # Cleanup file paths
+sed -i -e "s|.nit_compile${p}|.|g" c_src/nitc._build.sh # Cleanup remaining work dirs
+sed -i -e "s|nitc_${p}|nitc|" c_src/nitc._build.sh # Cleanup exec name
+sed -i -e 's/^CLIBDIR=.*/CLIBDIR="clib"/' c_src/nitc._build.sh # Cleanup CLIB PATH
+
+# Copy remaining files
+cp -r ../c_src/Makefile ../c_src/README ../clib c_src