summaryrefslogtreecommitdiff
path: root/libs/hidapi/wscript
blob: 2c870661b8a8234251f43c0b11ae63f8e32d3792 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/env python
from waflib.extras import autowaf as autowaf
from waflib import Options
import os
import re
import sys

HIDAPI_VERSION = '0.8.0'

# Variables for 'waf dist'
APPNAME = 'hidapi'
VERSION = HIDAPI_VERSION

# Mandatory variables
top = '.'
out = 'build'

def options(opt):
    autowaf.set_options(opt)

def configure(conf):
    if conf.is_defined('USE_EXTERNAL_LIBS'):
        autowaf.check_pkg(conf, 'hidapi-hidraw', uselib_store='HIDAPI', mandatory=False)
    else:
        if conf.env['build_target'] == 'mingw':
            conf.check (compiler='cxx', lib='setupapi', mandatory=True, uselib_store='SETUPAPI')
            conf.define ('HAVE_HIDAPI', 1)
        elif sys.platform == 'darwin':
            conf.define ('HAVE_HIDAPI', 1)
        elif re.search ("linux", sys.platform) != None:
            autowaf.check_pkg(conf, 'libudev', uselib_store='UDEV', mandatory=False)
            if conf.is_defined('HAVE_UDEV'):
                conf.define ('HAVE_HIDAPI', 1)
        else:
            print ("hidapi is not yet available for the given system")
        conf.load('compiler_c')
        autowaf.configure(conf)

def build(bld):
    if bld.is_defined('USE_EXTERNAL_LIBS'):
        return
    if not bld.is_defined('HAVE_HIDAPI'):
        return

    # Host Library
    obj = bld(features = 'c cstlib')
    autowaf.ensure_visible_symbols (obj, False)
    obj.export_includes    = ['hidapi']
    obj.includes           = ['hidapi']
    obj.name               = 'hidapi'
    obj.target             = 'hidapi'
    obj.vnum               = HIDAPI_VERSION
    obj.install_path       = bld.env['LIBDIR']

    if bld.env['build_target'] == 'mingw':
        obj.source         = 'windows/hid.c'
        obj.linkflags      = [ '-lsetupapi', '-mwindows' ]
        obj.uselib         = 'SETUPAPI'
    else:
        obj.cflags        += [ '-fPIC' ]
        if sys.platform == 'darwin':
            obj.source     = 'mac/hid.c'
            obj.framework  = [ 'IOKit', 'CoreFoundation' ]
        else:
            obj.source     = 'linux/hid.c'
            if re.search ("linux", sys.platform) != None:
                obj.uselib = 'UDEV'

def shutdown():
    autowaf.shutdown()