blob: 98451fabff3895b80f22c6e54d3faa50aaa2e4ee [file] [log] [blame]
Alexander Afanasyevb4b92292013-07-09 13:54:59 -07001# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
Yingdi Yua43601f2014-05-09 14:29:16 -07002VERSION='0.1'
3APPNAME='QT-Test'
Alexander Afanasyevb4b92292013-07-09 13:54:59 -07004
Yingdi Yu847aa862013-10-09 16:35:53 -07005from waflib import Configure
6
Alexander Afanasyevb4b92292013-07-09 13:54:59 -07007def options(opt):
Alexander Afanasyevb4b92292013-07-09 13:54:59 -07008 opt.load('compiler_c compiler_cxx boost protoc qt4')
Yingdi Yud04ed1a2013-10-14 14:07:03 -07009
10 opt.load('tinyxml', tooldir=['waf-tools'])
Yingdi Yub2e747d2013-11-05 23:06:43 -080011 opt.load('cryptopp', tooldir=['waf-tools'])
Yingdi Yua43601f2014-05-09 14:29:16 -070012
Alexander Afanasyevb4b92292013-07-09 13:54:59 -070013def configure(conf):
Yingdi Yub2e747d2013-11-05 23:06:43 -080014 conf.load("compiler_c compiler_cxx boost protoc qt4 tinyxml cryptopp")
Alexander Afanasyevb4b92292013-07-09 13:54:59 -070015
Yingdi Yub2e747d2013-11-05 23:06:43 -080016 conf.add_supported_cxxflags (cxxflags = ['-O0', '-g'])
Alexander Afanasyevb4b92292013-07-09 13:54:59 -070017
Yingdi Yud04ed1a2013-10-14 14:07:03 -070018 conf.check_tinyxml(path=conf.options.tinyxml_dir)
Yingdi Yu4390ce52013-10-10 17:27:54 -070019 conf.check_cfg(package='libndn.cxx', args=['--cflags', '--libs'], uselib_store='NDNCXX', mandatory=True)
20 conf.check_cfg(package='sqlite3', args=['--cflags', '--libs'], uselib_store='SQLITE3', mandatory=True)
Yingdi Yu3b318c12013-10-15 17:54:00 -070021 conf.check_cfg(package='liblog4cxx', args=['--cflags', '--libs'], uselib_store='LOG4CXX', mandatory=True)
Yingdi Yub2e747d2013-11-05 23:06:43 -080022 conf.check_cfg (package='ChronoSync', args=['ChronoSync >= 0.1', '--cflags', '--libs'], uselib_store='SYNC', mandatory=True)
Yingdi Yu3b318c12013-10-15 17:54:00 -070023 conf.define ("HAVE_LOG4CXX", 1)
Yingdi Yu4390ce52013-10-10 17:27:54 -070024
Yingdi Yud04ed1a2013-10-14 14:07:03 -070025 conf.check_boost(lib='system random thread filesystem')
Yingdi Yu847aa862013-10-09 16:35:53 -070026
27 conf.write_config_header('config.h')
28
29
30def build (bld):
31 qt = bld (
Yingdi Yu40eca752013-10-10 15:00:58 -070032 target = "Contacts",
Yingdi Yu847aa862013-10-09 16:35:53 -070033 features = "qt4 cxx cxxprogram",
34 defines = "WAF",
Yingdi Yub2e747d2013-11-05 23:06:43 -080035 source = bld.path.ant_glob(['src/*.cpp', 'src/*.ui', 'logging.cc', 'src/*.proto']),
Yingdi Yu847aa862013-10-09 16:35:53 -070036 includes = ".",
Yingdi Yub2e747d2013-11-05 23:06:43 -080037 use = "QTCORE QTGUI QTSQL SQLITE3 NDNCXX TINYXML BOOST BOOST_FILESYSTEM LOG4CXX CRYPTOPP SYNC",
Yingdi Yu92e8e482013-10-17 21:13:03 -070038 )
39
40 cert_publish = bld (
41 target = "CertPublish",
42 features = "cxx cxxprogram",
43 defines = "WAF",
44 source = bld.path.ant_glob(['tmp/cert-publish.cpp']),
45 includes = ".",
46 use = "SQLITE3 NDNCXX BOOST BOOST_FILESYSTEM LOG4CXX",
47 )
Yingdi Yu847aa862013-10-09 16:35:53 -070048
49
50@Configure.conf
51def add_supported_cxxflags(self, cxxflags):
52 """
53 Check which cxxflags are supported by compiler and add them to env.CXXFLAGS variable
54 """
55 self.start_msg('Checking allowed flags for c++ compiler')
56
57 supportedFlags = []
58 for flag in cxxflags:
59 if self.check_cxx (cxxflags=[flag], mandatory=False):
60 supportedFlags += [flag]
61
62 self.end_msg (' '.join (supportedFlags))
63 self.env.CXXFLAGS += supportedFlags
64
65from waflib.TaskGen import feature, before_method, after_method
66@feature('cxx')
67@after_method('process_source')
68@before_method('apply_incpaths')
69def add_includes_paths(self):
70 incs = set(self.to_list(getattr(self, 'includes', '')))
71 for x in self.compiled_tasks:
72 incs.add(x.inputs[0].parent.path_from(self.path))
73 self.includes = list(incs)