Software Development Environment

Shared by: pengxiang
Categories
Tags
-
Stats
views:
2
posted:
7/30/2012
language:
pages:
118
Document Sample
scope of work template
							Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                  Page 1 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




            Intuitive Surgical, Inc.
  Project: Da Vinci A4A5.x (IS1200IS2000)


                 Software Development Environment




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                                      Intuitive Surgical, Inc.–Confidential                                         Page 2 of 118
     Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



                                                            Table of Contents
1.     PURPOSE .......... ERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.

2.     SCOPE ................ ERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.

3.     REFERENCES .. ERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.

4.     OVERVIEW ...... ERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.

5.     TOOLS ............... ERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
5.1           COMMON TO ALL SOFTWARE DEVELOPMENTERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
5.2           MONITORING NETWORK SOFTWARE DEVELOPMENTERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
5.3           DSP SOFTWARE DEVELOPMENTERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
5.4           SYSTEM SUPERVISORY CONTROLLER SOFTWARE DEVELOPMENTERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
5.5           DAFD SOFTWARE DEVELOPMENTERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
6.     SOFTWARE DEVELOPMENT ENVIRONMENT STRUCTUREERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.
6.1           DA VINCI SOFTWARE STRUCTUREERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.

6.2 PROJECT ENVIRONMENTSERROR! BOOKMARK NOT DEFINED.ERROR! BOOKMARK NOT DEFINED.1. PURPOSE                                                                             5

2.     SCOPE ....................................................................................................................................................5

3.     REFERENCES ...................................................................................................................................... 5

4.     OVERVIEW .......................................................................................................................................... 6

5.     TOOLS ...................................................................................................................................................7
5.1       COMMON TO ALL SOFTWARE DEVELOPMENT ......................................................................................7
5.2       MONITORING NETWORK SOFTWARE DEVELOPMENT ............................................................................ 7
5.3       DSP SOFTWARE DEVELOPMENT........................................................................................................... 9
5.4       LAPTOP SOFTWARE DEVELOPMENT.................................................................................................... 10
5.5       DAFD SOFTWARE DEVELOPMENT ..................................................................................................... 11
6.     SOFTWARE DEVELOPMENT ENVIRONMENT STRUCTURE ...............................................12
6.1    DA VINCI SOFTWARE STRUCTURE ....................................................................................................... 12
6.2    PROJECT ENVIRONMENTS ...................................................................................................................13
  6.2.1    Da Vinci Tools Environment ................................................................................................. 1516
  6.2.2    Monitoring Network Project Environments ........................................................................... 1819
  6.2.3    DSP Network Project Environment .......................................................................................2021
  6.2.4    Laptop Project Environment ................................................................................................. 2223
  6.2.5    Monitor DSP Project Environment .......................................................................................2526
  6.2.6    Target Drive Environment ..................................................................................................... 2728
6.3    CONFIGURATION MANAGEMENT ..................................................................................................... 3132
  6.3.1    Overview of Configuration Management ..............................................................................3132
  6.3.2    Mnet Specific Configuration Management ............................................................................ 3132
  6.3.3    DSPnet Specific Configuration Management ........................................................................ 3233
  6.3.4    Laptop Specific Configuration Management ......................................................................... 3334
  6.3.5    Monitor DSP Specific Configuration Management ...............................................................3436
7.     PROJECT BUILDING ...................................................................................................................3537


                          Changes to this Document May be Viewed on the ECO Releasing it
                                      7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                                          Intuitive Surgical, Inc.–Confidential                                               Page 3 of 118
    Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



7.1    MONITORING NETWORK PROJECT ENVIRONMENT BUILDS .............................................................3537
  7.1.1   Overview ................................................................................................................................3537
  7.1.2   Generalized Makefile Rules ................................................................................................... 3537
  7.1.3   Major components of a node makefile ...................................................................................3638
       7.1.3.1       Overview .......................................................................................................................................... 3638
       7.1.3.2       Macros used by the generalized makefile ......................................................................................... 3739
       7.1.3.3       Including the generalized makefile ................................................................................................... 3739
       7.1.3.4       Macros specifying Compiler, Assembler, Linker, and PC-Lint flags ............................................... 3840
       7.1.3.5       Macros specifying File list................................................................................................................ 3840
       7.1.3.6       Specifying the main target ................................................................................................................ 3840
       7.1.3.7       Specifying the object file dependencies ............................................................................................ 3840
  7.1.4    Building a given node ............................................................................................................ 3941
7.2    DIGITAL SIGNAL PROCESSING NETWORK PROJECT ENVIRONMENT BUILDS .................................... 4042
  7.2.1    Overview ................................................................................................................................4042
  7.2.2    Generalized Makefile Rules ................................................................................................... 4042
  7.2.3    Major components of a node makefile ...................................................................................4143
       7.2.3.1       Overview .......................................................................................................................................... 4143
       7.2.3.2       Macros used by the generalized makefile ......................................................................................... 4143
       7.2.3.3       Including the generalized makefile ................................................................................................... 4143
       7.2.3.4       Macros specifying Compiler, Assembler, Linker, and PC-Lint flags ............................................... 4345
       7.2.3.5       Macros specifying File list................................................................................................................ 4345
       7.2.3.6       Macros specifying special Files and corresponding set of Compiler Flags ...................................... 4345
       7.2.3.7       Specifying the main target ................................................................................................................ 4446
       7.2.3.8       Specifying the object file dependencies ............................................................................................ 4446
  7.2.4   Building a given node ............................................................................................................ 4446
7.3    MONITOR DSP PROJECT ENVIRONMENT BUILDS............................................................................ 4547
  7.3.1   Overview ................................................................................................................................4547
  7.3.2   Generalized Makefile Rules ................................................................................................... 4547
  7.3.3   Major components of a node makefile ...................................................................................4648
       7.3.3.1       Overview .......................................................................................................................................... 4648
       7.3.3.2       Macros used by the generalized makefile ......................................................................................... 4648
       7.3.3.3       Including the generalized makefile ................................................................................................... 4648
       7.3.3.4       Macros specifying Compiler, Assembler, Linker, and PC-Lint flags ............................................... 4749
       7.3.3.5       Macros specifying File list................................................................................................................ 4749
       7.3.3.6       Specifying the main target ................................................................................................................ 4749
       7.3.3.7       Specifying the object file dependencies ............................................................................................ 4749
  7.3.4    Building the Monitor DSP node ............................................................................................4850
7.4    LAPTOP PROJECT ENVIRONMENT BUILDS .......................................................................................4951
  7.4.1    Overview ................................................................................................................................4951
  7.4.2    Generalized Makefile Rules ................................................................................................... 4951
  7.4.3    Major components of a node makefile ...................................................................................5052
       7.4.3.1       Overview .......................................................................................................................................... 5052
       7.4.3.2       Macros used by the generalized makefile ......................................................................................... 5153
       7.4.3.3       Including the generalized makefile ................................................................................................... 5153
       7.4.3.4       Macros specifying Compiler, Assembler, Linker, and PC-Lint flags ............................................... 5153
       7.4.3.5       Macros specifying File list................................................................................................................ 5153
       7.4.3.6       Macros specifying Alternate Library Files........................................................................................ 5254
       7.4.3.7       Specifying the main target (MAIN_TARGET)................................................................................. 5355
       7.4.3.8       Specifying the object file dependencies ............................................................................................ 5355
  7.4.4    Building a given node ............................................................................................................ 5355
7.5    PROJECT RELEASE BUILDS AND OTHER AUXILIARY OPERATIONS ....................................................5456
  7.5.1    Overview ................................................................................................................................5456
  7.5.2    Generalized Makefile Rules ................................................................................................... 5456
       7.5.2.1       Specifying path information ............................................................................................................. 5456
       7.5.2.2       Defines.MAK, DEFS_EMBEDDED, DEFS_LOADER, and DEFS_LAPTOP ............................... 5557
       7.5.2.3       Specifying Build Version number (xxx_BUILD_NUM macro) ....................................................... 5557
       7.5.2.4       Specifying Software Release Version number (xxx_SWRLSE_VER macro) .................................. 5658

                          Changes to this Document May be Viewed on the ECO Releasing it
                                      7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                                          Intuitive Surgical, Inc.–Confidential                                               Page 4 of 118
     Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



       7.5.2.5       Verification of the Build and Software Release Version numbers ................................................... 5759
     7.5.3        Functions performed by the Release Build ............................................................................ 5759
       7.5.3.1       Building a software release ............................................................................................................... 5759
       7.5.3.2       Other functions of the Release Build makefile ................................................................................. 6264
     7.5.4        Major components of the Release Build makefile .................................................................. 6264
       7.5.4.1       Overview .......................................................................................................................................... 6264
       7.5.4.2       Specification of the Build and Release Revision INI Files ............................................................... 6264
       7.5.4.3       Specification of the Shared Files ...................................................................................................... 6264
       7.5.4.4       Specification of the Node makefiles ................................................................................................. 6466
       7.5.4.5       Specification of Additional Directories for every node in a subsystem ............................................ 6567
       7.5.4.6       Specification of Additional Directories and PVCS Logfiles for given nodes ................................... 6567
       7.5.4.7       Specification of Directories and PVCS Logfiles to retrieve for Software Build ............................... 6567
       7.5.4.8       Specification of the Target directories and corresponding Target files............................................. 6668
       7.5.4.9       Specifying Version Numbers for individual nodes ........................................................................... 6870
       7.5.4.10        Other Makefile Macros ................................................................................................................ 6871
     7.5.5        Performing a Software Release .............................................................................................7072
     7.5.6        Maintenance on the Release Build makefile .......................................................................... 7072
     7.5.7        Other Functions of the Release Build makefile ..................................................................... 7173
       7.5.7.1       Overview and use of explicit targets ................................................................................................. 7173
       7.5.7.2       Building a directory tree for a given node ........................................................................................ 7173
       7.5.7.3       Populating a set of Shared Directories from PVCS archives ............................................................ 7173
       7.5.7.4       Building a list of PVCS archive filenames ....................................................................................... 7274
       7.5.7.5       Applying a Version Number Label to PVCS archives...................................................................... 7274
       7.5.7.6       Checking the nodes that utilize a given shared file ........................................................................... 7375
8.     APPENDIX A: MNET MAKEFILE SAMPLE ........................................................................... 7476

9.     APPENDIX B: DSPNET MAKEFILE SAMPLE ........................................................................ 7880

10.      APPENDIX C: DAFD MAKEFILE SAMPLE ........................................................................ 8587

11.      APPENDIX D: LAPTOP MAKEFILE SAMPLE .................................................................... 8789

12.      APPENDIX E: RELEASE BUILD MAKEFILE ..................................................................... 8991




                          Changes to this Document May be Viewed on the ECO Releasing it
                                      7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                   Intuitive Surgical, Inc.–Confidential                  Page 5 of 118
     Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




1. Purpose
This document describes the tools required for development of the Monitoring Network, the DSP Network,
and the Laptop application for the da Vinci project.


2. Scope
This document defines the software development environment, as a component of the da Vinci A5.x system
(IS1200). The previous version of this document (600001) should be used for the da Vinci A3.x systems
(IS1000).


3. References
1.    Electronic Hardware Subsystem Architecture Specification, 813004-03
2.    Operator Interface Specification, 813010-03
3.    Mnet Software Architecture and Design Document, 813028-03
4.    DSPnet Software Design Document, 813027-03
5.    DAFD Firmware Design Document, 813035
6.    Version Manager Configuration, 600005




                     Changes to this Document May be Viewed on the ECO Releasing it
                                 7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                  Intuitive Surgical, Inc.–Confidential                  Page 6 of 118
    Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




4. Overview
Development of a software system involves the translation of specifications into executable software,
through a logical design and implementation process, with the following deliverables:
    Finalized specifications: Since design is an iterative process, product and system specifications must be
     updated during the design process. Updated requirement specifications are used to develop the Test
     specifications that determine if the product meets its requirements in terms of performance, reliability,
     safety, etc.
    Design documentation: all the documents that describe HOW the system works, including architecture
     and detailed design specifications, Hazard analysis (FTA and FMECA), development test reports,
     prototype documentation, etc.
    Software source code: properly documented source code files in assembly and/or higher level language
     formats, ready for translation into executable code.
    Software executables: in the form of executables for the windows environment, and in the form of
     object files in an appropriate format for programming EPROMs and microcontroller PROMs in the
     embedded environment.
    Acceptance test results and report: Validation of the system through testing generates testing results
     that are analyzed, and then summarized in an Validation Test Report. This VTR documents the
     acceptability of the developed software product, as defined in the product specifications.
All deliverables from the development effort are processed according to a document control procedure, as
required by GMP regulations. A version control system (subversion) controls access to these documents
stored in a system design repository. A series of makefiles is used to perform program builds by preparing
software executables from the corresponding software source code modules.




                    Changes to this Document May be Viewed on the ECO Releasing it
                                7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                   Intuitive Surgical, Inc.–Confidential                  Page 7 of 118
     Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




5. Tools
The following types of tools are required for development of da Vinci embedded software (refer to Figure                      Formatted: Font: Not Bold
1Figure 1):


5.1 Common to All Software Development
1.    Version control software: The history of on-line documentation will be maintained with subversion
      (SVN), a version control system software package. For complete information on SVN, please visit
      http://subversion.tigris.org. A da_Vinci directory will be on the network, which contains the directory
      structure listed in this document. Each developer will have a copy of this directory structure on his
      local drive. The work directory for projects will point to the appropriate location in the overall
      directory structure on the C: drive. This is where files will go for a given project when a checkout is
      done. The directory structure on the network will be used to hold the most recent release of files for
      the project.
2.    COTS Libraries: Externally developed software libraries must be placed under revision control. If no
      changes to such packages are made, certification of testing from the manufacturer may be obtained to
      satisfy FDA/IEC requirements. Modification to the libraries requires that Intuitive Surgical re-establish
      the acceptability of the modified software, either through regression testing or a re-validation of the
      modified package.
3.    Development Environment: To integrate the functionality of the version control, source code editing
      and source code translation tools (assemblers, compilers, linkers), Premia’s CodeWright is utilized.
      For program builds, Merant’s Configuration Builder (in conjunction with custom makefiles) is used.
      Other development tools may be utilized on a project by project basis; exceptions will be noted in the
      corresponding Software Development sections that follow. Gimpel Software’s PC-Lint is also used to
      scrutinize C and C++ source code, in order to ferret out potential coding problems.
4.    Custom Software Utilities: Custom utilities have been developed at Intuitive Surgical to facilitate the                 Formatted: Bullets and Numbering
      software development process. These range from makefiles to PC based executable programs that are
      either utilized by the makefiles (eg, the SetVer utility), employed for diagnostic or documentaiton
      purposes (eg, the Error Parser utility), or used as part of the system deployment process (eg, Config
      Loader). Appropriate unit testing has been performed to insure that these utilities function as intended.


5.2 Monitoring Network Software Development
1.    COTS Libraries: Software functionality implemented with COTS libraries:
               MNET network control: Cimetrics 9 bit network software libraries (Release 1.10 March 1983)
                including some in-house developed modifications.
               8051 Microcontroller task management and timing: FR51 - Keil RTX-51 real-time operating
                system (Version 5.10a) Keil RTX-51 Tiny real-time operating system (Version 1.6)
               Kadak’s AMX multi-tasking O/S                                                                                 Formatted: Bullets and Numbering

               Kadak’s ethernet support
               MetaWare High C/C++ PowerPC Toolset (including software emulation floating point)
3.2. 80C520 Family compiler, assembler, linker: Keil C cross compiler and assembler package (version                          Formatted: Bullets and Numbering
     5.5). C source code may also be scrutinized with PC-Lint, by Gimpel Software, in order to isolate
     potential coding problems.
4.3. PowerPC Family compiler, assembler, linker: The Power-PC cross compiler and assembler package
     by Metaware (version 4.5). C source code may also be scrutinized with PC-Lint, by Gimpel Software,
     in order to isolate potential coding problems.

                     Changes to this Document May be Viewed on the ECO Releasing it
                                 7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                          Intuitive Surgical, Inc.–Confidential                                      Page 8 of 118
     Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



4.    Metaware SeeCode Debugger: Metaware debug tool is used to develop and test the code                                                               Formatted: Bullets and Numbering
      functionality
4.5. Rational Rose Realtime Professional Edition: A UML development tool used to specify the
     embedded Supervisor (ver 6.4.87.0, build #2002.05.00.305.000)
5.6. Flash PROM considerations: Software executables that are not downloaded into embedded
     processors over the UInet and USB port must be programmed into onboard microcontroller Flash
     PROMs external EPROMs. A set of software “loader modules” has been developed to provide the
     Flash PROM upgrade capability.
6.7. Ceibo DS-51 Emulator w/ 87C530 POD: An emulator will be used during development to simplify
     monitoring and analysis of real time events. Includes Ceibo windows emulator interface tool (version
     1.09N)


      COTS                                                                                                                   Validation
     Libraries                                                                                       Microcontroller/      Env ironme nt
                                                                                                         Eprom
                                                                                                      Programmer
                                                                         Firmware Hex Files
                   Document      System Design                                                           Programmed
                      s            Repository                                                              Dev ices
                                                                   Downloadable SW executables
                                                                                                         Production
                                                                                                          Hardw are
                                      Ve rsion                         Acceptance
                                      Control                             Test                                          Test Setup/Results
                                                                         Plans

                                                                                                         Validation
                                                                                                           Tests
                                                       Acceptance Test Report




                                                                                                         Validation
                                                                                                           Test
                                                            SW                                            Analysis
                                     Source Code         Executables
                                                         & Sy mbols




     Requirements
     - Product specification                                                                                                  Development
     - System requirements                                                                                                    Environment
     Design Documentation                           CodeWright
     - Hardw are Design
     - Softw are Design
     - Detailed Design           Iteration         Source Code FIles
     - Hazards Analysis
     Testing Plans                                                           SW                               Control
     - Test Specifications                           Compiler /                                                             Prototype
                                                                          Executables         Emulator          &
     - etc.                                           Linker              & Sy mbols                          Results       Hardw are




Figure 1: Monitoring Network Software Development Environment & Tools




                        Changes to this Document May be Viewed on the ECO Releasing it
                                    7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                          Intuitive Surgical, Inc.–Confidential                                   Page 9 of 118
     Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




5.3 DSP Software Development
1.    COTS Libraries: Software functionality implemented with COTS libraries:
                Analog Devices ADSP Sharc 21k Standard C Library (Version 4.11)
3.2. ADSP-210XX Family Visual DSP++ Development Software: Analog Devices family development                                                          Formatted: Bullets and Numbering
     software (VDSP++ release 4.11) includes a C cross compiler (cc21k Version 6.0.9), an assembler
     (easm21k, Version 2.1.2.0), a linker (Version 2.6.0.2), and a loader (elfloader, Version 4.1.3), which
     are all used to develop the DSP code. Gimpel Software may also scrutinize C source code with PC-
     Lint,, in order to ferret out potential coding problems.
4.3. ADSP-21060 Emulator: The Analog Devices Summit-ICE emulator is used during development to
     test the algorithm code in the actual target system (the hardware development system)). The standard
     emulator software enables any single SHARC to be monitored. The Analog Devices Visual DSP++
     debugger enables multiple processors to be monitored simultaneously.
4.    Flash PROM/Microcontroller considerations: Software executables that are not downloaded into
      embedded processors over the UInet and USB port must be programmed into onboard microcontroller
      Flash PROMs. A software “loader module” has been developed to provide the Flash PROM upgrade
      capability.



      COTS
     Libraries



                   Document     System Design
                      s           Repository
                                                                                                                           Validation
                                                                           Downloadable                                  Env ironme nt
                                                                          SW executables
                                                                                                       Production
                                                                                                        Hardware
                                     Ve rsion                         Validation
                                     Control                            Test                                          Test Setup/Results
                                                                        Plans

                                                                                                       Validation
                                                                                                         Tests
                                                       Validation Test Report




                                                                                                       Validation
                                                                                                         Test
                                                           SW                                           Analysis
                                    Source Code         Executables
                                                        & Sy mbols




     Requirements
     - Product specification                                                                                                Development
     - System requirements                                                                                                  Environment
     Design Documentation                          CodeWright
     - Hardw are Design                                                                    Simulator
     - Softw are Design
     - Detailed Design          Iteration         Source Code FIles
     - Hazards Analysis
     Testing Plans                                                          SW                              Control
     - Test Specifications                          Compiler /                                                            Prototype
                                                                         Executables       Emulator           &
     - etc.                                          Linker              & Sy mbols                         Results       Hardware




Figure 2: Sharc DSP Software Development Environment & Tools

                       Changes to this Document May be Viewed on the ECO Releasing it
                                   7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                         Intuitive Surgical, Inc.–Confidential                            Page 10 of 118
     Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




5.4 Laptop Software Development

1.    COTS Libraries: Software functionality implemented with COTS libraries:
                MFC 6.0
                LabWindows CVI 5.5
                WIN2000 (5.00.2195)
2.    Development Environment: To integrate the functionality of source code editing, source code
      translation tools and debugging, Microsoft’s Visual C++ 6.0 or LabWindows CVI 5.5 is utilized.



      COTS
     Libraries                                                                                                          Validation
                                                                                                                      Env ironme nt
                                                                                                   Production
                                System Design                             SW executables            Hardw are
                   Document
                      s           Repository
                                                                                                                Test Setup/Results

                                                                      Validation
                                                                        Test                       Validation
                                                                        Plans                        Tests
                                     Ve rsion
                                     Control
                                                       VaildationTest Report
                                                                                                   Validation
                                                                                                     Test
                                                                                                    Analysis




                                                           SW
                                    Source Code         Executables
                                                        & Sy mbols




     Requirements
     - Product specification                                                                            Development
     - System requirements                                                                              Environment
     Design Documentation                             Editor
     - Hardw are Design
     - Softw are Design
     - Detailed Design          Iteration         Source Code FIles
     - Hazards Analysis
     Testing Plans                                                          SW
                                                    Compiler /                              IBM PC
     - Test Specifications                                               Executables
                                                     Linker                                Compatible
     - etc.                                                              & Sy mbols




Figure 3: Laptop Software Development Environment & Tools




                       Changes to this Document May be Viewed on the ECO Releasing it
                                   7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                          Intuitive Surgical, Inc.–Confidential                                      Page 11 of 118
     Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




5.5 DAFD Software Development
1.    COTS Libraries: No software functionality implemented with COTS libraries.
3.2. ADSP-21XX Family Assembler/Linker/System Builder: Analog Devices 21XX family development                                                            Formatted: Bullets and Numbering
     software package, Visual DSP (version 6.0.2).
4.3. ADSP-21XX Simulator: The Analog Devices 21XX simulator (release 5.1) is used to develop and test
     the code functionality which is independent of the MSD hardware, or for which the target hardware is
     not yet available.
5.4. EPROM programmer: Software executables must be programmed into FLASH EEPROMs which
     are then placed in sockets on each MSD board.
6.5. ADSP-21XX Emulator w/adapter: The Momentum Data Systems ADSP-218x family EZ-ICE
     emulator (release 2.0.0.2) is used during development to test the algorithm code in the actual target
     system.

      COTS
     Libraries                                                                                                                  Validation
                                                                                                           EPROM              Env ironme nt
                                                                                                         Programmer
                                                                        Firmware Hex Files
                                System Design
                  Documents
                                  Repository                                                         Programmed Dev ices



                                                                                                         Production
                                                                                                          Hardw are
                                     Ve rsion                         Validation
                                     Control                            Test                                               Test Setup/Results
                                                                        Plans

                                                                                                          Validation
                                                                                                            Tests
                                                       Validation Test Report




                                                                                                          Validation
                                                                                                            Test
                                                           SW                                              Analysis
                                    Source Code         Executables
                                                        & Sy mbols




     Requirements
     - Product specification                                                                                                     Development
     - System requirements                                                                                                       Environment
     Design Documentation                          CodeWright
     - Hardw are Design                                                                      Simulator
     - Softw are Design
     - Detailed Design          Iteration         Source Code FIles
     - Hazards Analysis
     Testing Plans                                                          SW                                 Control
     - Test Specifications                         Assembler /                                                                 Prototype
                                                                         Executables         Emulator            &
     - etc.                                          Linker              & Sy mbols                            Results         Hardw are




Figure 4: DAFD Software Development Environment & Tools




                       Changes to this Document May be Viewed on the ECO Releasing it
                                   7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                    Intuitive Surgical, Inc.–Confidential                         Page 12 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




6. Software Development Environment Structure

6.1 da Vinci Software structure
The da Vinci product contains four major software components: the software controlling the DSP hardware,
the software for each of the nodes in the ISCnet, the software running on the DSPs on the MSD boards, and
the software running on the Laptop computer. Each of these components is managed as a single project,
with separate environments. Each environment defines an organization to the numerous files that comprise
the source code, documentation and executables for the project. Each of these projects is managed using
the Intersolv configuration management tools.
In the diagram below, it is important to note that a series of nodes are depicted for the Monitoring Network
project only. This set of nodes, subordinate to the Mnet project, is done to illustrate the manner in which
these components are segregated. Both the DSP and Laptop projects similarly contain individual nodes (at
present, the DAFD consists of a single node), but the diagram below was simplified for clarity.
Furthermore, some of the nodes may contain both an application and a loader. The loader is used to update
the Flash PROM which contains the corresponding application. Once again, in the diagram below, the RIA
node is depicted as having an App and Loader. Any node may be configured as such, but for the sake of
example, the RIA node was singled out to demonstrate this concept.




                                                        Product
                                                       (Da Vinci)




        Project                          Project                          Project                          Project
         DSP                             MNET                             Laptop                           DAFD




              MDC               IMC           IOD                PDC                 RIA                MSD
             Project           Project       Project            Project             Project            Project




                                                                          App                 Loader




Figure 5: Logical Project Structure

                       Changes to this Document May be Viewed on the ECO Releasing it
                                   7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 13 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



6.2 Project Environments
The software projects directory structure is embedded in the directory structure used by the software and
hardware groups. The structure is broken down by system boards. The top level is the “da Vinci” directory
named after the overall company project. This directory may include information stored by other
departments, therefore the hardware/software group directories are placed in a sub-directory titled “SYS”.
Below this are the board level directories.
The different directory structures shown in this document are all part of the same structure. For the sake of
illustration, some common sub-directories are only shown once, and some unique sub-directories are shown
on separate pages. Effectively, all of the directories can be “OR’ed” together to show the full picture.

The working sets of current directories for the project are located on in the SYS sub-directory
\\isifiles1\da_Vinci, which has been specified as Drive V on the company-wide networkrepository. Using
SVN via the command line or one of the GUI tools, one can populate a local directory tree or network
directory tree with a revision of the software. Typically, the trunk revision (ie, the most recently checked-in
version) of all files will be checked-out to an area on the user’s local hard drive. Having obtained the
current set of working files, one can perform a software build for the entire daVinci system, or for one or
more selected nodes.
There are several sub-directories that have special uses for the company project. The tools sub-directory of
\\isifiles1\da_Vinci, which has been specified as Drive V on the company-wide network contains files that
constitute the set of compilers,
There are several sub-directories that have special uses for the company project. The SYS\TOOLS and
SYS\shared sub-directories directory contains files that are utilized by several environments or by several
nodes for a given environment. An understanding of these sub-directories and how they are employed is
crucial to the comprehension of the software build process.
The SYS\toolS sub-directory is used to contain common tools used for the program build process. This
includes the C-compilers, Assemblers, Linkers, PC-Lint, and other sundry utilities (e.g., the hex file
conversion program, OH51). In order to insure that all components of the major environments use the same
version of these tools, this common set of sub-directories and associated files has been adopted for use.
The SYS\SHAREDshared sub-directory is used to contain common program files (developed at Intuitive
Surgical) that are used for more than one component of the major environments. In order to insure that the
same version of a given source file is used, this common set of sub-directories and files has been prepared.
A sample configuration is depicted below. Please be aware that thise diagram below is indicative of the
types of node directoriesfolders that appear in Tools, but it is not meant to be all-encompassing.




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                 Page 14 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




                  daVinci



                              SYS




                                                MSD



                                                SCP




                                                 IOD




                                                SCE




                                                 RIA
  Board Level
 Subdirectories
                                                 FPS

                                                                      SHARED                SRC

                                                PPS


                                                                         TVD _U
                                                UIP


                                                                         VSD _U
                                                 UIS
                                                                                                  DOCS

                                                 VSD                              SCH

                                                                                                  CPLD

                                                                                   TLN
                                                DOCS
                                                                                                   TD

                                                                                  SIM
                                               LAPTOP
                                                                                                  BRD

                                                                            Note: Each node subdirectory, except
                                               TOOLS
                                                                            Tools, Shared, and Docs, has a set of
                                                                            subsirectories as shown for the VDP
                                                                            node, but have been omitted to reduce
                                                                            the figure size.



Figure 6: daVinci System Environment Contents



                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 15 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




6.2.1 Da Vinci Tools Environment
As mentioned previously, the Tools sub-directory contains the compilers, linkers, and other software
building tools that are used for creating executable files for the da Vinci project. There are multiple
subdirectories subordinate to the Tools sub-directory (SYS\TOOLS) that contain the various executables,
include files, library files, and parameter files that constitute the tools proper as shown in the following
figure. Once again, please be aware that the diagram below is indicative of the types of folders that appear
in Tools, but it is not meant to be all-encompassing.



                  SYS             TOOLS



                                                      ADSP



                                                                          ADI_DSP


                                                      LINT



                                                                           ALEX

                                                     Shared
                                                      IDE


                                                                           BATCH



                                                      UTILS



                                                                          CIMETRIC




                                                      VC60



                                                                           DK51


                                                     VDSPPP



                                                                            WCI



                                                     Windows




Figure 7: daVinci System Tools Directory Structure


                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 16 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



Within each of the Tools directories, additional subdirectories exist. This subdirectory structure is purely
arbitrary, and is usually dictated by the vendor who has supplied the compiler (or other tool) package. An
example of this subdirectory structure is shown in the following figure.



                                                    ADSP                                 INCLUDE             SY S



                                                                    21K                     ETC



                                                                                            BIN

                                                                    BIN
                                                                                                             SY S

                                                                                             INC

                                                    ALEX                    21K                            SH3000

                                                                                             LIB

                                                                            BIN



                                                                            ETC


  Tools Subdirectory structure
                                                                           FLASH

                                                                                            SH1000

                                                                          INCLUDE

                                                                                            SH3000
                                                                          WIN32LIB

                                                   BATCH
                                                                                          SERVER




                                                   ADI_DSP                                INCLUDE



                                                                          21xx               ETC



                                                                                             BIN



                                                                                             SY S




Figure 8: daVinci System Tools subdirectory structure example




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 17 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



The following table describes the major Tools and the Project Environment that utilizes these tools. Tools
that are designated as “Shared” are in fact utilized by any of the da Vinci projects.

          Subdirectory            Project

         ADSP                 DSPNet

         ADI_DSP              DAFD

         ALEX                 DSPNet

         Batch                Shared

         Cimetric             Mnet

         Dk51                 Mnet

         hcppc                Mnet

         kadak                Mnet

         Lint                 Shared

         Matlab               Laptop

         Measurement          Laptop
         Studio

         SharedIDE            Laptop

         Utils                Shared

         VC60                 Laptop

         VDSPPP               DSPNet

         Windows              Shared




                    Changes to this Document May be Viewed on the ECO Releasing it
                                7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential               Page 18 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



6.2.2 Monitoring Network Project Environments
All of the projects involved in the development, qualification, and execution of the Mnet software are
contained within this category. The following describes a directory structure used to contain the projects
and files required by the Mnet.
Each Mnet node type (e.g. MSC, IMC, RIA, etc.), is a project. The directory for a given node falls under
the board level directory which the node is physically located on. (ISCnet and/or UInet node) node along
with a Shared subdirectory and a Tools subdirectory. Files specific to a particular ISCnet or UInet node will
be stored under that node’s subdirectory. Files that may be used by multiple Mnet nodes are stored under
the Shared subdirectory. Tools used for the development of the Mnet are stored in the Tools subdirectory.
Each node (ucontroller) sub-directory and shared ucontroller sub-directory is further divided into the
following subdirectories:
SRC                Source code files (e.g. C and assembly source code and header files).
                   All files required to build the software for a particular ISCnet/UInet node reside here.
                   This includes source code files, make files, lint configuration files (if specific to a
                   particular executable or source code file), etc.
DOCS               Design, implementation, test and validation documentation.
DAT                Non-executable files of data necessary for the software to execute
OBJ                Output from assemblers and compilers.
EXE                Final output from linkers, locaters, etc. Files ready for execution or firmware
                   programming and Map files.
UTIL               Auxiliary utility programs developed to assist in software development and testing.
TST                Files related to software testing (e.g. test input data, etc.).


