2011-09-10 11:13:51 +02:00
|
|
|
#!/usr/bin/env python
|
|
|
|
# encoding: utf-8
|
|
|
|
# Thomas Nagy, 2010 (ita)
|
|
|
|
|
|
|
|
from waflib import Utils
|
|
|
|
from waflib.Configure import conf
|
|
|
|
|
|
|
|
@conf
|
|
|
|
def d_platform_flags(self):
|
|
|
|
"""
|
|
|
|
Set the extensions dll/so for d programs and libraries
|
|
|
|
"""
|
|
|
|
v = self.env
|
|
|
|
if not v.DEST_OS:
|
|
|
|
v.DEST_OS = Utils.unversioned_sys_platform()
|
2012-10-21 02:12:54 +02:00
|
|
|
binfmt = Utils.destos_to_binfmt(self.env.DEST_OS)
|
|
|
|
if binfmt == 'pe':
|
2011-09-10 11:13:51 +02:00
|
|
|
v['dprogram_PATTERN'] = '%s.exe'
|
|
|
|
v['dshlib_PATTERN'] = 'lib%s.dll'
|
|
|
|
v['dstlib_PATTERN'] = 'lib%s.a'
|
2012-10-21 02:12:54 +02:00
|
|
|
elif binfmt == 'mac-o':
|
|
|
|
v['dprogram_PATTERN'] = '%s'
|
|
|
|
v['dshlib_PATTERN'] = 'lib%s.dylib'
|
|
|
|
v['dstlib_PATTERN'] = 'lib%s.a'
|
2011-09-10 11:13:51 +02:00
|
|
|
else:
|
|
|
|
v['dprogram_PATTERN'] = '%s'
|
|
|
|
v['dshlib_PATTERN'] = 'lib%s.so'
|
|
|
|
v['dstlib_PATTERN'] = 'lib%s.a'
|
|
|
|
|
|
|
|
DLIB = '''
|
|
|
|
version(D_Version2) {
|
|
|
|
import std.stdio;
|
|
|
|
int main() {
|
|
|
|
writefln("phobos2");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
version(Tango) {
|
|
|
|
import tango.stdc.stdio;
|
|
|
|
int main() {
|
|
|
|
printf("tango");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
import std.stdio;
|
|
|
|
int main() {
|
|
|
|
writefln("phobos1");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
'''
|
|
|
|
"""Detection string for the D standard library"""
|
|
|
|
|
|
|
|
@conf
|
2012-02-22 19:24:06 +01:00
|
|
|
def check_dlibrary(self, execute=True):
|
2011-09-10 11:13:51 +02:00
|
|
|
"""
|
|
|
|
Detect the kind of standard library that comes with the compiler, will set conf.env.DLIBRARY to tango, phobos1 or phobos2.
|
|
|
|
"""
|
2012-02-22 19:24:06 +01:00
|
|
|
ret = self.check_cc(features='d dprogram', fragment=DLIB, compile_filename='test.d', execute=execute, define_ret=True)
|
|
|
|
if execute:
|
|
|
|
self.env.DLIBRARY = ret.strip()
|
2011-09-10 11:13:51 +02:00
|
|
|
|