aboutsummaryrefslogtreecommitdiff
path: root/ext/ipp/ippcp.parts
blob: f9192d5c99eaed56c3648a4e8a5cc7743de95cfa (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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# pylint:disable=I0011,W0401,W0614,C0103,E0602
############################################################################
# Copyright 2016-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
############################################################################
"""Build configuration for Ipp Crypto
"""
import os
Import('*')

env.PartVersion("2019.0.1")
env.PartName("ippcp")
ippcp_libname = '${PART_SHORT_NAME}'

include_files = Pattern(
    src_dir='include/', includes=['*.h'], excludes=[], recursive=True)

src_files = Pattern(
    src_dir='sources/ippcp/',
    includes=[
        '*.c',
    ],
    excludes=[
        'pcparcfour*.c',
        'pcpmain.c',
        '*sm2.c',
        'pcpsha1ca.c',
        'pcpaes*.c',
        'pcpdes*.c',
        'pcpdlp*.c',
        'pcphmac*.c',
        'pcpmd5*.c',
        'pcpng*.c',
        'pcpprime*.c',
        'pcprij*.c',
        'pcprsa*.c',
        'pcpsm3*.c',
        'pcpsms4*.c',
        'pcptdes*.c',
        'pcpmont_expbinbnu_sscm.c',
        'pcpmont_expwinbnu.c',
        'pcpmont_expwinbnu_sscm.c',
    ],
    recursive=False)

env.Append(CPPPATH=[AbsDir('include/')])
env.ExportCPPPATH([AbsDir('include/')])
env.Append(CPPPATH=[AbsDir('sources/include/')])
env.Append(CPPPATH=[AbsDir('sources/ippcp/')])

# ipp defines
if env['TARGET_ARCH'] == 'x86':
    env.Append(CPPDEFINES='_ARCH_IA32')
else:
    env.Append(CPPDEFINES='_ARCH_EM64T')
# env.Append(CPPDEFINES = '_IPP_BE')  #only for BE targets
env.Append(CPPDEFINES='_IPP_DEBUG')  #enable function sanity checking
env.Append(CPPDEFINES='_IPP_C99')
env.Append(CPPDEFINES='_IPP_v50_')
env.Append(CPPDEFINES='_PX')
env.Append(CPPDEFINES='_ABL_')

env.Append(CPPDEFINES=['_DISABLE_ECP_SM2_'])
env.Append(CPPDEFINES=[
    '_DISABLE_ALG_SHA224_', '_DISABLE_ALG_SHA512_224_', '_DISABLE_ALG_MD5_',
    '_DISABLE_ALG_SM3_'
])  #disable unused hash algs

env.SdkInclude(include_files)

if 'use_commercial_ipp' in env['MODE']:
    env['CCOPY_LOGIC'] = 'copy'
    try:
        IPPCRYPTOROOT = os.environ['IPPCRYPTOROOT']
    except KeyError, e:
        env.PrintError(
            "Necessary environment variable not set: ", e, show_stack=False)
    if env['TARGET_PLATFORM']['OS'] == 'win32':
        libpre = ''
        libpost = '.lib'
        IPP_TH_SYMBOL = 'mt'
    else:
        libpre = 'lib'
        libpost = '.a'
        IPP_TH_SYMBOL = ''
    if env['TARGET_PLATFORM']['ARCH'] == 'x86':
        archdir = 'ia32/'
    else:
        archdir = 'intel64/'

    ippcp_libname = libpre + 'ippcp' + IPP_TH_SYMBOL + libpost
    ippcp_dir = IPPCRYPTOROOT + '/lib/' + archdir
    env.SdkLib(ippcp_dir + ippcp_libname)
else:
    all_c_files = src_files.files()
    if 'build_ipp_shared' in env['MODE']:
        env.Append(CPPDEFINES=['IPP_W32DLL'])
        outputs = env.SharedLibrary(ippcp_libname, all_c_files)
        env.InstallTarget(outputs)
    else:
        outputs = env.Library(ippcp_libname, all_c_files)
        env.SdkLib(outputs)
        if 'install_lib' in env['MODE']:
            env.InstallLib(outputs)