Once again, please be aware that the diagram below is indicative of the content of the Mnet subsystem, but
it is not meant to be all-encompassing.




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential               Page 19 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




                                                                                   SW_DEV
                              SY S



                                            DOCS               SW_GRP               MNET



                                            MSD                 MSD_u

                                                                                                     SRC


                                             IOD                IOD_u
                                                                                                    DOCS


                                            UIS_u               UIS_u
                                                                                                     DAT


                                             RIA                RIA_u
                                                                                                     OBJ


                                             IOP               MDC_u
                                                                                                     EXE
     Board Lev el
    Subdirectories                                              IMC_u
  showing Node Lev el
    Subdirectories                                                                                   UTIL

                                                               UMC_u


                                                                                                      TST

                                             SJD                SJD_u


                                                                                  Note: Each node subdirectory has
                                                                                  a set of sub-directories as shown
                                             VSD                VSD_u             f or the MDC node, but they hav e
                                                                                  been omitted to reduce the f igure
                                                                                  size.

                                                                TVD_u




                                             UIP                 UIP



                                            FPS                 PDC_u



                                                                TOOLS
                                                                                                       SLV_u


                                                               SHARED
                                                                                                      MSTR_u




Figure 9: Mnet Environment Contents



                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                  Intuitive Surgical, Inc.–Confidential                 Page 20 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



6.2.3 DSP Network Project Environment
All of the files involved in the development, qualification, and execution of the DSPnet software are
contained within this project. The following describes a directory structure used to contain the project and
files required by the DSP network.
The four SHARCs are arranged in a Master/Slave configuration. One SHARC is the Master DSP, referred
to as the Control & Transform Processor. The remaining 7 SHARCs are the Slave DSPs, referred to as the
Compute Engines, all have identical application code downloaded to them. Therefore, the DSPnet software
is divided into two projects, one being the CTP project and the other being the CE project.
Since the da Vinci directory structure is divided according to hardware boards in the system, both of the
DSP projects are found under the same main directory, which is the SCE directory. The DSP directory will
contain the following directories: CTP, CE, Shared, and Docs. Files which are specific to either the CTP or
the CEs are stored under the specific subdirectory (i.e., the CTP or CE directory, respectively).
Common files are contained in a shared directory, either the DSPNet Shared sub-directory
(SCE\DSP\SHARED), or the Main Shared sub-directory (SYS\SHARED). The use of Shared directories is
as follows: files shared between the CTP and CE specifically are stored under the DSPNet Shared
subdirectory. Files which are common not only to the CTP and/or CE, but are also utilized by other
subsystems (such as the Laptop and/or Mnet), are stored on the main Shared directory (SYS\SHARED).
All documents specific to the DSPnet are stored under the Docs subdirectory.
The CTP, CE, and Shared subdirectories are further divided according to the following subdirectories:
SRC                 Source code files (e.g. C and assembly source code, and architectural files).
                    All files required to build the software for a particular CTP/CE node reside here. This
                    includes source code files, makefiles, lint configuration files (if specific to a particular
                    executable or source code file), etc., except for those files that appear in the INCLUDE
                    folder.
INCLUDE             Header files for both C and Assembly Language programs
OBJ                 Output from assemblers and compilers.
EXE                 All output files from linkers, loaders, etc. (i.e. executable files, loader files, map files,
                    net files) which are executed on either the CTP or CE processor.
TST                 Files related to software testing (e.g. test input data, etc.).


The following subdirectories are used by the DSPNet, and are located subordinate to the main Tools
directory (SYS\TOOLS):
ADSP                ADSP tools including the 21k DSP Library, 210xx Family Development Software,
                    21060 Simulator, 21060 Emulator (with Vista-ICE multi-emulator software)
LINT                Gimpel PC-Lint software


The Docs subdirectory is further divided according to the following subdirectories:
DSGN                Design and implementation documentation.
TST                 Test and validation documentation.




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 21 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



Once again, please be aware that the diagram below is indicative of the content of the Mnet subsystem, but
it is not meant to be all-encompassing. Also, the CE project consists of three separate nodes: ECM, MTM,
and PSM (the Shared and Autogen files are “common” to all three nodes). Although it is not evident in the
diagram below, the MTM and PSM nodes contain the exact same sub-folder structure as the ECM node.



                 SYS                SCP               DSP
                                                                                           DSGN


                                                                    DOCS

                                                                                            TST




                                                                   SHARED                   SRC




                                                                     CTP                    EXE



                                                                                            SRC



                                                                                           INCLUDE
                    Node Level
                   Subdirectories

                                                                                            OBJ




                                                                                            TST




                                                                     CE                     ECM                 EXE



                                                                                            MTM                 OBJ



                                                                                            PSM                 SRC



                                                                                           Shared             INCLUDE




                                                                                           AutoGen              TST




Figure 10: DSPNet Environment Contents




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential               Page 22 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




6.2.4 Laptop Project Environment
All of the files involved in the development, qualification, and execution of the Laptop software are
contained within this category. There are five major subdirectories that comprise the Laptop software:
USBDLL, MEX, Apps, LoaderBuilder, and Shared. Files that are specific to either the Apps or Mex or
LoaderBuilder or USBDll are stored under the Apps, Mex, LdrBldr and USBDll subdirectories,
respectively. The Apps are highly dependant on the National Instruments Measurement Studio
environment. Furthermore, these major subdirectories contain additional subdirectories. For the Apps
folder, this includes a Shared subdirectory (which contains files common to two or more applications).
Common files are contained in a shared directory: the Laptop shared directory (Laptop\SHARED), or the
Main Shared sub-directory (SYS\SHARED). Files, which are common among two or more of the major
Laptop subsystems are stored in the Laptop specific Shared subdirectory. Files which are shared between
the Laptop, but are also utilized by other subsystems (such as the DSPNet and/or Mnet), are stored on the
main Shared directory (SYS\SHARED).
Compilers, Linkers, and other tools are stored on the System Tools directory (SYS\TOOLS). Laptop
targets (for ISA and PCI interfaces) are typically built with the Microsoft Visual C++ compiler and linker.
Even for the Laptop apps which use the Measurement Studio projects, Visual C++ is used to compile the
programs.
The Apps, MEX, USBDll, and LoaderBuilder interface subdirectories contain other directories. Each of
these directories (with the exception of the Shared directory) are used for building one or more given target
(i.e., a DLL or EXE file). The following figure provides a depiction of the projects that comprise the
Laptop.
SRC                Source code files (e.g. C and assembly source code and header files).
                   All files required to build the software reside here. This includes source code files,
                   makesfiles, lint configuration files (if specific to a particular executable or source code
                   file), etc.
DOCS               Design, implementation, test and validation documentation.
DAT                Non-executable files of data necessary for the software to execute
OBJ                Output from assemblers and compilers.
EXE                Final output from linkers, locaters, etc. Files ready for execution or firmware
                   programming and Map files.
TST                Files related to software testing (e.g. test input data, etc.).




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 23 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




               SYS               LAPTOP            APPS



                                                                CONFIGURATION


                                                                                           DOWNLOAD


                                                                 MAINTENANCE


                                                                                           STARTUP

                                                                 SUPERVISOR
                                                                     LIB


                                                  MEX

                                                                   MEXUSBDLL
                                                                                                            Several
                                                                                             EXE
                                                                                                           DLL Files


                                                                  MEXCFGLDR
                                                                                             SRC


                 Node Level
                Subdirectories
                                                                                             OBJ




                                                                           CfgBuilder

                                                LDRBLDR

                                                                           CfgLoader




                                                 USBDLL




                                               SHARED




Figure 11: Laptop Environment Contents




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                  Intuitive Surgical, Inc.–Confidential                 Page 24 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



The following describes a given directory structure used to contain the project and files required by the
Laptop. This set of sub-directories is typical for a given directory subordinate to the ISA or PCI directory.
SRC                 Source code files (e.g. C and assembly source code and header files). All files required
                    to build the software reside here. This includes source code files, makefiles, lint
                    configuration files (if specific to a particular executable or source code file), etc.
DOCS                Design, implementation, test and validation documentation.
DAT                 Non-executable files of data necessary for the software to execute
OBJ                 Output from assemblers and compilers.
EXE                 Final output from linkers. Files ready for execution or debugging, including symbol
                    table and map files.
TST                 Files related to software testing (e.g. test input data, etc.).




                  SYS             LAPTOP                   APPS



                                                                              STARTUP



                                                                                                     SRC




                                                                                                      OBJ




                                                                                                     EXE




                                                                                                    TST




                                                                                                    DAT




                                                                                                   DOCS




Figure 12: Typical Directory Structure of daVinci Laptop Project Node




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                  Intuitive Surgical, Inc.–Confidential                 Page 25 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



6.2.5 Monitor DSP Project Environment
All of the files involved in the development, qualification, and execution of the DAFD software are
contained within this project. The following describes a directory structure used to contain the project and
files required by the Monitor DSP (also known as the DAFD).
There is a single AD-2181DSP processor on the MSD board, therefore the software resides all in a single
project. Since the da Vinci directory structure is divided according to hardware boards in the system, this
project is found within the MSD directory structure. The DAFD directory contains the following
directories: Src, Obj, Tst, Exe, Tools, Docs. Finally, all documents specific to the DAFD are stored under
the Docs subdirectory.
SRC                 Source code files (e.g. assembly source code, header files, and architectural files). All
                    files required to build the software reside here. This includes source code files,
                    makefiles, lint configuration files, etc.
OBJ                 Output from assemblers.
EXE                 All output files from linkers, loaders, etc. (i.e. executable files, loader files, map files,
                    net files).
Docs                Design, implementation, test and validation documentation.
DAT                 Non-executable files of data necessary for the software to execute.
UTIL                Utility programs developed to assist in software development and testing.
TST                 Files related to software testing (e.g. test input data, etc.).




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 26 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




                         SY S



                                      MSD               DSP             DAFD




                                                                                        SRC




                                                                                        EXE




  Node Lev el                                                                           OBJ
 Subdirectories


                                                                                        Docs




                                                                                        DAT




                                                                                        UTIL




                                                                                        TST




Figure 13: Monitor DSP Environment Contents




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 27 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




6.2.6 Target Drive Environment
The purpose of Target Drive is to provide a central repository for the executable programs that result from
the Software Release procedure. This Target Drive is further segregated into subdirectories that are
indicative of the various executable files. The working sets of target drive directories for the project are
located on the DevAndTest sub-directory \\isifiles1\Dv_sw_rlse, which has been specified as Drive U on the
company-wide network.




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 28 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




The following directories are used to contain the corresponding files created during the Software Release.
DATA               Contains auxiliary data files used for the instrument (ie, calibration data, software
                   version data, etc).
EMBEDDED           Contains the embedded software executables (ie, DSPNet,Mnet and DAFD executables)
LOADER             Contains the software executables that are used for the various Embedded System
                   Loaders (ie, the files that are used to perform Flash PROM upgrades with new
                   Embedded System program files).
LAPTOP             Contains the PC software executables (ie, Laptop executables, libraries and help files)

Within the DATA directory, the following directories are present
CfgData            Contains a series of folders and files that are used for instrument configuration. Many
                   of these files are autogenerated from program source code or other files
DAFDData           Contains version info and other data for DAFD
LanguageData       Contains version information for the fonts in use
VSDData            Contains calibration data, text data (in multiple languages) and other data used for the
                   instrument

