diff --git a/source/app.d b/source/app.d index 2cf3fd4..9135109 100644 --- a/source/app.d +++ b/source/app.d @@ -70,6 +70,10 @@ Url registryUrl = Url.parse("http://registry.vibed.org/"); logDebug("Using vpm registry url '%s'", registryUrl); + // FIXME: determine from version() and command line flags + auto platform = "windows"; + auto architecture = "x86"; + // handle the command switch( cmd ){ default: @@ -112,7 +116,7 @@ } } flags ~= "-g"; - flags ~= vpm.dflags; + flags ~= vpm.getDflags(platform, architecture); flags ~= getPackagesAsVersion(vpm); flags ~= (mainsrc).toNativeString(); flags ~= args[1 .. $]; diff --git a/source/dub/dub.d b/source/dub/dub.d index da540a7..3075ec0 100644 --- a/source/dub/dub.d +++ b/source/dub/dub.d @@ -128,9 +128,10 @@ @property string name() const { return m_main ? m_main.name : "app"; } /// Returns the DFLAGS - @property string[] dflags() const { + @property string[] getDflags(string platform, string architecture) + const { auto ret = appender!(string[])(); - if( m_main ) ret.put(m_main.dflags()); + if( m_main ) ret.put(m_main.getDflags(platform, architecture)); ret.put("-Isource"); ret.put("-Jviews"); foreach( string s, pkg; m_packages ){ @@ -139,7 +140,7 @@ if( exists(path) ) ret.put(prefix ~ path); } - ret.put(pkg.dflags()); + ret.put(pkg.getDflags(platform, architecture)); addPath("-I", "source"); addPath("-J", "views"); } @@ -415,7 +416,7 @@ /// Returns a list of flags which the application needs to be compiled /// properly. - @property string[] dflags() { return m_app.dflags; } + string[] getDflags(string platform, string architecture) { return m_app.getDflags(platform, architecture); } /// Lists all installed modules void list() { diff --git a/source/dub/package_.d b/source/dub/package_.d index 2a15078..0cb740f 100644 --- a/source/dub/package_.d +++ b/source/dub/package_.d @@ -54,11 +54,24 @@ @property string vers() const { return cast(string)m_meta["version"]; } @property const(Url) url() const { return Url.parse(cast(string)m_meta["url"]); } @property const(Dependency[string]) dependencies() const { return m_dependencies; } - @property string[] dflags() const { - if( "dflags" !in m_meta ) return null; - auto flags = m_meta["dflags"].get!(Json[]); + + string[] getDflags(string platform, string architecture) + const { auto ret = appender!(string[])(); - foreach( f; flags ) ret.put(f.get!string); + foreach( j; m_meta["dflags"].opt!(Json[]) ) ret.put(j.get!string); + foreach( j; m_meta["dflags-"~platform].opt!(Json[]) ) ret.put(j.get!string); + foreach( j; m_meta["dflags-"~architecture].opt!(Json[]) ) ret.put(j.get!string); + foreach( j; m_meta["dflags-"~platform~"-"~architecture].opt!(Json[]) ) ret.put(j.get!string); + return ret.data; + } + + string[] getLibs(string platform, string architecture) + const { + auto ret = appender!(string[])(); + foreach( j; m_meta["libs"].opt!(Json[]) ) ret.put(j.get!string); + foreach( j; m_meta["libs-"~platform].opt!(Json[]) ) ret.put(j.get!string); + foreach( j; m_meta["libs-"~architecture].opt!(Json[]) ) ret.put(j.get!string); + foreach( j; m_meta["libs-"~platform~"-"~architecture].opt!(Json[]) ) ret.put(j.get!string); return ret.data; }