From: Jean Privat Date: Thu, 13 Nov 2008 22:40:57 +0000 (-0500) Subject: new devel tool: mkcsrc X-Git-Url: http://nitlanguage.org?ds=sidebyside new devel tool: mkcsrc mkcsrc is used to generate a new c_src/ directory from a nitc executable generated in src/ --- diff --git a/src/mkcsrc b/src/mkcsrc new file mode 100755 index 0000000..ba3a198 --- /dev/null +++ b/src/mkcsrc @@ -0,0 +1,57 @@ +#!/bin/sh +# This file is part of NIT ( http://www.nitlanguage.org ). +# +# Copyright 2008 Jean Privat +# +# 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 +