Within the EMBEDDED directory, the following directories are present
Targets            Contains the Mnet, DSPNet and DAFD executables (ie, EXE, HEX, S3 and ACH files)
Symbols            Contains the corresponding symbols (as C #define macros) used for the given source
                   files
Release            Contains the build and release version info files

Within the LOADER directory, the following directories are present
Targets            Contains the Loader executables (ie, EXE and other related files)
Symbols            Contains the corresponding symbols (as C #define macros) used for the given source
                   files
Release            Contains the build and release version info files

Within the LAPTOP directory, the following files are present
RuntimeDLLs        Contains the basic Laptop DLL files
Apps               Contains the basic Laptop application files (ie, EXE and UIR files). This folder is
                   futher segregated, by having a sub-folder for each of the various applications.
Include            Contains the Laptop library files (ie, LIB and associated INI files)
LdrBldr            Contains the Config Loader and Config Builder utilities
Release            Contains the build and release version info files
Targets            Contains the CRC and version files for all executables
MexInterface       Contains sub-folders for the Mex interface files
rs232dll
shared             Contains shared source files for building the DLLs

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 29 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



udpdll
usbdll
virtualDaVinci

Within the Laptop\MexInterface directory, the following directories are present
CfgLdrDLL\exe         Contains the Laptop Mex Configuration Loader DLL and Help Files in the respective
                      subdirectories (ie, DLL, INI and M files)
USBDLL\exe            Contains the Laptop USB DLL and Help Files in the respective subdirectories (ie, DLL,
                      INI and M files)




         DevAndTest


                                EMBEDDED




                                  LAPTOP




                                   DATA




                                  LOADER




Figure 14: Target Drive Environment Overview




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                 Page 30 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



Because each of the major components described above contain additional folders, the directory tree can get
quite complex, and at first glance, it is a bit daunting. In the diagram below, there is a snapshot of part of
the directory structure that constitutes that targets from the build process. Again, this is not meant to be all-
encompassing, but rather, an indication of the complexity of the target drive contents.


        DevAndTest
                                                            Release

                                EMBEDDED                                             Targets

                                                            Symbols




                                                           MexInterface
                                 LAPTOP

                                                                                         CfgLdrDll

                                                                                                              EXE
                                                              Include



                                                                                          USBDll
                                                             Release
                                                                                                              EXE



                                                               Apps
                                                                                      Configuration

                                                                                                              Launch
                                                              Targets
                                                                                      ... the list goes
                                                                                             on...
                                   DATA

                                                             CfgData

                                                                                      DAFDData


                                                           ... the list goes
                                                                  on...




                                 LOADER                        Release


                                                                                        Targets

                                                               Symbols




Figure 15: Target Drive Environment Contents




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 31 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




6.3 Configuration management

6.3.1 Overview of Configuration Management
Configuration management is performed using Intersolv’s Configuration Builder tool. Archive logfiles are
created which provide the means to retrieve the current revision of a given program file, as well as an
previous revision of the same file.

In order to maintain consistency within the project, the directory structure employed by the Configuration
Management is almost a mirror image of that used for the Software Development.

The working sets of current directories for the configuration management are located on the SYS sub-
directory of \\isifiles1\Pcvsarch\logs\da_Vinci, which has been specified as Drive W on the company-wide
network. The SYS subdirectory is further sub-divided into additional directories which reflect those on
Drive V. There is a one-to-one correspondence between the software development directories on Drive V
and those on Drive W. Similarly, there is an SA sub-directory of \\isifiles1\Pcvsarch\logs\da_Vinci, which
is used for the system analysis files. However, for the purpose of this document, the SA files will not be
considered as the information is in a constant state of flux, and the build processing no longer is contingent
upon these files.
Configuration management tools allow one to perform various operation on the logfiles, such as check-out
files, check-in files, lock or unlock files, report on previous logfile revisions, obtain previous file revisions,
tag version numbers, obtain files by version number, and a myriad of other operations. The Intersolv
Configuration Management documentation details these operations, and as such, this information is not
repeated here. The reader is expected to become familiar with the most common functions that one will use
in normal day to day operations.

6.3.2 Mnet Specific Configuration Management
The functionality of the Mnet will evolve through the life cycle of the da Vinci product. A version of the
Mnet (e.g. Mnet v2.1) consists of all the software required for each node of the ISCnet and each node of the
UInet. So, for example, Mnet version 2.1 may require RIA Version 2.3, SJD Version 1.0, UIS Version 4.2,
etc. Each of the node executables, in turn, is derived from a set of files (labeled “source code’, although
other executables, libraries, data files etc. are also included here), each with a particular revision number. A
hierarchy of configurations, from network down to source code, is created (refer to Figure 16: Mnet
ConfigurationsFigure 15: Mnet Configurations).
The configuration management tool must not only be able to manage the configuration of source code
revisions which make up a version of an executable, but also the configuration of executables that make up
the network configuration. It must be possible for a developer or auditor to select any node in this hierarchy,
and in response, be given by the CM tool, all the constituent files for that node in the hierarchy, whether
they be executables, or “source code”.




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                     Intuitive Surgical, Inc.–Confidential                Page 32 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




                                        Mnet
                                                                                                Network
                                      Version x.y



     RIA
  Version a.b
                      MDC
                    Version c.d
                                     MSD
                                   Version e.f
                                                        IMC
                                                     Version g.h
                                                                     ...       UIS
                                                                            Version w.z
                                                                                                   Mnet Node
                                                                                                   Executables




     Specific
   revision of
                       Specific
                     revision of
                                     Specific
                                   revision of
                                                        Specific
                                                      revision of
                                                                     ...       Specific
                                                                             revision of
    each file         each file     each file           each file             each file          "Source Code"
   required to       required to   required to        required to            required to
    create an         create an     create an          create an              create an
    RIA slave        MDC slave     MSD slave           IMC slave              UIS slave
      node              node          node               node                   node




Figure 1615: Mnet Configurations


6.3.3 DSPnet Specific Configuration Management
The DSP network software has a similar configuration management protocol as previously mentioned in the
Mnet description. The hierarchical configuration for the DSPnet project is shown in Figure 17: DSPNet
ConfigurationsFigure 16: DSPNet Configurations. As shown in the figure, a version of the DSPnet consists
of a specific CTP node executable and several CE node executables. Both the CTP and the set of CE
executables have a unique version number assigned to each. Also, both the CTP and various CE node
executables are created from their unique set of source code files which also each have their own specific
revision number.



                                                    DSP
                                                                                                      Network
                                                 Version x.y



                                                                                                          Node Executables
                    CTP
                 Version a.b
                                           ECM
                                        Version c.d                 ...        PSM
                                                                             Version e.f



                    Specific
                  revision of
                   each file
                                            Specific
                                          revision of
                                           each file
                                                                ...              Specific
                                                                               revision of
                                                                                each file
                                                                                                           "Source Code"

                  required to             required to                          required to
                     create                  create                               create
                      CTP                     ECM                                  PSM




Figure 1716: DSPNet Configurations




                     Changes to this Document May be Viewed on the ECO Releasing it
                                 7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 33 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



6.3.4 Laptop Specific Configuration Management
The Laptop files consist of a series of program files (DLL, EXE and LIB files) that are resident on a laptop
computer. There are various types of laptop files, ranging from the DLL to the so-called Mex Interface
files, to the Measurement Studio files, to Lib files , etc. While there are fundamental differences in the
types of files produced for each of the nodes, the one common factor is that they are all considered to be
laptop files, and therefore are built as a unit when the Laptop Build takes place. As shown in the figure, a
version of the Laptop consists of all of these nodes. All of these executables have a unique version number
assigned to each. Also, all of these executables are created from their unique set of source code files which
also each have their own specific revision number.




                Laptop
              Maint. App
              Version a.b
                                  ...          USB DLL
                                              Version a.b
                                                                                  Executable




                 Specific
               revision of
                each file
                                  ...             Specific
                                                revision of
                                                 each file                      "Source Code"
               required to                      required to
                  create                           create
                   SSC                              SSC




Figure 1817: Laptop Configurations




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 34 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




6.3.5 Monitor DSP Specific Configuration Management
The DAFD software has a similar configuration management protocol to the one previously mentioned in
the Mnet description. The hierarchical configuration for the DAFD project is shown in Figure 19: Monitor
DSP ConfigurationFigure 18: Monitor DSP Configuration. As shown in the figure, there is a single version
of the DAFD executable. The DAFD executable has a unique version number. The executable is created
from a unique set of source code files that also each have their own specific revision number.




                                                  DAFD
                                                                              Executable
                                                Version x.y



                                                    Specif ic
                                                  rev ision of
                                                   each f ile               "Source Code"
                                                  required to
                                                  create the
                                                     DAFD




Figure 1918: Monitor DSP Configurations




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 35 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




7. Project Building
Software development consists of program coding, building, testing, and release. This section addresses the
program building process and includes operational considerations, technical details, and maintenance
specifics. The reader is expected to be familiar with the directory structure and project environments
described in preceding sections.
Intersolv’s Configuration Builder is used for performing the program builds that convert the project source
code into the corresponding executable target. The Configuration Builder uses project makefiles that detail
the source files involved and the steps necessary to create the resultant target. The steps are prepared in
such a fashion as to process the source code via PC-Lint, the compiler or assembler, the linker, and any
auxiliary steps (such as the hex file converter).

The makefile for a given node is contained in the SRC sub-directory for that node. Since each node is
contained in a dedicated sub-directory, there is a unique makefile for each of the nodes. In keeping with the
convention that the node sub-directories are provided with unique names, the makefiles will also be
uniquely named. The extension for all makefiles is .MAK


7.1 Monitoring Network Project Environment Builds

7.1.1 Overview
Each Mnet node type is a separate project, and as such, there is an associated makefile for every node. The
makefile will typically have the same filename as the project sub-directory (e.g., the IOD makefile is named
IOD.MAK). The makefile contains information that is specific to the node being built. This information
must consist of the set of object files that are considered for the node, the set of dependencies for each of
these object files, and the name of the target .HEX file that is built.

7.1.2 Generalized Makefile Rules
Efforts have been made to consolidate the common rules for each of the Monitoring Network Projects into
one of two common makefiles, GEN_MNET.MAK, GEN_PPC.MAK (for the Power-PC nodes) or
GEN_8051.MAK, both of which reside on the SHARED\SRC directory.
The GEN_MNET.MAK, GEN_PPC.MAK and GEN_8051 files contain rules for compiling, assembling,
and linking. The GEN_MNET.MAK and GEN_8051.MAK use the Keil C-51 C-Compiler, Assembler,
Linker and Hex File Converter. The target file produced is a .HEX file, with an intermediate file that
contains no extension, but which is used as the input for the emulator/debugger.
The GEN_PPC.MAK file uses the Metaware Power-PC compiler and linker. Like the other Mnet nodes,
the target file produced is also a .HEX file.
The GEN_MNET.MAK, GEN_PPC.MAK and GEN_8051 files also contain rules to process the C-
programs using PC-Lint. If an error is detected during the PC-Lint, compile, assemble, or link process, then
the build is terminated so that the developer may correct any diagnostics.

The GEN_MNET.MAK, GEN_PPC.MAK and GEN_8051 files are also designed to utilize program files
from the SHARED directory and its associated sub-directories (i.e., common source or include files).

Under normal circumstances, no changes to the GEN_MNET.MAK, GEN_PPC.MAK and GEN_8051 files
are required. Fine-tuning can be performed using the DEFINES.MAK file, described below.




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 36 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



In order to provide the means for drive and directory independence during the build process, a mechanism
has been provided to allow the developer to override the defaults that are automatically selected. These
defaults (in order of priority) are as follows:

BUILD_ROOT
        C:\DA_VINCI\SYS (if currently on drive C) -or-
        x:\SYS (where ‘x’ is current drive)


DEVELOP_ROOT
        V:\SYS


If one wishes to override these default assignments, then the following steps are performed:
      Create a file called DEFINES.MAK on the local SRC directory
      Add a BUILD_ROOT macro set to the SYS directory on the local drive (e.g., D:\da_Vinci\Sys)
      Add a DEVELOP_ROOT macro to the alternate directory (if any); note that this is only needed if
         one wishes to use a directory structure other than the default on the company-wide network.
The DEFINES.MAK file is optional; if it is present, it will be used. If it is omitted, then the default
directory assignments are in effect. A sample DEFINES.MAK file appears below. This DEFINES.MAK
will have the following effect on the node that is being built (other macros that are specified will be
discussed later):
          Set the drive and directory that is used for performing the build proper to drive E:
          Set the drive and directory containing the Compilers, Linkers, and other tools to drive X:
          Set other information that will be introduced at a later time in this document.
                              DEVELOP_ROOT=x:\testsys
                              BUILD_ROOT=e:\da_vinci\sys
                              SKIP_LINT_27183_DO_NOT_USE=Yes
                          Example 1: DEFINES.MAK for Mnet node makefile


7.1.3 Major components of a node makefile

7.1.3.1 Overview
As mentioned previously, each Mnet node contains a dedicated makefile that is used in conjunction with the
generalized-rules makefile (GEN_MNET.MAK). While there are differences in the node makefiles, they
do share a common structure and common components. This section will define those major sections, as
well as some generalized rules to node makefile maintenance.
The major sections of the node makefile subject to maintenance are:
     Macros used by the generalized makefile
     Macros specifying Compiler, Assembler, Linker, and PC-Lint flags
     Macros specifying File list
     Target file specification and dependencies
     File list dependencies

It is important to note that the macro names that are defined in the node makefile are used by the
generalized makefile. Therefore, these macro names must conform to the names expected in the
generalized makefile. For reference, a sample node makefile (IOD) has been provided as an
attachment. Each of the components listed above are discussed in the following paragraphs


                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 37 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




7.1.3.2 Macros used by the generalized makefile
The following macros must be defined for use by the generalized makefile. Citations to their use in the
sample makefile are provided.
           Macro Name             Line        Description
                               Number(s)
        PROJECT                61             This macro defines the project name. The project name is
                                              used for certain files, most notably the local PC-Lint
                                              options file.
        MICRO_SPECIFIC         62             This macro specifies the sub-directory, subordinate to the
                                              \SYS directory, where the source program files reside.
        KNOWN_LINK_            N/A            If this macro is defined (default condition is NOT
        ERRORS                                defined), then Linker errors that are detected will be
                                              permitted. The build will NOT terminate if an error is
                                              detected, but a message will be generated instructing the
                                              user to examine the Linker output to verify that expected
                                              results have occurred. The linker cannot distinguish
                                              warnings from errors encountered. To permit Linker
                                              errors, code this macro as follows:
                                              KNOWN_LINK_ERRORS=Yes

7.1.3.3 Including the generalized makefile
The generalized makefile exists on the \SHARED\SRC sub-directory and is named GEN_MNET.MAK (or
GEN_8051.MAK or GEN_PPC.MAK). This assignment can be changed via the GEN_MNET_MAK (or
GEN_8051_MAK or GEN_PPC_MAK) macro, which may appear in the environment or in the
DEFINES.MAK. Unless the general makefile is going to be modified, this macro should be undefined
(forcing the shared version in the network da_Vinci directory). To include an alternate generalized
makefile, this macro will contain the pathname. In the following example, the GEN_MNET.MAK file to
use is on the C:\Da_Vinci\sys\shared\src directory:
        GEN_MNET_MAK = c:\da_vinci\sys\shared\src




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 38 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




7.1.3.4 Macros specifying Compiler, Assembler, Linker, and PC-Lint flags
The following macros specify the flags for the Compiler, Assembler, Linker, and PC-Lint. Citations to their
use in the sample makefile are provided.
             Macro Name             Line        Description
                                 Number(s)
         A51FLAGS                82             This macro defines the flags used by the Keil 8051
                                                Assembler.
         CFLAGS                  90             This macro defines the flags used by the Keil C Compiler.
         LINKFLAGS               100 thru       This macro defines the flags used by the Keil linker.
                                 107
         LINTDEFINES             N/A            Optional macro used to define additional PC-Lint
                                                directives.




7.1.3.5 Macros specifying File list
The following macro is used to specify the list of files that are linked in producing the target. The sequence
of filenames specified is the sequence that the linker uses for producing the target file. This file list contains
filenames only (.OBJ files)
            Macro Name               Line         Description
                                  Number(s)
         OBJS                     116 thru        This macro defines the object filenames that constitute the
                                  134             target file
         SRCLIST                  140             This macro defines those source files that are compiled to
                                                  assembly language and then assembled to produce an
                                                  object file.

7.1.3.6 Specifying the main target
The main target is a hex-file and is produced from the object files. The target must be explicitly specified
by filename, via the MAIN_TARGET macro, and its dependencies must include the Object files and
Makefile. Additional dependencies may be specified if necessary. See line 66 in example provided in
appendix A for using the MAIN_TARGET macro, and line 170 for a sample of the dependency line
required. Note that the result of the link is a file with no extension of the same name as the main target.
This is the file that is used with emulators for development.



7.1.3.7 Specifying the object file dependencies
Many of the object file dependencies may be generated by the Scandeps utility provided by Intersolv. This
utility will insert the updated dependencies between the “#UPDATE#” (line 160) and “#ENDUPDATE#”
(line 189) comment lines in the makefile. As such, once setup for Scandeps is done, this list need not be
maintained by the developer. The only exception to this rule is the set of dependencies required for the
Assembler program files. Due to limitations of the Keil Assembler, the set of dependencies for these object
files must be defined explicitly as shown in lines 193 through 196 in the sample provided.

Scandeps is run from a batch file, which is present on the TOOLS\BATCH dirctory. DEPS.BAT requires a
single command line parameter, the makefile name (without the .MAK extension). This batch file will build
SCANLIST.TXT which contains the list of .C files for the project, and will then call ScanDeps proper to
update the project makefile. For example, to update the dependencies for the IOD.MAK file, located in
C:\da_Vinci\sys\iod\iod_u\src, DEPS would be called as follows:

                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 39 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



         C:\da_vinci\sys\iod\iod_u\src>v:\sys\tools\batch\deps iod

Dependencies for .a51 files must be entered by hand, since this list is used to generate an include file with
hard coded paths for the .a51 files. This is done due to a limitation in the assembler. You cannot specify a
list of directories for the assembler to search for include files.

7.1.4 Building a given node
To perform a build for a given Mnet node, the Configuration Builder is employed, using the makefile for
the node. Using CodeWright, or a DOS box, the build is invoked with the corresponding makefile specified
on the command line. For example, the IOD node (on drive C) is built as follows:

         C:\da_vinci\sys\iod\iod_u\src>build iod.mak

The necessary object files are built (after running PC-Lint for the C/C++ programs), the linker is used to
create the debugger executable file, and the hex file converter is run to create the final target. If an error
occurs during the course of the build, the process is terminated.
The tools for this process are installed in their respective sub-directories under tools, as shown in the Mnet
directory structure. Environment variables are all declared in the makefile for the tools. These take
precedence over environment variables created when the tools are installed.




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 40 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




7.2 Digital Signal Processing Network Project Environment Builds

7.2.1 Overview
Each DSPNet node type is a separate project, and as such, there is an associated makefile for every node.
The makefile will typically have the same filename as the project sub-directory (e.g., the CTP makefile is
named CTP.MAK). The makefile contains information that is specific to the node being built. This
information must consist of the set of object files that are considered for the node, the set of dependencies
for each of these object files, and the name of the target .LDR or .EXE file that is built.


7.2.2 Generalized Makefile Rules
Efforts have been made to consolidate the common rules for each of the DSP Network Projects into a
common makefile, GEN_SHARC.MAK, which resides on the SHARED\SRC directory.

The GEN_SHARC.MAK file contains rules for compiling, assembling, and linking using the Analog
Devices Sharc C-Compiler, Assembler, Linker and Loader. The target file produced is an .EXE and/or a
.LDR file.

The GEN_SHARC.MAK file also contains rules to process the C-programs using PC-Lint. If an error is
detected during the PC-Lint, compile, assemble, link, or load process, then the build is terminated so that
the developer may correct any diagnostics.

The GEN_SHARC.MAK file is also designed to utilize program files from the SHARED directory and its
associated sub-directories (i.e., common source or include files).

Under normal circumstances, no changes to the GEN_SHARC.MAK file are required. Fine-tuning can be
performed using the DEFINES.MAK file, described below.

In order to provide the means for drive and directory independence during the build process, a mechanism
has been provided to allow the developer to override the defaults that are automatically selected. These
defaults (in order of priority) are as follows:

BUILD_ROOT
         C:\DA_VINCI\SYS (if currently on drive C) -or-
         x:\SYS (where ‘x’ is current drive)


DEVELOP_ROOT
         V:\SYS


If one wishes to override these default assignments, then the following steps are performed:
      Create a file called DEFINES.MAK on the local SRC directory
      Add a BUILD_ROOT macro set to the SYS directory on the local drive (e.g., D:\da_Vinci\Sys)
      Add a DEVELOP_ROOT macro to the alternate directory (if any); note that this is only needed if
         one wishes to use a directory structure other than the default on the company-wide network.




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 41 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



The DEFINES.MAK file is optional; if it is present, it will be used. If it is omitted, then the default
directory assignments are in effect. A sample DEFINES.MAK file appears below. This DEFINES.MAK
will have the following effect on the node that is being built:
          Set the drive and directory that is used for performing the build proper to drive D:
          Set the drive and directory containing the Compilers, Linkers, and other tools to drive C:
                              DEVELOP_ROOT=c:\testsys
                              BUILD_ROOT=d:\da_vinci\sys
                         Example 2: DEFINES.MAK for DSPnet node makefile


7.2.3 Major components of a node makefile

7.2.3.1 Overview
As mentioned previously, each DSP node contains a dedicated makefile that is used in conjunction with the
generalized-rules makefile (GEN_SHARC.MAK). While there are differences in the node makefiles, they
do share a common structure and common components. This section will define those major sections, as
well as some generalized rules to node makefile maintenance.

The major sections of the node makefile subject to maintenance are:
     Macros used by the generalized makefile
     Macros specifying Compiler, Assembler, Linker, Loader, and PC-Lint flags
     Macros specifying File list
     Macros specifying exceptions to the set of Compiler Flags and corresponding Files
     Target file specification and dependencies
     File list dependencies

It is important to note that the macro names that are defined in the node makefile are used by the
generalized makefile. Therefore, these macro names must conform to the names expected in the
generalized makefile. For reference, a sample node makefile (CTP) has been provided as an
attachment. Each of the components listed above are discussed in the following paragraphs


7.2.3.2 Macros used by the generalized makefile
The following macros must be defined for use by the generalized makefile. Citations to their use in the
sample makefile are provided.
            Macro Name              Line         Description
                                 Number(s)
        PROJECT                  16              This macro defines the project name. The project name is
                                                 used for certain files, most notably the local PC-Lint
                                                 options file.
        MICRO_SPECIFIC           18              This macro specifies the sub-directory, subordinate to the
                                                 \SYS directory, where the source program files reside.

7.2.3.3 Including the generalized makefile
The generalized makefile exists on the \SHARED\SRC sub-directory and is named GEN_SHARC.MAK.
This assignment can be changed via the GEN_SHARC_MAK macro, which may appear in the environment
or in the DEFINES.MAK. Unless the general makefile is going to be modified, this macro should be
undefined (forcing the shared version in the network da_Vinci directory). To include an alternate
generalized makefile, this macro will contain the pathname. In the following example, the
GEN_SHARC.MAK file to use is on the C:\Da_Vinci\sys\shared\src directory:


                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 42 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



        GEN_SHARC_MAK = c:\da_vinci\sys\shared\src




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 43 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




7.2.3.4 Macros specifying Compiler, Assembler, Linker, and PC-Lint flags
The following macros specify the flags for the Compiler, Assembler, Linker, and PC-Lint. Citations to their
use in the sample makefile are provided.
            Macro Name               Line         Description
                                  Number(s)
        ASMOPTS                   70              This macro defines the flags used by the Gnu Assembler.
        CCOPTS                    71              This macro defines the flags used by the Gnu C Compiler.
        LDROPTS                   69              This macro defines the flags used by the Gnu Loader
                                                  program
        XFILES                    209             This macro defines the flags used by the Gnu Linker.
                                                  This macro may be defined using other macros which
                                                  have previously been defined for this purpose.
        LINTDEFINES               N/A             Optional macro used to define additional PC-Lint
                                                  directives.

7.2.3.5 Macros specifying File list
The following macro is used to specify the list of files that are linked in producing the target. The sequence
of filenames specified is the sequence that the linker uses for producing the target file. This file list contains
filenames only (.OBJ files)
            Macro Name               Line         Description
                                  Number(s)
        OBJS                      184             This macro defines the object filenames that constitute the
                                                  target file
        SRCS                      85 thru 104     This macro defines those source files that are compiled.
        SCANDEPS_                 245             This macro defines those source files that are not
        EXCEPTIONS                                considered when updating dependencies via the
                                                  ScanDeps batch file, DEPS.BAT

7.2.3.6 Macros specifying special Files and corresponding set of Compiler Flags
There may be a requirement that certain program files are compiled with additional compiler flags above
and beyond the base set of flags that are applied for the balance of the program files. A provision has been
made to specify up to 9 exceptions to the base set of flags, and to specify a set of corresponding program
files that utilize these flags. It is known that the CTP.MAK file utilizes this feature.


            Macro Name               Line         Description
                                  Number(s)
        OPT1                      145             This macro contains the set of alternate compiler flags
                                                  that are used as additions.
        SRCS_WITH_OPT1            146 thru        This macro specifies the set of filenames that must be
                                  150             compiled with the additional compiler flags specified
                                                  above.
        OPT2, OPT3, …,            154 thru        These macros contain additional sets of alternate
        OPT9                      166             compiler flags, just as OPT1 was used above
        SRCS_WITH_OPT2,           176 thru        These macros specify the filenames that are used for
        SRCS_WITH_OPT3,           181             OPT2 through OPT9.
        …,
        SRCS_WITH_OPT9



                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 44 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



7.2.3.7 Specifying the main target
The main target is either a Loader file (.LDR) or an executable file (.EXE) and is produced from the object
files. The target must be explicitly specified by filename, and its dependencies must include the Object files
and Makefile. Additional dependencies may be specified if necessary. See line 148 in the example
provided in appendix A for a sample of this specification. Note that the result of the link is a file with no
extension of the same name as the main target. This is the file that is used with emulators for development.


7.2.3.8 Specifying the object file dependencies
Many of the object file dependencies may be generated by the Scandeps utility provided by Intersolv. This
utility will insert the updated dependencies between the “#UPDATE#” (line xxx) and “#ENDUPDATE#”
(line xxx) comment lines in the makefile. As such, once setup for Scandeps is done, this list need not be
maintained by the developer. The only exception to this rule is the set of dependencies required for the
Assembler program files. Due to limitations of the Keil Assembler, the set of dependencies for these object
files must be defined explicitly as shown in lines xxx through xxx in the sample provided.


Scandeps is run from a batch file, which is present on the TOOLS\BATCH dirctory. DEPS.BAT requires a
single command line parameter, the makefile name (without the .MAK extension). This batch file will build
SCANLIST.TXT which contains the list of .C files for the project, and will then call ScanDeps proper to
update the project makefile. For example, to update the dependencies for the CTP.MAK file, located in
C:\da_Vinci\sys\iod\iod_u\src, DEPS would be called as follows:
         C:\da_vinci\sys\ scp\dsp\ctp\src>v:\sys\tools\batch\deps ctp


7.2.4 Building a given node
To perform a build for a given DSP node, the Configuration Builder is employed, using the makefile for the
node. Using CodeWright, or a DOS box, the build is invoked with the corresponding makefile specified on
the command line. For example, the CTP node (on drive C) is built as follows:


         C:\da_vinci\sys\scp\dsp\ctp\src>build –f ctp.mak

The necessary object files are built (after running PC-Lint for the C/C++ programs), the linker is used to
create the debugger executable file, and the hex file converter is run to create the final target. If an error
occurs during the course of the build, the process is terminated.

The tools for this process are installed in their respective sub-directories under tools, as shown in the DSP
directory structure. Environment variables are all declared in the makefile for the tools. These take
precedence over environment variables created when the tools are installed.




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 45 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




7.3 Monitor DSP Project Environment Builds

7.3.1 Overview
Each Monitor DSP node type is a separate project, and as such, there is an associated makefile for the node.
The makefile has the same filename as the project sub-directory, DAFD.MAK. The makefile contains
information that is specific to the DAFD node. This information must consist of the set of object files that
are considered for the node, the set of dependencies for each of these object files, and the name of the target
.S3 file that is built.


7.3.2 Generalized Makefile Rules
Efforts have been made to consolidate the common rules for MDSP Project into a common makefile,
GEN_DAFD.MAK, which resides on the SHARED\SRC directory.

The GEN_DAFD.MAK file contains rules for compiling, assembling, and linking using the Gnu C-
Compiler, 21xx Assembler, Linker and Loader. The target file produced is a .S3 file.

Under normal circumstances, no changes to the GEN_DAFD.MAK file are required. Fine-tuning can be
performed using the DEFINES.MAK file, described below.

In order to provide the means for drive and directory independence during the build process, a mechanism
has been provided to allow the developer to override the defaults that are automatically selected. These
defaults (in order of priority) are as follows:

BUILD_ROOT
         C:\DA_VINCI\SYS (if currently on drive C) -or-
         x:\SYS (where ‘x’ is current drive)


DEVELOP_ROOT
         V:\SYS


If one wishes to override these default assignments, then the following steps are performed:
      Create a file called DEFINES.MAK on the local SRC directory
      Add a BUILD_ROOT macro set to the SYS directory on the local drive (e.g., D:\da_Vinci\Sys)
      Add a DEVELOP_ROOT macro to the alternate directory (if any); note that this is only needed if
         one wishes to use a directory structure other than the default on the company-wide network.
The DEFINES.MAK file is optional; if it is present, it will be used. If it is omitted, then the default
directory assignments are in effect. A sample DEFINES.MAK file appears below. This DEFINES.MAK
will have the following effect on the node that is being built:
          Set the drive and directory that is used for performing the build proper to drive D:
          Set the drive and directory containing the Compilers, Linkers, and other tools to drive C:
                              DEVELOP_ROOT=c:\testsys
                              BUILD_ROOT=d:\da_vinci\sys
                          Example 3: DEFINES.MAK for DAFD node makefile




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 46 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



7.3.3 Major components of a node makefile

7.3.3.1 Overview
As mentioned previously, the Monitor DSP node contains a dedicated makefile that is used in conjunction
with the generalized-rules makefile (GEN_DAFD.MAK). While there are differences between the Monitor
DSP makefile and node makefiles of the DSPnet, it does share a common structure and common
components. This section will define those major sections, as well as some generalized rules for node
makefile maintenance.

The major sections of the node makefile subject to maintenance are:
     Macros used by the generalized makefile
     Macros specifying Compiler, Assembler, Linker, Loader, and PC-Lint flags
     Macros specifying File list
     Macros specifying exceptions to the set of Compiler/Assembler Flags and corresponding Files
     Target file specification and dependencies
     File list dependencies

It is important to note that the macro names that are defined in the node makefile are used by the
generalized makefile. Therefore, these macro names must conform to the names expected in the
generalized makefile. For reference, a sample DAFD makefile has been provided in Appendix C.
Each of the components listed above are discussed in the following paragraphs


7.3.3.2 Macros used by the generalized makefile
The following macros must be defined for use by the generalized makefile. Citations to their use in the
sample makefile are provided.
            Macro Name              Line         Description
                                 Number(s)
        PROJECT                  27              This macro defines the project name. The project name is
                                                 used for certain files, most notably the local PC-Lint
                                                 options file.
        SHARED_SRC                               This macro is used to define the alternate shared file
                                                 directory for the build
        MICRO_SPECIFIC           29              This macro specifies the sub-directory, subordinate to the
                                                 \SYS directory, where the source program files reside.

7.3.3.3 Including the generalized makefile
The generalized makefile exists on the \SHARED\SRC sub-directory and is named GEN_DAFD.MAK.
This assignment can be changed via the GEN_DAFD_MAK macro, which may appear in the environment
or in the DEFINES.MAK. Unless the general makefile is going to be modified, this macro should be
undefined (forcing the shared version in the network da_Vinci directory). To include an alternate
generalized makefile, this macro will contain the pathname. In the following example, the
GEN_DAFD.MAK file to use is on the C:\Da_Vinci\sys\shared\src directory:
         GEN_DAFD_MAK = c:\da_vinci\sys\shared\src




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 47 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




7.3.3.4 Macros specifying Compiler, Assembler, Linker, and PC-Lint flags
The following macros specify the flags for the Compiler, Assembler, Linker, and PC-Lint. Citations to their
use in the sample makefile are provided.
            Macro Name               Line         Description
                                  Number(s)
        ASMOPTS                   55              This macro defines the flags used by the Gnu Assembler.
        CCOPTS                    56              This macro defines the flags used by the Gnu C Compiler.
        LDROPTS                   54              This macro defines the flags used by the Gnu Loader
                                                  program
        LINTDEFINES               N/A             Optional macro used to define additional PC-Lint
                                                  directives.

7.3.3.5 Macros specifying File list
The following macro is used to specify the list of files that are linked in producing the target. The sequence
of filenames specified is the sequence that the linker uses for producing the target file. This file list contains
filenames only (.DSP files).
            Macro Name                Line        Description
                                  Number(s)
        SRCS                      67 thru 76      This macro defines those source files that are compiled.
        OBJS                                      This macro defines the object filenames that constitute the
                                                  target file
        SCANDEPS_                                 This macro defines those source files that are not
        EXCEPTIONS                                considered when updating dependencies via the
                                                  ScanDeps batch file, DEPS_BAT

7.3.3.6 Specifying the main target
The main target is a S-record, executable file (.S3) and is produced from the object files. The target must
be explicitly specified by filename, and its dependencies must include the Object files and Makefile.
Additional dependencies may be specified if necessary. See lines 35 & 94 in the sample makefile provided
in appendix A for a sample of this specification. Note that the result of the link is a file with an extension of
.EXE of the same name as the main target. This is the file that is used with emulators for development.


7.3.3.7 Specifying the object file dependencies
Many of the object file dependencies may be generated by the Scandeps utility provided by Intersolv. This
utility will insert the updated dependencies between the “#UPDATE#” (line 104) and “#ENDUPDATE#”
(line 114) comment lines in the makefile. As such, once setup for Scandeps is done, this list need not be
maintained by the developer.

Scandeps is run from a batch file, which is present on the TOOLS\BATCH dirctory. DEPS.BAT requires a
single command line parameter, the makefile name (without the .MAK extension). This batch file will build
SCANLIST.TXT which contains the list of .C files for the project, and will then call ScanDeps proper to
update the project makefile. For example, to update the dependencies for the CTP.MAK file, located in
C:\da_Vinci\sys\iod\iod_u\src, DEPS would be called as follows:
         C:\da_vinci\sys\msd\dsp\dafd\src>v:\sys\tools\batch\deps dafd




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 48 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



7.3.4 Building the Monitor DSP node
To perform a build for Monitor DSP node, the Configuration Builder is employed, using the makefile for
the node. Using CodeWright, or a DOS box, the build is invoked with the corresponding makefile specified
on the command line. The MDSP node (on drive C) is built as follows:


         C:\da_vinci\sys\dsp\dafd\src>build –f dafd.mak

The necessary object files are built (after running PC-Lint for the C/C++ programs), the linker is used to
create the debugger executable file, and the .S3 final target file. If an error occurs during the course of the
build, the process is terminated.

The tools for this process are installed in their respective sub-directories under tools, as shown in the MDSP
directory structure. Environment variables are all declared in the makefile for the tools. These take
precedence over environment variables created when the tools are installed.




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 49 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




7.4 Laptop Project Environment Builds

7.4.1 Overview
Each Laptop node type is a separate project, and as such, there is an associated makefile for every node.
The makefile will typically have the same filename as the project sub-directory (e.g., the DaVinciDLL
makefile is named DaVinci_A4.MAK). The makefile contains information that is specific to the node being
built. This information must consist of the set of object files that are considered for the node, the set of
dependencies for each of these object files, and the name of the target .DLL or .EXE file that is built.


7.4.2 Generalized Makefile Rules
Efforts have been made to consolidate the common rules for each of the Laptop Projects into a common
makefile, GEN_LAP.MAK, which resides on the SHARED\SRC directory.

The GEN_LAP.MAK file contains rules for compiling, assembling, and linking using the Gnu C-Compiler,
Assembler, Linker and Loader. The target file produced is an .EXE or a .DLL (and corresponding .LIB)
file.

The GEN_LAP.MAK file also contains rules to process the C or C++ programs using PC-Lint. If an error
is detected during the PC-Lint, compile, assemble, or link process, then the build is terminated so that the
developer may correct any diagnostics.

The GEN_LAP.MAK file is also designed to utilize program files from the SHARED directory and its
associated sub-directories (i.e., common source or include files).

Under normal circumstances, no changes to the GEN_LAP.MAK file are required. Fine-tuning can be
performed using the DEFINES.MAK file, described below.

In order to provide the means for drive and directory independence during the build process, a mechanism
has been provided to allow the developer to override the defaults that are automatically selected. These
defaults (in order of priority) are as follows:

BUILD_ROOT
         C:\DA_VINCI\SYS (if currently on drive C) -or-
         x:\SYS (where ‘x’ is current drive)


DEVELOP_ROOT
         V:\SYS


If one wishes to override these default assignments, then the following steps are performed:
      Create a file called DEFINES.MAK on the local SRC directory
      Add a BUILD_ROOT macro set to the SYS directory on the local drive (e.g., D:\da_Vinci\Sys)
      Add a DEVELOP_ROOT macro to the alternate directory (if any); note that this is only needed if
         one wishes to use a directory structure other than the default on the company-wide network.




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 50 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



The DEFINES.MAK file is optional; if it is present, it will be used. If it is omitted, then the default
directory assignments are in effect. A sample DEFINES.MAK file appears below. This DEFINES.MAK
will have the following effect on the node that is being built:
          Set the drive and directory that is used for performing the build proper to drive E:
          Set the drive and directory containing the Compilers, Linkers, and other tools to the default
              (ie, drive V: is used)
                                BUILD_ROOT=E:\da_vinci\sys
                         Example 4: DEFINES.MAK for Laptop node makefile




7.4.3 Major components of a node makefile

7.4.3.1 Overview
As mentioned previously, each Laptop node contains a dedicated makefile that is used in conjunction with
the generalized-rules makefile (GEN_LAP.MAK). While there are differences in the node makefiles, they
do share a common structure and common components. This section will define those major sections, as
well as some generalized rules to node makefile maintenance.

The major sections of the node makefile subject to maintenance are:
     Macros used by the generalized makefile
     Macros specifying the alternate shared directory
     Macros specifying Compiler, Assembler, Linker, and PC-Lint flags
     Macros specifying alternate library files that are required
     Macros specifying File list
     Target file specification and dependencies
     File list dependencies

It is important to note that the macro names that are defined in the node makefile are used by the
generalized makefile. Therefore, these macro names must conform to the names expected in the
generalized makefile. For reference, a sample node makefile (DownloadDLL) has been provided as
an attachment. Each of the components listed above are discussed in the following paragraphs




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 51 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



7.4.3.2 Macros used by the generalized makefile
The following macros must be defined for use by the generalized makefile. Citations to their use in the
sample makefile are provided.
            Macro Name               Line         Description
                                  Number(s)
        PROJECT                   13              This macro defines the project name. The project name is
                                                  used for certain files, most notably the local PC-Lint
                                                  options file.
        EXE_DLL_VXD_              15              This macro specifies the sub-directory, subordinate to the
        ROOT                                      \SYS directory, where the source, object, and executable
                                                  directories reside.
        SHARED_SRC                16              This macro is used to define the alternate shared file
                                                  directory for the build.
        MEX                       18              If this macro is defined, then this node is identified as a
                                                  LabWindows interface module.
        DEBUG                     N/A             This macro is defined if debug information should be
                                                  compiled into the resultant OBJ files and target file.

7.4.3.3 Including the generalized makefile
The generalized makefile exists on the \SHARED\SRC sub-directory and is named GEN_LAP.MAK. This
assignment can be changed via the GEN_LAP_MAK macro, which may appear in the environment or in the
DEFINES.MAK. Unless the general makefile is going to be modified, this macro should be undefined
(forcing the shared version in the network da_Vinci directory). To include an alternate generalized
makefile, this macro will contain the pathname. In the following example, the GEN_LAP.MAK file to use
is on the C:\Da_Vinci\sys\shared\src directory:
         GEN_LAP_MAK = c:\da_vinci\sys\shared\src

7.4.3.4 Macros specifying Compiler, Assembler, Linker, and PC-Lint flags
The following macros specify the flags for the Compiler, Assembler, Linker, and PC-Lint. Citations to their
use in the sample makefile are provided.
            Macro Name               Line         Description
                                  Number(s)
        CFLAGS                    27              This macro defines the flags used by the Microsoft Visual
                                                  C++ compiler
        LIBFLAGS                  28              This macro defines the flags used by the Microsoft
                                                  Librarian utility
        LFLAGS                    29              This macro defines the flags used by the Microsoft Linker
        BFLAGS                    N/A             This macro defines the flags used by the Microsoft BSC
                                                  Make utility (for creating debugger files). If this macro is
                                                  undefined, then the BSC Make utility is not invoked
        LINTDEFINES               31              Optional macro used to define additional PC-Lint
                                                  directives.

7.4.3.5 Macros specifying File list
The following macro is used to specify the list of files that are linked in producing the target. The sequence
of filenames specified is the sequence that the linker uses for producing the target files. This file list
contains filenames only (.OBJ files)




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 52 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



            Macro Name                Line        Description
                                  Number(s)
        SRCS                      49 thru 60      This macro defines those source files that are compiled
                                                  produce a object files
        DEFFILE                   N/A             This macro defines the Definition file that is usd for
                                                  producing a DLL target. If no DEF file is required, then
                                                  this macro can be undefined (in the example, this macro
                                                  is undefined by commenting out the line)
        OBJS                      69              This macro defines the object filenames that constitute the
                                                  target file
        SBRS                      N/A             This macro defines the subroutine filenames that
                                                  constitute the BSC target file
        BSC_TARGET                N/A             This macro defines the target file for the BSC file that is
                                                  produced for debugging.
        RES_TARGET                66              This macro defines the Resource file that is generated (if
                                                  any) from the associated RC (Resource Compiler) file.
                                                  This macro may be omitted if not needed by the target
                                                  being built.
        LIB_TARGET                65              This macro defines the library file that is generated (if
                                                  any). For DLL files, there is always a library file created
                                                  containing the same name as the target. The
                                                  LabWindows interface files use a dedicated name for the
                                                  library file due to the manner in which they are built.
        SCANDEPS_                 N/A             This macro defines those source files that are not
        EXCEPTIONS                                considered when updating dependencies via the
                                                  ScanDeps batch file, DEPS.BAT
        ADDL_TOOLS_DIR            N/A             This macro defines additional source file paths that may
                                                  apply for building the node. For example, the CERTIFY
                                                  utility source code is linked into at least one DLL module
                                                  in order to provide the File CRC check that is required.
                                                  By specifying an additional pathname with this macro, the
                                                  current CERTIFY source program file can be used intact
                                                  for the DLL’s program build.

7.4.3.6 Macros specifying Alternate Library Files
The following macros are used to specify the set of alternate library files that are linked in producing the
target. The sequence of directories specified is the sequence that the linker uses for searching for the library
files proper. The sequence of library files in unimportant. This set of library files does NOT include library
files that are part of the Microsoft Visual C++ package.
            Macro Name               Line         Description
                                  Number(s)
        ADDL_LIB_PATH             17              This macro specifies the sub-directory, subordinate to the
                                                  \SYS directory, where the alternate library files reside.
                                                  More than one directory may be specified, separated by
                                                  semi-colons.
        LIBS                      62              This macro specifies the list of alternate library filenames,
                                                  separated by blanks.
        NODEFAULTLIBS             63              This macro specifies the list of library filenames that
                                                  should be specified as “non-defaults” for the Microsoft
                                                  Linker.



                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 53 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



7.4.3.7 Specifying the main target (MAIN_TARGET)
The main target is an EXE, DLL, or VXD file and is produced from the object files. The target must be
explicitly specified by filename, and its dependencies must include the Object files and Makefile.
Additional dependencies may be specified if necessary. See line 71 in the example provided in appendix C
for a sample of this specification. This is a LabWindows interface file which employs a scheme whereby
there are multiply DLLs built. In this case, there is a one-to-one correspondence between source files
provided and DLL files generated. Lines 77 through 82 are used to generate the necessary filenames and
dependencies.

For most DLL files that are build, a BSC file and a PDB are produced as a by-product of the link. These
files are used for debugging during the development phase and are considered non-production files.

7.4.3.8 Specifying the object file dependencies
Many of the object file dependencies may be generated by the Scandeps utility provided by Intersolv. This
utility will insert the updated dependencies between the “#UPDATE#” (line 98) and “#ENDUPDATE#”
(line 107) comment lines in the makefile. As such, once setup for Scandeps is done, this list need not be
maintained by the developer.


Scandeps is run from a batch file, which is present on the TOOLS\BATCH dirctory. DEPS.BAT requires a
single command line parameter, the makefile name (without the .MAK extension). This batch file will build
SCANLIST.TXT which contains the list of .C files for the project, and will then call ScanDeps proper to
update the project makefile. For example, to update the dependencies for the USBDLL.MAK file, located
in C:\da_Vinci\sys\ Laptop\USBDll\src, DEPS would be called as follows:
         C:\da_vinci\sys\Laptop\USBDll\src>v:\sys\tools\batch\deps USBDll

Dependencies for .a51 files must be entered by hand, since this list is used to generate an include file with
hard coded paths for the .a51 files. This is done due to a limitation in the assembler. You cannot specify a
list of directories for the assembler to search for include files.

7.4.4 Building a given node
To perform a build for a given Laptop node, the Configuration Builder is employed, using the makefile for
the node. Using CodeWright, or a DOS box, the build is invoked with the corresponding makefile specified
on the command line. For example, the Maintenance App node (on drive C) is built as follows:

         C:\da_vinci\sys\Laptop\apps\Maintenance\src>build MaintenanceApp.mak

The necessary object files are built (after running PC-Lint for the C/C++ programs), and the linker is used
to create the resultant DLL (or Executable) file, which is the final target. If an error occurs during the
course of the build, the process is terminated.
The tools for this process are installed in their respective sub-directories under tools. These take
precedence over environment variables created when the tools are installed.




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 54 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



7.5 Project Release Builds and other auxiliary operations

7.5.1 Overview
While all the nodes for the Mnet, DSPNet, DAFD, and Laptop are segregated into separate directories with
dedicated makefiles, there is a project makefile, named DaVinci_A4.MAK, whose purpose is to perform a
Software Release by utilizing these various makefiles, in addition to performing other sundry tasks.
This makefile contains information that is necessary to build the various directory trees for the Mnet,
DSPNet, DAFD, and Laptop components, populate those directories from the PVCS archives, and perform
program builds by invoking the corresponding makefiles for each and every node. Finally, this release
build process will perform some post-processing steps to migrate files to a dedicated area on the company-
wide network.
The DaVinci_A4.MAK makefile contains information regarding the relative path locations for the various
Mnet, DSPNet, DAFD, and Laptop nodes, the corresponding makefile names, the resultant target files that
are to be copied, as well as directory and filename information for the Shared files. The following sections
will serve to detail the mechanics and fine-tuning that can be performed in producing a Software Release.
It should also be noted that the Release Build makefile, which is responsible for performing this Software
Release, can be used for other auxiliary functions. The functions that are performed, and the mechanics of
their operations are presented accordingly.
Beginning with the A4 release, the approach to the manner in which the Release Build has been performed,
changed significantly. Previously, the Release Build would build all software nodes whenever it was
invoked.
Presently, the Release Build has been designed to build a set of nodes based on the node’s classification as
an Embedded, Loader, or Laptop node. Obviously, all the Laptop nodes are considered part of the Laptop
Build. The Mnet, DSPNet, and DAFD nodes consist of nodes that are considered Embedded or Loader (at
present, the only DAFD node is an Embedded node, but future changes may result in a Loader node being
created). When a Release Build is performed, one and only one type of build is performed (Embedded,
Loader, or Laptop).


7.5.2 Generalized Makefile Rules

7.5.2.1 Specifying path information
In order to provide the means for drive and directory independence during the build process, a mechanism
has been provided to allow the developer to override the defaults that are automatically selected. These
defaults (in order of priority) are as follows:
BUILD_ROOT
         C:\DA_VINCI\SYS (if currently on drive C) -or-
         x:\SYS (where ‘x’ is current drive)


DEVELOP_ROOT
         V:\SYS


TARGET_ROOT
         U:\DevAndTest_A4


                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 55 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



7.5.2.2 Defines.MAK, DEFS_EMBEDDED, DEFS_LOADER, and DEFS_LAPTOP
If one wishes to override these default assignments, then the following steps are performed. Note that this is
only needed if one wishes to use a directory other than the default specified above.
          Create a file called DEFINES.MAK on the local SRC directory
          Add a BUILD_ROOT macro set to the SYS directory on the local drive (e.g.,
             D:\da_Vinci\Sys)
          Add a DEVELOP_ROOT macro set to the alternate directory (if any).
          Add a TARGET_ROOT macro set to the alternate directory for copying the set of target files.
The DEFINES.MAK file is optional; if it is present, it will be used. If it is omitted, then the default
directory assignments are in effect. A sample DEFINES.MAK file appears below. This DEFINES.MAK
will have the following effect on the Software Release (other macros that are specified will be discussed
later):
          Set the Build Type to be an Embedded software build
          Set the drive and directory containing the Compilers, Linkers, and other tools to drive F:
          Set the drive and directory that is used for creating the individual node directory trees and
              populating these directories from the PVCS archives to drive E:
          Set the drive and directory to which the resultant targets are ultimately resident to drive D:
          Set other information that will be introduced at a later time in this document.
                              BUILD_TYPE=Embedded
                              DEVELOP_ROOT=f:\da_vinci\sys
                              BUILD_ROOT=e:\da_vinci\sys
                              TARGET_ROOT=d:\da_vinci\release
                              SKIP_MNET_NODES=Yes
                              EMBEDDED_BUILD_NUM=A40.010
                              EMBEDDED_SWRLSE_VER=X1.$(EMBEDDED
                              _BUILD_NUM).020a
                         Example 5: DEFINES.MAK for Release Build makefile

There is another item of importance with respect to the DEFINES.MAK file: due to the number of macros
that have been specified in this file, a set of “included define” makefiles now exists. These files are
DEFS_EMBEDDED.MAK (for the Embedded Build), DEFS_LOADER.MAK (for the Loader Build), and
DEFS_LAPTOP.MAK (for the Laptop Build). By segregating these macros into one of these three
included defines files, the task of updating the items for a build is facilitated. In general, the node version
numbers (see Section 7.5.4.9 Specifying Version Numbers for individual nodes) are defined in these
included define files.


7.5.2.3 Specifying Build Version number (xxx_BUILD_NUM macro)
Another piece of information for the release build is the Build Version number. This field is a required
element which is used to identify the version that has been built by creating an SwBuild.INI file during the
post-processing phase. The version number is specified by the xxx_BUILD_NUM macro. This macro may
be defined on the command line for the build, in the DEFINES.MAK file, or as an environment variable.
This macro name is contingent upon the type of build being performed (Embedded, Loader, or Laptop).
For the Embedded software, the build version number is specified using the EMBEDDED_BUILD_NUM
macro. For the Loader software, the build version number is specified using the LOADER_BUILD_NUM
macro. And for the Laptop software, the build version number is specified using the
LAPTOP_BUILD_NUM macro.
Typically, the xxx_BUILD_NUM macro is specified on the command line, such as
EMBEDDED_BUILD_NUM=A40.010, but can be specified in the DEFINES.MAK file as shown in the
previous section.


                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                 Page 56 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



There is a specific format for the Build Version number: the version number must consist of two three-
character elements separated by periods (as shown in the example above). In addition, characters of the
Build Version number must correspond to the Software Release Version number specified (see 7.5.2.4
Specifying Software Release Version number on page 5657). The format of the Build Version number is
checked for validity and an error message is generated if the format is improper.
Finally, the Laptop build requires that the Embedded build version number be specified as well as the
Laptop build version number.


7.5.2.4 Specifying Software Release Version number (xxx_SWRLSE_VER macro)
Another piece of information for the release build is the Software Release Version number. This field is a
required element which is used to identify the Software Release Version that has been built by creating an
SwRlse.INI file during the post-processing phase. The version number is specified by the
xxx_SWRLSE_VER macro. This macro may be defined on the command line for the build, in the
DEFINES.MAK file, or as an environment variable.
This macro name is contingent upon the type of build being performed (Embedded, Loader, or Laptop).
For the Embedded software, the software release version number is specified using the
EMBEDDED_SWRLSE_VER macro. For the Loader software, the software release version number is
specified using the LOADER_SWRLSE_VER macro. And for the Laptop software, the software release
version number is specified using the LAPTOP_SWRLSE_VER macro.
Typically, the xxx_SWRLSE_VER macro is specified on the command line, such as
LOADER_SWRLSEVER=X1.D40.010, but can be specified in the DEFINES.MAK file as shown in the
previous section.
There is a specific format for the Software Release Version number. However, this format differs based
upon the build type that is being performed. The following table describes the format of the software
release version number for each of the three build types.
               BUILD_TYPE                    xxx_SWRLSE_VER format                               Notes
         Embedded                         AA.BBB.CCC.DDDD                           BBB.CCC is the same as the
                                                                                    Build version number
                                                                                    DDDD is a free-format string
                                                                                    of indeterminate length
         Loader                           AA.BBB.CCC.DDDD                           BBB.CCC is the same as the
                                                                                    Build version number
                                                                                    DDDD is a free-format string
                                                                                    of indeterminate length
         Laptop                           AA.BBB.CCC.DDD.EEEE                       BBB.CCC is the same as the
                                                                                    Build version number
                                                                                    EEEE is a free-format string of
                                                                                    indeterminate length
                                                                                    The Embedded Build Version
                                                                                    number must also be specified.

                         Table 1: Software Release Version Number guidelines


The format of the Software Release Version number is checked for validity and an error message is
generated if the format is improper.

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 57 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



7.5.2.5 Verification of the Build and Software Release Version numbers
Specific elements Build Version number must correspond to specific elements of the Software Release
Version number as detailed in this section. Consider the following two version numbers:
                   LAPTOP_BUILD_NUM = A40.012
                   LAPTOP_SWRLSE_VER = X1.A40.012.003.024a
If the first character of each version number is designated as character one, then the following verification
tests are performed:
             For the Build Version number (xxx_BUILD_NUM), periods must appear as character 4 .
             For the Software Release Version number (xxx_SWRLSE_VER), periods must appear as
              shown in Table 1 on page 5658.
             For the Embedded and Loader builds, characters 1 thru 7 of the Build Version number must
              equal characters 4 thru 10 of the Software Release Version number.
             For the Laptop build, characters 5 thru 7 of the Build Version number must equal characters
              12 thru 14 of the Software Release Version number and characters 1 thru 7 of the Build
              Version number must equal characters 4 thru 10 of the Embedded Software Release Version
              number.
If any of these tests fail, then the build is terminated and an error message is presented.

7.5.3 Functions performed by the Release Build

7.5.3.1 Building a software release
The Software Release is the primary function of the Release Build makefile. This release process is
designed to populate all source directories from the PVCS archives, build all program nodes, and then copy
designated target files to the release directory.
As discussed in previous sections, the release build will be performed for either the Embedded, Loader, or
Laptop components. Regardless of which release build is performed, there is a common set of operations
that occur.
A version number for the Release Build is required, as this version is used to create an INI file that has the
version information included (this INI file also has a CRC supplied, to avoid circumventing this automatic
process).
In order to provide a facility for rebuilding a previous version of software, version numbers for the
individual programs (ie, Mnet nodes, DSP nodes, DAFD nodes and Laptop nodes) can be provided. This is
an optional feature, and can be restricted to select nodes only (the balance of the nodes would be built using
the tip revision of the corresponding PVCS archives).
The following flowcharts describes the operations that are performed during the Release Build process:




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 58 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




         Start Release Build



                                                        xxx_BUILD_NUM
                                                                                         No
                                                         macro defined?


               Include
           DEFINES.MAK if
              present                                           Yes




                                                       xxx_SWRLSE_VER
                                                                                         No
                                                         macro defined?
        Check for OverRide of
        the followiing macros:
            BUILD_ROOT
          DEVELOP_ROOT                                          Yes
          TARGET_ROOT

                                                            Build and
                                                          S/W Release
                                                                                         No
                                                         Version numbers
                                                              valid?

       Setup paths for ATTRIB
       and DELTREE Windows
               utilities




                                                          Proceed with                        Display error
                                                          remainder of                     message for missing
        Check for OverRide of
                                                          Release Build                     Version number
          paths for Generic
        Makefiles via macros:
         GEN_MNET_MAK,
        GEN_DSP_MAK , etc



                                                       End of build process                Abort build process




Figure 2019: daVinci Release Build: High-Level processing logic




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 59 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




         Remainder of Release
                Build




                                                                    Copy files from Node
             Build System-wide                                      directories to Target
              Shared Directory                                      directories using the
                   Tree(s)                                          approrpriate macros
                                                                   defined for this purpose




               Get files and do
               Node Builds for                                        Update the Revision
              those nodes that                                      Information INI file with
                comprise the                                       Version number supplied
                type of build
              being performed




                                                                      CERTIFY utility to
                                                                      add CRC to INI file
                Build Target
              Directory Tree(s)




                                                                     End of build process




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 60 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




       Remainder of Release
              Build



                                                 Build embedded
          Build System-wide                    shared directory tree
                                    laptop
           Shared Directory                      and embedded
                                     build
                 Tree                          shared files by build
                                                  version label


          embedded or loader



         Get files and do Node
        Builds for those nodes
       that comprise the type of
         build being performed


                                                                Build type?                laptop


         Buik Target Directory
               Tree (s)
                                                             embedded & loader



                                                                    Create                 Copy all needed runtime
        Copy output files from                             <buildtype>_Targets.txt           symbols and auxiliary
         Node directories to                             file that summarizes node         files to "Release" target
       Target directories using                              versions and CRCs                        folder
       the appropriate macros
       defined for this purpose

                                                         Check node symbol files
                                                          into PVCS and place a
          Update the Build &                               build number version
            Release revision                                   label on them
       information ini files with
          the version number
                supplied
                                                            (embedded only)
                                                         Label all shared archive
                                                             folders with the
                                                         embedded build version
                                                                   label
          CERTIFY utility to
         add CRC to INI files



                                                                                             End of build process




Figure 2120: daVinci Release Build: Remainder of High-level processing logic




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                     Page 61 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




                                           Building Mnet, DSP,
                                          DAFD or Laptop nodes




                                              Macro specified to
                                               "skip" this set of
                                                    nodes?



                                                      No




                                              Build node-specific
                                               directory tree(s)




                                             Version specified for
                             Yes                                                    No
                                                  this node?              this path is not
                                                                             used for a
                                                                          controlled build
                                                                                          Specific version for
           Get System and                                            No
                                                                                           previous node?
Yes       Subsystem-specific
           Shared Files with
           specified version
                                                                                                                       No
                                                                                                   Yes




                                             Build the node using                        Get "tip revision" of all
                                             the node's makefiles                             Shared files




                                               Last node for this
                                                 subsystem?



                                                      Yes



                                          Done with this subsystem




Figure 2221: daVinci Release Build: Subsystem (Mnet, DSP, or Laptop) processing logic


                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 62 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



7.5.3.2 Other functions of the Release Build makefile
As mentioned, performing a software release is the major function of the Release Build makefile. However,
in order to consolidate many of the path settings and PVCS archive information, there are several other
functions that may be performed via the Release Build makefile. These operations are performed through
the use of “explicit targets”. The following list briefly describes the most commonly used operations that
can be performed using the Release Build makefile via explicit targets:
            Building a directory tree for a given node
            Populating a shared directory tree (for System, Mnet, DSP, or Laptop shared files) from the
             PVCS archives, using an optional version number.
          Building a list of logfile names (using filename “wildcards”) that constitute the system or a
             given node; this includes any shared files that the node may require
          Applying a version number label to the PVCS archives for a set of nodes; this includes any
             shared files that the node may require
These explicit targets and any auxiliary macro names that are required are discussed in greater detail later in
this document.


7.5.4 Major components of the Release Build makefile

7.5.4.1 Overview
The name of the Release Build makefile is DaVinci_A4.MAK. Please refer to Appendix D for a sample
DaVinci_A4.MAK. While this example is indicative of the production makefile, the evolution of the
Release Build makefile is dynamic, and changes can be expected. The purpose of the components
described in this section is to detail the macros that may need maintenance in the future if nodes, directories,
filetypes, etc. are added to, changed, or deleted from, the Release Build. One need not be concerned with
the balance of the Release Build makefile in order to perform maintenance on the items described in the
following sections.


7.5.4.2 Specification of the Build and Release Revision INI Files
The BUILD_REVISION_INI_FILE macro (line 231) is used to list the files that will have Build Version
included as a line item. One filename is required, but others may be specified. The directory location for
these files is specified by the BUILD_REVISION_INI_TARGET_DIR macro (line 230).
The RELEASE_REVISION_INI_FILE macro (line 235) is used to list the files that will have Build Version
included as a line item. One filename is required, but others may be specified. The directory location for
these files is specified by the RELEASE_REVISION_INI_TARGET_DIR macro (line 234).


7.5.4.3 Specification of the Shared Files
There are two categories of shared directories and files, referred to collectively as the Shared Files: One
group consists of the System Shared Files. The System Shared Files are those directories and files that are
used by more than one subsystem (i.e., used by a combination of Mnet, DSPNet, DAFD, or Laptop nodes).
The Mnet, DSPNet, DAFD, and Laptop Shared Files are those directories and files that are used by more
than one node within the given subsystem. The following macros are used to define the set of directories
and the set of corresponding file extensions that comprise the PVCS archives for these shared files.
Citations to their use in the Release Build makefile are provided.




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 63 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



           Macro Name               Line         Description
                                 Number(s)
      SYSTEM_SHARED_             244 thru        This macro defines the directory (or directories) that are
      NODES                      245             created as part of the System Shared Files
      SYSTEM_SHARED_             247 thru        This macro defines the file extensions that are used for
      SRC_ARCHIVES               257             retrieval of the PVCS archives for the System Shared files
      MNET_SHARED_               307 thru        This macro defines the directory (or directories) that are
      NODES                      309             created as part of the Mnet Shared Files
      MNET_SRC_                  313 thru        This macro defines the file extensions that are used for
      ARCHIVES                   323             retrieval of the PVCS archives for the Mnet Source files.
                                                 Note that this pertains not only to Shared Files, but also to
                                                 source files for the nodes proper.
      MNET_LOADER_               383             This macro defines the directory (or directories) that are
      SHARED_NODES                               created as part of the Mnet Loader Shared Files
      MNET_LOADER_               385             This macro defines the file extensions that are used for
      SRC_ARCHIVES                               retrieval of the PVCS archives for the Mnet Loader Source
                                                 files. Note that this pertains not only to Shared Files, but
                                                 also to source files for the nodes proper.
      DSP_SHARED_                419 thru        This macro defines the directory (or directories) that are
      NODES                      421             created as part of the DSPNet Shared Files
      DSP_SRC_                   452 thru        This macro defines the file extensions that are used for
      ARCHIVES                   457             retrieval of the PVCS archives for the DSPNet Source
                                                 files. Note that this pertains not only to Shared Files, but
                                                 also to source files for the nodes proper.
      CTP_SHARED_                423 thru        This macro defines the directory (or directories) that are
      NODES                      425             created as part of the CTP type of DSPNet Shared Files
      CE_SHARED_                 459 thru        This macro defines the directory (or directories) that are
      NODES                      466             created as part of the CE type of DSPNet Shared Files
      DSP_LOADER_                518 thru        This macro defines the directory (or directories) that are
      SHARED_NODES               520             created as part of the DSPNet Shared Files
      DSP_LOADER_                522             This macro defines the file extensions that are used for
      SRC_ARCHIVES                               retrieval of the PVCS archives for the DSPNet Source
                                                 files. Note that this pertains not only to Shared Files, but
                                                 also to source files for the nodes proper.
      MDSP_SHARED_               563             This macro defines the directory (or directories) that are
      NODES                                      created as part of the DAFD Shared Files
                                                 NOTE: Since DAFD does not really employ shared files,
                                                 this macro is simply included for compatability with the
                                                 other subsystems.
      MDSP_SRC_                  582 thru        This macro defines the file extensions that are used for
      ARCHIVES                   587             retrieval of the PVCS archives for the DAFD Source files.
                                                 Note that this pertains not only to Shared Files, but also to
                                                 source files for the nodes proper.
      MDSP_LOADER_               600             This macro defines the directory (or directories) that are
      SHARED_NODES                               created as part of the DAFD Loader Shared Files
                                                 NOTE: Since DAFD does not have a loader at this time,
                                                 this macro is simply included for compatability with the
                                                 other “embedded” type of subsystems.




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 64 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



           Macro Name               Line         Description
                                 Number(s)
       LAPTOP_SHARED_            621 thru        This macro defines the directory (or directories) that are
       NODES                     623             created as part of the Laptop Shared Files
       LAPTOP_SRC_               706 thru        This macro defines the file extensions that are used for
       ARCHIVES                  714             retrieval of the PVCS archives for the Laptop Source files.
                                                 Note that this pertains not only to Shared Files, but also to
                                                 source files for the nodes proper.

7.5.4.4 Specification of the Node makefiles
The node makefiles are used to perform the program builds for the corresponding nodes proper. These
node makefiles are specified as a full directory path (subordinate to BUILD_ROOT). In addition, the node
makefile names are important because this name is used to ascertain whether a version label has been
provided for the Release Build process (more on this later).
Care should be taken to insure that the node makefiles have unique names, even though the
directories may be unique. Duplicate makefile names will undermine some of the principles
employed by the Release Build makefile.
The following macros are used to define the set of directories and the set of corresponding filenames that
comprise the makefiles for the individual nodes. Citations to their use in the Release Build makefile are
provided.
           Macro Name               Line         Description
                                 Number(s)
       MNET_NODES                312 thru        This macro defines the directories and filenames for the
                                 323             Mnet node makefiles
       MNET_LOADER_              389 thru        This macro defines the directories and filenames for the
       NODES                     395             Mnet Loader node makefiles
       DSP_NODES                 427 thru        This macro defines the directories and filenames for the
                                 431             DSPNet node makefiles
       DSP_LOADER_               525 thru        This macro defines the directories and filenames for the
       NODES                     526             DSPNet Loader node makefiles
       LAPTOP_NODES              634 thru        This macro defines the directories and filenames for the
                                 644             Laptop node makefiles
       MDSP_NODES                565 thru        This macro defines the directories and filenames for the
                                 566             MDSP node makefiles
       MDSP_LOADER_              604             This macro defines the directories and filenames for the
       NODES                                     MDSP Loader node makefiles
                                                 NOTE: Since DAFD does not have a loader at this time,
                                                 this macro is simply included for compatability with the
                                                 other “embedded” type of subsystems.




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 65 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



7.5.4.5 Specification of Additional Directories for every node in a subsystem
As a by-product of creating the directory tree for the individual nodes, additional directories are created.
The following macros are used to define the set of additional directories that are created on a node-by-node
basis based on the particular subsystem to which the node belongs. Note that these are relative path names
from the node makefile paths. Citations to their use in the Release Build makefile are provided.
           Macro Name                 Line        Description
                                   Number(s)
    MNET_ADDITIONAL_               346 thru       This macro defines the additional directories for each
    SUBDIRS                        348            Mnet node.
    DSP_ADDITIONAL_                448 thru       This macro defines the additional directories for each
    SUBDIRS                        450            DSPNet node.
    LAPTOP_ADDITIONAL              702 thru       This macro defines the additional directories for each
    _ SUBDIRS                      704            Laptop node.
    MDSP_ADDITIONAL_               578 thru       This macro defines the additional directories for each
    SUBDIRS                        580            MDSP node.



7.5.4.6 Specification of Additional Directories and PVCS Logfiles for given nodes
There are instances where a given node may need to have an additional subdirectory created. A macro
may be specified, based on the node name, which will designate an additional subdirectory that will be
created for the node. In addition, the corresponding PVCS logfiles which are retrieved into this
subdirectory are specified based on a similar macro (derived from the node name). Note that these are
absolute path names from the BUILD_ROOT path. Citations to their use in the Release Build makefile are
provided.
           Macro Name                 Line        Description
                                   Number(s)
    XXX_OTHER_                     368 thru       This macro defines the additional subdirectory for a given
    ARCHIVE_ SUBDIR                369            node. The “XXX” is replaced with the node name (in the
                                                  example, the MSC node name is used).
    XXX_OTHER_                     370            This macro defines the additional PVCS logfile names to
    ARCHIVES                                      be retrieved into the subdirectory for a given node. The
                                                  “XXX” is replaced with the node name (in the example,
                                                  the MSC node name is used).


For another instance where this feature is employed, refer to the section of the DaVinci_A4.mak beginning
on line 472 as the various nodes of the DSPNet all appear to use this facility.


7.5.4.7 Specification of Directories and PVCS Logfiles to retrieve for Software Build
There may be instances where additional subdirectories must be created in order to retrieve files from the
PVCS archives. The following macros are used to define the set of additional directories that are created,
and the corresponding PVCS Logfiles that are retrieved, on a node-by-node basis, based on the particular
subsystem to which the node belongs.
For example, each Laptop node may require that *.m_v files are retrieved into the ..\exe subdirectory. The
use of these macros provides for this capability. Note that the subdirectories are relative path names from
the node makefile paths.
Up to 10 such subdirectories and logfile names may be specified in this fashion on a subsystem-by-
subsystem basis. This feature is presently employed for the Laptop subsystem, and examples to their use in
the Release Build makefile are provided.

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 66 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



           Macro Name                   Line        Description
                                     Number(s)
    MNET_OTHER_                      N/A            These macros defines the additional directories for each
    ARCHIVE_ SUBDIR1 thru                           Mnet node which are created for the sole purpose of
    MNET_OTHER_                                     populating the directory with files from the PVCS
    ARCHIVE_ SUBDIR9                                archives.
    MNET_OTHER_                      N/A            These macros defines the corresponding PVCS logfile
    ARCHIVES1 thru                                  names for each of the Mnet subdirectories as specified
    MNET_OTHER_                                     above. For example, MNET_OTHER_ARCHIVES1
    ARCHIVES10                                      specifies the logfiles that are retrieved into the
                                                    MNET_OTHER_ ARCHIVE_SUBDIR1 subdirectory.
                                                    Similarly, MNET_OTHER_ARCHIVES2 would
                                                    specify the logfiles that are retrieved into the
                                                    MNET_OTHER_ ARCHIVE_SUBDIR2 subdirectory
                                                    and so on.
    DSP_OTHER_                       N/A            These macros defines the additional directories for each
    ARCHIVE_ SUBDIR1 thru                           DSPNet node which are created for the sole purpose of
    DSP_OTHER_                                      populating the directory with files from the PVCS
    ARCHIVE_ SUBDIR10                               archives.
    DSP_OTHER_                       N/A            These macros defines the corresponding PVCS logfile
    ARCHIVES1 thru                                  names for each of the DSPNet subdirectories as
    DSP_OTHER_                                      specified above.
    ARCHIVES10
    LAPTOP_OTHER_                    721 thre       These macros defines the additional directories for each
    ARCHIVE_ SUBDIR1 thru            722            Laptop node which are created for the sole purpose of
    LAPTOP_OTHER_                                   populating the directory with files from the PVCS
    ARCHIVE_ SUBDIR10                               archives.
    LAPTOP_OTHER_                    724 thru       These macros defines the corresponding PVCS logfile
    ARCHIVES1 thru                   726            names for each of the Laptop subdirectories as
    LAPTOP_OTHER_                                   specified above.
    ARCHIVES10
    MDSP_OTHER_                      N/A            These macros defines the additional directories for each
    ARCHIVE_ SUBDIR1 thru                           DAFD node which are created for the sole purpose of
    MDSP_OTHER_                                     populating the directory with files from the PVCS
    ARCHIVE_ SUBDIR10                               archives.
    MDSP_OTHER_                      N/A            These macros defines the corresponding PVCS logfile
    ARCHIVES1 thru                                  names for each of the DAFD subdirectories as specified
    MDSP_OTHER_                                     above.
    ARCHIVES10



7.5.4.8 Specification of the Target directories and corresponding Target files
Having performed the program builds for each of the nodes that comprise the system, the target files are
copied to directories subordinate to the TARGET_ROOT. There are several macros that are defined for the
purpose of identifying the target files to be copied and their corresponding destination directories. The
following macros are used, and citations to their use in the Release Build makefile are provided.




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 67 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



           Macro Name                  Line        Description
                                    Number(s)
   MNET_TARGET_                     330            This macro defines the target directories for any Mnet
   DIRECTORY                                       target files.
   MNET_TARGETS                     333 thru       This macro defines the Mnet target files (relative to
                                    344            BUILD_ROOT) that are to be copied to the directory
                                                   referenced above.
   MNET_LOADER_                     403            This macro defines the target directories for any Mnet
   TARGET_ DIRECTORY                               Loader target files.
   MNET_LOADER_                     406 thru       This macro defines the Mnet Loader target files (relative
   TARGETS                          412            to BUILD_ROOT) that are to be copied to the directory
                                                   referenced above.
   DSP_TARGET_                      438            This macro defines the target directories for any DSPNet
   DIRECTORY                                       target files.
   DSP_TARGETS                      441 thru       This macro defines the DSPNet target files (relative to
                                    445            BUILD_ROOT) that are to be copied to the directory
                                                   referenced above.
   DSP_LOADER_                      552            This macro defines the target directories for any DSPNet
   TARGET_ DIRECTORY                               Loader target files.
   DSP_LOADER_                      555 thru       This macro defines the DSPNet Loader target files
   TARGETS                          556            (relative to BUILD_ROOT) that are to be copied to the
                                                   directory referenced above.
   LAPTOP_DLL_TARGET                660            This macro defines the target directories for any Laptop
   _ DIRECTORY                                     DLL files.
   LAPTOP_DLL_TARGET                655 thru       This macro defines the Laptop DLL target files (relative
   S                                658            to BUILD_ROOT) that are to be copied to the directory
                                                   referenced above.
   LAPTOP_APP_NODES                 663 thru       This macro defines the various application nodes (in this
                                    666            case these nodes refer to the folder names under
                                                   Laptop\Apps). This macro is used not only for building
                                                   the LAPTOP_APP_TARGET_DIRECTORIES macro
                                                   (see below), but it is also used when files are copied to
                                                   the respective target directories
   LAPTOP_APP_TARGET_               667 thru       This macro defines the target directories for any Laptop
   DIRECTORIES                      670            Application files. In the makefile, a “loop” is used to
                                                   assign the various directory names
   LAPTOP_APP_TARGET_               655 thru       This macro defines the Laptop Application target files
   EXTENSIONS                       658            (relative to BUILD_ROOT) by specifying the file
                                                   extensions that are to be copied.
   LAPTOP_LIBRARY_                  675            This macro defines the target directories for any Laptop
   DIRECTORY                                       library target files.
   LAPTOP_LIBRARYS                  676 thru       This macro defines the Laptop library target files
                                    680            (relative to BUILD_ROOT) that are to be copied to the
                                                   directory referenced above.
   LAPTOP_MEX_TARGET                693 thru       This macro defines the target directories for any Laptop
   _ DIRECTORIES                    699            Mex Interface files. In the makefile, a “loop” is used to
                                                   assign the various directory names
   LAPTOP_MEX_TARGET                683 and        These macros specify the target directories for the
   _ DIRECTORY1 thru                688            corresponding “Mex Interface” files. There may be up
   LAPTOP_MEX_TARGET                               to 10 such target directories as segregation of the Mex
   _ DIRECTORY10                                   Interface files is performed by design.



                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 68 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



            Macro Name                  Line        Description
                                     Number(s)
    Laptop_MEX_TARGETS1              684 thru       These macros specify the corresponding Mex Interface
    thru                             691 (with      target files for each of the like-numbered directories
    Laptop_MEX_TARGETS1              “gaps”)        specified above. The examples in the Release Build
    0                                               makefile which are cited provide a vivid example of the
                                                    use of this and the preceding macros.
    MDSP_TARGET_                     572            This macro defines the target directories for any DAFD
    DIRECTORY                                       target files.
    MDSP_TARGETS                     576 thru       This macro defines the DAFD target files (relative to
                                     576            BUILD_ROOT) that are to be copied to the directory
                                                    defined above.
    MDSP_LOADER_                     612            This macro defines the target directories for any DAFD
    TARGET_ DIRECTORY                               Loader target files.
    MDSP_LOADER_                     614            This macro defines the DAFD Loader target files
    TARGETS                                         (relative to BUILD_ROOT) that are to be copied to the
                                                    directory referenced above.



7.5.4.9 Specifying Version Numbers for individual nodes
Under default circumstances, the “tip” revision is retrieved as directories are populated from the PVCS
archives. There are times when a specific version is required on a node-by-node basis. This version
number specification can be accomplished through the use of macros, whose name is related to the name of
the corresponding makefile for the node.
The macro name is formed by using the node’s makefile name (without the directory and extension
information) and appending “_VERSION_LABEL” to form a unique macro name. For example, referring
to line 152 in the Release Build makefile, MDC_VERSION_LABEL would be the macro name that would
be set to the version number required for building this node. This macro would be set in DEFINES.MAK
to the desired version number in the PVCS archives, as shown below:
                                MDC_VERSION_LABEL = A2.X3.01

                     Example 6: Sample Node-Specific Version Number specification
This macro specification will force the PVCS archives for the MDC node to be retrieved with the version
number of “MDC A2.X3.01”. This version number also applies to the System and Subsystem (in this case,
Mnet) shared files. Because each of the xxx_VERSION_LABEL macros is unique for each of the nodes
that are built, any number of different versions can be specified on a node-by-node basis.
This technique of node-specific version specification is also used for setting the version number labels as
described later in this document.
Finally, it is important to note that rather than define these version number macros in DEFINES.MAK,
convention dictates that the associated version number macros appear in the appropriate “included defines”
file.


7.5.4.10 Other Makefile Macros
There are other miscellaneous macros which are used to control the manner in which the Software Release
is performed. These macros are not specifically set in the Release Build makefile, but rather, are set in
DEFINES.MAK as a means of fine-tuning the build process. These macros are discussed here. Examples
will be provided as part of this presentation. These macros are all optional. If the macro is not specified,
then the resultant effect that this macro would perform is omitted, and the Software Release is performed
under the default conditions.

                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 69 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



        Macro Name                     Settings                                     Description
  Outfile                      Filename                     This macro is used to redirect the output that is produced,
                                                            during the build process for each node, to the filename
                                                            specified. If this macro is specified, then a file with the
                                                            given filename is created on each node’s “makefile”
                                                            directory containing the results of the program build.
                                                            This way, error messages that may scroll off the screen
                                                            can be captured for review.
  GEN_MNET_MAK                 Directory                    This macro is used to set the directory for the Generic
                                                            Mnet makefile to a different location other than the
                                                            default chosen by the Release Build. There are two type
  GEN_8051_MAK                 Directory                    This macro is used to set the directory for the Generic
                                                            8051 makefile (for the Mnet nodes that use this
                                                            processor) to a different location other than the default
                                                            chosen by the Release Build.
  GEN_PPC_MAK                  Directory                    This macro is used to set the directory for the Generic
                                                            Power-PC makefile (for the Mnet nodes that use this
                                                            processor) to a different location other than the default
                                                            chosen by the Release Build.
  GEN_SHARC_MAK                Directory                    This macro is used to set the directory for the Generic
                                                            DSPNet makefile to a different location other than the
                                                            default chosen by the Release Build.
  GEN_LAP_MAK                  Directory                    This macro is used to set the directory for the Generic
                                                            Laptop makefile to a different location other than the
                                                            default chosen by the Release Build.
  GEN_DAFD_MAK                 Directory                    This macro is used to set the directory for the Generic
                                                            MDSP makefile to a different location other than the
                                                            default chosen by the Release Build.
  SKIPGET                      NO                           If this macro is defined, and not equal to “NO”, then no
                                                            files are retrieved from the PVCS archives whatsoever, as
                               YES
                                                            part of the Software Release.
  SKIP_MNET_ NODES             “Defined”                    If this macro is defined, then the Software Release will
                                                            not rebuild directories or targets for any Mnet nodes.
  SKIP_DSP_ NODES              “Defined”                    If this macro is defined, then the Software Release will
                                                            not rebuild directories or targets for any DSP nodes.
  SKIP_LAPTOP_                 “Defined”                    If this macro is defined, then the Software Release will
  NODES                                                     not rebuild directories or targets for any Laptop nodes.
  SKIP_MDSP_NODES              “Defined”                    If this macro is defined, then the Software Release will
                                                            not rebuild directories or targets for any Laptop nodes.
  SKIP_LINT_27183_             “Defined”                    If this macro is defined, then PC-Lint is not run
  DO_NOT_USE                                                whatsoever, for any C or C++ program file.
  DEBUG_MAKEFILE               Command line                 This macro may be set to additional command line
                               Parameters for               parameters for the Intersolv Configuration Builder. For
                               Configuration Builder        example, “-p” is used to print the results of macro settings
                                                            as part of the output produced by the BUILD program.


                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 70 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



7.5.5 Performing a Software Release
In order to perform a Software Release, the following prerequisites must be performed:
           The DaVinci_A4.MAK file must be resident on the appropriate directory in which the build is
              to take place.
           The BUILD_ROOT must be defined, either in the DOS environment, or in the
              DEFINES.MAK file.
           The “build” version and software release version numbers, that are applied, must be known.
           The build type (Embedded, Loader, or Laptop) must be specified
           Any other macros and/or options that must be set should be incorporated into the
              DEFINES.MAK file.
The build is then performed using the DaVinci_A4.MAK; for example, to build Version 01.A2.X1.03, the
following command-line could be used:
         C:\da_vinci\sys\>build VER=01.A2.X1.03 DaVinci_A4.mak
Some detailed examples are provided in the Da Vinci Software Development Operations Document.

7.5.6 Maintenance on the Release Build makefile
The Release Build makefile is designed to be maintained without having intimate knowledge on the
specifics of makefile development. The goal is to allow nodes and directories to be easily added, changed,
or deleted with minimal effort. The following guidelines are provided as specifics for performing makefile
maintenance. As a general rule, the makefile will typically undergo changes to add a given node. Hence,
the information presented in the following list pertains to adding a node. Similar actions would pertain to
changing a node’s name, or removing a node.
            If a new shared directory is being added, then update the MNET_SHARED_NODES,
             MNET_LOADER_SHARED_NODES, DSP_SHARED_NODES,
             DSP_LOADER_SHARED_NODES, MDSP_SHARED_NODES, ,
             MDSP_LOADER_SHARED_NODES, or LAPTOP_SHARED_NODES macro.
            If a new type of source file is being added, then update the
             SYSTEM_SHARED_SRC_ARCHIVES, MNET_SRC_ARCHIVES,
             MNET_LOADER_SRC_ARCHIVES, DSP_SRC_ARCHIVES,
             DSP_LOADER_SRC_ARCHIVES, MDSP_SRC_ARCHIVES,
             MDSP_LOADER_SRC_ARCHIVES, or LAPTOP_SRC_ARCHIVES macro.
            If a node is being added, what subsystem does the node belong to? Modify the
             MNET_NODES, MNET_LOADER_NODES, DSP_NODES, DSP_LOADER_NODES,
             MDSP_NODES, MDSP_LOADER_NODES, LAPTOP_NODES and MNET_TARGETS,
             DSP_TARGETS, MDSP_TARGETS, LAPTOP_TARGETS macros respectively.
            If the node is an Laptop item, then the LAPTOP_LIBRARYS macro may also need to be
             updated.
            If the node is an Laptop “Mex Interface” item, then new
             LAPTOP_MEX_TARGET_DIRECTORYx and LAPTOP_MEX_TARGETSx macros may
             need to be defined.
            If there are special non-source files that are required for the build, then
             XXX_OTHER_ARCHIVE_SUBDIR and XXX_OTHER_ARCHIVES macros may be
             required.
These items listed above are provided as a guideline. In some cases, the changes to the Release Build
makefile may address some more fundamental changes, such as the inclusion of a new type of file that
would require adding/changing the MNET_OTHER_ARCHIVE_SUBDIR1 (thru SUBDIR10),
DSP_OTHER_ARCHIVE_SUBDIR1 (thru SUBDIR10) and LAPTOP_OTHER_ARCHIVE_SUBDIR1
(thru SUBDIR10) and corresponding MNET/DSP/LAPTOP_OTHER_ARCHIVES1 (thru ARCHIVES10)
macros. Of course, each case must be carefully scrutinized when modifying the Release Build makefile.


                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 71 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



7.5.7 Other Functions of the Release Build makefile

7.5.7.1 Overview and use of explicit targets
The Release Build makefile can be used to perform other auxiliary functions as they related to the system as
a whole. The advantage in placing this burden of responsibility on the makefile is that the makefile
becomes the one central location where common maintenance items (such as adding, changing, or deleting
nodes, PVCS archive types, shared directories, etc.) are performed. This alleviates the need to have this
maintenance information spread among several files, and alleviates the need to have a multi-step procedure
for an otherwise simple update.
Explicit Targets are target names specified for the build process, which serve the function of performing a
sequence of operations that deviate from the Software Release process. An explicit target is specified by
listing it as a parameter on the command line. For example, to specify an explicit target designed to build
the list of PVCS archive filenames (target name of build_logfile_list), the following command-line could
be used:
          C:\da_vinci\sys\>build DaVinci_A4.MAK build_logfile_list
The explicit targets, their corresponding functions, and any parameters or other macros required, are
detailed in the following sections. Note that the macros which are used to supply further information for the
these explicit target operations can be specified in the DOS environment or in the DEFINES.MAK file.


7.5.7.2 Building a directory tree for a given node
The path for a node can be built by the Release Build makefile using the build_dir_tree explicit target.
This target requires that the DIR macro be set to the appropriate path name, subordinate to the
BUILD_ROOT. All intermediate directories are created in order to create the named directory. For
example, to build the directory tree for the UIMC node (see line 155), DIR is set as follows:
                              DIR = vsd\umc_u\src

                   Example 7: Sample Directory specification for build_dir_tree target


7.5.7.3 Populating a set of Shared Directories from PVCS archives
All the shared files for a given node may be retrieved from the PVCS archives using one of the following
explicit targets, depending on the subsystem:
           get_system_shared_dir for System shared files only
           get_mnet_shared_dir for Mnet shared files only
           get_dsp_shared_dir for DSPNet shared files only
           get_Laptop_shared_dir for Laptop shared files only
           get_mdsp_shared_dir for MDSP shared files only

If a particular version is required for PVCS logfile retrieval, then the GETFLAGS macro must be set to
reflect the version information required, as well as any other options that may be required, as shown in the
following:
                            GETFLAGS = -n -v”BUILD 02.A2.X1.04”

             Example 8: Sample GETFLAGS specification for get_mnet_shared_dir target
In this example, the “answer No to queries” option (“N”) and the Version number of BUILD 02.A2.X1.04
(“V” option) have been specified in preparation for performing the get_XXX_shared_dir operation.



                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 72 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



7.5.7.4 Building a list of PVCS archive filenames
In order to apply PVCS commands to a list of files for a given node, or to all the system files, the
build_logfile_list explicit target may be used. This operation will simply generate a list of filenames, using
wildcards, and output the list to a file named FILELIST.TXT, suitable for use by many of the PVCS
commands. For example, if a Logfile List (using the VLOG utility) is desired for the VSDDLL node (see
line 275), then this explicit target may be used to generate FILELIST.TXT, which can be used, in turn, as
an option for the Vlog utility as follows:
         C:\da_vinci\sys\>vlog @filelist.txt
The default condition for the build_logfile_list explicit target is to generate a list of filenames for the entire
project. To specify a single node, use the NODE_LOGFILE macro to specify the node name. The CTP
node is specified in the following example:
                                  NODE_LOGFILE = CTP

            Example 9: Sample NODE_LOGFILE specification for build_logfile_list target


7.5.7.5 Applying a Version Number Label to PVCS archives
In order to appy a PVCS version number to a set of logfiles, the set_logfile_versions explicit target is used.
This operation is used in conjunction with the xxx_VERSION_LABEL macros (see Specifying Version
Numbers for individual nodes on page 6869) to determine the nodes and the corresponding version numbers
that are to be assigned. All shared files that may be used for the specified nodes will likewise be labeled
(i.e., if an Mnet node is specified, the System and Mnet shared files have the version number assigned, as
well as the node-specific files). Any number of xxx_VERSION_LABEL macros may be specified in order
to effect a label on several sets of files with a single build. The xxx_VERSION_LABEL macros should be
placed in DEFINES.MAK for ease of operation. The following example demonstrates this principle:
                               CTP_VERSION_LABEL=A3.X3.01
                               IOD_VERSION_LABEL=A2.X1.00
                               USBDLL_VERSION_LABEL=B2.X1.02
              Example 10: xxx_VERSION_LABEL macros for set_logfile_versions target
There is another macro used in conjunction with the set_logfile_versions explicit target, the
xxx_SOURCE_VERSION_LABEL macro. This macro is used for the PVCS “branching” feature. The
PVCS documentation provides information on the branching operation, but in essence, the principle is as
follows: one or more development paths from a common base may occur. This is referred to as branching.
In order to allow PVCS to maintain segregate “branches” from a base file, the existing version number must
be specified when creating a new version number. For each xxx_SOURCE_VERSION_LABEL macro that
is specified, the new branch label is applied. The following example demonstrates this principle:
                               CTP_VERSION_LABEL=A3.X3.01
                               CTP_SOURCE VERSION_LABEL=A2.X1.00
        Example 11: xxx_SOURCE_VERSION_LABEL macros for set_logfile_versions target




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 73 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.



7.5.7.6 Checking the nodes that utilize a given shared file
It is useful to know which nodes are affected when one considers changes to a shared file. This is true
regardless of whether the shared file is a system shared file or a shared file related to a given subsystem. In
order to produce a text file that contains a list of nodes utilizing a given shared file, the check_shared_file
explicit target is used. This operation will utilize the SHARED_FILENAME macro (which contains the
name of the shared file in question), and will produce a text file, called FILELIST.TXT, on the directory
specified as the BUILD_ROOT. The contents of FILELIST.TXT will be a list of node names (if any) that
utilize the named shared file. Comment lines are generated at the start and end of the list to avoid confusion
in the event that there are no nodes that are affected.




                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                   Intuitive Surgical, Inc.–Confidential                Page 74 of 118
     Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




8. Appendix A: Mnet Makefile Sample
1     ###############################################################################
2     #
3     #     Makefile for Building Mnet IOD
4     #       with ** Version Manager **
5     #
6     #
7     ###############################################################################
8     #
9     # If a C source file is in the "SRCLIST" it will be compiled to an assembly
10    # file and then assembled. This is to support in-line assembly code for
11    # the Keil compiler and assembler.
12    #
13    # This makefile will lint each C source module before compiling. At link
14    # time, all of the .lob files generated from the unit lint of each C file
15    # will be linted together.
16    #
17    ###############################################################################
18    #
19    # PVCS Log
20    #
21    # $Log: W:\logs\da_Vinci\sys\iod\iod_u\src\iod.mav $
22    #
23    # Rev 1.13 08 Dec 1997 13:10:18 tedw
24    # Made changes for new shared makefile
25    #
26    # Rev 1.10 04 Nov 1997 17:52:20 tedw
27    # Update node to work with UInet and ISCnet message formats
28    #
29    # Rev 1.9 15 Oct 1997 11:07:24 tedw
30    # Updated config info read for Dallas part
31    #
32    # Rev 1.8 22 Sep 1997 16:53:38 tedw
33    # Updated to use Dallas read block function
34    #
35    # Rev 1.7 11 Sep 1997 16:43:52 tedw
36    # Updated low level drivers for board bringup testing
37    #
38    # Rev 1.6 22 Aug 1997 07:34:40 nealo
39    # Changes to support generic .a51 makefile rules
40    #
41    # Rev 1.5 06 Aug 1997 17:18:26 tedw
42    # Updated to new sfr include file.
43    #
44    # Rev 1.4 04 Aug 1997 16:51:50 tedw
45    # Changed OBJs to local
46    #
47    # Rev 1.3 01 Aug 1997 14:17:36 tedw
48    # Removed ismemcpy
49    #
50    # Rev 1.2 01 Aug 1997 10:36:44 tedw
51    # Set build path to V:
52    #
53    # Rev 1.1 01 Aug 1997 10:33:12 tedw
54    # Continued development
55    #
56    ###############################################################################
57




                     Changes to this Document May be Viewed on the ECO Releasing it
                                 7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                 Intuitive Surgical, Inc.–Confidential                Page 75 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




58
59 ###############################################################################
60 #
61 # Define macros that are used by the included makefile
62 #
63
64 PROJECT = iod
65 MICRO_SPECIFIC = iod\iod_u\src
66 MAIN_TARGET = main_iod.hex
67
68
69 # This path may be changed as needed for each makefile
70 # While it would be nice to have this path located automatically
71 # we are willing to sacrifice a little bit of flexibility here
72 %If %Defined(GEN_MNET_MAK)
73 .Include $(GEN_MNET_MAK)\gen_mnet.mak
74 %Else
75 .Include v:\sys\shared\src\gen_mnet.mak
76 %Endif
77
78
79 ###############################################################################
80 #
81 # Flags
82 #
83
84 # assemble options: Intel emulator DB (DEBUG),
85 #              inhibit A51 from implicitly defining labels
86 #              for special function registers (NOMO) we
87 #              are including files in which these are
88 #              predefined.
89 #              include CPU definition file (for 87C520)
90
91 A51FLAGS = DB NOMO
92
93 # compile options: large model LA (LARGE),
94 #             Intel emulator DB (DEBUG),
95 #             disable absolute register addressing (NOAREGS)
96 #             absolute register addressing was conflicting
97 #             with the RTX kernal
98
99 CFLAGS = LA OE DB NOAREGS DF (TINY_KERNAL)
100
101 # RTX51TNY:                Link the RTX Tiny library
102 # RS(256):             Use 256 bytes of internal data
103 # IDATA (?STACK (80H)): Force the stack segment to 80H in IDATA
104 # OL ... :          Tell the overaly processor that marchxram is not called by test_ram
105 #                 so we do not get a warning about multiple calls.
106 #                 The startup CPLD stuff needs to be ignored.
107 #
108 # Note: RTX51TINY makes a call to an external function from the module conf_tny.a51 when it determines
109 #     that a stack overrun has occured. It does not use the correct conventions for C functions, so
110 #     you get a warning about the STACK_ERROR_HANDLER C function being ignored for the overlay
process.
111 #     To get rid of this warning, a C callable function is made in conf_tny.a51 so we can make it a root to
112 #     to the overlay processor. Then, it thinks that STACK_ERROR_HANDLER is being called. It is
handled
113 #     separately from the rest of the overlay processing.
114
115 LINKFLAGS = RTX51TINY RS(256) IDATA (?STACK (80H)) \


                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 76 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




116          OL (?PR?_ISCNETNODESPECIFICHANDLING?IOD_ISC ~
?PR?NSPCODE?SOFTWARE_RESET, \
117             ?PR?LOAD_REVISION_INFORMATION?POST                  ~
?PR?_OPERATE_ON_A_BIT_STREAM?IOD_CPLD, \
118             ?PR?INIT_SYSTEM_INFO?MAIN_IOD                  ~
?PR?_OPERATE_ON_A_CPLD_REGISTER?IOD_CPLD,\
119             ?PR?LOAD_REVISION_INFORMATION?POST
~?PR?_OPERATE_ON_A_CPLD_REGISTER?IOD_CPLD, \
120             ?PR?LOAD_REVISION_INFORMATION?POST                  ~
?PR?_SET_BIT_STREAM_MODE?IOD_CPLD, \
121             ?PR?LOAD_REVISION_INFORMATION?POST                  ~
?PR?_ISCNET_STATUS_CHANGE?IOD_ISC, \
122             ?PR?STACK_ERROR_HANDLER?POST                     ~ ?PR?_ERROR_HANDLER?ERR_HDLR, \
123             * ! ?PR?SE_HANDLER?C_STACK_ERROR_HAN)
124
125
126 LINTDEFINES = -dTINY_KERNAL
127
128 #
129 ###############################################################################
130 #
131 # File Lists
132 #
133
134 # Source file list specified so it can be utilized by SCANDEPS also
135 SRCS = main_iod.c \
136         conf_tny.a51 \
137         isc_slv.a51 \
138         ui_slv.a51 \
139         crc16tbl.c \
140         crc16fcn.c \
141         err_hdlr.c \
142         iod_isc.c \
143         isc_comt.c \
144         ui_comt.c \
145         rsrctest.c \
146         post.c        \
147         iod_info.c \
148         iod_ui.c \
149         iod_cpld.c \
150         adc_2543.c \
151         adc_hdlr.c \
152         rd_dals.c \
153         hlth_mon.c \
154         startup.a51
155
156 # Build list of OBJ files from SRC and SRCLIST files
157 OBJS = $[Filename,,$(SRCS),obj]
158
159 # Files in this list include in-line assembly, and must be
160 # compiled to a .a51 source file and then assembled.
161 # This file list is in addition to the SRCS above
162 SRCLIST = rd_dals.c
163
164
165 ###############################################################################
166 #
167 # Main Target
168 #
169
170 main_iod.hex:         $(OBJS) $(MKF)

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                    Intuitive Surgical, Inc.–Confidential               Page 77 of 118
   Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




171
172
173 ###############################################################################
174 #
175 # Dependencies
176 #
177
178 # main must depend on .a51 .obj files. If only a .a51 file is assembled, and it is not compiled,
179 # RTX51 Lib will not link in properly.
180
181 #UPDATE#
182 main_iod.obj: sfrusage.h sfrdef.h general.h vartypes.h config.h \
183        sys_defs.h isc_mip.h crc16.h isc_slv.h ui_slv.h err_hdlr.h \
184        err_code.h err_defs.h post.h rsrctest.h iod_isc.h iod_cpld.h \
185        adc_hdlr.h adc_2543.h rd_dals.h hlth_mon.h
186 crc16tbl.obj: general.h vartypes.h crc16.h
187 crc16fcn.obj: vartypes.h crc16.h general.h
188 err_hdlr.obj: sfrusage.h sfrdef.h vartypes.h general.h err_hdlr.h \
189        err_code.h isc_mip.h sys_defs.h err_defs.h isc_slv.h \
190        startup.h
191 iod_isc.obj: general.h vartypes.h config.h sfrusage.h sfrdef.h \
192        sys_defs.h mip.h isc_mip.h err_hdlr.h err_code.h err_defs.h \
193        crc16.h isc_slv.h ui_slv.h iod_isc.h startup.h post.h \
194        iod_cpld.h
195 isc_comt.obj: config.h sfrusage.h sfrdef.h sys_defs.h vartypes.h \
196        general.h isc_slv.h
197 ui_comt.obj: sfrusage.h sfrdef.h config.h sys_defs.h vartypes.h \
198        general.h ui_slv.h
199 rsrctest.obj: post.h vartypes.h config.h sfrusage.h sfrdef.h \
200        sys_defs.h general.h rsrctest.h
201 post.obj: rtx51tny.h config.h sfrusage.h sfrdef.h sys_defs.h \
202        vartypes.h general.h rsrctest.h err_hdlr.h err_code.h \
203        isc_mip.h err_defs.h isc_slv.h iod_cpld.h rd_dals.h iod_isc.h
204 iod_info.obj: config.h sfrusage.h sfrdef.h sys_defs.h vartypes.h \
205        general.h
206 iod_ui.obj: general.h vartypes.h config.h sfrusage.h sfrdef.h \
207        sys_defs.h mip.h isc_mip.h ui_mip.h nspfns.h nsptypes.h \
208        err_defs.h crc16.h isc_slv.h ui_slv.h iod_cpld.h hlth_mon.h
209 iod_cpld.obj: config.h sfrusage.h sfrdef.h sys_defs.h vartypes.h \
210        general.h iod_cpld.h
211 adc_2543.obj: vartypes.h config.h sfrusage.h sfrdef.h sys_defs.h \
212        general.h adc_2543.h
213 adc_hdlr.obj: config.h sfrusage.h sfrdef.h sys_defs.h vartypes.h \214           general.h adc_2543.h
adc_hdlr.h iod_cpld.h

215   rd_dals.obj: sfrusage.h sfrdef.h vartypes.h config.h sys_defs.h \
216        general.h rd_dals.h crc16.h
217   hlth_mon.obj: config.h sfrusage.h sfrdef.h sys_defs.h vartypes.h \
218        general.h adc_hdlr.h iod_isc.h iod_cpld.h
219   rd_dals.obj: sfrusage.h sfrdef.h vartypes.h config.h sys_defs.h \
220        general.h rd_dals.h crc16.h
221   #ENDUPDATE#
222
223   # Do not need the .a51 files here, just the include files
224   # Also, add all .inc files
225   startup.obj: reg520.inc mem_cfg.inc
226   isc_slv.obj: reg520.inc NODE_CFG.INC
227   ui_slv.obj: reg520.inc NODE_CFG.INC
228   conf_tny.obj: REG520.INC
229
230   ################################################################################

                   Changes to this Document May be Viewed on the ECO Releasing it
                               7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 78 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




9. Appendix B: DSPNet Makefile Sample


  1 ###############################################################################
  2#
  3#      Makefile for Building CTP code
  4#
  5 ###############################################################################
  6
  7 .Memswap
  8 .PermitComments
  9
 10
 11 ###############################################################################
 12 #
 13 # Environment Vars
 14 #
 15
 16 DSP_SUBDIR = ctp
 17 PROJECT = ctp
 18 MICRO_BASE = scp\dsp\ctp\app
 19 MICRO_SPECIFIC = $(MICRO_BASE)\src
 20 MAIN_TARGET = $(PROJECT).txt
 21 MAIN_TARGET_DXE = $(PROJECT).dxe
 22 OBJEXTENSION = doj
 23
 24 ###############################################################################
 25 #
 26 # This path is specified by an environment variable or the default working driv
    e
 27 #
 28 %If %Defined(GEN_SHARC_MAK)
 29 .Include $(GEN_SHARC_MAK)\gen_sharc.mak
 30 %Else
 31 .Include v:\sys\shared\src\gen_sharc.mak
 32 %Endif
 33
 34
 35
 36 ###############################################################################
 37 #
 38 # Flags and Library specifications
 39 #
 40
 41 ASMOPTS += -21062 -g
 42
 43 # We shall assume no optimations for now, but correct this later (see OPT1 and
    OPT2 below)
 44 CCOPTS += -reserve ustat2,i0,i8 -21062
 45
 46 # Note that definitions are separate from compiler options so that Lint can use
     them too
 47 DEFS += -D_SHARC_PROCESSOR_ -D_KERNEL_TEST_MODE -DENABLE_MD_ERROR_TRACE
 48
 49 LIBS = lib060.dlb      \
 50       libio32.dlb \
 51       libc.dlb
 52
 53 LINKFLAGS = -21062 -L ..\obj -flags-link -warnonce
 54 LDR_FLAGS = -blink -fascii -t32768 -DADSP-21062 -p0x0

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 79 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




 55 DMP_FLAGS = -ix 3-10
 56
 57 LINTDEFINES = -zero
 58
 59
 60 ###############################################################################
 61 #
 62 # File Lists
 63 #
 64
 65 # Source file list specified so it can be utilized by SCANDEPS also
 66 # Keep boot_ce.s as the file first in list!!
 67 SRCS =                      \
 68       boot_ce_asm.s                \
 69       addr_arrays.c            \
 70       boot_ce.c            \
 71       bp_que.c             \
 72       ctp.c          \
 73       ctp_brake.c            \
 74       ctp_ce.c           \
 75       ctp_errlog.c         \
 76       ctp_flash.c         \
 77       ctp_frl.c       \
 78       ctp_irq1.c         \
 79       ctp_irq2.c         \
 80       ctp_irq2_asm.s             \
 81       ctp_msc.c             \
 82       ctp_msc_que.c                \
 83       ctp_startup.s          \
 84       ctp_trace.c          \
 85       ctp_util.c       \
 86       dsp_crc.c            \
 87       dsp_dual_port.c \
 88       dsp_msg_que.c                  \
 89       dsp_util.c        \
 90       dsp_util_asm.s             \
 91       dv_event.c            \
 92       dv_peek.c             \
 93       dv_poke.c             \
 94       flash_util.c      \
 95       flash_util_asm.s \
 96       mat_lib.c          \
 97       MdAccessFcns.c                  \
 98       MdBBLoaders.c                  \
 99       MdBBs.c               \
100        MdBBUtils.c              \
101        MdBlocks.c               \
102        MdBPs.c                \
103        MdEmbed.c                   \
104        MdFlashAccess.c \
105        MdInterMMComm.c \
106        MdMain.c               \
107        MdMathFcns.c                  \
108        MdReaders.c                 \
109        MdRoutines.c               \
110        MdSharedHelpers.c \
111        MdTrace.c               \
112        MdUtils.c           \
113        nrc_svd.c            \
114        nvsram.c              \
115        nvsram_asm.s                  \

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 80 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




116       ram_test.c           \
117       ram_test_asm.s          \
118       vec_lib.c
119
120
121 # This list simply specifies any source files that must be compiled with specif
  ic compiler options
122 # In this case, we want to distinguish those files with Optimizations vs. those
   without Optimizations
123 # If a .C file is in the following list, then enable optimizations
124 OPT1 = -O1
125 SRCS_WITH_OPT1 =                          \
126                 ctp_irq2.c
127
128 # If a .C file is NOT in the preceding list, then disable optimizations
129 # DO NOT USE -O0, it causes the compiler to generate bad assembly code!
130 OPT2 =
131 SRCS_WITH_OPT2 =
132
133 %ForEach FILE in $(SRCS)
134 %If !%Member($(FILE),$(SRCS_WITH_OPT1))
135       %Set SRCS_WITH_OPT2 += $(FILE)
136 %Endif
137 %EndFor
138
139
140 # Build list of DOJ files from SRC and SRCLIST files
141 OBJS = $[Filename,,$(SRCS),doj]
142
143 LDF_FILE = ctp.ldf
144
145 LINK_DOJ_FILE = $(ADI_TOOLS)\21k\lib\060_hdr.doj
146
147
148 ###############################################################################
149 #
150 # Main Target must be specified before the .Include for GEN_SHARC.MAK
151 #
152 $(MAIN_TARGET): $(MAIN_TARGET_DXE)
153 $(MAIN_TARGET_DXE) : $(OBJS) $(MKF) $(LINK_DOJ_FILE) $(LDF_FILE)
154
155 ############################################################################
156 #
157 # Dependencies
158 #
159
160 #UPDATE#
161 boot_ce_asm.doj: dsp_defs.h dsp_comm_defs.h ctp_mem_defs.h \
162       boot_ce_defs.h flash_mem_defs.h
163 addr_arrays.doj: vartypes.h addr_arrays.h dsp_servo_defs.h \
164       dsp_servo_data.h dsp_comm_defs.h ctp_mem_servo_defs.h \
165       ctp_mem_asa_defs.h
166 boot_ce.doj: vartypes.h boot_ce.h boot_ce_asm.h dsp_comm_defs.h \
167       ctp_util.h
168 bp_que.doj: vartypes.h dsp_defs.h ctp_msc.h ctp_msc_comm_data.h \
169       ctp_msc_comm_defs.h bp_que.h ctp_util.h ctp_mem_defs.h \
170       bp_que_data.h ManipDefs.h
171 ctp.doj: vartypes.h dsp_defs.h ctp_defs.h ctp.h dsp_comm_defs.h \
172       dsp_comm_data.h dsp_isr_macros.h ctp_startup.h ram_test.h \
173       ctp_util.h ctp_ce.h ctp_ce_que.h dsp_que_data.h \
174       dsp_que_defs.h ctp_msc.h ctp_msc_comm_data.h \

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 81 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




175      ctp_msc_comm_defs.h ctp_msc_que.h boot_ce.h ctp_irq1.h \
176      ctp_irq2.h flash_util.h flash_util_asm.h ctp_errlog.h \
177      ctp_error.h ctp_frl.h ctp_mem_frl_defs.h bp_que.h
178 ctp_brake.doj: vartypes.h dsp_defs.h ctp_defs.h ctp_util.h ctp.h \
179      ctp_brake.h ctp_msc_comm_data.h ctp_msc_comm_defs.h ctp_msc.h \
180      ctp_msc_que.h ctp_irq2.h ctp_mem_frl_defs.h \
181      ctp_mem_ctrl_defs.h ctp_errlog.h ctp_frl.h ctp_msc_macros.h
182 ctp_ce.doj: vartypes.h dsp_defs.h ctp_ce.h dsp_comm_data.h \
183      dsp_comm_defs.h ctp_ce_que.h dsp_que_data.h dsp_que_defs.h \
184      ctp_util.h dsp_util_asm.h ctp_mem_defs.h \
185      da_vinci_event_data.h da_vinci_event_defs.h dv_event.h \
186      MdShare.h dsp_dual_port.h dsp_servo_data.h dsp_servo_defs.h
187 ctp_errlog.doj: vartypes.h dsp_defs.h sys_ids.h ctp_util.h err_code.h \
188      ctp_msc.h ctp_msc_comm_data.h ctp_msc_comm_defs.h \
189      dv_log_data.h dv_log_defs.h
190 ctp_flash.doj: vartypes.h dsp_defs.h ctp_util.h flash_util.h \
191      dsp_isr_macros.h ctp_msc.h ctp_msc_comm_data.h \
192      ctp_msc_comm_defs.h ctp_msc_macros.h
193 ctp_frl.doj: vartypes.h dsp_defs.h sys_ids.h ctp_util.h ctp_frl.h \
194      dsp_comm_defs.h dsp_comm_data.h ctp_msc.h ctp_msc_comm_data.h \
195      ctp_msc_comm_defs.h ctp_msc_que.h ctp_mem_frl_defs.h \
196      MdErrors.h ctp_error.h MdTrace.h param_def.h ManipDefs.h \
197      kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
198      MdStruct.h Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
199      PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h \
200      kevent_defs.h eevent_defs.h
201 ctp_irq1.doj: vartypes.h dsp_defs.h dsp_isr_macros.h dsp_comm_defs.h \
202      ctp_irq1.h ctp_util.h ctp_ce.h dsp_comm_data.h ctp_msc.h \
203      ctp_msc_comm_data.h ctp_msc_comm_defs.h ctp_mem_defs.h \
204      ctp_mem_irq_defs.h ctp_mem_frl_defs.h
205 ctp_irq2.doj: vartypes.h dsp_defs.h ctp_defs.h ctp.h ctp_irq2.h \
206      ctp_msc_comm_defs.h ctp_msc_comm_data.h dsp_util.h \
207      dsp_util_asm.h ctp_util.h dsp_isr_macros.h ctp_ce.h \
208      dsp_comm_data.h dsp_comm_defs.h dsp_servo_data.h \
209      dsp_servo_defs.h ctp_mem_ctrl_defs.h ctp_mem_irq_defs.h \
210      ctp_mem_servo_defs.h ctp_mem_asa_defs.h ctp_msc.h \
211      addr_arrays.h ctp_errlog.h ctp_error.h ctp_brake.h ctp_frl.h \
212      dsp_dual_port.h dsp_que_data.h dsp_que_defs.h \
213      da_vinci_event_data.h da_vinci_event_defs.h
214 ctp_irq2_asm.doj: dsp_defs.h ctp_mem_defs.h ctp_mem_servo_defs.h \
215      ctp_mem_asa_defs.h dsp_comm_defs.h dsp_servo_defs.h
216 ctp_msc.doj: vartypes.h dsp_defs.h sys_ids.h ctp.h ctp_irq2.h \
217      ctp_msc_comm_defs.h ctp_msc_comm_data.h ctp_util.h ram_test.h \
218      ctp_ce.h dsp_comm_data.h dsp_comm_defs.h ctp_ce_que.h \
219      dsp_que_data.h dsp_que_defs.h ctp_msc.h ctp_msc_que.h \
220      dv_event.h da_vinci_event_defs.h da_vinci_event_data.h \
221      ctp_mem_defs.h ctp_mem_ctrl_defs.h dv_pptr_data.h \
222      dv_pptr_defs.h dv_poke.h dv_peek.h dv_log_data.h \
223      dv_log_defs.h ctp_error.h ctp_errlog.h ctp_flash.h \
224      ctp_brake.h ctp_trace.h ctp_msc_macros.h ctp_frl.h sysdata.h \
225      ManipDefs.h bp_que.h MdEmbed.h param_def.h \
226      kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
227      MdStruct.h Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
228      PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h \
229      MdErrors.h MdTrace.h kevent_defs.h eevent_defs.h MdBPs.h \
230      MdTimer.h MdSharedHelpers.h MdAccessFcns.h krnlintf.h \
231      KernKeys.h bp_que_data.h
232 ctp_msc_que.doj: vartypes.h dsp_defs.h ctp_msc.h ctp_msc_comm_data.h \
233      ctp_msc_comm_defs.h ctp_msc_que.h ctp_util.h ctp_mem_defs.h \
234      ctp_msc_que_data.h
235 ctp_startup.doj: dsp_defs.h ctp_mem_defs.h ctp_mem_ctrl_defs.h \

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 82 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




236      flash_mem_defs.h
237 ctp_trace.doj: vartypes.h dsp_defs.h dsp_comm_defs.h dsp_comm_data.h \
238      ctp_msc_comm_defs.h ctp_msc_comm_data.h dv_pptr_defs.h \
239      dv_pptr_data.h ctp_msc_macros.h
240 ctp_util.doj: vartypes.h ctp_util.h ctp_defs.h ctp_mem_ctrl_defs.h
241 dsp_crc.doj: vartypes.h dsp_crc.h
242 dsp_dual_port.doj: vartypes.h dsp_defs.h dsp_que_defs.h dsp_que_data.h \
243      dsp_comm_data.h dsp_comm_defs.h dsp_dual_port.h \
244      dsp_servo_data.h dsp_servo_defs.h da_vinci_event_data.h \
245      da_vinci_event_defs.h
246 dsp_msg_que.doj: vartypes.h dsp_defs.h dsp_que_defs.h dsp_que_data.h \
247      dsp_comm_data.h dsp_comm_defs.h dsp_dual_port.h \
248      dsp_servo_data.h dsp_servo_defs.h da_vinci_event_data.h \
249      da_vinci_event_defs.h
250 dsp_util.doj: dsp_util.h
251 dv_event.doj: dsp_defs.h vartypes.h ctp_util.h dv_event.h \
252      da_vinci_event_defs.h da_vinci_event_data.h
253 dv_peek.doj: dsp_defs.h dv_peek.h ctp_ce.h dsp_comm_data.h vartypes.h \
254      dsp_comm_defs.h ctp_ce_que.h dsp_que_data.h dsp_que_defs.h \
255      dv_pptr_data.h dv_pptr_defs.h ManipDefs.h ctp_util.h
256 dv_poke.doj: dsp_defs.h dv_poke.h ctp_ce.h dsp_comm_data.h vartypes.h \
257      dsp_comm_defs.h ctp_ce_que.h dsp_que_data.h dsp_que_defs.h \
258      dv_pptr_data.h dv_pptr_defs.h ManipDefs.h ctp_util.h
259 flash_util.doj: vartypes.h dsp_defs.h ctp_util.h flash_util.h \
260      flash_util_asm.h ctp_mem_defs.h ctp_mem_ctrl_defs.h \
261      flash_mem_defs.h flash_util_defs.h
262 flash_util_asm.doj: dsp_defs.h ctp_mem_defs.h flash_mem_defs.h
263 mat_lib.doj: MathLib.h VarTypes.h vec_lib.h mat_lib.h
264 MdAccessFcns.doj: VarTypes.h param_def.h ManipDefs.h \
265      kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
266      MdStruct.h Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
267      PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h \
268      MdAccessFcns.h MdErrors.h ctp_error.h MdTrace.h kevent_defs.h \
269      eevent_defs.h MdSharedHelpers.h
270 MdBBLoaders.doj: VarTypes.h param_def.h ManipDefs.h \
271      kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
272      MdStruct.h Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
273      PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h \
274      MdErrors.h ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h \
275      MdUtils.h KernKeys.h MdBBLoaders.h MdBBUtils.h \
276      MdSharedHelpers.h MdMathFcns.h MathLib.h vec_lib.h mat_lib.h \
277      MdAccessFcns.h MdReaders.h MdBlocks.h krnlintf.h \
278      MdInterMMComm.h nrc_svd.h
279 MdBBs.doj: VarTypes.h param_def.h ManipDefs.h kernel_shared_defs.h \
280      mtm_defs.h psm_defs.h ecm_defs.h MdStruct.h Cfg_Param.h \
281      PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h \
282      EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h MdErrors.h \
283      ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h MdBlocks.h \
284      MdBBs.h MdUtils.h KernKeys.h MdSharedHelpers.h MdBBLoaders.h \
285      MdBBUtils.h MdAccessFcns.h krnlintf.h MathLib.h vec_lib.h \
286      mat_lib.h
287 MdBBUtils.doj: VarTypes.h param_def.h ManipDefs.h kernel_shared_defs.h \
288      mtm_defs.h psm_defs.h ecm_defs.h MdStruct.h Cfg_Param.h \
289      PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h \
290      EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h MdErrors.h \
291      ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h MdBBUtils.h \
292      MathLib.h vec_lib.h mat_lib.h MdUtils.h KernKeys.h \
293      MdSharedHelpers.h MdAccessFcns.h krnlintf.h nrc_svd.h \
294      MdMathFcns.h MdBBs.h MdInterMMComm.h
295 MdBlocks.doj: VarTypes.h param_def.h ManipDefs.h kernel_shared_defs.h \
296      mtm_defs.h psm_defs.h ecm_defs.h MdStruct.h Cfg_Param.h \

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 83 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




297     PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h \
298     EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h MdErrors.h \
299     ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h MdBlocks.h \
300     MdInterMMComm.h MdSharedHelpers.h MdAccessFcns.h MdBBUtils.h \
301     MdMathFcns.h MathLib.h vec_lib.h mat_lib.h MdReaders.h \
302     MdBBs.h MdUtils.h KernKeys.h krnlintf.h ToolDefs.h \
303     UtilMacros.h MdEmbed.h MdBPs.h MdTimer.h ctp_msc.h \
304     ctp_msc_comm_data.h ctp_msc_comm_defs.h dv_poke.h dv_peek.h \
305     bp_que_data.h dsp_defs.h ctp_msc_macros.h ctp_util.h
306 MdBPs.doj: VarTypes.h param_def.h ManipDefs.h kernel_shared_defs.h \
307     mtm_defs.h psm_defs.h ecm_defs.h MdStruct.h Cfg_Param.h \
308     PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h \
309     EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h MdErrors.h \
310     ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h MdBPs.h \
311     MdBlocks.h MdBBs.h MdUtils.h KernKeys.h MdSharedHelpers.h \
312     MdAccessFcns.h MdBBLoaders.h MdBBUtils.h MdReaders.h \
313     MdMathFcns.h MathLib.h vec_lib.h mat_lib.h MdInterMMComm.h \
314     MdRoutines.h krnlintf.h MdEmbed.h MdTimer.h ctp_msc.h \
315     ctp_msc_comm_data.h ctp_msc_comm_defs.h dv_poke.h dv_peek.h \
316     bp_que_data.h dsp_defs.h ctp_msc_macros.h ctp_util.h
317 MdEmbed.doj: vartypes.h param_def.h ManipDefs.h kernel_shared_defs.h \
318     mtm_defs.h psm_defs.h ecm_defs.h MdStruct.h Cfg_Param.h \
319     PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h \
320     EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h MdErrors.h \
321     ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h MdBPs.h \
322     MdTimer.h MdSharedHelpers.h MdAccessFcns.h ctp_msc.h \
323     ctp_msc_comm_data.h ctp_msc_comm_defs.h krnlintf.h KernKeys.h \
324     dv_poke.h dv_peek.h MdEmbed.h bp_que_data.h dsp_defs.h \
325     ctp_msc_macros.h ctp_util.h dsp_crc.h sysdata.h ToolDefs.h \
326     MathLib.h vec_lib.h mat_lib.h
327 MdFlashAccess.doj: VarTypes.h param_def.h ManipDefs.h \
328     kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
329     Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
330     PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdStruct.h MdDefs.h \
331     MdShare.h MdErrors.h ctp_error.h MdTrace.h kevent_defs.h \
332     eevent_defs.h MdFlashAccess.h
333 MdInterMMComm.doj: VarTypes.h param_def.h ManipDefs.h \
334     kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
335     MdStruct.h Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
336     PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h \
337     MdErrors.h ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h \
338     MdInterMMComm.h MdSharedHelpers.h MdAccessFcns.h MdBBUtils.h \
339     MdMathFcns.h MathLib.h vec_lib.h mat_lib.h krnlintf.h \
340     KernKeys.h MdBlocks.h MdUtils.h
341 MdMain.doj: VarTypes.h param_def.h ManipDefs.h kernel_shared_defs.h \
342     mtm_defs.h psm_defs.h ecm_defs.h MdStruct.h Cfg_Param.h \
343     PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h \
344     EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h MdErrors.h \
345     ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h MdBPs.h \
346     MdTimer.h MdSharedHelpers.h MdAccessFcns.h MdBBs.h MdBlocks.h \
347     MdRoutines.h krnlintf.h KernKeys.h MdEmbed.h ctp_msc.h \
348     ctp_msc_comm_data.h ctp_msc_comm_defs.h dv_poke.h dv_peek.h \
349     bp_que_data.h dsp_defs.h ctp_msc_macros.h ctp_util.h
350 MdMathFcns.doj: VarTypes.h MdDefs.h param_def.h ManipDefs.h \
351     kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
352     MdErrors.h ctp_error.h MdTrace.h MdStruct.h Cfg_Param.h \
353     PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h \
354     EcmCamCfgDefs.h BPDefs.h MdShare.h kevent_defs.h \
355     eevent_defs.h MathLib.h vec_lib.h mat_lib.h MdMathFcns.h \
356     MdBlocks.h MdAccessFcns.h MdSharedHelpers.h
357 MdReaders.doj: VarTypes.h param_def.h ManipDefs.h kernel_shared_defs.h \

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 84 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




358      mtm_defs.h psm_defs.h ecm_defs.h MdDefs.h MdStruct.h \
359      Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
360      PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdShare.h MathLib.h \
361      vec_lib.h mat_lib.h MdErrors.h ctp_error.h MdTrace.h \
362      kevent_defs.h eevent_defs.h MdReaders.h MdUtils.h KernKeys.h \
363      krnlintf.h MdMathFcns.h MdSharedHelpers.h
364 MdRoutines.doj: VarTypes.h param_def.h ManipDefs.h \
365      kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
366      MdStruct.h Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
367      PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h \
368      MdErrors.h ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h \
369      MdRoutines.h MdInterMMComm.h MdMathFcns.h MathLib.h vec_lib.h \
370      mat_lib.h MdSharedHelpers.h MdAccessFcns.h MdReaders.h \
371      MdBlocks.h MdBBs.h MdBBLoaders.h MdUtils.h KernKeys.h \
372      krnlintf.h ToolDefs.h MdFlashAccess.h MdEmbed.h MdBPs.h \
373      MdTimer.h ctp_msc.h ctp_msc_comm_data.h ctp_msc_comm_defs.h \
374      dv_poke.h dv_peek.h bp_que_data.h dsp_defs.h ctp_msc_macros.h \
375      ctp_util.h
376 MdSharedHelpers.doj: VarTypes.h param_def.h ManipDefs.h \
377      kernel_shared_defs.h mtm_defs.h psm_defs.h ecm_defs.h \
378      MdDefs.h MdStruct.h Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h \
379      EcmCfgDefs.h PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h \
380      MdShare.h MdSharedHelpers.h MathLib.h vec_lib.h mat_lib.h \
381      MdErrors.h ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h
382 MdTrace.doj: VarTypes.h param_def.h ManipDefs.h kernel_shared_defs.h \
383      mtm_defs.h psm_defs.h ecm_defs.h MdStruct.h Cfg_Param.h \
384      PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h \
385      EcmCamCfgDefs.h BPDefs.h MdDefs.h MdShare.h MdErrors.h \
386      ctp_error.h MdTrace.h kevent_defs.h eevent_defs.h \
387      UtilMacros.h MathLib.h vec_lib.h mat_lib.h
388 MdUtils.doj: VarTypes.h MathLib.h vec_lib.h mat_lib.h MdDefs.h \
389      param_def.h ManipDefs.h kernel_shared_defs.h mtm_defs.h \
390      psm_defs.h ecm_defs.h MdUtils.h KernKeys.h MdErrors.h \
391      ctp_error.h MdTrace.h MdStruct.h Cfg_Param.h PsmCfgDefs.h \
392      MtmCfgDefs.h EcmCfgDefs.h PsmToolCfgDefs.h EcmCamCfgDefs.h \
393      BPDefs.h MdShare.h kevent_defs.h eevent_defs.h krnlintf.h
394 nrc_svd.doj: MathLib.h VarTypes.h vec_lib.h mat_lib.h MdDefs.h \
395      param_def.h ManipDefs.h kernel_shared_defs.h mtm_defs.h \
396      psm_defs.h ecm_defs.h ctp_error.h MdErrors.h MdTrace.h \
397      MdStruct.h Cfg_Param.h PsmCfgDefs.h MtmCfgDefs.h EcmCfgDefs.h \
398      PsmToolCfgDefs.h EcmCamCfgDefs.h BPDefs.h MdShare.h \
399      kevent_defs.h eevent_defs.h nrc_svd.h
400 nvsram.doj: vartypes.h dsp_defs.h nvsram.h nvsram_asm.h ctp_util.h \
401      ctp_mem_defs.h
402 nvsram_asm.doj: dsp_defs.h ctp_mem_defs.h
403 ram_test.doj: vartypes.h ram_test.h ram_test_asm.h ctp_mem_defs.h
404 ram_test_asm.doj: dsp_defs.h ctp_mem_defs.h flash_mem_defs.h
405 vec_lib.doj: MathLib.h VarTypes.h vec_lib.h mat_lib.h
406 #ENDUPDATE#
407




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 85 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




10. Appendix C: DAFD Makefile Sample


  1    #####################################################################
  2    #
  3    #    Makefile for Building DAFD code
  4    #
  5    #####################################################################
  6    #
  7    # PVCS Log
  8    #
  9    # $Log: W:\logs\da_Vinci\sys\msd\dsp\dafd\src\dafd.mvk $
  10   #
  11   # Rev 1.2 15 Jun 1998 15:34:28 nealo
  12   # Changed reference to GEN_DSP_MAK to GEN_DAFD_MAK
  13   #
  14   # Rev 1.1 15 Jun 1998 15:18:04 nealo
  15   # Removed extraneous definition for GEN_DAFD_MAK
  16   #
  17   # Rev 1.0 12 Jun 1998 14:42:12 nealo
  18   # Initial checkin of new, standard makefile
  19   #
  20   #####################################################################
  21
  22   #####################################################################
  23   #
  24   # Environment Vars
  25   #
  26
  27   PROJECT = dafd
  28   MICRO_BASE = msd\dsp\dafd
  29   MICRO_SPECIFIC = msd\dsp\dafd\src
  30
  31   SKIP_LINT_27183_DO_NOT_USE = 1
  32
  33   DEFS =
  34
  35   MAIN_TARGET = dafd.s3
  36
  37
  38   #####################################################################
  39   #
  40   # This path is specified by an environment variable or the default wo
  41   #
  42   %If %Defined(GEN_DAFD_MAK)
  43   .Include $(GEN_DAFD_MAK)\gen_dafd.mak
  44   %Else
  45   .Include v:\sys\shared\src\gen_dafd.mak
  46   %Endif
  47
  48
  49   #####################################################################
  50   #
  51   # Flags
  52   #
  53
  54   LDROPTS = -g -x
  55   ASMOPTS = -c -2181
  56   CCOPTS =
  57

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                  Intuitive Surgical, Inc.–Confidential              Page 86 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




  58    LINTDEFINES = -zero
  59
  60
  61    #####################################################################
  62    #
  63    # File Lists
  64    #
  65
  66    # Source file list specified so it can be utilized by SCANDEPS also
  67    SRCS =                \
  68        main.dsp         \
  69        dafdutil.dsp \
  70        intvecs.dsp \
  71        vardefs.dsp \
  72        isr.dsp        \
  73        tempcalc.dsp \
  74        pwrcalc.dsp \
  75        comm.dsp            \
  76        cmdresp.dsp
  77
  78    # Add the "-g" option to any file not referenced in OPT2
  79    OPT3 = -g
  80
  81    # Build list of OBJ files from SRC and SRCLIST files
  82    OBJS = $[Filename,,$(SRCS),obj]
  83
  84    # Pick the proper architecture file
  85    ACHFILE = ..\exe\dafd.ach
  86
  87    XFILES = -nomem -runhdr $(LIBS)
  88
  89
  90    #####################################################################
  91    #
  92    # Main Target
  93    #
  94    $(MAIN_TARGET): $(OBJS) $(MKF) $(ACHFILE)
  95
  96
  97    #####################################################################
  98    #
  99    # Dependencies
  100   #
  101
  102   dafd.ach:     dafd.sys $(MKF)
  103
  104   #UPDATE#
  105   main.obj:     portdefs.h vardefs.h dafdutil.h $(MKF)
  106   intvecs.obj: $(MKF)
  107   vardefs.obj: consts.h vardefs.h $(MKF)
  108   isr.obj:    portdefs.h vardefs.h dafdutil.h $(MKF)
  109   tempcalc.obj: portdefs.h vardefs.h dafdutil.h $(MKF)
  110   pwrcalc.obj: portdefs.h vardefs.h $(MKF)
  111   comm.obj:      portdefs.h vardefs.h $(MKF)
  112   cmdresp.obj: portdefs.h vardefs.h dafdutil.h $(MKF)
  113   dafdutil.obj: portdefs.h vardefs.h dafdutil.h $(MKF)
  114   #ENDUPDATE#




                    Changes to this Document May be Viewed on the ECO Releasing it
                                7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                      Intuitive Surgical, Inc.–Confidential             Page 87 of 118
     Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




11. Appendix D: Laptop Makefile Sample


1     ###############################################################################
2     #
3     #    Makefile for Building Mex interface files for CfgLoader.DLL
4     #
5     ###############################################################################
6
7
8     ###############################################################################
9     #
10    # Environment Vars
11    #
12
13     PROJECT = MexVsdDll
14     MKF = $(PROJECT).mak
15     EXE_DLL_VXD_ROOT = Laptop\mex\VsdDLL
16     SHARED_SOURCE = Laptop\isa\shared\src
17     ADDL_LIB_PATH = Laptop\isa\vsddll\exe
18     MEX = YES
19
20
21
22     ###############################################################################
23     #
24     # Flags and Library specifications
25     #
26
27     CFLAGS = /nologo /W3 /G5 /Zp8 /O2 /D"MATLAB_PROC" /D "MATLAB_MEX_FILE"
28     LIBFLAGS = /nologo /machine:ix86
29     LFLAGS = /nologo /dll
30
31     LINTDEFINES = -zero -DMATLAB_PROC -DMATLAB_MEX_FILE
32
33
34     # Add debug options to Compiler/Lint/Linker Flags if needed
35     %If %Defined(DEBUG)
36     CFLAGS += /D "_DEBUG"
37     LINTDEFINES += -D_DEBUG
38     LFLAGS += /debug
39     %Endif
40
41
42     ###############################################################################
43     #
44     # File Lists
45     #
46
47     # Source file list specified so it can be utilized by SCANDEPS also
48     SRCS =                     \
49           ActivateCamera.cpp \
50           DisplayTarget.cpp \
51           GetConst.cpp             \
52           LdUIMCDr.cpp                \
53           ReadRia.cpp             \
54           RemoveTarget.cpp \
55           SetSJBrakeSwitch.cpp \
56           VideoInfo.cpp          \
57           VidFilt3Field.cpp \
58           VidFiltMesh.cpp           \
59           VidNormal.cpp             \
60           VidReverse.cpp
61
62     LIBS = VsdDll.lib nafxcw.lib libcmt.lib

                      Changes to this Document May be Viewed on the ECO Releasing it
                                  7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                    Intuitive Surgical, Inc.–Confidential               Page 88 of 118
     Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




63     NODEFAULTLIBS = msvcrt.lib
64
65     LIB_TARGET = $(PROJECT).lib66       RES_TARGET = Mexversion.res

67
68     # Build list of OBJ and SBR files from SRC and SRCLIST files
69     OBJS = $[Filename,,$(SRCS),obj]
70     DLLS = $[Filename,,$(SRCS),dll]
71     MAIN_TARGET = All_The_DLLs_must_be_built.
72
73     ###############################################################################
74     #
75     # Main Target must be specified before the .Include for GEN_LAP.MAK
76     #
77     All_The_DLLs_must_be_built : $(DLLS)
78     .KeepIntermediate: $(DLLS)
79
80     %Foreach targetName in $(DLLS)
81     $(targetName) : $[Base,$(targetName)].obj $(MKF) $(LIB_TARGET) $(RES_TARGET) $(MKF)
82     %Endfor
83
84     $(RES_TARGET): mexversion.rc
85     $(LIB_TARGET): matlab.def
86
87     ###############################################################################
88     #
89     # This path is specified by an environment variable or the default working drive
90     #
91     %If %Defined(GEN_LAP_MAK)
92     .Include $(GEN_LAP_MAK)\gen_Laptop.mak
93     %Else
94     .Include v:\sys\shared\src\gen_Laptop.mak
95     %Endif
96
97
98     #############################################################################
99     #
100    # Dependencies
101    #
102
103    #UPDATE#
104    ActivateCamera.obj: Interface.h
105    DisplayTarget.obj: Interface.h
106    LdUIMCDr.obj: interface.h
107    ReadRia.obj: interface.h
108    RemoveTarget.obj: Interface.h
109    SetSJBrakeSwitch.obj: Interface.h Arm_Defs.h
110    VideoInfo.obj: vartypes.h video.h Interface.h
111    VidFilt3Field.obj: Interface.h
112    VidFiltMesh.obj: Interface.h
113    VidNormal.obj: Interface.h
114    VidReverse.obj: Interface.h
115    #ENDUPDATE#




                     Changes to this Document May be Viewed on the ECO Releasing it
                                 7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 89 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




12. Appendix E: Release Build Makefile
   1 ###############################################################################
  2#
  3#       Makefile for Building Release version of Da-Vinci software
  4#
  5#
  6 ###############################################################################
  7#
  8 # PVCS Log
  9#
 10 # $Log: W:\logs\da_Vinci\sys\davinci_a4.mav $
 11 #
 12 # Rev 1.27 12 Apr 2002 14:48:30 GregoryT
 13 # Mods for target destinations to help download app. All targets now in "Targ
    ets" dir. Version output file in targets directory, changes order of first two
     items, removes path from targets.
 14 #
 15 # Rev 1.26 11 Apr 2002 19:08:48 GregoryT
 16 # Added auto-generation of version number output file for download app.
 17 #
 18 # Rev 1.25 11 Apr 2002 16:07:14 GregoryT
 19 # Fixed target name for ctp app, should have been .txt, not .dxe
 20 #
 21 # Rev 1.24 11 Apr 2002 11:30:14 AdnanK
 22 # Adjusted del options to prevent echoing to logs
 23 #
 24 # Rev 1.23 11 Apr 2002 10:45:36 AdnanK
 25 # Corrected bug for location of DLL ini files.
 26 # Made all GEN_XXX_MAK items environment variables (now that they are set only
     locally in defines.mak
 27 # Disabled delete of directory tree for _OTHER_ARCHIVE_SUBDIRS. Now it simply
     deletes the files inside those folders. The delete was destroying kernel targ
    et directories when the next kernel node was being built due to sharing in the
    tree.
 28 #
 29 #
 30 # Rev 1.22 10 Apr 2002 16:45:56 AdnanK
 31 # Rearranged the order of directory creation to prevent accidental destruction
     of previously created directories. Works now for Kernel nodes, currently unte
    sted for laptop.
 32 #
 33 # Rev 1.21 10 Apr 2002 14:43:18 AdnanK
 34 # Fixed minor bug in copy of targets & also change case of target directories
    to be uppercase.
 35 #
 36 # Rev 1.20 10 Apr 2002 14:23:10 AdnanK
 37 # Added SetEnv for BUILD_ROOT & TARGET_ROOT and also echo their values to the
    screen.
 38 #
 39 # Rev 1.19 10 Apr 2002 13:42:48 GregoryT
 40 # Added support for additonal build/release numbers per build type and the ext
    ra checking that goes with it.
 41 #
 42 # Rev 1.18 09 Apr 2002 10:23:06 GregoryT
 43 # Inconsequential bug fix
 44 #
 45 # Rev 1.17 08 Apr 2002 14:26:46 GregoryT
 46 # Added support for ini file targets for all dll's and lib's
 47 #
 48 # Rev 1.16 08 Apr 2002 12:45:50 AdnanK
 49 # Made output laptop directory name lower case

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 90 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




 50 #
 51 # Rev 1.15 08 Apr 2002 12:44:02 AdnanK
 52 # Added support for multiple laptop targets.
 53 # Added support for multiple "release" folders and build ini names.
 54 #
 55 # Rev 1.14 05 Apr 2002 18:06:14 AdnanK
 56 # Removed unused shared/fsms folder references.
 57 # Added additional MexUsbDLL targets.
 58 # Added folders for CfgLoader tmpl & middleman includes.
 59 # Added Supervisor lib target (but did not test). All but mex stuff builds.
 60 #
 61 # Rev 1.13 05 Apr 2002 16:23:20 AdnanK
 62 # Added rcv archives to laptops and removed unused .xlv from mex.
 63 #
 64 # Rev 1.12 05 Apr 2002 14:38:42 AdnanK
 65 # Minor change to DSPNet loader target directory
 66 #
 67 # Rev 1.11 05 Apr 2002 14:37:26 AdnanK
 68 # Minor change to MDSP loader target directory
 69 #
 70 # Rev 1.10 05 Apr 2002 14:00:40 GregoryT
 71 # Added back in .mvk extension for DAFD only.
 72 # Changed TVD app target from main_tvd.hex to tvd_app.hex.
 73 #
 74 # Rev 1.9 05 Apr 2002 12:13:14 AdnanK
 75 # Modified target names for embedded mnet to match app/ldr split. Note: TVD i
   s still main_tvd.hex, needs to change with tvd.mak
 76 #
 77 # Rev 1.8 05 Apr 2002 10:23:58 GregoryT
 78 # Removed mvk from DSPNEt archive list - unneeded in A4.0 - all should be .mav
    now
 79 #
 80 # Rev 1.7 05 Apr 2002 10:19:30 GregoryT
 81 # Tightened DSPNet directory lists using Macros.
 82 # Changed format of SW build & release number to new format.
 83 #
 84 # Rev 1.6 04 Apr 2002 16:58:14 AdnanK
 85 # Cleanups from suggestions by CAA
 86 #
 87 # Rev 1.5 04 Apr 2002 14:56:14 AdnanK
 88 # Remove Mdsp loader get section of code, cleaned up some comments
 89 #
 90 # Rev 1.4 04 Apr 2002 13:42:10 AdnanK
 91 # Many changes by CAA/AK previous to 4/4/02 to get DSP and laptop to build.
 92 #
 93 # GKT: Added dxv extension to dsp list for CEs
 94 #          Added ldv for CTP path, scp\dsp\ctp\app
 95 #          Removed Monitor DSP Loader (non-existant)
 96 #          Added missing GEN_8051_MAK define
 97 #
 98 # Rev 1.3 14 Mar 2002 13:43:48 CraigA
 99 # Updates for Loader build
100 #
101 # Rev 1.2 14 Mar 2002 11:01:22 CraigA
102 # Updated for setting version labels and to provide samples for defines.mak
103 #
104 # Rev 1.1 13 Mar 2002 18:54:50 CraigA
105 # Updated for CVI laptop builds
106 # Corrected other minor errors
107 #
108 # Rev 1.0 19 Feb 2002 15:46:06 GregoryT
109 # Initial revision.
110 #

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 91 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




111 ###############################################################################
112
113 .PermitComments
114 .Memswap
115
116
117 ###############################################################################
118 #
119 # Environment Vars
120 #
121
122 MKF = DAVINCI_A4.MAK             # this file
123 DVMAK_VERSION = 1.1A # software version for tracking
124
125 VALID_BUILD_TYPES = EMBEDDED LOADER LAPTOP
126 ALL_SUBSYS_TYPES = MNET DSP MDSP MNET_LOADER DSP_LOADER MDSP_LOADER LAPTOP
127 # NOTE: MDSP_LOADER is not currently active!
128
129 %If %Exists(defines.mak)
130 .Include defines.mak
131 MKF += defines.mak
132 %Endif
133
134
135 %If %Defined(VERBOSE)
136 SILENT=
137 %Else
138 SILENT=(Silent)
139 %Endif
140
141 %If %Defined(OUTFILE)
142 DALL = -DirectAll $(OUTFILE)
143 %Endif
144
145 %If %Defined(DEBUG_MAKEFILE)
146 DBG_MKF_FLAGS = -Summary -View $(DEBUG_MAKEFILE)
147 %Endif
148
149 %If !%Defined(DEVELOP_ROOT)
150 DEVELOP_ROOT = V:\SYS
151 %Endif
152 %Echo DEVELOP_ROOT is $(DEVELOP_ROOT)
153
154 # if you are on drive C, use da_vinci in the path. If you are on a
155 # shared drive, just use the drive letter and start at \sys
156
157 %If !%Defined(BUILD_ROOT)
158 %If $[Drive,$(_Cwd)] == C
159 BUILD_ROOT = C:\DA_VINCI\SYS
160 %Else
161 BUILD_ROOT = $[Drive,$(_Cwd)]:\SYS
162 %Endif
163 %Endif
164 %Echo BUILD_ROOT is $(BUILD_ROOT)
165
166 %If !%Defined(LOGFILE_ROOT)
167 LOGFILE_ROOT = w:\logs\da_vinci\sys
168 %Endif
169
170 %If !%Defined(TARGET_ROOT)
171 TARGET_ROOT = u:\DevAndTest_A4
172 %Endif
173 %Echo TARGET_ROOT is $(TARGET_ROOT)

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 92 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




174
175 %If !%Defined(GETFLAGS)
176 GETFLAGS =-q -y
177 %Endif
178
179 PREV_VERSION_LABEL = None
180 GET = get
181
182 %Setenv DEVELOP_ROOT=$(DEVELOP_ROOT)
183 %Setenv BUILD_ROOT=$(BUILD_ROOT)
184 %Setenv TARGET_ROOT=$(TARGET_ROOT)
185 %Setenv BATCH_DIR=$(DEVELOP_ROOT)\tools\batch
186 %Setenv GETFLAGS=$(GETFLAGS)
187
188 # Certify utility built by CAA for adding CRCs to INI files
189 CERTIFY = $(DEVELOP_ROOT)\tools\utils\certify\exe\certify
190
191 # Certify utility built by CAA for adding CRCs to INI files
192 SETVER = $(DEVELOP_ROOT)\tools\utils\setver\exe\setver
193
194 %If "$[Clip,$(_System),1,11]" != "Windows NT/"
195 ATTRIB = $(DEVELOP_ROOT)\tools\windows\command\attrib
196 DELTREE = $(DEVELOP_ROOT)\tools\windows\command\deltree /y
197 %Else
198 ATTRIB = $(DEVELOP_ROOT)\tools\winnt\system32\attrib
199 DELTREE = $(DEVELOP_ROOT)\tools\winnt\batch\deltree
200 %Endif
201
202 # These macros are used by Set_Logfile_Versions explicit target
203 BATCH_DIR = $(DEVELOP_ROOT)\tools\batch
204 VCS_LOGFILE = $(BUILD_ROOT)\vcslog.txt
205 VCS=vcs
206 %If !%Defined(VCSFLAGS)
207 VCSFLAGS = -q -n
208 %Endif
209
210 # Set environment vars so macro values are retained in subordinate makefiles
211 %SetEnv BATCH_DIR=$(BATCH_DIR)
212 %SetEnv VCS_LOGFILE=$(VCS_LOGFILE)
213 %SetEnv VCS=$(VCS)
214 %SetEnv VCSFLAGS=$(VCSFLAGS)
215 %SetEnv SETVER=$(SETVER)
216
217 %If %Defined(RESTART)
218 Restart_Done = 0
219 %Else
220 Restart_Done = 1
221 %Endif
222
223 ###############################################################################
  #
224 #
225 # This defines the filename for the Revision file(s)
226 #
227
228 RELEASE_TARGET_DIRECTORY = $(TARGET_ROOT)\$(BUILD_TYPE)\Release
229
230 BUILD_REVISION_INI_TARGET_DIR = $(RELEASE_TARGET_DIRECTORY)
231 BUILD_REVISION_INI_FILE = $(BUILD_TYPE)_Build.INI
232
233
234 RELEASE_REVISION_INI_TARGET_DIR = $(RELEASE_TARGET_DIRECTORY)
235 RELEASE_REVISION_INI_FILE = $(BUILD_TYPE)_Rlse.INI

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 93 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




236
237 STANDARD_TARGET_DIRECTORY = $(TARGET_ROOT)\$(BUILD_TYPE)\Targets
238
239 ###############################################################################
  #
240 #
241 # These nodes have files that are shared between more than one project type
242 #
243 SYSTEM_SHARED_NODES =                     \
244           shared\src
245
246
247 SYSTEM_SHARED_SRC_ARCHIVES =                       \
248                      a5v       \
249                      asv       \
250                      c_v       \
251                      cpv       \
252                      dcv       \
253                      dev       \
254                      mav         \
255                      h_v       \
256                      inv     \
257                      lnv
258
259 # Specify directory where Generic makefiles reside
260 #
261 # Remember, We only need to know about Embedded makefiles for EMBEDDED Build
262 # Loader makefiles for LOADER Build
263 # and Laptop makefiles for LAPTOP Build
264 #
265 # For now, it does not matter if we assign macros for those included makefiles
266 # whether we use them or not. We shall make that determination later.
267 #
268 %If !%Defined(GEN_MNET_MAK)
269 GEN_MNET_MAK = $(BUILD_ROOT)\shared\src
270 %Endif
271 %Setenv GEN_MNET_MAK = $(GEN_MNET_MAK)
272
273 %If !%Defined(GEN_8051_MAK)
274 GEN_8051_MAK = $(BUILD_ROOT)\shared\src
275 %Endif
276 %Setenv GEN_8051_MAK = $(GEN_8051_MAK)
277
278 %If !%Defined(GEN_PPC_MAK)
279 GEN_PPC_MAK = $(BUILD_ROOT)\shared\src
280 %Endif
281 %Setenv GEN_PPC_MAK = $(GEN_PPC_MAK)
282
283 %If !%Defined(GEN_SHARC_MAK)
284 GEN_SHARC_MAK = $(BUILD_ROOT)\shared\src
285 %Endif
286 %Setenv GEN_SHARC_MAK = $(GEN_SHARC_MAK)
287
288 %If !%Defined(GEN_LAP_MAK)
289 GEN_LAP_MAK = $(BUILD_ROOT)\shared\src
290 %Endif
291 %Setenv GEN_LAP_MAK = $(GEN_LAP_MAK)
292
293 %If !%Defined(GEN_DAFD_MAK)
294 GEN_DAFD_MAK = $(BUILD_ROOT)\shared\src
295 %Endif
296 %Setenv GEN_DAFD_MAK = $(GEN_DAFD_MAK)
297

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 94 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




298 %If !%Defined(GENERAL_MAK)
299 GENERAL_MAK = $(BUILD_ROOT)\shared\src
300 %Endif
301 %Setenv GENERAL_MAK = $(GENERAL_MAK)
302
303 ###############################################################################
  #
304 #
305 # Mnet Embedded build macros
306 #
307 MNET_SHARED_NODES =                       \
308            shared\mstr_u\src \
309            shared\slv_u\src
310
311 # For ease of maintenance, these dirs/files are in alphabetical sequence
312 MNET_NODES =                                  \
313            iod\iod_u\src\iod.mak        \
314            fps\pdc_u\src\pdc.mak            \
315            msd\msd_u\src\msd.mak                   \
316            ria\ria_u\app\src\ria.mak      \
317            scp\imc_u\app\src\imc.mak              \
318            scp\umc_u\app\src\umc.mak                 \
319            scp\msc_u\app\src\msc.mak                 \
320            uip\uip_u\src\uip.mak        \
321            uis\uis_u\src\uis.mak        \
322            vsd\tvd_u\app\src\tvd.mak           \
323            vsd\vsd_u\app\src\vsn.mak
324
325
326 ###############################################################################
  #
327 #
328 # This defines the target directory and target files to be copied
329 #
330 MNET_TARGET_DIRECTORY = $(STANDARD_TARGET_DIRECTORY)
331
332 # Note: these targets must be kept in sync with makefiles above!
333 MNET_TARGETS =                                          \
334            iod\iod_u\exe\main_iod.hex                 \
335            fps\pdc_u\exe\main_pdc.hex                     \
336            msd\msd_u\exe\main_msd.hex                          \
337            ria\ria_u\app\exe\ria_app.hex              \
338            scp\imc_u\app\exe\imc_app.hex                     \
339            scp\umc_u\app\exe\umc_app.hex                        \
340            scp\msc_u\app\exe\msc_app.hex                        \
341            uip\uip_u\exe\main_uip.hex                 \
342            uis\uis_u\exe\main_uis.hex                \
343            vsd\tvd_u\app\exe\tvd_app.hex                   \
344            vsd\vsd_u\app\exe\vsn_app.hex
345
346 MNET_ADDITIONAL_SUBDIRS =                       \
347            ..\obj            \
348            ..\exe
349
350 MNET_SRC_ARCHIVES =                  \
351                a5v       \
352                cmv         \
353                c_v       \
354                dcv       \
355                dev       \
356                h_v       \
357                mav         \
358                inv     \

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 95 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




359               lnv       \
360               s_v
361
362 #
363 # Optionally, other PVCS archives are retrieved into the corresponding director
  y
364 # This occurs on a node-by-node basis
365 #
366
367 # Additional MSC directories for library archives
368 MSC_OTHER_ARCHIVE_SUBDIRS = scp\msc_u\app\pcm\exe                      \
369                     scp\msc_u\app\roselib\exe
370 MSC_OTHER_ARCHIVES =                  liv
371
372
373 ###############################################################################
  #
374 #
375 # Mnet Loader build macros
376 #
377
378 ###############################################################################
  #
379 #
380 # This defines the Mnet Loader target directory and target files to be copied
381 #
382
383 MNET_LOADER_SHARED_NODES = $(MNET_SHARED_NODES)
384
385 MNET_LOADER_SRC_ARCHIVES = $(MNET_SRC_ARCHIVES)
386
387
388 # For ease of maintenance, these dirs/files are in alphabetical sequence
389 MNET_LOADER_NODES =                                \
390            ria\ria_u\ldr\src\ria_ldr.mak \
391            scp\imc_u\ldr\src\imc_ldr.mak \
392            scp\umc_u\ldr\src\umc_ldr.mak \
393            scp\msc_u\ldr\src\msc_ldr.mak \
394            vsd\tvd_u\ldr\src\tvd_ldr.mak \
395            vsd\vsd_u\ldr\src\vsn_ldr.mak
396
397
398 ###############################################################################
  #
399 #
400 # This defines the Mnet Loader target directory and target files to be copied
401 #
402
403 MNET_LOADER_TARGET_DIRECTORY = $(STANDARD_TARGET_DIRECTORY)
404
405 # Note: these targets must be kept in sync with makefiles above!
406 MNET_LOADER_TARGETS =                                \
407            ria\ria_u\ldr\exe\ria_ldr.hex   \
408            scp\imc_u\ldr\exe\imc_ldr.hex       \
409            scp\umc_u\ldr\exe\umc_ldr.hex         \
410            scp\msc_u\ldr\exe\msc_ldr.hex         \
411            vsd\tvd_u\ldr\exe\tvd_ldr.hex     \
412            vsd\vsd_u\ldr\exe\vsn_ldr.hex       \
413
414
415 ###############################################################################
  #
416 #

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 96 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




417 # DSP macros
418 #
419 DSP_SHARED_NODES =                                      \
420            scp\dsp\shared\include               \
421            scp\dsp\shared\src
422
423 CTP_SHARED_NODES =                                      \
424            scp\dsp\ctp\shared\include             \
425            scp\dsp\ctp\shared\src
426
427 DSP_NODES =                                         \
428            scp\dsp\ce\src\kernel\ecm\src\ecm.mak \
429            scp\dsp\ce\src\kernel\mtm\src\mtm.mak \
430            scp\dsp\ce\src\kernel\psm\src\psm.mak \
431            scp\dsp\ctp\app\src\ctp.mak
432
433
434 ###############################################################################
  #
435 #
436 # This defined the target directory and target files to be copied
437 #
438 DSP_TARGET_DIRECTORY = $(STANDARD_TARGET_DIRECTORY)
439
440 # Note: these targets must be kept in sync with makefiles above!
441 DSP_TARGETS =                                            \
442            scp\dsp\ce\src\kernel\ecm\exe\ce_ecm.ldr \
443            scp\dsp\ce\src\kernel\mtm\exe\ce_mtm.ldr \
444            scp\dsp\ce\src\kernel\psm\exe\ce_psm.ldr \
445            scp\dsp\ctp\app\exe\ctp.txt
446
447
448 DSP_ADDITIONAL_SUBDIRS =                   \
449            ..\obj          \
450            ..\exe
451
452 DSP_SRC_ARCHIVES =                  \
453                acv     \
454                c_v     \
455                h_v     \
456                mav       \
457                s_v
458
459 CE_SHARED_NODES =                                       \
460            scp\dsp\ce                  \
461            scp\dsp\ce\include                \
462            scp\dsp\ce\src                \
463            scp\dsp\ce\src\kernel               \
464            scp\dsp\ce\src\kernel\autogen              \
465            scp\dsp\ce\src\kernel\shared\include \
466            scp\dsp\ce\src\kernel\shared\src
467
468 #
469 # Optionally, other PVCS archives are retrieved into the corresponding director
  y
470 # This occurs on a node-by-node basis
471 #
472 ECM_OTHER_ARCHIVE_SUBDIRS = $(CE_SHARED_NODES)                               \
473                    scp\dsp\ce\src\kernel\ecm\include
474 ECM_OTHER_ARCHIVES =               $(DSP_SRC_ARCHIVES)
475
476 MTM_OTHER_ARCHIVE_SUBDIRS = $(CE_SHARED_NODES)                               \
477                    scp\dsp\ce\src\kernel\mtm\include

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 97 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




478 MTM_OTHER_ARCHIVES =                $(DSP_SRC_ARCHIVES)
479
480 PSM_OTHER_ARCHIVE_SUBDIRS = $(CE_SHARED_NODES)                                \
481                    scp\dsp\ce\src\kernel\psm\include
482 PSM_OTHER_ARCHIVES =                $(DSP_SRC_ARCHIVES)
483
484 CTP_OTHER_ARCHIVE_SUBDIRS = $(CTP_SHARED_NODES)                                \
485                    scp\dsp\ctp\app\include         \
486                    scp\dsp\ctp\app\middleman\include \
487                    scp\dsp\ctp\app\middleman\src
488 CTP_OTHER_ARCHIVES =               $(DSP_SRC_ARCHIVES)
489
490
491 #
492 # Optionally, other PVCS archives are retrieved into the corresponding director
  y
493 # This occurs on a node-by-node basis
494 #
495 # FOR CES: scp/dsp/ce
496 DSP_OTHER_ARCHIVE_SUBDIR1 = ..\..\..\..
497
498 DSP_OTHER_ARCHIVES1 =                 \
499                  ldv \
500                  DXv
501
502 # FOR CTP APP: scp/dsp/ctp/app
503 DSP_OTHER_ARCHIVE_SUBDIR2 = ..\
504
505 DSP_OTHER_ARCHIVES2 =                 \
506                  ldv
507
508 ###############################################################################
  #
509 #
510 # DSP Loader build macros
511 #
512
513 ###############################################################################
  #
514 #
515 # This defines the Mnet Loader target directory and target files to be copied
516 #
517
518 DSP_LOADER_SHARED_NODES =                              \
519            $(DSP_SHARED_NODES)                   \
520            $(CTP_SHARED_NODES)
521
522 DSP_LOADER_SRC_ARCHIVES = $(DSP_SRC_ARCHIVES)
523
524
525 DSP_LOADER_NODES =                               \
526            scp\dsp\ctp\ldr\src\ctp_ldr.mak
527
528
529 #
530 # Optionally, other PVCS archives are retrieved into the corresponding director
  y
531 # This occurs on a node-by-node basis
532 #
533 CTP_LDR_OTHER_ARCHIVE_SUBDIRS = scp\dsp\ctp\ldr\include
534
535 CTP_LDR_OTHER_ARCHIVES                 =   \
536                       h_v

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 98 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




537 #
538 # Optionally, other PVCS archives are retrieved into the corresponding director
  y
539 # This occurs on a node-by-node basis
540 #
541 # For CTP_LDR: scp\dsp\ctp\ldr
542 DSP_LOADER_OTHER_ARCHIVE_SUBDIR1 = ..\
543
544 DSP_LOADER_OTHER_ARCHIVES1 =                   \
545                      ldv
546
547 ###############################################################################
  #
548 #
549 # This defines the Mnet Loader target directory and target files to be copied
550 #
551
552 DSP_LOADER_TARGET_DIRECTORY = $(STANDARD_TARGET_DIRECTORY)
553
554 # Note: these targets must be kept in sync with makefiles above!
555 DSP_LOADER_TARGETS =                                 \
556            scp\dsp\ctp\ldr\exe\ctp_ldr.dxe
557
558
559 ###############################################################################
  #
560 #
561 # Monitor DSP macros
562 #
563 MDSP_SHARED_NODES =
564
565 MDSP_NODES =                            \
566            msd\dsp\dafd\src\dafd.mak
567
568 ###############################################################################
  #
569 #
570 # This defined the target directory and target files to be copied
571 #
572 MDSP_TARGET_DIRECTORY = $(STANDARD_TARGET_DIRECTORY)
573
574 # Note: these targets must be kept in sync with makefiles above!
575 MDSP_TARGETS =                              \
576            msd\dsp\dafd\exe\dafd.s3
577
578 MDSP_ADDITIONAL_SUBDIRS =                  \
579            ..\obj          \
580            ..\exe
581
582 MDSP_SRC_ARCHIVES =                  \
583                dsv     \
584                mav       \
585                h_v     \
586                mvk       \
587                syv
588
589
590 ###############################################################################
  #
591 #
592 # Monitor DSP Loader build macros
593 #
594

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential                Page 99 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




595 ###############################################################################
  #
596 #
597 # This defines the Mnet Loader target directory and target files to be copied
598 #
599
600 MDSP_LOADER_SHARED_NODES =
601
602 MDSP_LOADER_SHARED_SRC_ARCHIVES =
603
604 MDSP_LOADER_NODES =
605
606
607 ###############################################################################
  #
608 #
609 # This defines the Mnet Loader target directory and target files to be copied
610 #
611
612 MDSP_LOADER_TARGET_DIRECTORY = $(STANDARD_TARGET_DIRECTORY)
613
614 MDSP_LOADER_TARGETS =
615
616
617 ###############################################################################
  #
618 #
619 # LAPTOP macros
620 #
621 LAPTOP_SHARED_NODES =                              \
622            laptop\shared\src            \
623            laptop\apps\shared\src
624
625 # NOTE: The USBDLL is used for building the Laptop Apps
626 # Therefore, insure that this DLL is the first item in the list below
627 #
628 # NOTE: For LAPTOP, CfgBuilder must be built before CfgLoader
629 # Make sure that this macro lists CfgBuilder BEFORE CfgLoader
630 #
631 # NOTE: Mex files are dependent on the CfgLoader, UsbDll & SupervisorLib
632 # Make sure that they are built last
633
634 LAPTOP_NODES =                                                 \
635            laptop\UsbDll\src\UsbDll.mak                         \
636            laptop\apps\Configuration\src\ConfigurationApp.mak                \
637            laptop\apps\Download\src\DownloadApp.mak                         \
638            laptop\apps\Maintenance\src\MaintenanceApp.mak                      \
639            laptop\apps\Startup\src\StartupApp.mak                   \
640            laptop\LdrBldr\CfgBuilder\src\CfgBuilder.mak               \
641            laptop\LdrBldr\CfgLoader\src\CfgLoader.mak                   \
642            laptop\apps\SupervisorLib\src\SupervisorLib.mak                \
643            laptop\mex\UsbDll\src\MexUsbDll.mak                      \
644            laptop\mex\CfgLdrDll\src\MexCfgLdr.mak
645
646 ###############################################################################
  #
647 #
648 # This defined the target/library directories and target/library files to be co
  pied
649 #
650 # LAPTOP has individual directories for each target type, see below!
651 #LAPTOP_TARGET_DIRECTORY =
652 #LAPTOP_TARGETS =

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 100 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




653
654 # LAPTOP DLL TARGETS:
655 LAPTOP_DLL_TARGETS = laptop\UsbDll\exe\UsbDll.dll      \
656           laptop\UsbDll\src\UsbDll.ini        \
657           laptop\LdrBldr\CfgLoader\exe\CfgLoader.dll \
658           laptop\LdrBldr\CfgLoader\src\CfgLoader.ini
659
660 LAPTOP_DLL_TARGET_DIRECTORY = $(TARGET_ROOT)\LAPTOP\RuntimeDLLs

661
662 # LAPTOP APPLICATION TARGETS:
663 LAPTOP_APP_NODES = Configuration \
664             Download           \
665             Maintenance \
666             Startup
667 LAPTOP_APP_TARGET_DIRECTORIES =
668 % Foreach appnode in $(LAPTOP_APP_NODES)
669 %Set LAPTOP_APP_TARGET_DIRECTORIES += $(TARGET_ROOT)\LAPTOP\Apps\$(appnode)
670 % Endfor
671 LAPTOP_APP_TARGET_EXTENSIONS = *.exe \
672                      *.uir
673
674 # LAPTOP LIBRARY TARGETS:
675 LAPTOP_LIBRARY_DIRECTORY = $(TARGET_ROOT)\LAPTOP\Include
676 LAPTOP_LIBRARIES =                                       \
677          laptop\UsbDll\exe\UsbDll.lib                  \
678          laptop\LdrBldr\CfgLoader\exe\CfgLoader.lib        \
679          laptop\apps\SupervisorLib\exe\SupervisorLib.lib     \
680          laptop\apps\SupervisorLib\src\SupervisorLib.ini
681
682 # LAPTOP MEX TARGETS:
683 LAPTOP_MEX_TARGET_DIRECTORY1 = $(TARGET_ROOT)\LAPTOP\MexInterface\CfgLdrDLL\exe
684 LAPTOP_MEX_TARGETS1 = laptop\mex\CfgLdrDLL\exe\*.dll \
685                 laptop\mex\CfgLdrDLL\exe\*.m \
686                 laptop\mex\CfgLdrDll\src\MexCfgLdr.ini
687
688 LAPTOP_MEX_TARGET_DIRECTORY2 = $(TARGET_ROOT)\LAPTOP\MexInterface\USBDLL\exe
689 LAPTOP_MEX_TARGETS2 = laptop\mex\USBDLL\exe\*.dll              \
690                 laptop\mex\USBDLL\exe\*.m        \
691                 laptop\mex\USBDLL\src\MexUsbDll.ini
692
693 LAPTOP_MEX_TARGET_DIRECTORIES =
694 %Foreach dirnum in 1 2 3 4 5 6 7 8 9 10
695 %Set tempDir = LAPTOP_MEX_TARGET_DIRECTORY$(dirnum)
696 %If %Defined($(tempDir))
697 %Set LAPTOP_MEX_TARGET_DIRECTORIES += $($(tempDir))
698 %Endif
699 %Endfor
700
701
702 LAPTOP_ADDITIONAL_SUBDIRS =               \
703          ..\obj              \
704          ..\exe
705
706 LAPTOP_SRC_ARCHIVES =                  \
707              c_v         \
708              cpv         \
709              dev         \
710              mav           \
711              h_v         \
712              icv       \
713              inv       \
714              rcv

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 101 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




715
716 #
717 # Optionally, other PVCS archives are retrieved into the corresponding director
  y
718 # This occurs on a node-by-node basis
719 #
720 # m_v for mex DLL help files, uiv for CVI App uir's
721 LAPTOP_OTHER_ARCHIVE_SUBDIR1 =                    \
722                     ..\exe
723
724 LAPTOP_OTHER_ARCHIVES1 =                 \
725                  m_v \
726                  uiv
727
728 #
729 # Other PVCS archives are retrieved into the corresponding directory per Subsys
  tem
730 # NOTE: The VXDs are no longer used
731 LAPTOP_OTHER_FILES =
732
733
734 #
735 # If additional subdirectories and archives are needed for a given node
736 # Then they must be defined here
737 #
738 CFGLOADER_OTHER_ARCHIVE_SUBDIRS =                               \
739                  laptop\LdrBldr\CfgLoader\tmpl \
740                  scp\dsp\ctp\app\middleman\include
741 CFGLOADER_OTHER_ARCHIVES =                    \
742                  lsv \
743                  tmvl \
744                  h_v
745
746 SUPERVISORLIB_OTHER_ARCHIVE_SUBDIRS =                             \
747                  laptop\apps\SupervisorLib\include
748 SUPERVISORLIB_OTHER_ARCHIVES =                  \
749                  h_v
750
751 MEXUSBDLL_OTHER_ARCHIVE_SUBDIRS =                              \
752                  laptop\apps\SupervisorLib\include
753 MEXUSBDLL_OTHER_ARCHIVES =                    \
754                  h_v
755
756 # MEXDAVINCI IS CURRENTLY NOT USED-RENAME WHEN READY!! (GKT 4/5/02)
757 #MEXDAVINCI_OTHER_ARCHIVE_SUBDIRS = laptop\mex\Decls
758 #MEXDAVINCI_OTHER_ARCHIVES =                  \
759 #                        m_v
760
761 ###############################################################################
  #
762 #
763 # Additional target directories appear here
764 # (more than one directory may be provided)
765 #
766
767 ADDL_TARGET_DIRECTORIES =
768 #$(TARGET_ROOT)\HardDisk\MfgBin\maintutil
769
770
771 ###############################################################################
772
773 #
774 # "Release" build must do the following:

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 102 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




775 #     - Verify that the required Version number macros specified
776 #           and valid.
777 #     - Make sure that the proper build type (EMBEDDED, LOADER or LAPTOP)
778 #           is specified and valid
779 #     - For each system shared sub-directory
780 #         - Create the shared directory
781 #         - Retrieve all the shared directory archives
782 #     - If EMBEDDED Build:
783 #         - For each Mnet shared sub-directory
784 #             - Create the shared directory
785 #             - Retrieve all the shared directory archives
786 #         - For each Mnet node sub-directory
787 #             - Create the Mnet nodes sub-directory
788 #             - Get the associated archives
789 #             - Build the node
790 #         - For each DSP shared sub-directory
791 #             - Create the shared directory
792 #             - Retrieve all the shared directory archives
793 #         - For each DSP node sub-directory
794 #             - Create the DSP nodes sub-directory
795 #             - Get the associated archives
796 #             - Build the node
797 #         - For each Monitor DSP shared sub-directory
798 #             - Create the shared directory
799 #             - Retrieve all the shared directory archives
800 #         - For each Monitor DSP node sub-directory
801 #             - Create the Monitor DSP nodes sub-directory
802 #             - Get the associated archives
803 #             - Build the node
804 #     - Else, If LOADER Build:
805 #         - For each Mnet Loader shared sub-directory
806 #             - Create the shared directory
807 #             - Retrieve all the shared directory archives
808 #         - For each Mnet Loader node sub-directory
809 #             - Create the Mnet nodes sub-directory
810 #             - Get the associated archives
811 #             - Build the node
812 #         - For each DSP Loader shared sub-directory
813 #             - Create the shared directory
814 #             - Retrieve all the shared directory archives
815 #         - For each DSP Loader node sub-directory
816 #             - Create the DSP nodes sub-directory
817 #             - Get the associated archives
818 #             - Build the node
819 #         - For each Monitor DSP Loader shared sub-directory
820 #             - Create the shared directory
821 #             - Retrieve all the shared directory archives
822 #         - For each Monitor DSP Loader node sub-directory
823 #             - Create the Monitor DSP nodes sub-directory
824 #             - Get the associated archives
825 #             - Build the node
826 #     - Otherwise, This is a LATOP Build and the following is performed:
827 #         - For each Laptop shared sub-directory
828 #             - Create the shared directory
829 #             - Retrieve all the shared directory archives
830 #         - For each Laptop node sub-directory
831 #             - Create the Laptop nodes sub-directory
832 #             - Get the associated archives
833 #             - Build the node
834 #
835
836 release:
837     %SetEnv RELEASE=YES

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 103 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




838
839 # Make sure the Build Type is specified and valid
840     %If !%Defined(BUILD_TYPE)
841       %Echo ERROR: Build Type, "BUILD_TYPE" not defined, build terminated
842       %Abort 95
843     %Endif
844
845     %Set BUILD_TYPE = $[Upper,$(BUILD_TYPE)]
846     %If !%Member($(BUILD_TYPE),$(VALID_BUILD_TYPES))
847       %Echo ERROR: Build Type "$(BUILD_TYPE)" invalid, must be one of the fol
  lowing:
848       %Foreach bt in $(VALID_BUILD_TYPES)
849          %Echo $(bt)
850       %Endfor
851       %Abort 96
852     %Endif
853
854 # Make sure the Build Version number is defined for the release build
855     %If !%Defined($(BUILD_TYPE)_BUILD_NUM)
856       %Echo ERROR: Build Version Number, "$(BUILD_TYPE)_BUILD_NUM" not define
  d, build terminated
857       %Abort 90
858     %Endif
859     %Set THIS_BUILD_NUM=$($(BUILD_TYPE)_BUILD_NUM)
860
861 # Validate the Build version number to a certain extent
862 # FORMAT: A4X.CCC or D4x.CCC
863       %If "$[Clip,$(THIS_BUILD_NUM),4,4]" != "."
864       %Echo ERROR: Build Version, "$(THIS_BUILD_NUM)" format invalid, build t
  erminated
865       %Abort 91
866 %Endif
867
868 # Make sure the Software Version number is defined for the release build
869     %If !%Defined($(BUILD_TYPE)_SWRLSE_VER)
870       %Echo ERROR: Software Release Version "$(BUILD_TYPE)_SWRLSE_VER" not de
  fined, build terminated
871       %Abort 92
872     %Endif
873     %Set THIS_SWRLSE_VER=$($(BUILD_TYPE)_SWRLSE_VER)
874
875 # If LAPTOP build, make sure EMBEDDED_BUILD_NUM is also defined!
876     %If "$(BUILD_TYPE)" == "LAPTOP"
877       %If !%Defined(EMBEDDED_BUILD_NUM)
878         %Echo ERROR: Laptop build requires EMBEDDED_BUILD_NUM to be defined
  as well!
879         Abort 102
880       %Endif
881     %Endif
882
883 # Validate the Software Release version number to a certain extent
884 # & make sure the Software Release version is compatable with Build #version
885     %If "$(BUILD_TYPE)" == "LOADER"
886       # FORMAT: LL.A4X.CCC
887       %If "$[Clip,$(THIS_SWRLSE_VER),3,3]" != "." || "$[Clip,$(THIS_SWRLSE_VE
  R),7,7]" != "."
