#!/bin/sh
# Helper script to cross-compile Windows/MinGW distribution.
# Since Windows doesn't understand shebang magic, we make the gauche
# scripts (e.g. gauche-install) to exe files.
#
# $Id: mingw-exify,v 1.2 2007-01-08 09:42:48 shirok Exp $

target=$1

cat <<EOF
#include "gauche.h"

static const char* script = "\\n"
EOF

sed -e 's@\\@\\\\@g' -e 's@"@\\"@g' -e 's@^.*$@"&\\n"@g' $1

cat <<EOF
;

int main(int argc, char **argv)
{
    ScmObj args, progstr, progport, mainproc;

    Scm_Init(GAUCHE_SIGNATURE);
    Scm_Load("gauche-init.scm", 0, NULL);
    args = Scm_CStringArrayToList((const char*)argv, argc, SCM_STRING_COPYING);
    SCM_DEFINE(Scm_UserModule(), "*argv*", SCM_CDR(args));
    SCM_DEFINE(Scm_UserModule(), "*program-name*", SCM_CAR(args));
    progstr = SCM_MAKE_STR(script);
    progport = Scm_MakeInputStringPort(SCM_STRING(progstr), TRUE);
    Scm_LoadFromPort(SCM_PORT(progport), 0, NULL);
    mainproc = Scm_SymbolValue(Scm_UserModule(), SCM_SYMBOL(SCM_INTERN("main")));
    if (SCM_PROCEDUREP(mainproc)) {
        ScmObj r = Scm_ApplyRec(mainproc, SCM_LIST1(args));
        if (SCM_INTP(r)) Scm_Exit(SCM_INT_VALUE(r));
        else Scm_Exit(70);
    }
    Scm_Exit(0);
}
EOF
