1    /*
     2     *  Copyright 2020 by Texas Instruments Incorporated.
     3     *
     4     */
     5    
     6    /*
     7     * Copyright (c) 2008-2020 Texas Instruments Incorporated - http://www.ti.com
     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    import xdc.bld.ITarget2;
    38    
    39    /*!
    40     *  ======== M4.xdc ========
    41     *  Embedded Cortex M4, little endian, bare metal target
    42     *
    43     *  This module defines an embedded bare metal target on Cortex M4. The target
    44     *  generates code compatible with the "v7M" architecture.
    45     *
    46     */
    47    metaonly module M4 inherits IM {
    48        override readonly config string name                = "M4"; 
    49        override readonly config string suffix              = "m4g";
    50        override readonly config string isa                 = "v7M4";
    51    
    52        override readonly config ITarget2.Command cc = {
    53            cmd: "$(rootDir)/bin/$(GCCTARG)-gcc -c -MD -MF $@.dep",
    54            opts: "-mcpu=cortex-m4 -mthumb -mfloat-abi=soft -mabi=aapcs -g"
    55        };
    56    
    57        readonly config ITarget2.Command ccBin = {
    58            cmd: "bin/arm-none-eabi-gcc -c -MD -MF $@.dep",
    59            opts: "-mcpu=cortex-m4 -mthumb -mfloat-abi=soft -mabi=aapcs -g"
    60        };
    61    
    62        override readonly config ITarget2.Command asm = {
    63            cmd: "$(rootDir)/bin/$(GCCTARG)-gcc -c -x assembler-with-cpp",
    64            opts: "-Wa,-mcpu=cortex-m4 -Wa,-mthumb"
    65        };
    66    
    67        readonly config ITarget2.Command asmBin = {
    68            cmd: "bin/arm-none-eabi-gcc -c -x assembler-with-cpp",
    69            opts: "-Wa,-mcpu=cortex-m4 -Wa,-mthumb"
    70        };
    71    
    72        override config ITarget2.Options lnkOpts = {
    73            prefix: "-mcpu=cortex-m4 -mthumb -mfloat-abi=soft -nostartfiles -Wl,-static -Wl,--gc-sections ",
    74            suffix: "-L$(packageBase)/libs/install-native/$(GCCTARG)/lib/thumb/v7e-m/nofp -Wl,--start-group -lgcc -lc -lm -Wl,--end-group --specs=nano.specs -Wl,-Map=$(XDCCFGDIR)/$@.map"
    75        };
    76    
    77        /*!
    78         *  ======== includeOpts ========
    79         *  Additional user configurable target-specific include path options
    80         *
    81         *  This target uses newlib-nano run-time.
    82         */
    83        override config string includeOpts = "-I$(packageBase)/libs/install-native/$(GCCTARG)/include/newlib-nano -I$(packageBase)/libs/install-native/$(GCCTARG)/include";
    84    }
    85    /*
    86     *  @(#) gnu.targets.arm; 1, 0, 0,; 1-17-2020 15:49:03; /db/ztree/library/trees/xdctargets/xdctargets-w07/src/ xlibrary
    87    
    88     */
    89