888          %Echo ERROR: Loader SW Release version, "$(THIS_SWRLSE_VER)" format
   invalid, build terminated
889          %Abort 93
890       %Endif
891
892       # Make sure the Software Release version is compatable with Build Numbe
  r

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 104 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




893       %If "$[Clip,$(THIS_BUILD_NUM),1,7]" != "$[Clip,$(THIS_SWRLSE_VER),4,10]
  "
894          %Echo ERROR: Incompatable versions, build terminated
895          %Echo Loader Software Release version is "$(THIS_SWRLSE_VER)"
896          %Echo Loader Software Build version is "$(THIS_BUILD_NUM)"
897          %Abort 94
898       %Endif
899
900     %Elseif "$(BUILD_TYPE)" == "EMBEDDED"
901       # FORMAT: LL.A4X.CCC.DDD
902       %If "$[Clip,$(THIS_SWRLSE_VER),3,3]" != "." || "$[Clip,$(THIS_SWRLSE_VE
  R),7,7]" != "." || "$[Clip,$(THIS_SWRLSE_VER),11,11]" != "."
903          %Echo ERROR: Embedded SW Release version, "$(THIS_SWRLSE_VER)" form
  at invalid, build terminated
904          %Abort 93
905       %Endif
906
907       # Make sure the Software Release version is compatable with Build Numbe
  r
