raylib-d
raylib-d copied to clipboard
unneserry imports hurt wasm compatibility
for whatever reason wasm doesn't have c_long, so ive been hunting down those imports
reasing line 87; narrow to import core.stdc.math:sinf,cosf,sqrtf,powf;
raymathext line 4 import core.stdc.math:cos,sin,atan2,sqrt;
raygui line 17
alias c_long=long
alias c_ulong=ulong
theres probably others and my other modification may have moved the lines around
Is there a version I can use to only do this for WASM?
I'm using this command in a lazily reargended folder
ldc2 -I./raylib -c -betterC -mtriple=wasm32-unknown-unknown-wasm app.d
to get the errors
Im not going to be using dub since I have no reason to think it will be remotely easy to convince it to run enscription; but like some of my edits of "official style guide" approved; ill probably publish my raylib "fork" when I get a hello world running both locally and on wasm
version
my hello world that works on both passed to a c compiler and dmd ... its hell honestly, wasmstd is going to be an ugly hack on ugly hack
version(D_BetterC){
import wasmstd;
enum betterc=true;
extern(C) void main()=>main_;
} else {
import std;
enum betterc=false;
void main()=>main_;
}
void main_(){
betterc.writeln;
"hello".writeln;
}
Note that all the files are generated by dstep, so probably these "changes" would have to go in as manual steps (see the generating.md document)
https://github.com/schveiguy/raylib-d/blob/07f79053b471efa674b20f1bee9e81edfb92eb58/source/raylib/raymathext.d#L5
template FieldNameTuple(T)
{
static if (is(T == struct) || is(T == union))
alias FieldNameTuple = staticMap!(NameOf, T.tupleof[0 .. $ - isNested!T]);
else static if (is(T == class) || is(T == interface))
alias FieldNameTuple = staticMap!(NameOf, T.tupleof);
else
alias FieldNameTuple = AliasSeq!"";
}
template staticMap(alias fun, args...)
{
alias staticMap = AliasSeq!();
static foreach (arg; args)
staticMap = AliasSeq!(staticMap, fun!arg);
}
I think this is the only place phoboes is used, and this is very easy to replace code