aboutsummaryrefslogtreecommitdiffstats
path: root/classes/ti-pdk.bbclass
blob: b84b161adc61c10f980bab0f70c20569e123e636 (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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
require recipes-ti/includes/ti-paths.inc
require recipes-ti/includes/ti-staging.inc

inherit perlnative

DEPENDS = "ti-xdctools-native ti-cg-xml-native ti-sysbios common-csl-ip-rtos libxml-simple-perl-native gcc-arm-none-eabi-native ti-cgt6x-native ti-cgt-pru-native ti-pdk-build-rtos"

DEPENDS_append_omap-a15 = " ti-cgt-arm-native"
DEPENDS_remove_ti33x = "ti-cgt6x-native"
DEPENDS_remove_ti43x = "ti-cgt6x-native"
DEPENDS_append_omapl1 = " ti-cgt-arm-native"

S = "${WORKDIR}/git"
B = "${WORKDIR}/build"

# HTML hyperlink text
PDK_COMP_LINK_TEXT ?= ""

DOC_FILE = "API_Documentation_${PN}.html"

create_doc_link () {
    PDK_COMP_DIR=`get_build_dir_bash`

    echo "<a href=\"${PDK_COMP_DIR}/docs/doxygen/html/index.html\">${PDK_COMP_LINK_TEXT}</a>" >> ${D}${PDK_INSTALL_DIR_RECIPE}/packages/.extras/doc/${DOC_FILE}
}

get_build_dir_bash() {
  if [ -f ${S}/package.xdc ]
  then
    grep '^package' ${S}/package.xdc | sed -e 's|\[.*$||' | awk '{ print $2 }' | sed -e 's|\.|/|g'
  else
    echo ${S}
    return 1
  fi
}

export CROSS_TOOL_PRFX="arm-none-eabi-"
export TOOLCHAIN_PATH_A8 = "${GCC_ARM_NONE_TOOLCHAIN}"
export TOOLCHAIN_PATH_A9 = "${GCC_ARM_NONE_TOOLCHAIN}"
export TOOLCHAIN_PATH_A15 = "${GCC_ARM_NONE_TOOLCHAIN}"
export TOOLCHAIN_PATH_M4 = "${M4_TOOLCHAIN_INSTALL_DIR}"
export TOOLCHAIN_PATH_Arm9 = "${M4_TOOLCHAIN_INSTALL_DIR}"
export C6X_GEN_INSTALL_PATH = "${STAGING_DIR_NATIVE}/usr/share/ti/cgt-c6x"
export CL_PRU_INSTALL_PATH = "${TI_CGT_PRU_INSTALL_DIR}"

export ROOTDIR = "${B}"
export BIOS_INSTALL_PATH = "${SYSBIOS_INSTALL_DIR}"
export XDC_INSTALL_PATH = "${XDC_INSTALL_DIR}"
export PDK_INSTALL_PATH = "${PDK_INSTALL_DIR}/packages"

export XDCPATH = "${XDC_INSTALL_DIR}/packages;${SYSBIOS_INSTALL_DIR}/packages;${PDK_INSTALL_DIR}/packages"
export SECTTI="perl ${CG_XML_INSTALL_DIR}/ofd/sectti.pl"

TI_PDK_XDCMAKE ?= "1"

# By default, only build the cores with available toolchains
TI_PDK_LIMIT_CORES ?= "a15_0 ipu1_0 ipu1_1 ipu2_0 ipu2_1 c66x c66xdsp_1 c66xdsp_2 arm9_0 c674x a9host a8host pru_0 pru_1"
TI_PDK_LIMIT_SOCS ?= ""
TI_PDK_LIMIT_BOARDS ?= ""
TI_PDK_MAKE_TARGET ?= "release"
TI_PDK_EXTRA_MAKE ?= ""

TI_PDK_XDC_ARGS ?= "${TI_PDK_LIMIT_SOCS}"

PARALLEL_XDC = "--jobs=${BB_NUMBER_THREADS}"
PARALLEL_MAKE = ""

EXTRA_OEMAKE = " \
    LIMIT_SOCS="${TI_PDK_LIMIT_SOCS}" \
    LIMIT_BOARDS="${TI_PDK_LIMIT_BOARDS}" \
    LIMIT_CORES="${TI_PDK_LIMIT_CORES}" \
    ${TI_PDK_EXTRA_MAKE} \
"

do_configure() {
    BUILD_DIR=${B}/`get_build_dir_bash`

    mkdir -p ${BUILD_DIR}
    cp -r ${S}/* ${BUILD_DIR}

    if [ "${TI_PDK_XDCMAKE}" == "1" ]
    then
        cd ${BUILD_DIR}

        sed -i "s/\ \"\.\\\\\\\\\"\ +//" src/Module.xs
        find -name "*.xs" -exec sed -i "s/ofd6x\.exe/ofd6x/" {} \;
        find -name "*.xs" -exec sed -i "s/sectti\.exe/sectti/" {} \;
        find -name "*.xs" -exec sed -i "/\.chm/d" {} \;
        find -name "*.xs" -exec sed -i "s/pasm\_dos/pasm\_linux/" {} \;

        cd ${B}
        ${XDC_INSTALL_DIR}/xdc clean ${PARALLEL_XDC} -PR .
    else
        if [ "${CLEANBROKEN}" != "1" ]
        then
            cd ${BUILD_DIR}
            oe_runmake clean
            cd "${B}"
        fi
    fi

}

do_compile() {

    if [ "${TI_PDK_XDCMAKE}" == "1" ]
    then
        ${XDC_INSTALL_DIR}/xdc all ${PARALLEL_XDC} XDCARGS="${TI_PDK_XDC_ARGS}" ROOTDIR="${ROOTDIR}" -PR .
        ${XDC_INSTALL_DIR}/xdc release XDCARGS="${TI_PDK_XDC_ARGS}" -PR .
    else
        BUILD_DIR=${B}/`get_build_dir_bash`
        cd ${BUILD_DIR}

        oe_runmake ${TI_PDK_MAKE_TARGET}
    fi
}

do_install () {
    install -d ${D}${PDK_INSTALL_DIR_RECIPE}/packages
    find -name "*.tar" -exec tar xf {} --no-same-owner -C ${D}${PDK_INSTALL_DIR_RECIPE}/packages \;
    
    if [ "${PDK_COMP_LINK_TEXT}" != "" ]
    then
        install -d ${D}${PDK_INSTALL_DIR_RECIPE}/packages/.extras/doc
        create_doc_link
    fi
}

FILES_${PN} += "${PDK_INSTALL_DIR_RECIPE}/packages"