908       %If "$[Clip,$(THIS_BUILD_NUM),1,7]" != "$[Clip,$(THIS_SWRLSE_VER),4,10]
  "
909          %Echo ERROR: Incompatable versions, build terminated
910          %Echo Embedded Software Release version is "$(THIS_SWRLSE_VER)"

911          %Echo Embedded Software Build version is "$(THIS_BUILD_NUM)"
912          %Abort 94
913       %Endif
914
915     %Elseif "$(BUILD_TYPE)" == "LAPTOP"
916       # FORMAT: LL.A4X.CCC.DDD.EEE
917       %If "$[Clip,$(THIS_SWRLSE_VER),3,3]" != "." || "$[Clip,$(THIS_SWRLSE_VE
  R),7,7]" != "." || "$[Clip,$(THIS_SWRLSE_VER),11,11]" != "." || "$[Clip,$(THIS_
  SWRLSE_VER),15,15]" != "."
918          %Echo ERROR: Laptop SW Release version, "$(THIS_SWRLSE_VER)" format
   invalid, build terminated
919          %Abort 93
920       %Endif
921
922       # Make sure the Software Release version is compatable with Build Numbe
  r
923       %If "$[Clip,$(THIS_BUILD_NUM),5,7]" != "$[Clip,$(THIS_SWRLSE_VER),12,14
  ]"
