Initial working project

This commit is contained in:
Joey Yakimowich-Payne 2020-08-23 20:38:33 -06:00
commit e6c5d2f1d0
7 changed files with 75 additions and 47 deletions

View file

@ -2,7 +2,7 @@
version = "0.1.0"
author = "Joey Yakimowich-Payne"
description = "Nimterop template"
description = "GLFW Bindings"
license = "MIT"
srcDir = "src"
@ -10,4 +10,4 @@ srcDir = "src"
# Dependencies
requires "nim >= 1.0.6", "nimterop#head", "regex"
requires "nim >= 1.0.6", "https://github.com/jyapayne/nimterop#367ec05", "regex"

View file

@ -1 +0,0 @@
-d:Project_SetVer="M.M.V" -d:Project_DL -d:Project_Static

3
src/glfw.nim Normal file
View file

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

View file

@ -1,6 +1,5 @@
import macros, nimterop / plugin
import strutils, regex
import sets
proc firstLetterLower(m: RegexMatch, s: string): string =
if m.groupsCount > 0 and m.group(0).len > 0:
@ -15,13 +14,17 @@ proc nothing(m: RegexMatch, s: string): string =
return s[m.group(0)[0]]
const replacements = [
re"^PREFIX_(.)",
re"^GLFW_(.)",
re"^GLFW(.)",
re"^glfw(.)",
]
const underscoreReg = re"_(.)"
# Symbol renaming examples
proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} =
if sym.name == "GLFW_CURSOR":
sym.name = "GLFW_INPUT_MODE_CURSOR"
if sym.kind == nskProc or sym.kind == nskType or sym.kind == nskConst:
if sym.name != "_":
sym.name = sym.name.strip(chars={'_'}).replace("__", "_")
@ -32,6 +35,11 @@ proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} =
sym.name = sym.name.replace(rep, firstLetterLower)
except:
discard
elif sym.kind == nskType:
try:
sym.name = sym.name.replace(rep, camelCase)
except:
discard
else:
try:
sym.name = sym.name.replace(rep, nothing)

60
src/glfw/glfw.nim Normal file
View file

@ -0,0 +1,60 @@
import os, strutils, strformat
import nimterop/[cimport, build, globals]
const
ProjectCacheDir* = getProjectCacheDir("nimglfw")
baseDir = ProjectCacheDir
srcDir = baseDir / "glfw"
buildDir = srcDir / "buildcache"
symbolPluginPath = currentSourcePath.parentDir() / "cleansymbols.nim"
defs = """
glfw3SetVer=05dd2fa
glfw3Git
glfw3Static
"""
setDefines(defs.splitLines())
{.passL: "-lpthread".}
getHeader(
"glfw3.h",
giturl = "https://github.com/glfw/glfw",
outdir = srcDir,
altNames = "glfw,glfw3",
cmakeFlags = &"-DCMAKE_C_FLAGS=-lpthread"
)
static:
discard
# cSkipSymbol @[]
# cDebug()
# cDisableCaching()
# cOverride:
# discard
cIncludeDir(srcDir/"include"/"GLFW")
cPluginPath(symbolPluginPath)
when isDefined(glfw3Static):
cImport(srcDir/"include"/"GLFW"/"glfw3.h", recurse = true, flags = "-f=ast2 -E__,_ -F__,_ -H")
else:
cImport(srcDir/"include"/"GLFW"/"glfw3.h", recurse = true, dynlib = "glfw3LPath", flags = "-f=ast2 -E__,_ -F__,_ -H")
const
KEY_LAST* = KEY_MENU
MOUSE_BUTTON_LAST* = MOUSE_BUTTON_8
MOUSE_BUTTON_LEFT* = MOUSE_BUTTON_1
MOUSE_BUTTON_RIGHT* = MOUSE_BUTTON_2
MOUSE_BUTTON_MIDDLE* = MOUSE_BUTTON_3
JOYSTICK_LAST* = JOYSTICK_16
GAMEPAD_BUTTON_LAST* = GAMEPAD_BUTTON_DPAD_LEFT
GAMEPAD_BUTTON_CROSS* = GAMEPAD_BUTTON_A
GAMEPAD_BUTTON_CIRCLE* = GAMEPAD_BUTTON_B
GAMEPAD_BUTTON_SQUARE* = GAMEPAD_BUTTON_X
GAMEPAD_BUTTON_TRIANGLE* = GAMEPAD_BUTTON_Y
GAMEPAD_AXIS_LAST* = GAMEPAD_AXIS_RIGHT_TRIGGER
OPENGL_DEBUG_CONTEXT* = CONTEXT_DEBUG
HRESIZE_CURSOR* = RESIZE_EW_CURSOR
VRESIZE_CURSOR* = RESIZE_NS_CURSOR
HAND_CURSOR* = POINTING_HAND_CURSOR

View file

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

View file

@ -1,39 +0,0 @@
import os, strutils, strformat
import nimterop/[cimport, build]
const
ProjectCacheDir* = currentSourcePath.parentDir().parentDir() / "build" #getProjectCacheDir("nimsdl2")
baseDir = SDLCacheDir
srcDir = baseDir / "sdl2"
buildDir = srcDir / "buildcache"
symbolPluginPath = currentSourcePath.parentDir() / "cleansymbols.nim"
getHeader(
"template.h",
dlurl = "https://download.com/template-$1.tar.gz",
outdir = srcDir,
cmakeFlags = "-F flag",
conFlags = "-F flag"
)
static:
discard
# gitPull("https://github.com/lib/project", outdir=srcDir, plist="""
# src/*.h
# src/*.c
# """, checkout = "1f9c8864fc556a1be4d4bf1d6bfe20cde25734b4")
# cSkipSymbol @[]
# cDebug()
# cDisableCaching()
# 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__,_")
else:
cImport(Project_Path, recurse = true, dynlib = "Project_LPath", flags = "-f=ast2 -E__,_ -F__,_")