example: intro an emscripten wrapper around fibonacci
[nit.git] / src / mkcsrc
index ba3a198..a408697 100755 (executable)
@@ -1,57 +1,23 @@
-#!/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.
+#!/bin/bash
+cd ..
+out=c_src
+rm -r "$out/" 2> /dev/null
+set -e
+set -x
+src/nitg src/nith.nit --semi-global -v "$@" --compile-dir "$out" -o "$out/nitg" --no-cc
+cp "$out/nith.mk" "$out/Makefile"
+sed -i -e "s#../$out/##g" "$out/Makefile"
 
-# 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
+# Copy all direct dependencies
+for f in `grep -h -o '[^ ]*/[^ /]*\.c' "$out/Makefile" | sort -u`; do
+       cp "$out/$f" "$out/"
+       cp "$out/${f%c}h" "$out/"
+done
+for f in `grep -h -o '\.\..*\.h' "$out"/*.[ch] | sort -u`; do
+       cp "$out/$f" "$out/"
 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
 
+# Update references in file
+perl -i -npe 's#"\.\./.*?([^/]*.h)"#"\1"#' "$out"/*.[ch]
+perl -i -npe 's#\S*/([^/]*.[ch])#\1#' "$out/Makefile"
+perl -i -npe 's#\.\./clib#.#' "$out/Makefile"