aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/cru/common/platform/web/WebException.h16
-rw-r--r--include/cru/common/platform/web/WebFileStream.h21
-rw-r--r--src/common/CMakeLists.txt10
-rw-r--r--src/common/platform/web/WebException.cpp1
-rw-r--r--src/common/platform/web/WebFileStream.cpp1
5 files changed, 49 insertions, 0 deletions
diff --git a/include/cru/common/platform/web/WebException.h b/include/cru/common/platform/web/WebException.h
new file mode 100644
index 00000000..d98b8943
--- /dev/null
+++ b/include/cru/common/platform/web/WebException.h
@@ -0,0 +1,16 @@
+#pragma once
+
+#include "../../PreConfig.h"
+
+#ifdef CRU_PLATFORM_EMSCRIPTEN
+
+#include "../Exception.h"
+
+namespace cru::platform::web {
+class WebException : public PlatformException {
+ public:
+ using PlatformException::PlatformException;
+};
+} // namespace cru::platform::web
+
+#endif
diff --git a/include/cru/common/platform/web/WebFileStream.h b/include/cru/common/platform/web/WebFileStream.h
new file mode 100644
index 00000000..66ee0903
--- /dev/null
+++ b/include/cru/common/platform/web/WebFileStream.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "../../PreConfig.h"
+
+#ifdef CRU_PLATFORM_EMSCRIPTEN
+
+#include "../../io/Stream.h"
+
+namespace cru::platform::web {
+/**
+ * \remark Web just hates filesystems. But luckily emscripten just creates a
+ * good simulation of it. All we need to do is to use the C api and let
+ * emscripten take care of it for us.
+ */
+class WebFileStream : public io::Stream {
+ public:
+ // TODO: go on this!
+};
+} // namespace cru::platform::web
+
+#endif
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index 119bbbee..fb2dd471 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -38,6 +38,16 @@ if (APPLE)
)
endif()
+if (EMSCRIPTEN)
+ target_compile_options(CruBase PUBLIC "-fwasm-exceptions")
+ target_link_options(CruBase PUBLIC "-fwasm-exceptions")
+
+ target_sources(CruBase PRIVATE
+ platform/web/WebException.cpp
+ platform/web/WebFileStream.cpp
+ )
+endif()
+
if (WIN32)
target_sources(CruBase PRIVATE
platform/win/BridgeComStream.cpp
diff --git a/src/common/platform/web/WebException.cpp b/src/common/platform/web/WebException.cpp
new file mode 100644
index 00000000..30f9d1f0
--- /dev/null
+++ b/src/common/platform/web/WebException.cpp
@@ -0,0 +1 @@
+#include "cru/common/platform/web/WebException.h"
diff --git a/src/common/platform/web/WebFileStream.cpp b/src/common/platform/web/WebFileStream.cpp
new file mode 100644
index 00000000..2e45648e
--- /dev/null
+++ b/src/common/platform/web/WebFileStream.cpp
@@ -0,0 +1 @@
+#include "cru/common/platform/web/WebFileStream.h"