aboutsummaryrefslogtreecommitdiff
path: root/src/nimpb_protoc.nim
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2018-04-11 20:48:33 +0300
committerOskari Timperi <oskari.timperi@iki.fi>2018-04-11 20:48:33 +0300
commitc872f7d65b74f5f46a85a8df927af86c5178ad8a (patch)
treefd75288c5cb32c8cb4c638e26fc9b2226a9730d2 /src/nimpb_protoc.nim
parentb083470799b4382c315b47dd92a69d5abc7d541c (diff)
downloadnimpb_protoc-c872f7d65b74f5f46a85a8df927af86c5178ad8a.tar.gz
nimpb_protoc-c872f7d65b74f5f46a85a8df927af86c5178ad8a.zip
Rename to nimpb_protoc
Diffstat (limited to 'src/nimpb_protoc.nim')
-rw-r--r--src/nimpb_protoc.nim50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/nimpb_protoc.nim b/src/nimpb_protoc.nim
new file mode 100644
index 0000000..951849a
--- /dev/null
+++ b/src/nimpb_protoc.nim
@@ -0,0 +1,50 @@
+import os
+import strformat
+
+when defined(windows):
+ const compilerId = "win32"
+elif defined(linux):
+ when defined(i386):
+ const arch = "x86_32"
+ elif defined(amd64):
+ const arch = "x86_64"
+ elif defined(arm64):
+ const arch = "aarch_64"
+ else:
+ {.fatal:"unsupported architecture".}
+ const compilerId = "linux-" & arch
+elif defined(macosx):
+ when defined(amd64):
+ const arch = "x86_64"
+ else:
+ {.fatal:"unsupported architecture".}
+ const compilerId = "osx-" & arch
+else:
+ {.fatal:"unsupported platform".}
+
+when defined(windows):
+ const exeSuffix = ".exe"
+else:
+ const exeSuffix = ""
+
+let
+ paths = @[
+ # getAppDir() / "src" / "nimpb_protocpkg" / "protobuf",
+ # getAppDir() / "nimpb_protocpkg" / "protobuf",
+ parentDir(currentSourcePath()) / "nimpb_protocpkg" / "protobuf",
+ ]
+
+proc getCompilerPath*(): string =
+ let
+ compilerName = &"protoc-{compilerId}{exeSuffix}"
+
+ for path in paths:
+ if fileExists(path / compilerName):
+ return path / compilerName
+
+ raise newException(Exception, &"{compilerName} not found!")
+
+proc getProtoIncludeDir*(): string =
+ for path in paths:
+ if fileExists(path / "include"):
+ return path / "include"