-
Notifications
You must be signed in to change notification settings - Fork 40
/
tsoloud.nim
60 lines (45 loc) · 1.41 KB
/
tsoloud.nim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import os, nimterop/[cimport, build]
const
FLAGS {.strdefine.} = ""
baseDir = getProjectCacheDir("nimterop" / "tests" / "soloud")
incl = baseDir/"include"
src = baseDir/"src"
static:
gitPull("https://github.com/jarikomppa/soloud", baseDir, "include/*\nsrc/*\n", checkout = "RELEASE_20200207")
cDisableCaching()
cOverride:
type
Soloud* = pointer
AlignedFloatBuffer* = pointer
proc Soloud_destroy*(aSoloud: ptr Soloud) {.importc: "Soloud_destroy", header: cSearchPath(incl/"soloud_c.h").}
static: cSkipSymbol @["WavStream_stop", "WavStream_setFilter"]
cIncludeDir(incl)
when defined(osx):
cDefine("WITH_COREAUDIO")
cPassL("-framework CoreAudio -framework AudioToolbox")
cCompile(src/"backend/coreaudio/*.cpp")
elif defined(Linux):
cPassL("-lpthread")
cDefine("WITH_OSS")
cCompile(src/"backend/oss/*.cpp")
elif defined(Windows):
cPassC("-msse")
cPassL("-lwinmm")
cDefine("WITH_WINMM")
cCompile(src/"backend/winmm/*.cpp")
else:
static: doAssert false
cCompile(src/"c_api/soloud_c.cpp")
cCompile(src/"core/*.cpp")
cCompile(src/"audiosource", "cpp", exclude="ay/")
cCompile(src/"audiosource", "c")
cCompile(src/"filter/*.cpp")
cImport(incl/"soloud_c.h", flags = FLAGS)
var
s = Soloud_create()
echo s.Soloud_init()
s.Soloud_destroy()
when declared(WavStream_stop):
assert "WavStream_stop() not skipped"
when declared(WavStream_setFilter):
assert "WavStream_setFilter not skipped"