924          %Echo ERROR: Incompatable versions, build terminated
925          %Echo Laptop Software Release version is "$(THIS_SWRLSE_VER)"
926          %Echo Laptop Software Build version is "$(THIS_BUILD_NUM)"
927          %Abort 94
928       %Endif
929
930       # Make sure the Embedded Software Build version is compatable with the
  Laptop Release Number
931       %If "$[Clip,$(EMBEDDED_BUILD_NUM),1,7]" != "$[Clip,$(THIS_SWRLSE_VER),4
  ,10]"
932          %Echo ERROR: Incompatable versions, build terminated
933          %Echo Laptop Software Release version is "$(THIS_SWRLSE_VER)"
934          %Echo Embedded Software Build version is "$(EMBEDDED_BUILD_NUM)"
935          %Abort 103
936       %Endif
937     %Endif
938
939 # Build the System Shared directory tree
940     %Foreach sharedDir in $(SYSTEM_SHARED_NODES)
941       $(SILENT)%Set DIR=$(BUILD_ROOT)\$(sharedDir)
942       %Do build_dir_tree

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 105 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




 943     %Endfor
 944
 945
 946 ######################################################################
 947 #
 948 # Create Subsystem Types based on the BUILD_TYPE
 949 #
 950 %If "$(BUILD_TYPE)" == "EMBEDDED"
 951       %Set SUBSYS_TYPES = MNET DSP MDSP
 952       %Set TARGET_DIRS =                          \
 953                  $(MNET_TARGET_DIRECTORY) \
 954                  $(DSP_TARGET_DIRECTORY) \
 955                  $(MDSP_TARGET_DIRECTORY) \
 956                  $(RELEASE_TARGET_DIRECTORY)
 957
 958 %Elseif "$(BUILD_TYPE)" == "LOADER"
 959       %Set SUBSYS_TYPES = MNET_LOADER DSP_LOADER MDSP_LOADER
 960       %Set TARGET_DIRS =                             \
 961                  $(MNET_LOADER_TARGET_DIRECTORY) \
 962                  $(DSP_LOADER_TARGET_DIRECTORY) \
 963                  $(MDSP_LOADER_TARGET_DIRECTORY) \
 964                  $(RELEASE_TARGET_DIRECTORY)
 965
 966 %Else
 967       %Set SUBSYS_TYPES = LAPTOP
 968       %Set TARGET_DIRS =                               \
 969                  $(LAPTOP_DLL_TARGET_DIRECTORY) \
 970                  $(LAPTOP_LIBRARY_DIRECTORY)                 \
 971                  $(LAPTOP_MEX_TARGET_DIRECTORIES) \
 972                  $(LAPTOP_APP_TARGET_DIRECTORIES) \
 973                  $(RELEASE_TARGET_DIRECTORY)
 974 %Endif
 975
 976 ######################################################################
 977 #
 978 # Process Mnet, DSPnet, Laptop and Monitor-DSP nodes in that order
 979 #
 980 %Foreach SUBSYS in $(SUBSYS_TYPES)
 981       %Do Process_Subsystem
 982 %Endfor
 983
 984
 985 ###############################################################################
   #
 986 # If control gets here, then the build completed without error
 987 #
 988 # Post-processing consists of copying the targets to the appropriate directorie
   s
 989 #
 990
 991 # Build the Target directory trees
 992 %Foreach targetDir in $(TARGET_DIRS) $(ADDL_TARGET_DIRECTORIES)
 993
 994 # Delete any files that exist in the target directories by removing target dire
   ctories
 995       %If %Exists($(targetDir))
 996         $(SILENT)$(DELTREE) $(targetDir)
 997       %Endif
 998       $(SILENT)%Set DIR=$(targetDir)
 999       %Do build_dir_tree
