1#!/usr/bin/env python
2# encoding: utf-8
3# Thomas Nagy, 2016-2018 (ita)
4
5from waflib import Utils
6from waflib.Configure import conf
7
8@conf
9def d_platform_flags(self):
10	"""
11	Sets the extensions dll/so for d programs and libraries
12	"""
13	v = self.env
14	if not v.DEST_OS:
15		v.DEST_OS = Utils.unversioned_sys_platform()
16	binfmt = Utils.destos_to_binfmt(self.env.DEST_OS)
17	if binfmt == 'pe':
18		v.dprogram_PATTERN = '%s.exe'
19		v.dshlib_PATTERN   = 'lib%s.dll'
20		v.dstlib_PATTERN   = 'lib%s.a'
21	elif binfmt == 'mac-o':
22		v.dprogram_PATTERN = '%s'
23		v.dshlib_PATTERN   = 'lib%s.dylib'
24		v.dstlib_PATTERN   = 'lib%s.a'
25	else:
26		v.dprogram_PATTERN = '%s'
27		v.dshlib_PATTERN   = 'lib%s.so'
28		v.dstlib_PATTERN   = 'lib%s.a'
29
30DLIB = '''
31version(D_Version2) {
32	import std.stdio;
33	int main() {
34		writefln("phobos2");
35		return 0;
36	}
37} else {
38	version(Tango) {
39		import tango.stdc.stdio;
40		int main() {
41			printf("tango");
42			return 0;
43		}
44	} else {
45		import std.stdio;
46		int main() {
47			writefln("phobos1");
48			return 0;
49		}
50	}
51}
52'''
53"""Detection string for the D standard library"""
54
55@conf
56def check_dlibrary(self, execute=True):
57	"""
58	Detects the kind of standard library that comes with the compiler,
59	and sets conf.env.DLIBRARY to tango, phobos1 or phobos2
60	"""
61	ret = self.check_cc(features='d dprogram', fragment=DLIB, compile_filename='test.d', execute=execute, define_ret=True)
62	if execute:
63		self.env.DLIBRARY = ret.strip()
64
65