(svn r15578) -Change: unexternalise squirrel.
This commit is contained in:
24
src/3rdparty/squirrel/sq/Makefile
vendored
Normal file
24
src/3rdparty/squirrel/sq/Makefile
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
SQUIRREL= ..
|
||||
|
||||
|
||||
OUT= $(SQUIRREL)/bin/sq
|
||||
INCZ= -I$(SQUIRREL)/include -I. -I$(SQUIRREL)/sqlibs
|
||||
LIBZ= -L$(SQUIRREL)/lib
|
||||
LIB= -lsquirrel -lsqstdlib
|
||||
|
||||
OBJS= sq.o
|
||||
|
||||
SRCS= sq.c
|
||||
|
||||
|
||||
sq32:
|
||||
g++ -O2 -fno-rtti -o $(OUT) $(SRCS) $(INCZ) $(LIBZ) $(LIB)
|
||||
|
||||
sqprof:
|
||||
g++ -O2 -pg -fno-rtti -pie -gstabs -g3 -o $(OUT) $(SRCS) $(INCZ) $(LIBZ) $(LIB)
|
||||
|
||||
sq64:
|
||||
g++ -O2 -fno-rtti -D_SQ64 -o $(OUT) $(SRCS) $(INCZ) $(LIBZ) $(LIB)
|
||||
|
||||
clean:
|
||||
rm -f $(OUT)
|
||||
321
src/3rdparty/squirrel/sq/sq.c
vendored
Normal file
321
src/3rdparty/squirrel/sq/sq.c
vendored
Normal file
@@ -0,0 +1,321 @@
|
||||
/* see copyright notice in squirrel.h */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#if defined(_MSC_VER) && defined(_DEBUG)
|
||||
#include <crtdbg.h>
|
||||
#include <conio.h>
|
||||
#endif
|
||||
#include <squirrel.h>
|
||||
#include <sqstdblob.h>
|
||||
#include <sqstdsystem.h>
|
||||
#include <sqstdio.h>
|
||||
#include <sqstdmath.h>
|
||||
#include <sqstdstring.h>
|
||||
#include <sqstdaux.h>
|
||||
|
||||
#ifdef SQUNICODE
|
||||
#define scfprintf fwprintf
|
||||
#define scfopen _wfopen
|
||||
#define scvprintf vwprintf
|
||||
#else
|
||||
#define scfprintf fprintf
|
||||
#define scfopen fopen
|
||||
#define scvprintf vprintf
|
||||
#endif
|
||||
|
||||
|
||||
void PrintVersionInfos();
|
||||
|
||||
#if defined(_MSC_VER) && defined(_DEBUG)
|
||||
int MemAllocHook( int allocType, void *userData, size_t size, int blockType,
|
||||
long requestNumber, const unsigned char *filename, int lineNumber)
|
||||
{
|
||||
// if(requestNumber==585)_asm int 3;
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
SQInteger quit(HSQUIRRELVM v)
|
||||
{
|
||||
int *done;
|
||||
sq_getuserpointer(v,-1,(SQUserPointer*)&done);
|
||||
*done=1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void printfunc(HSQUIRRELVM v,const SQChar *s,...)
|
||||
{
|
||||
va_list vl;
|
||||
va_start(vl, s);
|
||||
scvprintf( s, vl);
|
||||
va_end(vl);
|
||||
}
|
||||
|
||||
void PrintVersionInfos()
|
||||
{
|
||||
scfprintf(stdout,_SC("%s %s (%d bits)\n"),SQUIRREL_VERSION,SQUIRREL_COPYRIGHT,sizeof(SQInteger)*8);
|
||||
}
|
||||
|
||||
void PrintUsage()
|
||||
{
|
||||
scfprintf(stderr,_SC("usage: sq <options> <scriptpath [args]>.\n")
|
||||
_SC("Available options are:\n")
|
||||
_SC(" -c compiles the file to bytecode(default output 'out.cnut')\n")
|
||||
_SC(" -o specifies output file for the -c option\n")
|
||||
_SC(" -c compiles only\n")
|
||||
_SC(" -d generates debug infos\n")
|
||||
_SC(" -v displays version infos\n")
|
||||
_SC(" -h prints help\n"));
|
||||
}
|
||||
|
||||
#define _INTERACTIVE 0
|
||||
#define _DONE 2
|
||||
//<<FIXME>> this func is a mess
|
||||
int getargs(HSQUIRRELVM v,int argc, char* argv[])
|
||||
{
|
||||
int i;
|
||||
int compiles_only = 0;
|
||||
static SQChar temp[500];
|
||||
const SQChar *ret=NULL;
|
||||
char * output = NULL;
|
||||
int lineinfo=0;
|
||||
if(argc>1)
|
||||
{
|
||||
int arg=1,exitloop=0;
|
||||
while(arg < argc && !exitloop)
|
||||
{
|
||||
|
||||
if(argv[arg][0]=='-')
|
||||
{
|
||||
switch(argv[arg][1])
|
||||
{
|
||||
case 'd': //DEBUG(debug infos)
|
||||
sq_enabledebuginfo(v,1);
|
||||
break;
|
||||
case 'c':
|
||||
compiles_only = 1;
|
||||
break;
|
||||
case 'o':
|
||||
if(arg < argc) {
|
||||
arg++;
|
||||
output = argv[arg];
|
||||
}
|
||||
break;
|
||||
case 'v':
|
||||
PrintVersionInfos();
|
||||
return _DONE;
|
||||
|
||||
case 'h':
|
||||
PrintVersionInfos();
|
||||
PrintUsage();
|
||||
return _DONE;
|
||||
default:
|
||||
PrintVersionInfos();
|
||||
scprintf(_SC("unknown prameter '-%c'\n"),argv[arg][1]);
|
||||
PrintUsage();
|
||||
return _DONE;
|
||||
}
|
||||
}else break;
|
||||
arg++;
|
||||
}
|
||||
|
||||
// src file
|
||||
|
||||
if(arg<argc) {
|
||||
const SQChar *filename=NULL;
|
||||
#ifdef SQUNICODE
|
||||
mbstowcs(temp,argv[arg],strlen(argv[arg]));
|
||||
filename=temp;
|
||||
#else
|
||||
filename=argv[arg];
|
||||
#endif
|
||||
|
||||
arg++;
|
||||
sq_pushroottable(v);
|
||||
sq_pushstring(v,_SC("ARGS"),-1);
|
||||
sq_newarray(v,0);
|
||||
for(i=arg;i<argc;i++)
|
||||
{
|
||||
const SQChar *a;
|
||||
#ifdef SQUNICODE
|
||||
int alen=(int)strlen(argv[i]);
|
||||
a=sq_getscratchpad(v,(int)(alen*sizeof(SQChar)));
|
||||
mbstowcs(sq_getscratchpad(v,-1),argv[i],alen);
|
||||
sq_getscratchpad(v,-1)[alen] = _SC('\0');
|
||||
#else
|
||||
a=argv[i];
|
||||
#endif
|
||||
sq_pushstring(v,a,-1);
|
||||
|
||||
sq_arrayappend(v,-2);
|
||||
}
|
||||
sq_createslot(v,-3);
|
||||
sq_pop(v,1);
|
||||
if(compiles_only) {
|
||||
if(SQ_SUCCEEDED(sqstd_loadfile(v,filename,SQTrue))){
|
||||
SQChar *outfile = _SC("out.cnut");
|
||||
if(output) {
|
||||
#ifdef SQUNICODE
|
||||
int len = (int)(strlen(output)+1);
|
||||
mbstowcs(sq_getscratchpad(v,len*sizeof(SQChar)),output,len);
|
||||
outfile = sq_getscratchpad(v,-1);
|
||||
#else
|
||||
outfile = output;
|
||||
#endif
|
||||
}
|
||||
if(SQ_SUCCEEDED(sqstd_writeclosuretofile(v,outfile)))
|
||||
return _DONE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(SQ_SUCCEEDED(sqstd_dofile(v,filename,SQFalse,SQTrue))) {
|
||||
return _DONE;
|
||||
}
|
||||
}
|
||||
//if this point is reached an error occured
|
||||
{
|
||||
const SQChar *err;
|
||||
sq_getlasterror(v);
|
||||
if(SQ_SUCCEEDED(sq_getstring(v,-1,&err))) {
|
||||
scprintf(_SC("Error [%s]\n"),err);
|
||||
return _DONE;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return _INTERACTIVE;
|
||||
}
|
||||
|
||||
void Interactive(HSQUIRRELVM v)
|
||||
{
|
||||
|
||||
#define MAXINPUT 1024
|
||||
SQChar buffer[MAXINPUT];
|
||||
SQInteger blocks =0;
|
||||
SQInteger string=0;
|
||||
SQInteger retval=0;
|
||||
SQInteger done=0;
|
||||
PrintVersionInfos();
|
||||
|
||||
sq_pushroottable(v);
|
||||
sq_pushstring(v,_SC("quit"),-1);
|
||||
sq_pushuserpointer(v,&done);
|
||||
sq_newclosure(v,quit,1);
|
||||
sq_setparamscheck(v,1,NULL);
|
||||
sq_createslot(v,-3);
|
||||
sq_pop(v,1);
|
||||
|
||||
while (!done)
|
||||
{
|
||||
SQInteger i = 0;
|
||||
scprintf(_SC("\nsq>"));
|
||||
for(;;) {
|
||||
int c;
|
||||
if(done)return;
|
||||
c = getchar();
|
||||
if (c == _SC('\n')) {
|
||||
if (i>0 && buffer[i-1] == _SC('\\'))
|
||||
{
|
||||
buffer[i-1] = _SC('\n');
|
||||
}
|
||||
else if(blocks==0)break;
|
||||
buffer[i++] = _SC('\n');
|
||||
}
|
||||
else if (c==_SC('}')) {blocks--; buffer[i++] = (SQChar)c;}
|
||||
else if(c==_SC('{') && !string){
|
||||
blocks++;
|
||||
buffer[i++] = (SQChar)c;
|
||||
}
|
||||
else if(c==_SC('"') || c==_SC('\'')){
|
||||
string=!string;
|
||||
buffer[i++] = (SQChar)c;
|
||||
}
|
||||
else if (i >= MAXINPUT-1) {
|
||||
scfprintf(stderr, _SC("sq : input line too long\n"));
|
||||
break;
|
||||
}
|
||||
else{
|
||||
buffer[i++] = (SQChar)c;
|
||||
}
|
||||
}
|
||||
buffer[i] = _SC('\0');
|
||||
|
||||
if(buffer[0]==_SC('=')){
|
||||
scsprintf(sq_getscratchpad(v,MAXINPUT),_SC("return (%s)"),&buffer[1]);
|
||||
memcpy(buffer,sq_getscratchpad(v,-1),(scstrlen(sq_getscratchpad(v,-1))+1)*sizeof(SQChar));
|
||||
retval=1;
|
||||
}
|
||||
i=scstrlen(buffer);
|
||||
if(i>0){
|
||||
SQInteger oldtop=sq_gettop(v);
|
||||
if(SQ_SUCCEEDED(sq_compilebuffer(v,buffer,i,_SC("interactive console"),SQTrue))){
|
||||
sq_pushroottable(v);
|
||||
if(SQ_SUCCEEDED(sq_call(v,1,retval,SQTrue)) && retval){
|
||||
scprintf(_SC("\n"));
|
||||
sq_pushroottable(v);
|
||||
sq_pushstring(v,_SC("print"),-1);
|
||||
sq_get(v,-2);
|
||||
sq_pushroottable(v);
|
||||
sq_push(v,-4);
|
||||
sq_call(v,2,SQFalse,SQTrue);
|
||||
retval=0;
|
||||
scprintf(_SC("\n"));
|
||||
}
|
||||
}
|
||||
|
||||
sq_settop(v,oldtop);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
HSQUIRRELVM v;
|
||||
|
||||
const SQChar *filename=NULL;
|
||||
#if defined(_MSC_VER) && defined(_DEBUG)
|
||||
_CrtSetAllocHook(MemAllocHook);
|
||||
#endif
|
||||
|
||||
v=sq_open(1024);
|
||||
sq_setprintfunc(v,printfunc);
|
||||
|
||||
sq_pushroottable(v);
|
||||
|
||||
sqstd_register_bloblib(v);
|
||||
sqstd_register_iolib(v);
|
||||
sqstd_register_systemlib(v);
|
||||
sqstd_register_mathlib(v);
|
||||
sqstd_register_stringlib(v);
|
||||
|
||||
//aux library
|
||||
//sets error handlers
|
||||
sqstd_seterrorhandlers(v);
|
||||
|
||||
//gets arguments
|
||||
switch(getargs(v,argc,argv))
|
||||
{
|
||||
case _INTERACTIVE:
|
||||
Interactive(v);
|
||||
break;
|
||||
case _DONE:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
sq_close(v);
|
||||
|
||||
#if defined(_MSC_VER) && defined(_DEBUG)
|
||||
_getch();
|
||||
_CrtMemDumpAllObjectsSince( NULL );
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
101
src/3rdparty/squirrel/sq/sq.dsp
vendored
Normal file
101
src/3rdparty/squirrel/sq/sq.dsp
vendored
Normal file
@@ -0,0 +1,101 @@
|
||||
# Microsoft Developer Studio Project File - Name="sq" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=sq - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "sq.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "sq.mak" CFG="sq - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "sq - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "sq - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_LocalPath ".."
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "sq - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /I "..\sqstdlib" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x410 /d "NDEBUG"
|
||||
# ADD RSC /l 0x410 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 squirrel.lib sqstdlib.lib /nologo /subsystem:console /machine:I386 /out:"../bin/sq.exe" /libpath:"../lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "sq - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\sqstdlib" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x410 /d "_DEBUG"
|
||||
# ADD RSC /l 0x410 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 squirrel.lib sqstdlib.lib /nologo /subsystem:console /debug /machine:I386 /out:"../bin/sq.exe" /pdbtype:sept /libpath:"../lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "sq - Win32 Release"
|
||||
# Name "sq - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\sq.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
Reference in New Issue
Block a user