1000 %Endfor
1001
1002 # Copy target files for all subsystems (that have defined target dirs)

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 106 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




1003 %Foreach SUBSYS in $(SUBSYS_TYPES)
1004     %If %Defined($(SUBSYS)_TARGETS)
1005       %Foreach targetFile in $($(SUBSYS)_TARGETS)
1006          $(SILENT)copy $(BUILD_ROOT)\$(targetFile) $($(SUBSYS)_TARGET_DI
   RECTORY)
1007       %Endfor
1008     %Endif
1009 %Endfor
1010
1011 ###############################################################################
   #
1012 #
1013 # Special processing for Laptop Build only
1014 #
1015
1016 %If "$(BUILD_TYPE)" == "LAPTOP"
1017
1018 # Laptop DLL targets
1019     %Foreach dlltarget in $(LAPTOP_DLL_TARGETS)
1020       $(SILENT)copy $(BUILD_ROOT)\$(dlltarget) $(LAPTOP_DLL_TARGET_DIRECT
   ORY)
1021     %Endfor
1022
1023 # Laptop Application executables and uirs
1024     %Foreach appnode in $(LAPTOP_APP_NODES)

1025          %Foreach targetFile in $(LAPTOP_APP_TARGET_EXTENSIONS)
1026            $(SILENT)copy $(BUILD_ROOT)\laptop\apps\$(appnode)\exe\$(target
   File) $(TARGET_ROOT)\LAPTOP\Apps\$(appnode)
1027          %Endfor
1028       %Endfor
1029
1030 # Laptop Library files
1031       %Foreach targetFile in $(LAPTOP_LIBRARIES)
1032          $(SILENT)copy $(BUILD_ROOT)\$(targetFile) $(LAPTOP_LIBRARY_DIRECTOR
   Y)
1033       %Endfor
1034
1035 # Mex Files
1036       %Foreach dirnum in 1 2 3 4 5 6 7 8 9 10
1037          %Set tempDir = LAPTOP_MEX_TARGET_DIRECTORY$(dirnum)
1038          %If %Defined($(tempDir))
1039            $(SILENT)%Set targetDir = $($(tempDir))
1040            %Foreach targetFile in $(LAPTOP_MEX_TARGETS$(dirnum))
1041               $(SILENT)copy $(BUILD_ROOT)\$(targetFile) $(targetDir)
1042            %Endfor
1043          %Endif
1044       %Endfor
1045
1046 %Endif
1047
1048 ###############################################################################
   #
1049 #
1050 # At this point, build the Software Build and Software Release INI files
1051 #
1052       $(SILENT)%Set DIR=$(BUILD_REVISION_INI_TARGET_DIR)
1053       %Do build_dir_tree
1054
1055       $(SILENT)%Set iniFile=$(BUILD_REVISION_INI_TARGET_DIR)\$(BUILD_REVISION
   _INI_FILE)
1056       %If %Exists($(iniFile))
1057          $(SILENT)$(ATTRIB) -r $(iniFile)

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 107 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




1058          $(SILENT)del $(iniFile)
1059       %Endif
1060       $(SILENT)echo [Revision] > $(iniFile)
1061       $(SILENT)echo RevisionLevel=$(THIS_BUILD_NUM) >> $(iniFile)
1062       $(SILENT)$(CERTIFY) $(iniFile)
1063
1064       $(SILENT)%Set DIR=$(RELEASE_REVISION_INI_TARGET_DIR)
1065       %Do build_dir_tree
1066
1067       $(SILENT)%Set iniFile=$(RELEASE_REVISION_INI_TARGET_DIR)\$(RELEASE_REVI
   SION_INI_FILE)
1068       %If %Exists($(iniFile))
1069          $(SILENT)$(ATTRIB) -r $(iniFile)
1070          $(SILENT)del $(iniFile)
1071       %Endif
1072       $(SILENT)echo [Revision] > $(iniFile)
1073       $(SILENT)echo RevisionLevel=$(THIS_SWRLSE_VER) >> $(iniFile)
1074       # Also add embedded build number ini for laptop builds
1075       %If "$(BUILD_TYPE)" == "LAPTOP"
1076          $(SILENT)echo >> $(initFile)
1077          $(SILENT)echo [EmbeddedBuild] >> $(iniFile)
1078          $(SILENT)echo EmbeddedBuild=$(EMBEDDED_BUILD_NUM) >> $(iniFile)
1079       %Endif
1080       $(SILENT)$(CERTIFY) $(iniFile)
1081
1082 ###############################################################################
   #
1083 #
1084 # At this point, Generate the build version output file listing all versions
1085 # (the embedded one is used by the DownloadApp)
1086
1087       # Skip for laptop nodes, they aren't consistent enough for this
1088       %If "$(BUILD_TYPE)" != "LAPTOP"
1089          %Echo Generating Version Number File
1090
1091          $(SILENT)%Set DIR=$(STANDARD_TARGET_DIRECTORY)
1092          %Do build_dir_tree
1093
1094          $(SILENT)%Set verFile=$(STANDARD_TARGET_DIRECTORY)\$(BUILD_TYPE)_Ve
   rsions.txt
1095          %If %Exists($(verFile))
1096             $(SILENT)$(ATTRIB) -r $(verFile)
1097             $(SILENT)del $(verFile)
1098          %Endif
1099          $(SILENT)echo RELEASE $(THIS_SWRLSE_VER) >> $(verFile)
1100          $(SILENT)echo BUILD $(THIS_BUILD_NUM) >> $(verFile)
1101          # Loop over subsystems
1102          %Foreach subSys in $(SUBSYS_TYPES)
1103
1104             # Loop over subsystem targets, saving names
1105             $(SILENT)%Set tcntr = 0
1106             %Foreach target in $($(subSys)_TARGETS)
1107                $(SILENT)%Set tcntr = $[Expr, $(tcntr) + 1]
1108                #$(SILENT)%Set targetPath = ..\$[Base,$($(subSys)_TARGET_DI
   RECTORY)]
1109                $(SILENT)%Set targetNum$(tcntr) = $[Filename,,$[Base,$(targ
   et)],$[Extension,$(target)]]
