new devel tool: mkcsrc
authorJean Privat <jean@pryen.org>
Thu, 13 Nov 2008 22:40:57 +0000 (17:40 -0500)
committerJean Privat <jean@pryen.org>
Thu, 13 Nov 2008 22:40:57 +0000 (17:40 -0500)
mkcsrc is used to generate a new c_src/ directory from a nitc executable
generated in src/

src/mkcsrc [new file with mode: 0755]

diff --git a/src/mkcsrc b/src/mkcsrc
new file mode 100755 (executable)
index 0000000..ba3a198
--- /dev/null
@@ -0,0 +1,57 @@
+#!/bin/sh
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2008 Jean Privat <jean@pryen.org>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# NAME
+#      mkcsrc - generate a new c_src directory from a current nitc bootstrap
+# SYNOPSIS
+#      ./mkcsrc [number]
+# DESCRIPTION
+#      transform a bootstrap result (generated by the nc tool) into a new
+#      c_src in the current directory (previous one will be errased).
+#      One c_src generated, you can replace the old one in the root.
+#      Before commiting, do not forget to:
+#       * 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
+
+# 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!'`
+       if [ "x$p" = "x" ]; then
+               echo "No generated nitc"
+               exit 1
+       fi
+       echo "Lastest generated nitc uses prefix $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
+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 
+chmod +x c_src/nitc._build.sh
+cp ../c_src/Makefile ../c_src/README c_src
+