summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/cgen.nim3
-rw-r--r--compiler/jsgen.nim3
2 files changed, 6 insertions, 0 deletions
diff --git a/compiler/cgen.nim b/compiler/cgen.nim
index 250044601..918bec0f9 100644
--- a/compiler/cgen.nim
+++ b/compiler/cgen.nim
@@ -1635,6 +1635,9 @@ proc cgenWriteModules*(backend: RootRef, config: ConfigRef) =
   # deps are allowed (and the system module is processed in the wrong
   # order anyway)
   g.config = config
+  let (outDir, _, _) = splitFile(config.outfile)
+  if not outDir.isEmpty:
+    createDir(outDir)
   if g.generatedHeader != nil: finishModule(g.generatedHeader)
   while g.forwardedProcsCounter > 0:
     for m in cgenModules(g):
diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim
index f91bfda8c..1be8629b9 100644
--- a/compiler/jsgen.nim
+++ b/compiler/jsgen.nim
@@ -2345,6 +2345,9 @@ proc myClose(graph: ModuleGraph; b: PPassContext, n: PNode): PNode =
         else: AbsoluteFile(getCurrentDir() / m.config.outFile.string)
       else:
         changeFileExt(completeCFilePath(m.config, AbsoluteFile f), ext)
+    let (outDir, _, _) = splitFile(outfile)
+    if not outDir.isEmpty:
+      createDir(outDir)
     discard writeRopeIfNotEqual(genHeader() & code, outfile)
     for obj, content in items(globals.classes):
       genClass(m.config, obj, content, ext)