1    /*
     2     *  Copyright 2018 by Texas Instruments Incorporated.
     3     *
     4     */
     5    
     6    /*
     7     * Copyright (c) 2018, Texas Instruments Incorporated
     8     * All rights reserved.
     9     *
    10     * Redistribution and use in source and binary forms, with or without
    11     * modification, are permitted provided that the following conditions
    12     * are met:
    13     *
    14     * *  Redistributions of source code must retain the above copyright
    15     *    notice, this list of conditions and the following disclaimer.
    16     *
    17     * *  Redistributions in binary form must reproduce the above copyright
    18     *    notice, this list of conditions and the following disclaimer in the
    19     *    documentation and/or other materials provided with the distribution.
    20     *
    21     * *  Neither the name of Texas Instruments Incorporated nor the names of
    22     *    its contributors may be used to endorse or promote products derived
    23     *    from this software without specific prior written permission.
    24     *
    25     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    26     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
    27     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    28     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
    29     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    30     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    31     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
    32     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    33     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
    34     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    35     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    36     */
    37    
    38    /*!
    39     *  ======== IM33.xdc ========
    40     *  Cortex M33 with floating point unit, little endian thumb2 (ELF)
    41     */
    42    metaonly module M33F inherits ti.targets.arm.elf.IArm {
    43        override readonly config string name        = "M33F";
    44        override readonly config string suffix      = "m33f";
    45        override readonly config string isa         = "v8M";
    46        override readonly config string rts         = "ti.targets.arm.rtsarm";
    47        override config string platform   = "ti.platforms.cortexM:MTL1_VSOC:1";
    48        override config String stdInclude = "ti/targets/arm/clang/std.h";
    49    
    50        override readonly config xdc.bld.ITarget.Model model = {
    51            endian: "little",
    52            codeModel: "thumb2",
    53            shortEnums: true
    54        };
    55    
    56        override readonly config xdc.bld.ITarget2.Command cc = {
    57            cmd:  "tiarmclang -c",
    58            opts: "-mcpu=cortex-m33 -mfloat-abi=hard -mfpu=fpv5-sp-d16"
    59        };
    60    
    61        override readonly config xdc.bld.ITarget2.Command asm = {
    62            cmd:  "tiarmclang -c -x assembler-with-cpp -mno-default-build-attributes",
    63            opts: "-mcpu=cortex-m33 -mfloat-abi=hard -mfpu=fpv5-sp-d16"
    64        };
    65    
    66        override readonly config xdc.bld.ITarget2.Command lnk = {
    67            cmd:  "tiarmclang",
    68            opts: "-mcpu=cortex-m33 -mfloat-abi=hard -mfpu=fpv5-sp-d16"
    69        };
    70    
    71        /*!
    72         *  ======== ccOpts ========
    73         *  User configurable compiler options.
    74         */
    75        override config xdc.bld.ITarget2.Options ccOpts = {
    76            prefix: "",
    77            suffix: ""
    78        };
    79    
    80        /*!
    81         *  ======== ccConfigOpts ========
    82         *  User configurable compiler options for the generated config C file.
    83         */
    84        override config xdc.bld.ITarget2.Options ccConfigOpts = {
    85            prefix: "$(ccOpts.prefix)",
    86            suffix: "$(ccOpts.suffix)"
    87        };
    88    
    89        /*!
    90         *  ======== asmOpts ========
    91         *  User configurable assembler options.
    92         */
    93        override config xdc.bld.ITarget2.Options asmOpts = {
    94            prefix: "",
    95            suffix: ""
    96        };
    97    
    98        /*!
    99         *  ======== lnkOpts ========
   100         *  Linker options
   101         */
   102        override config xdc.bld.ITarget2.Options lnkOpts = {
   103            prefix: "-Wl,-q -Wl,-u,_c_int00",
   104            suffix: "-Wl,-w -Wl,-c -Wl,-m,$(XDCCFGDIR)/$@.map -l $(rootDir)/lib/generic/libc.a"
   105        };
   106    
   107        override readonly config xdc.bld.ITarget2.Command vers = {
   108            cmd:  "tiarmclang",
   109            opts: "--version"
   110        };
   111    
   112        override config string includeOpts = "";
   113    
   114        /*
   115         *  ======== profiles ========
   116         */
   117        /*
   118         * The compiler option -gdwarf-3 needs to be passed to workaround a
   119         * known bug in TI LLVM compiler generation of debug information.
   120         * See JIRA CODEGEN-4536 for more info.
   121         */
   122        override config xdc.bld.ITarget.OptionSet profiles[string] = [
   123            ["debug", {
   124                compileOpts: {
   125                    copts: "-gdwarf-3",
   126                    defs:  "-D_DEBUG_=1",
   127                },
   128                linkOpts: "-gdwarf-3",
   129            }],
   130    
   131            ["release", {
   132                compileOpts: {
   133                    copts: " -O2 ",
   134                },
   135                linkOpts: " ",
   136            }],
   137        ];
   138    }
   139    /*
   140     *  @(#) ti.targets.arm.clang; 1, 0, 0,0; 7-20-2018 13:59:43; /db/ztree/library/trees/xdctargets/xdctargets-r09/src/ xlibrary
   141    
   142     */
   143