Initial glew wrapper

This commit is contained in:
Joey Yakimowich-Payne 2020-05-06 20:08:57 -06:00
commit 05cddea5e9
6 changed files with 30 additions and 19 deletions

View file

@ -2,7 +2,7 @@
version = "0.1.0"
author = "Joey Yakimowich-Payne"
description = "Nimterop template"
description = "Autogenerated glew bindings for Nim"
license = "MIT"
srcDir = "src"
@ -10,4 +10,4 @@ srcDir = "src"
# Dependencies
requires "nim >= 1.0.6", "nimterop#head", "regex"
requires "nim >= 1.0.6", "nimterop#head", "regex >= 0.14.1"

View file

@ -1 +1 @@
-d:Project_SetVer="M.M.V" -d:Project_DL -d:Project_Static
-d:GLEW_SetVer="2.1.0" -d:glewDL -d:glewStatic

3
src/glew.nim Normal file
View file

@ -0,0 +1,3 @@
import glew/glew
export glew

View file

@ -15,13 +15,27 @@ proc nothing(m: RegexMatch, s: string): string =
return s[m.group(0)[0]]
const replacements = [
re"^PREFIX_(.)",
re"^glew(.)",
]
const underscoreReg = re"_(.)"
# Symbol renaming examples
proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} =
if sym.name.startsWith("GL_BYTE"):
sym.name = "CGL_BYTE"
if sym.name.startsWith("GL_SHORT"):
sym.name = "CGL_SHORT"
if sym.name.startsWith("GL_INT"):
sym.name = "CGL_INT"
if sym.name.startsWith("GL_FLOAT"):
sym.name = "CGL_FLOAT"
if sym.name.startsWith("GL_DOUBLE"):
sym.name = "CGL_DOUBLE"
if sym.name.startsWith("GL_FIXED"):
sym.name = "CGL_FIXED"
if sym.name.startsWith("PFNGLGETTRANSFORMFEEDBACKIVPROC"):
sym.name = "CPFNGLGETTRANSFORMFEEDBACKIVPROC"
if sym.kind == nskProc or sym.kind == nskType or sym.kind == nskConst:
if sym.name != "_":
sym.name = sym.name.strip(chars={'_'}).replace("__", "_")

View file

@ -2,18 +2,17 @@ import os, strutils, strformat
import nimterop/[cimport, build]
const
ProjectCacheDir* = currentSourcePath.parentDir().parentDir() / "build" #getProjectCacheDir("nimsdl2")
baseDir = SDLCacheDir
srcDir = baseDir / "sdl2"
ProjectCacheDir* = getProjectCacheDir("nimglew")
baseDir = ProjectCacheDir
srcDir = baseDir / "glew"
buildDir = srcDir / "buildcache"
symbolPluginPath = currentSourcePath.parentDir() / "cleansymbols.nim"
getHeader(
"template.h",
dlurl = "https://download.com/template-$1.tar.gz",
"glew.h",
dlurl = "https://github.com/nigels-com/glew/releases/download/glew-$1/glew-$1.zip",
outdir = srcDir,
cmakeFlags = "-F flag",
conFlags = "-F flag"
altNames = "libGLEW"
)
static:
@ -28,12 +27,10 @@ static:
# let contents = readFile(srcDir/"src"/"dynapi"/"SDL_dynapi_procs.h")
# writeFile(srcDir/"src"/"dynapi"/"SDL_dynapi_procs.c", contents
cOverride:
discard
cPluginPath(symbolPluginPath)
when defined(Project_Static):
cImport(Project_Path, recurse = true, flags = "-f=ast2 -E__,_ -F__,_")
when defined(glewStatic):
cImport(glewPath, recurse = true, flags = "-f=ast2 -E__,_ -F__,_")
else:
cImport(Project_Path, recurse = true, dynlib = "Project_LPath", flags = "-f=ast2 -E__,_ -F__,_")
cImport(glewPath, recurse = true, dynlib = "glewLPath", flags = "-f=ast2 -E__,_ -F__,_")

View file

@ -1,3 +0,0 @@
import project/project
export project