added gdcc example and makefile support
This commit is contained in:
parent
5eff934ef0
commit
36e07578a7
46
Makefile
46
Makefile
|
@ -1,39 +1,59 @@
|
|||
CC=
|
||||
MKDIR=
|
||||
RM=
|
||||
LD=
|
||||
MKDIR=mkdir -p
|
||||
RM=rm
|
||||
PCFLAGS=
|
||||
PLFLAGS=
|
||||
LIBNAME=
|
||||
OUTDIR=bin
|
||||
SRCDIR=src
|
||||
LFLAGS=-shared -g -ggdb
|
||||
CFLAGS=--std=c99 -g -ggdb -O2 -Wall
|
||||
LFLAGS=
|
||||
CFLAGS=
|
||||
RMEXTRA=
|
||||
GDCCBUILD=OFF
|
||||
EXAMPLEO=
|
||||
EXAMPLEC=
|
||||
|
||||
ifeq ($(GDCCBUILD),ON)
|
||||
CC+=gdcc-cc
|
||||
LD+=gdcc-ld
|
||||
MKDIR+=mkdir
|
||||
LIBNAME+=$(OUTDIR)/LoveToken.bin
|
||||
PCFLAGS+=--bc-target=ZDoom -i$(SRCDIR)
|
||||
LFLAGS+=--bc-target=ZDoom
|
||||
EXAMPLEC+=examples/gdcc.c
|
||||
# These are completely arbitrary.
|
||||
EXAMPLEO+=$(OUTDIR)/libc.ir $(OUTDIR)/libGDCC.ir $(OUTDIR)/libGDCC-c.ir $(OUTDIR)/libGDCC-ZDACS-asm.ir
|
||||
else
|
||||
EXAMPLEC+=examples/main.c
|
||||
PCFLAGS+=--std=c99 -g -ggdb -O2 -Wall -c -I$(SRCDIR)
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
CC+=mingw32-gcc
|
||||
MKDIR+=mkdir -p
|
||||
RM+=rm
|
||||
PLFLAGS+=-Wl,--out-implib,bin/libLoveToken.a
|
||||
LD+=mingw32-gcc
|
||||
PLFLAGS+=-shared -g -ggdb
|
||||
PLFLAGS2+=-Wl,--out-implib,bin/libLoveToken.a -liconv
|
||||
LIBNAME+=$(OUTDIR)/LoveToken.dll
|
||||
RMEXTRA+=bin/libLoveToken.a
|
||||
else
|
||||
ifeq ($(shell uname -s), Linux)
|
||||
CC+=gcc
|
||||
MKDIR+=mkdir -p
|
||||
RM+=rm
|
||||
LD+=gcc
|
||||
PCFLAGS+=-fPIC
|
||||
PLFLAGS2+=-liconv
|
||||
LIBNAME+=$(OUTDIR)/LoveToken.so
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
all:
|
||||
$(MKDIR) $(OUTDIR)
|
||||
$(CC) $(CFLAGS) $(PCFLAGS) -c -o $(OUTDIR)/lt.o $(SRCDIR)/lt.c
|
||||
$(CC) $(LFLAGS) -o $(LIBNAME) $(OUTDIR)/lt.o $(PLFLAGS) -liconv
|
||||
$(CC) $(CFLAGS) $(PCFLAGS) -o $(OUTDIR)/lt.o $(SRCDIR)/lt.c
|
||||
$(LD) $(LFLAGS) $(PLFLAGS) -o $(LIBNAME) $(OUTDIR)/lt.o $(PLFLAGS2)
|
||||
|
||||
clean:
|
||||
$(RM) $(LIBNAME) $(OUTDIR)/lt.o $(RMEXTRA)
|
||||
|
||||
example:
|
||||
$(CC) $(CFLAGS) -I$(SRCDIR) -L$(OUTDIR) -o $(OUTDIR)/example examples/main.c -lLoveToken
|
||||
example: all
|
||||
$(CC) $(CFLAGS) $(PCFLAGS) -o $(OUTDIR)/example.o $(EXAMPLEC)
|
||||
$(LD) $(LFLAGS) -o $(OUTDIR)/example $(OUTDIR)/example.o $(EXAMPLEO) $(OUTDIR)/lt.o $(PLFLAGS2)
|
||||
|
|
58
examples/gdcc.c
Normal file
58
examples/gdcc.c
Normal file
|
@ -0,0 +1,58 @@
|
|||
// This file is placed under public domain.
|
||||
#include "lt.h"
|
||||
#include <ACS_Zandronum.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define Print(...) \
|
||||
( \
|
||||
ACS_BeginPrint(), \
|
||||
__nprintf(__VA_ARGS__), \
|
||||
ACS_EndPrint() \
|
||||
)
|
||||
#define Log(...) \
|
||||
( \
|
||||
ACS_BeginLog(), \
|
||||
__nprintf(__VA_ARGS__), \
|
||||
ACS_EndLog() \
|
||||
)
|
||||
|
||||
[[extern("ACS"), call("ScriptS"), script("Enter")]]
|
||||
void ExampleRunScript()
|
||||
{
|
||||
LT_Config initCfg = { 0 };
|
||||
LT_Init(initCfg);
|
||||
|
||||
LT_OpenFile(s"EXAMPLESCRIPT");
|
||||
|
||||
LT_Token tk = LT_GetToken();
|
||||
|
||||
ACS_Delay(15);
|
||||
|
||||
Print("Printing out the parsed tokens to the console in 3...");
|
||||
ACS_Delay(35);
|
||||
Print("2...");
|
||||
ACS_Delay(35);
|
||||
Print("1...");
|
||||
ACS_Delay(35);
|
||||
Print("Showtime!");
|
||||
ACS_Delay(35);
|
||||
|
||||
while (tk.token != LT_TkNames[TOK_EOF])
|
||||
{
|
||||
if (tk.string != NULL)
|
||||
{
|
||||
Log("%s - %s", tk.token, tk.string);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log(tk.token);
|
||||
}
|
||||
|
||||
tk = LT_GetToken();
|
||||
|
||||
ACS_Delay(1);
|
||||
}
|
||||
|
||||
LT_Quit();
|
||||
LT_CloseFile();
|
||||
}
|
3
examples/language.txt
Normal file
3
examples/language.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
[enu default]
|
||||
|
||||
EXAMPLESCRIPT="The quick brown_fox jumps over the !Lazy_Dog.;\n 5 ** 5 ** 5 + 3 []";
|
Reference in New Issue
Block a user