Home | History | Annotate | Download | only in member
      1 # pylint:disable=I0011,W0401,W0614,C0103,E0602
      2 ############################################################################
      3 # Copyright 2017 Intel Corporation
      4 #
      5 # Licensed under the Apache License, Version 2.0 (the "License");
      6 # you may not use this file except in compliance with the License.
      7 # You may obtain a copy of the License at
      8 #
      9 #     http://www.apache.org/licenses/LICENSE-2.0
     10 #
     11 # Unless required by applicable law or agreed to in writing, software
     12 # distributed under the License is distributed on an "AS IS" BASIS,
     13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 # See the License for the specific language governing permissions and
     15 # limitations under the License.
     16 ############################################################################
     17 """Build configuration for tiny member library.
     18 """
     19 Import('*')
     20 env.PartName('member')
     21 
     22 default_build_mode = 'static'
     23 
     24 include_files = Pattern(src_dir='.', includes=['*.h'], recursive=False).files()
     25 
     26 src_files = Pattern(
     27     src_dir='tiny/src', includes=['*.c'], recursive=False).files()
     28 
     29 install_files = Pattern(
     30     src_dir='tiny',
     31     includes=[
     32         '*.h', '*.c', '*-test.cc', '*-testhelper.cc', '*-testhelper.h',
     33         '*.parts', 'Makefile'
     34     ],
     35     excludes=['*/platform_specific*/'],
     36     recursive=True)
     37 
     38 if 'install_package' in env['MODE']:
     39     env.InstallTopLevel(install_files, sub_dir='epid/member/tiny')
     40 
     41 else:
     42     env.Part(parts_file='tiny/stdlib/tiny_stdlib.parts')
     43     env.Part(parts_file='tiny/math/math.parts')
     44     env.DependsOn([
     45         Component('tinycommon', requires=REQ.HEADERS),
     46         Component('member.tiny_stdlib'), Component('member.math')
     47     ])
     48 
     49     env.Append(CPPPATH='#')
     50 
     51     if 'use-sigrl-by-reference' in env['MODE']:
     52         env.Append(CPPDEFINES=['USE_SIGRL_BY_REFERENCE'])
     53     else:
     54         max_sigrl_entries = ARGUMENTS.get('MAX_SIGRL_ENTRIES', 0)
     55         n2_max = int(max_sigrl_entries)
     56         if n2_max:
     57             env.Append(CPPDEFINES=['MAX_SIGRL_ENTRIES={0}'.format(n2_max)])
     58 
     59     if 'static' in env['MODE'] and 'shared' in env['MODE']:
     60         PrintError("both shared and static build mode specified for '{}'. "
     61                    .format(env.subst('$PART_SHORT_NAME')))
     62     if 'static' not in env['MODE'] and 'shared' not in env['MODE']:
     63         PrintMessage(
     64             "build mode not specified for '{}'. Defaulting to '{}'"
     65             .format(env.subst('$PART_SHORT_NAME'), default_build_mode))
     66         env['MODE'].append(default_build_mode)
     67 
     68     if 'shared' in env['MODE']:
     69         env.Append(CPPDEFINES=['SHARED'])
     70         env.ExportCPPDEFINES(['SHARED'])
     71         outputs = env.SharedLibrary('${PART_SHORT_NAME}', src_files)
     72     elif 'static' in env['MODE']:
     73         outputs = env.Library('${PART_SHORT_NAME}', src_files)
     74     else:
     75         print env.subst('$PART_SHORT_NAME')
     76         PrintError("build mode not specified for '{}'. {}".format(
     77             env.subst('$PART_SHORT_NAME'),
     78             "Specify either 'shared' or 'static'."))
     79 
     80     sdk_outs = env.Sdk(outputs)
     81     env.SdkInclude(include_files, sub_dir='epid/${PART_SHORT_NAME}')
     82 
     83     if 'shared' in env['MODE']:
     84         env.InstallTarget(outputs)
     85 
     86     if 'install_lib' in env['MODE']:
     87         env.InstallInclude(include_files, sub_dir='epid/${PART_SHORT_NAME}')
     88         if 'static' in env['MODE']:
     89             env.InstallLib(outputs)
     90 
     91     is_utest_build = False
     92     for i in BUILD_TARGETS:
     93         if "utest::" in str(i):
     94             is_utest_build = True
     95     if is_utest_build:
     96         env.Part(
     97             parts_file='tiny/unittests/utest.parts',
     98             CONFIG=DefaultEnvironment().subst('$CONFIG'))
     99