Initial working project
This commit is contained in:
parent
920e8573ef
commit
e6c5d2f1d0
7 changed files with 75 additions and 47 deletions
|
|
@ -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"
|
||||
1
nim.cfg
1
nim.cfg
|
|
@ -1 +0,0 @@
|
|||
-d:Project_SetVer="M.M.V" -d:Project_DL -d:Project_Static
|
||||
3
src/glfw.nim
Normal file
3
src/glfw.nim
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
import glfw/glfw
|
||||
|
||||
export glfw
|
||||
|
|
@ -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
60
src/glfw/glfw.nim
Normal 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
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
import project/project
|
||||
|
||||
export project
|
||||
|
|
@ -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__,_")
|
||||
Loading…
Add table
Add a link
Reference in a new issue