summaryrefslogtreecommitdiff
path: root/platform/SCsub
diff options
context:
space:
mode:
authorLeon Krause <lk@leonkrause.com>2017-11-16 01:33:48 +0100
committerLeon Krause <lk@leonkrause.com>2017-11-18 03:54:21 +0100
commit63b1a096eb17fd52cd46c36177e5158dce54a60a (patch)
tree3517410561103c29289379f3809f813e266b46b3 /platform/SCsub
parent6b34f10ab1dc92fa0addf57cb3cdcce5fd109d5b (diff)
Facilitate exposing platform-exclusive interfaces to all platforms
This makes the interfaces available, without implementation, in other platforms and the editor, which facilitates documenting platform-exclusive classes. Platform-exclusive APIs must be set up in platform/<platform>/api/api.cpp. Provide noop method-implementations where necessary. Also setup and document the HTML5 platform's JavaScript singleton.
Diffstat (limited to 'platform/SCsub')
-rw-r--r--platform/SCsub30
1 files changed, 30 insertions, 0 deletions
diff --git a/platform/SCsub b/platform/SCsub
new file mode 100644
index 0000000000..4ef23ab053
--- /dev/null
+++ b/platform/SCsub
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+
+from compat import open_utf8
+
+Import('env')
+platform_sources = []
+
+# Register platform-exclusive APIs
+reg_apis_inc = '#include "register_platform_apis.h"\n'
+reg_apis = 'void register_platform_apis() {\n'
+unreg_apis = 'void unregister_platform_apis() {\n'
+for platform in env.platform_apis:
+ platform_dir = env.Dir(platform)
+ platform_sources.append(platform_dir.File('api/api.cpp'))
+ reg_apis += '\tregister_' + platform + '_api();\n'
+ unreg_apis += '\tunregister_' + platform + '_api();\n'
+ reg_apis_inc += '#include "' + platform + '/api/api.h"\n'
+reg_apis_inc += '\n'
+reg_apis += '}\n\n'
+unreg_apis += '}\n'
+f = open_utf8('register_platform_apis.gen.cpp', 'w')
+f.write(reg_apis_inc)
+f.write(reg_apis)
+f.write(unreg_apis)
+f.close()
+platform_sources.append('register_platform_apis.gen.cpp')
+
+env.Prepend(LIBS=env.Library('platform', platform_sources))
+
+Export('env')