From 05cddea5e958c61dc8e5aaf67b96aaca118e5e73 Mon Sep 17 00:00:00 2001 From: Joey Yakimowich-Payne Date: Wed, 6 May 2020 20:08:57 -0600 Subject: [PATCH] Initial glew wrapper --- project.nimble => glew.nimble | 4 ++-- nim.cfg | 2 +- src/glew.nim | 3 +++ src/{project => glew}/cleansymbols.nim | 16 +++++++++++++++- src/{project/project.nim => glew/glew.nim} | 21 +++++++++------------ src/project.nim | 3 --- 6 files changed, 30 insertions(+), 19 deletions(-) rename project.nimble => glew.nimble (54%) create mode 100644 src/glew.nim rename src/{project => glew}/cleansymbols.nim (69%) rename src/{project/project.nim => glew/glew.nim} (55%) delete mode 100644 src/project.nim diff --git a/project.nimble b/glew.nimble similarity index 54% rename from project.nimble rename to glew.nimble index 8141d30..47f8774 100644 --- a/project.nimble +++ b/glew.nimble @@ -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" diff --git a/nim.cfg b/nim.cfg index 664de18..8e6efb4 100644 --- a/nim.cfg +++ b/nim.cfg @@ -1 +1 @@ --d:Project_SetVer="M.M.V" -d:Project_DL -d:Project_Static +-d:GLEW_SetVer="2.1.0" -d:glewDL -d:glewStatic diff --git a/src/glew.nim b/src/glew.nim new file mode 100644 index 0000000..49faa66 --- /dev/null +++ b/src/glew.nim @@ -0,0 +1,3 @@ +import glew/glew + +export glew diff --git a/src/project/cleansymbols.nim b/src/glew/cleansymbols.nim similarity index 69% rename from src/project/cleansymbols.nim rename to src/glew/cleansymbols.nim index 921b04d..27b1e85 100644 --- a/src/project/cleansymbols.nim +++ b/src/glew/cleansymbols.nim @@ -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("__", "_") diff --git a/src/project/project.nim b/src/glew/glew.nim similarity index 55% rename from src/project/project.nim rename to src/glew/glew.nim index 1a06e4f..7c2fa68 100644 --- a/src/project/project.nim +++ b/src/glew/glew.nim @@ -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__,_") diff --git a/src/project.nim b/src/project.nim deleted file mode 100644 index 9e04484..0000000 --- a/src/project.nim +++ /dev/null @@ -1,3 +0,0 @@ -import project/project - -export project