#!/usr/bin/perl use strict; print <<EOL; /** * !!NOTICE!! * This file was automatically generated by mkloader.pl, and includes all of * the prelude files required by Picrin. PLEASE DO NOT EDIT THIS FILE, changes * will be overwritten the next time the script runs. */ #include "picrin.h" #include "picrin/error.h" EOL foreach my $file (@ARGV) { my $var = &escape_v($file); print "static const char *$var =\n"; open IN, $file; while (<IN>) { chomp; s/\\/\\\\/g; s/"/\\"/g; print "\"$_\\n\"\n"; } print ";\n\n"; } close IN; print <<EOL; void pic_load_piclib(pic_state *pic) { pic_try { EOL foreach my $file (@ARGV) { my $var = &escape_v($file); print " pic_load_cstr(pic, $var);\n"; } print <<EOL; } pic_catch { /* error! */ fputs("fatal error: failure in loading built-in.scm\\n", stderr); fputs(pic_errmsg(pic), stderr); abort(); } #if DEBUG puts("successfully loaded stdlib"); #endif } EOL sub escape_v { ($_) = @_; s/\.scm$//g; s/[^[A-Za-z0-9_]/_/g; "piclib_src_" . $_; }