1110             %Endfor
1111
1112             # Loop over subsystem nodes
1113             $(SILENT)%Set ncntr = 0
1114             %Foreach node in $(ALL_$(subSys)_NODES)
1115                $(SILENT)%Set ncntr = $[Expr, $(ncntr) + 1]

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 108 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




1116               $(SILENT)%Set nodeName=$[Upper,$[Base,$(node)]]
1117               %If %defined($(nodeName)_VERSION_LABEL)
1118                  $(SILENT)%Set versionNum=$($(nodeName)_VERSION_LABEL)
1119               %Else
1120                  $(SILENT)%Set versionNum=TOP_OF_ARCHIVE
1121               %Endif
1122               $(SILENT)echo $(nodeName) $(versionNum) $(targetNum$(n
   cntr)) >> $(verFile)
1123            %Endfor
1124
1125            # Now make sure the number of nodes and targets match!
1126            %If $(tcntr) != $(ncntr)
1127               %Echo The number of nodes $(ncntr) and targets $(tcntr) do
   not match
1128               %Echo for subsystem $(subSys) preventing version file gener
   ation.
1129               %Abort 104
1130            %Endif
1131
1132          %Endfor
1133          $(SILENT)$(CERTIFY) $(verFile)
1134       %Endif
1135
1136
1137 ######################################################################
1138 # Build directory for shared files and get files from PVCS
1139 # Technique is similar to that for System Shared files (see above)
1140 #
1141 Process_Subsystem:
1142 # Save ALL sub system nodes for later use since restart can clear list!
1143 $(SILENT)%Set ALL_$(SUBSYS)_NODES = $($(SUBSYS)_NODES)
1144
1145 %If !%Defined(SKIP_$(SUBSYS)_NODES)
1146
1147 %If "$(Restart_Done)" == "0"
1148       $(SILENT)%Set MATCH_NODES =
1149       %Foreach Node in $($(SUBSYS)_NODES)
1150          $(SILENT)%Set MATCH_NODES += $[Base,$(Node)]
1151       %Endfor
1152
1153       %If %Defined(RESTART)
1154          %Echo Attempting RESTART with node $(RESTART)
1155          %If %Member($(RESTART),$(MATCH_NODES))
1156            $(SILENT)%Set matchNodes =
1157            $(SILENT)%Set nodeFound = 0
1158            %Foreach node in $($(SUBSYS)_NODES)
1159               %If "$(nodeFound)" == "1"
1160                  $(SILENT)%Set matchNodes += $(node)
1161               %Elseif $[Upper,$(RESTART)] == $[Upper,$[Base,$(node)]]
1162                  $(SILENT)%Set matchNodes = $(node)
1163                  $(SILENT)%Set nodeFound = 1
1164               %Endif
1165            %Endfor
1166            $(SILENT)%Set $(SUBSYS)_NODES = $(matchNodes)
1167            $(SILENT)%Set Restart_Done = 1
1168         %Else
1169            $(SILENT)%Set $(SUBSYS)_NODES =
1170         %Endif
1171       %Endif
1172 %Endif
1173
1174 %If "$($(SUBSYS)_SHARED_NODES)" != ""
1175       %Echo Building Shared Directory tree

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 109 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




1176        %Foreach sharedDir in $($(SUBSYS)_SHARED_NODES)
1177           %If !%Exists($(sharedDir))
1178             $(SILENT)%Set DIR=$(BUILD_ROOT)\$(sharedDir)
1179             %Do build_dir_tree
1180           %Endif
1181        %Endfor
1182 %Endif
1183
1184 # For each node, build directory tree, get files from PVCS, and do a program bu
   ild
1185 # This first section is very similar to the technique used for Shared directori
   es/files
1186 %Foreach nodeMakefile in $($(SUBSYS)_NODES)
1187        %Echo Building Directory Tree for $(nodeMakefile)
1188        $(SILENT)%Set nodeDir = $[Directory,$(nodeMakefile)]
1189
1190        # Build additional node specific directories
1191        $(SILENT)%Set Nodename = $[Upper,$[Base,$(nodeMakefile)]]
1192        %If %Defined($(Nodename)_OTHER_ARCHIVE_SUBDIRS)
1193           %Foreach addlDir in $($(Nodename)_OTHER_ARCHIVE_SUBDIRS)
1194             $(SILENT)%Set nodeOperationalDir = $(BUILD_ROOT)\$(addlDir)
1195             %If %Exists($(nodeOperationalDir))
1196                # GKT 04/11/02 Disabled delete of directory tree, instead d
   elete files!
1197                # Was causing loss of kernel targets during other target bu
   ilds!
1198                #$(SILENT)$(DELTREE) $(nodeOperationalDir)
1199                $(SILENT)(Ignore)del /F /Q $(nodeOperationalDir)\*.*
1200             %Endif
1201             $(SILENT)%Set DIR=$(nodeOperationalDir)
1202             %Do build_dir_tree
1203           %Endfor
1204        %Endif
1205
1206        # Build source directory (after additional - assume lower in path!)
1207        $(SILENT)%Set DIR=$(BUILD_ROOT)\$(nodeDir)
1208        %Do build_dir_tree
1209
1210        # Build any other directories that are needed (obj and exe)
1211        %Foreach nodeAddlDir in $($(SUBSYS)_ADDITIONAL_SUBDIRS)
1212           $(SILENT)%Set nodeOperationalDir = $(BUILD_ROOT)\$(nodeDir)\$(nodeA
   ddlDir)
1213           %If %Exists($(nodeOperationalDir))
1214             $(SILENT)$(DELTREE) $(nodeOperationalDir)
1215           %Endif
1216           $(SILENT)mkdir $(nodeOperationalDir)
1217        %EndFor
1218
1219 #
1220 # Get other files for this subsystem
1221 #
1222        %If %Defined($(SUBSYS)_OTHER_FILES)
1223           %Echo Get Other Subsystem files
1224           %Foreach targetFile in $($(SUBSYS)_OTHER_FILES)
1225             $(SILENT)%Set DIR=$[Directory,$(BUILD_ROOT)\$(targetFile)]
1226             %Do build_dir_tree
1227             $(SILENT)%Set extension = .$[Extension,$(targetFile)]
1228             %Do get_pvcs_extension
1229             $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$[Directory
   ,$(targetFile)]\$[Base,$(targetFile)].$(pvcsExtension)($(DIR))
1230           %Endfor
1231        %Endif
1232

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 110 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




1233 # Get all PVCS logfiles for this node
1234       %Echo Getting files from PVCS for $(nodeMakefile)
1235       %Do Get_Node_Logfiles
1236
1237 # Now perform the build for the given node
1238       $(SILENT)%Echo Building $(BUILD_ROOT)\$(nodeMakefile)
1239
1240 # Make sure there is no defines.mak, as DEVELOP_ROOT and BUILD_ROOT are inherit
   ed from this makefile
1241       %If %Exists($(BUILD_ROOT)\$(nodeDir)\defines.mak)
1242          $(SILENT)$(ATTRIB) -r $(BUILD_ROOT)\$(nodeDir)\defines.mak
1243          $(SILENT)del $(BUILD_ROOT)\$(nodeDir)\defines.mak
1244       %Endif
1245
1246 # Do the build proper
1247       %Cd $(BUILD_ROOT)\$(nodeDir)
1248       %Setenv GETFLAGS=$(GETFLAGS)
1249 %If %Defined(SKIP_LINT_27183_DO_NOT_USE)
1250       %Setenv SKIP_LINT_27183_DO_NOT_USE=Yes
1251 %Endif
1252 %If %Defined(SKIPGET)
1253       %Setenv SKIPGET=Yes
1254 %Endif
1255       $(SILENT)$(_Exe) $(DBG_MKF_FLAGS) $(_FlagsMacros) $(BUILD_ROOT)\$(nodeM
   akefile) $(DALL)
1256       $(SILENT)%Set GETFLAGS=$(SAVE_GETFLAGS)
1257
1258 %Endfor
1259
1260 %Endif
1261
1262
1263 ###############################################################################
1264 #
1265 # Explicit target for getting System Shared Directory Files:
1266 # This operation assumes that the shared directory tree is already present
1267 #
1268 get_system_shared_dir:
1269 %Foreach sharedDir in $(SYSTEM_SHARED_NODES)
1270       $(SILENT)%Echo Getting $(BUILD_ROOT)\$(sharedDir) archives
1271       $(SILENT)(Ignore)$(ATTRIB) -r $(BUILD_ROOT)\$(sharedDir)\*.*
1272       $(SILENT)(Ignore)echo y | del $(BUILD_ROOT)\$(sharedDir)\*.*
1273       %Foreach archiveExt in $(SYSTEM_SHARED_SRC_ARCHIVES)
1274          $(SILENT)%Echo Getting *.$(archiveExt) files
1275          $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(sharedDir)\*.
   $(archiveExt)($(BUILD_ROOT)\$(sharedDir))
1276       %Endfor
1277 %Endfor
1278
1279
1280 ###############################################################################
1281 #
1282 # Explicit target for getting Mnet Shared Directory Files:
1283 # This operation assumes that the shared directory tree is already present
1284 #
1285 get_mnet_shared_dir:
1286 %Do get_system_shared_dir
1287 %Foreach sharedDir in $(MNET_SHARED_NODES)
1288       $(SILENT)%Echo Getting $(BUILD_ROOT)\$(sharedDir) archives
1289       $(SILENT)(Ignore)$(ATTRIB) -r $(BUILD_ROOT)\$(sharedDir)\*.*
1290       $(SILENT)(Ignore)echo y | del $(BUILD_ROOT)\$(sharedDir)\*.*
1291       %Foreach archiveExt in $(MNET_SRC_ARCHIVES)
1292          $(SILENT)%Echo Getting *.$(archiveExt) files

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 111 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




1293         $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(sharedDir)\*.
   $(archiveExt)($(BUILD_ROOT)\$(sharedDir))
1294       %Endfor
1295 %Endfor
1296
1297
1298 ###############################################################################
1299 #
1300 # Explicit target for getting DSP Shared Directory Files:
1301 # This operation assumes that the shared directory tree is already present
1302 #
1303 get_dsp_shared_dir:
1304 %Do get_system_shared_dir
1305 %Foreach sharedDir in $(DSP_SHARED_NODES)
1306       $(SILENT)%Echo Getting $(BUILD_ROOT)\$(sharedDir) archives
1307       $(SILENT)(Ignore)$(ATTRIB) -r $(BUILD_ROOT)\$(sharedDir)\*.*
1308       $(SILENT)(Ignore)echo y | del $(BUILD_ROOT)\$(sharedDir)\*.*
1309       %Foreach archiveExt in $(DSP_SRC_ARCHIVES)
1310         $(SILENT)%Echo Getting *.$(archiveExt) files
1311         $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(sharedDir)\*.
   $(archiveExt)($(BUILD_ROOT)\$(sharedDir))
1312       %Endfor
1313 %Endfor
1314
1315
1316 ###############################################################################
1317 #
1318 # Explicit target for getting Laptop Shared Directory Files:
1319 # This operation assumes that the shared directory tree is already present
1320 #
1321 get_laptop_shared_dir:
1322 %Do get_system_shared_dir
1323 %Foreach sharedDir in $(LAPTOP_SHARED_NODES)
1324       $(SILENT)%Echo Getting $(BUILD_ROOT)\$(sharedDir) archives
1325       $(SILENT)(Ignore)$(ATTRIB) -r $(BUILD_ROOT)\$(sharedDir)\*.*
1326       $(SILENT)(Ignore)echo y | del $(BUILD_ROOT)\$(sharedDir)\*.*
1327       %Foreach archiveExt in $(LAPTOP_SRC_ARCHIVES)
1328         $(SILENT)%Echo Getting *.$(archiveExt) files
1329         $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(sharedDir)\*.
   $(archiveExt)($(BUILD_ROOT)\$(sharedDir))
1330       %Endfor
1331 %Endfor
1332
1333
1334 ###############################################################################
1335 #
1336 # Explicit target for getting MDSP Shared Directory Files:
1337 # This operation assumes that the shared directory tree is already present
1338 #
1339 get_mdsp_shared_dir:
1340 %Do get_system_shared_dir
1341 %Foreach sharedDir in $(MDSP_SHARED_NODES)
1342       $(SILENT)%Echo Getting $(BUILD_ROOT)\$(sharedDir) archives
1343       $(SILENT)(Ignore)$(ATTRIB) -r $(BUILD_ROOT)\$(sharedDir)\*.*
1344       $(SILENT)(Ignore)echo y | del $(BUILD_ROOT)\$(sharedDir)\*.*
1345       %Foreach archiveExt in $(MDSP_SRC_ARCHIVES)
1346         $(SILENT)%Echo Getting *.$(archiveExt) files
1347         $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(sharedDir)\*.
   $(archiveExt)($(BUILD_ROOT)\$(sharedDir))
1348       %Endfor
1349 %Endfor
1350
1351

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 112 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




1352
1353 ###############################################################################
1354 #
1355 # Explicit target for getting Mnet Loader Shared Directory Files:
1356 # This operation assumes that the shared directory tree is already present
1357 #
1358 get_mnet_loader_shared_dir:
1359 %Do get_system_shared_dir
1360 %Foreach sharedDir in $(MNET_LOADER_SHARED_NODES)
1361       $(SILENT)%Echo Getting $(BUILD_ROOT)\$(sharedDir) archives
1362       $(SILENT)(Ignore)$(ATTRIB) -r $(BUILD_ROOT)\$(sharedDir)\*.*
1363       $(SILENT)(Ignore)echo y | del $(BUILD_ROOT)\$(sharedDir)\*.*
1364       %Foreach archiveExt in $(MNET_LOADER_SRC_ARCHIVES)
1365         $(SILENT)%Echo Getting *.$(archiveExt) files
1366         $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(sharedDir)\*.
   $(archiveExt)($(BUILD_ROOT)\$(sharedDir))
1367       %Endfor
1368 %Endfor
1369
1370
1371
1372 ###############################################################################
1373 #
1374 # Explicit target for getting DSP Loader Shared Directory Files:
1375 # This operation assumes that the shared directory tree is already present
1376 #
1377 get_dsp_loader_shared_dir:
1378 %Do get_system_shared_dir
1379 %Foreach sharedDir in $(DSP_LOADER_SHARED_NODES)
1380       $(SILENT)%Echo Getting $(BUILD_ROOT)\$(sharedDir) archives
1381       $(SILENT)(Ignore)$(ATTRIB) -r $(BUILD_ROOT)\$(sharedDir)\*.*
1382       $(SILENT)(Ignore)echo y | del $(BUILD_ROOT)\$(sharedDir)\*.*
1383       %Foreach archiveExt in $(DSP_LOADER_SRC_ARCHIVES)
1384         $(SILENT)%Echo Getting *.$(archiveExt) files
1385         $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(sharedDir)\*.
   $(archiveExt)($(BUILD_ROOT)\$(sharedDir))
1386       %Endfor
1387 %Endfor
1388
1389
1390
1391
1392 ###############################################################################
1393 #
1394 # Explicit target for getting Mnet Shared Directory Files:
1395 # This operation assumes that the shared directory tree is already present
1396 #
1397 get_mdsp_loader_shared_dir:
1398 %Do get_system_shared_dir
1399 %Foreach sharedDir in $(MDSP_LOADER_SHARED_NODES)
1400       $(SILENT)%Echo Getting $(BUILD_ROOT)\$(sharedDir) archives
1401       $(SILENT)(Ignore)$(ATTRIB) -r $(BUILD_ROOT)\$(sharedDir)\*.*
1402       $(SILENT)(Ignore)echo y | del $(BUILD_ROOT)\$(sharedDir)\*.*
1403       %Foreach archiveExt in $(MDSP_LOADER_SRC_ARCHIVES)
1404         $(SILENT)%Echo Getting *.$(archiveExt) files
1405         $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(sharedDir)\*.
   $(archiveExt)($(BUILD_ROOT)\$(sharedDir))
1406       %Endfor
1407 %Endfor
1408
1409 ###############################################################################
1410 #
1411 # Explicit target for getting Node Logfiles given SUBSYS, nodeDir, and Nodename

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 113 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




1412 #
1413 Get_Node_Logfiles:
1414       $(SILENT)%Set SAVE_GETFLAGS=$(GETFLAGS)
1415       $(SILENT)%Set NodeVersion = $(Nodename)_VERSION_LABEL
1416       %If %Defined($(NodeVersion))
1417
1418 # We must GET all shared files affecting the build
1419          %If !%Defined(SKIPGET) || ("$[Upper,$(SKIPGET)]" == "NO")
1420             $(SILENT)%Set PREV_VERSION_LABEL = $(Nodename) $($(NodeVersion)
   )
1421             $(SILENT)%Set GETFLAGS += -v"$(PREV_VERSION_LABEL)"
1422             %Setenv GETFLAGS=$(GETFLAGS)
1423             %Do get_$[Lower,$(SUBSYS)]_shared_dir
1424          %Endif
1425       %Else
1426          %If "$(PREV_VERSION_LABEL)" != ""
1427 # Force latest revision of all shared files
1428             $(SILENT)%Set GETFLAGS += -u
1429             %Setenv GETFLAGS=$(GETFLAGS)
1430             %Do get_$[Lower,$(SUBSYS)]_shared_dir
1431          %Endif
1432          $(SILENT)%Set PREV_VERSION_LABEL =
1433       %Endif
1434
1435 # For testing, we may want to skip the GETs
1436       %If !%Defined(SKIPGET) || ("$[Upper,$(SKIPGET)]" == "NO")
1437
1438          # Get all the files from the node proper
1439          $(SILENT)%Echo Getting $(BUILD_ROOT)\$(nodeDir) archives
1440          %Foreach archiveExt in $($(SUBSYS)_SRC_ARCHIVES)
1441             $(SILENT)%Echo Getting *.$(archiveExt) files
1442             $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(nodeDir)\
   *.$(archiveExt)($(BUILD_ROOT)\$(nodeDir))
1443          %Endfor
1444
1445          %Foreach dirnum in 1 2 3 4 5 6 7 8 9 10
1446             $(SILENT)%Set addlDir = $(SUBSYS)_OTHER_ARCHIVE_SUBDIR$(dirnum)
1447             %If %Defined($(addlDir))
1448               $(SILENT)%Set addlDir = $($(addlDir))
1449               %Foreach archiveExt in $($(SUBSYS)_OTHER_ARCHIVES$(dirnum))
1450                   $(SILENT)%Echo Getting *.$(archiveExt) files for $(add
   lDir)
1451                   $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(
   nodeDir)\$(addlDir)\*.$(archiveExt)($(BUILD_ROOT)\$(nodeDir)\$(addlDir))
1452               %Endfor
1453             %Endif
1454          %Endfor
1455
1456          %If %Defined($(Nodename)_OTHER_ARCHIVE_SUBDIRS)
1457             %Foreach addlDir in $($(Nodename)_OTHER_ARCHIVE_SUBDIRS)
1458               %Foreach archiveExt in $($(Nodename)_OTHER_ARCHIVES)
1459                  $(SILENT)%Echo Getting *.$(archiveExt) files for $(addl
   Dir)
1460                  $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(a
   ddlDir)\*.$(archiveExt)($(BUILD_ROOT)\$(addlDir))
1461               %Endfor
1462             %EndFor
1463          %Endif
1464
1465       %Endif
1466
1467 ###############################################################################
1468 #

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 114 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




1469 # Explicit target for getting Logfiles given NODENAME
1470 #
1471 Get_Logfiles:
1472 %If %Defined(NODENAME)
1473 # Build Logfile list for a specific node only
1474      %Set NODENAME = $[Upper,$(NODENAME)]
1475      %Set nodefound = 0
1476      %Foreach SUBSYS in $(SUBSYS_TYPES)
1477         %If "$(nodefound)" == "0"
1478             %Foreach nodename in $($(SUBSYS)_NODES)
1479               %If $[Upper,$[Base,$(nodename)]] == $(NODENAME)
1480                  %Set nodefound = $(nodename)
1481                  %Set nodeType = $(SUBSYS)
1482               %Endif
1483             %EndFor
1484         %Endif
1485      %Endfor
1486
1487      %If "$(nodefound)" == "0"
1488         %Echo ERROR: Invalid NODENAME specified, $(NODENAME)
1489         %Abort 89
1490      %Endif
1491
1492      $(SILENT)%Set SUBSYS = $(nodeType)
1493      $(SILENT)%Set nodeDir = $[Directory,$(nodefound)]
1494      $(SILENT)%Set Nodename = $(NODENAME)
1495      %Do Get_Node_Logfiles
1496 %Else
1497      %Echo ERROR: No NODENAME specified, operation cancelled
1498      %Abort 88
1499 %Endif
1500
1501 ###############################################################################
1502 #
1503 # Explicit target for building a directory tree
1504 #
1505 build_dir_tree:
1506 $(SILENT)%Echo Making $(DIR)
1507 $(SILENT)%Set pathComponents = $[Translate,"\\"," ",$(DIR)]
1508 $(SILENT)%Set pathname =
1509 $(SILENT)%Set firstTime = 1
1510 %Foreach pathPortion in $(pathComponents)
1511    %If "$(pathname)" != ""
1512      $(SILENT)%Set pathname+=\\
1513
1514    %Endif
1515
1516    $(SILENT)%Set pathname+=$(pathPortion)
1517    %If $(firstTime) != 1
1518      %If !%Exists($(pathname))
1519        $(SILENT)mkdir $(pathname)
1520      %Endif
1521    %Else
1522      $(SILENT)%Set firstTime = 0
1523    %Endif
1524 %EndFor
1525
1526 ###############################################################################
1527 #
1528 # Explicit target for building file list of all logfiles for node/system
1529 #
1530 build_logfile_list:
1531 %If %Defined(NODE_LOGFILE)

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 115 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




1532 # Build Logfile list for a specific node only
1533         %Set NODE_LOGFILE = $[Upper,$(NODE_LOGFILE)]
1534         %Set nodefound = 0
1535         %Foreach SUBSYS in $(SUBSYS_TYPES)
1536           %If "$(nodefound)" == "0"
1537              %Foreach nodename in $($(SUBSYS)_NODES)
1538                  %If $[Upper,$[Base,$(nodename)]] == $(NODE_LOGFILE)
1539                    %Set nodefound = $(nodename)
1540                    %Set nodeType = $(SUBSYS)
1541                  %Endif
1542              %Endfor
1543           %Endif
1544         %Endfor
1545
1546         %If "$(nodefound)" == "0"
1547           %Echo ERROR: Invalid NODE_LOGFILE specified, $(NODE_LOGFILE)
1548           %Abort 89
1549         %Endif
1550
1551         $(SILENT)echo.>Filelist.txt
1552         %Foreach sharedNode in $(SYSTEM_SHARED_NODES)
1553           %Foreach sharedExt in $(SYSTEM_SHARED_SRC_ARCHIVES)
1554              $(SILENT)Echo $(LOGFILE_ROOT)\$(sharedNode)\*.$(sharedExt) >> F
   ilelist.txt
1555           %Endfor
1556         %Endfor
1557         %Foreach sharedNode in $($(nodeType)_SHARED_NODES)
1558           %Foreach sharedExt in $($(nodeType)_SRC_ARCHIVES)
1559              $(SILENT)Echo $(LOGFILE_ROOT)\$(sharedNode)\*.$(sharedExt) >> F
   ilelist.txt
1560           %Endfor
1561         %Endfor
1562         %Foreach nodeExt in $($(nodeType)_SRC_ARCHIVES)
1563           $(SILENT)Echo $(LOGFILE_ROOT)\$[Path,$(nodefound)]*.$(nodeExt) >> F
   ilelist.txt
1564         %Endfor
1565
1566 %Else
1567         $(SILENT)echo.>Filelist.txt
1568         %Foreach sharedNode in $(SYSTEM_SHARED_NODES)
1569           %Foreach sharedExt in $(SYSTEM_SHARED_SRC_ARCHIVES)
1570              $(SILENT)Echo $(LOGFILE_ROOT)\$(sharedNode)\*.$(sharedExt) >> F
   ilelist.txt
1571           %Endfor
1572         %Endfor
1573         %Foreach SUBSYS in $(SUBSYS_TYPES)
1574           %Foreach sharedNode in $($(SUBSYS)_SHARED_NODES)
1575              %Foreach sharedExt in $($(SUBSYS)_SRC_ARCHIVES)
1576                  $(SILENT)Echo $(LOGFILE_ROOT)\$(sharedNode)\*.$(sharedExt)
   >> Filelist.txt
1577              %Endfor
1578           %Endfor
1579           %Foreach nodeName in $($(SUBSYS)_NODES)
1580              %Foreach nodeExt in $($(SUBSYS)_SRC_ARCHIVES)
1581                  $(SILENT)Echo $(LOGFILE_ROOT)\$[Path,$(nodeName)]*.$(nodeEx
   t) >> Filelist.txt
1582              %Endfor
1583           %Endfor
1584         %Endfor
1585 %Endif
1586
1587
1588

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 116 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




1589 ###############################################################################
1590 #
1591 # Explicit target for setting logfile version numbers for selected nodes
1592 #
1593 set_version_label:
1594 (Ignore)$(BATCH_DIR)\set_ver.bat $(VERSION_LABEL) $(FILE)
1595
1596
1597 ###############################################################################
1598 #
1599 # Explicit target for setting logfile version numbers for selected nodes
1600 #
1601 set_logfile_versions:
1602 %Echo Setting Version Numbers for PVCS archives
1603 #
1604 # Process Mnet, DSPnet, Laptop, Monitor DSP and Loader nodes
1605 #
1606 $(SILENT)echo Setting Logfile Versions... > $(VCS_LOGFILE)
1607 %Foreach SUBSYS in $(ALL_SUBSYS_TYPES)
1608        %Do Logfiles_Subsystem
1609 %Endfor
1610 $(SILENT)echo Operation Complete... >> $(VCS_LOGFILE)
1611
1612
1613 ###############################################################################
1614 #
1615 # Explicit target for setting logfile version numbers for selected subsystem
1616 #
1617 Logfiles_Subsystem:
1618 %If !%Defined(SKIP_$(SUBSYS)_NODES)
1619
1620 # For each node, check for the existance of the nodes _VERSION_LABEL macro
1621 # If the version label is defined, then tag the version for all affected source
    files
1622 %Foreach nodeMakefile in $($(SUBSYS)_NODES)
1623        $(SILENT)%Set Nodename = $[Upper,$[Base,$(nodeMakefile)]]
1624        $(SILENT)%Set NodeVersion = $(Nodename)_VERSION_LABEL
1625        $(SILENT)%Set NodeExistingVersion = $(Nodename)_SOURCE_VERSION_LABEL
1626        %If %Defined($(NodeVersion))
1627          $(SILENT)%Set nodeDir = $[Directory,$(nodeMakefile)]
1628          %If %Defined($(NodeExistingVersion))
1629             $(SILENT)%Set VERSION_LABEL="$(Nodename) $($(NodeVersion)):$(No
   dename) $($(NodeExistingVersion))"
1630          %Else
1631             $(SILENT)%Set VERSION_LABEL="$(Nodename) $($(NodeVersion))"
1632          %Endif
1633          %Echo Setting $(Nodename) files to version $(VERSION_LABEL)
1634          %Foreach directory in $(SYSTEM_SHARED_NODES)
1635             %Foreach extension in $(SYSTEM_SHARED_SRC_ARCHIVES)
1636               $(SILENT)%Set FILE=$(LOGFILE_ROOT)\$(directory)\*.$(extensi
   on)
1637               %Do set_version_label
1638             %Endfor
1639          %Endfor
1640
1641          $(SILENT)%Set nodes = $($(SUBSYS)_SHARED_NODES) $(nodeDir)
1642          %Foreach directory in $(nodes)
1643             %Foreach extension in $($(SUBSYS)_SRC_ARCHIVES)
1644               $(SILENT)%Set FILE=$(LOGFILE_ROOT)\$(directory)\*.$(extensi
   on)
1645               %Do set_version_label
1646             %Endfor
1647          %Endfor

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 117 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




1648
1649           %If %Defined($(Nodename)_OTHER_ARCHIVE_SUBDIRS)
1650             %Foreach directory in $($(Nodename)_OTHER_ARCHIVE_SUBDIRS)
1651                %Foreach extension in $($(Nodename)_OTHER_ARCHIVES)
1652                   $(SILENT)%Set FILE=$(LOGFILE_ROOT)\$(directory)\*.$(ext
   ension)
1653                   %Do set_version_label
1654                %Endfor
1655             %Endfor
1656           %Endif
1657
1658           %Foreach dirnum in 1 2 3 4 5 6 7 8 9 10
1659             %Set addlDir = $(SUBSYS)_OTHER_ARCHIVE_SUBDIR$(dirnum)
1660             %If %Defined($(addlDir))
1661                %Foreach extension in $($(SUBSYS)_OTHER_ARCHIVES$(dirnum))
1662                   $(SILENT)%Set FILE=$(LOGFILE_ROOT)\$(nodeDir)\$($(addlD
   ir))\*.$(extension)
1663                   %Do set_version_label
1664                %Endfor
1665             %Endif
1666           %Endfor
1667
1668        %Endif
1669 %Endfor
1670
1671 %Endif
1672
1673
1674 ###############################################################################
1675 #
1676 # Explicit target for checking which nodes utilize a given shared file
1677 #
1678 check_shared_file:
1679 %If !%Defined(SHARED_FILENAME)
1680        %Echo ERROR: SHARED_FILENAME is not defined
1681        %Abort 98
1682 %Endif
1683 %Setenv SHARED_FILENAME=$(SHARED_FILENAME)
1684 %Setenv NODE_FILELIST=$(BUILD_ROOT)\Filelist.txt
1685 %Setenv CHECK_SHARED_FILES=Yes
1686 $(SILENT)Echo List of makefiles using $(SHARED_FILENAME) > $(NODE_FILELIST)
1687 %Foreach subsystem in $(ALL_SUBSYS_TYPES)
1688        %Foreach nodeMakefile in $($(subsystem)_NODES)
1689           $(SILENT)%Set nodeDir = $[Directory,$(nodeMakefile)]
1690           $(SILENT)%Set DIR=$(BUILD_ROOT)\$(nodeDir)
1691           %Do build_dir_tree
1692           $(SILENT)(Ignore)$(GET) $(GETFLAGS) $(LOGFILE_ROOT)\$(nodeDir)\*.ma
   v($(BUILD_ROOT)\$(nodeDir)) $(LOGFILE_ROOT)\$(nodeDir)\*.mkv($(BUILD_ROOT)\$(no
   deDir))
1693           $(SILENT)$(_Exe) $(DBG_MKF_FLAGS) $(_FlagsMacros) $(BUILD_ROOT)\$(n
   odeMakefile) $(DALL) checkfile
1694        %Endfor
1695 %Endfor
1696 %Echo Scan complete
1697
1698
1699 ##############################################################################
1700 #
1701 # Useful procedure for deriving PVCS file extension from workfile extension
1702 #
1703 get_pvcs_extension:
1704 %If "$[Clip,$(extension),2,2]" == ""
1705 $(SILENT)%Set pvcsExtension = __v

                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM
Document Number: 600001-0304 Rev: A                Intuitive Surgical, Inc.–Confidential               Page 118 of 118
  Users of any printed hard copy of this document must verify that it represents the most current revision prior to use.




1706 %Elseif "$[Clip,$(extension),3,3]" == ""
1707 $(SILENT)%Set pvcsExtension = $[Clip,$(extension),2,2]_v
1708 %Elseif "$[Clip,$(extension),4,4]" == ""
1709 $(SILENT)%Set pvcsExtension = $[Clip,$(extension),2,3]v
1710 %Elseif "$[Clip,$(extension),5,5]" == ""
1711 $(SILENT)%Set pvcsExtension = $[Clip,$(extension),2,3]v
1712 %Else
1713 $(SILENT)%Set pvcsExtension = $[Clip,$(extension),2,3]v$[Clip,$(extension),
   5,5]
1714 %Endif
1715
1716 ##############################################################################
1717 #
1718 # Just a message for tracking purposes
1719 #
1720 .Init:
1721        $(SILENT)%Echo $(MKF) Version is $(DVMAK_VERSION)
1722        $(SILENT)%Echo OS Version, _System = $(_System)




                  Changes to this Document May be Viewed on the ECO Releasing it
                              7/30/2012 9:27:00 PM11/13/2002 12:23 PM

						
Related docs
Other docs by pengxiang
SHAMSHIRI GRILL
Views: 64  |  Downloads: 0
SIGN UP FOR THE DIGITAL EDITION_
Views: 77  |  Downloads: 0
2D
Views: 113  |  Downloads: 0
Amphenol - Distrelec
Views: 31  |  Downloads: 0
July
Views: 69  |  Downloads: 0
tax returns - Independent
Views: 60  |  Downloads: 0