summaryrefslogtreecommitdiffstats
path: root/meta-agl-profile-graphical-html5
ModeNameSize
d---------conf38logstatsplain
d---------recipes-graphics / wayland34logstatsplain
d---------recipes-platform73logstatsplain
d---------recipes-wam65logstatsplain
a id='n150' href='#n150'>150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244
# Build using an IDE

One option for building your application using XDS is to use
an Integrated Development Environment
([IDE](https://en.wikipedia.org/wiki/Integrated_development_environment)).
Many IDEs exist (e.g. [NetBeans](https://netbeans.org/),
[Visual Studio Code](https://code.visualstudio.com/),
[Qt Creator](https://www.qt.io/),
[Eclipse](https://www.eclipse.org/), and so forth).

This section first develops an XDS configuration file
(i.e. `xds-project.conf`) and then provides two
examples, NetBeans and Visual Studio, that do the following.

- NetBeans: Creates two separate build configurations
  for a project, which makes it easy to switch back and forth
  between types of builds.

- Visual Studio: Creates tasks that allow you to build an example
  based on CMake templates.

## XDS Configuration File

This section shows how to create an XDS configuration file
(i.e. `xds-project.conf`) or how to re-use an existing file.
For example, the following commands set up the configuration
file for an `aarch64` SDK to cross-build the
application for a Renesas Gen3 board.

```bash
# create file at root directory of your project
# for example:
# MY_PROJECT_DIR=/home/seb/xds-workspace/helloworld-native-application
cat > $MY_PROJECT_DIR/xds-project.conf << EOF
 export XDS_AGENT_URL=localhost:8800
 export XDS_PROJECT_ID=4021617e-ced0-11e7-acd2-3c970e49ad9b
 export XDS_SDK_ID=c226821b-b5c0-386d-94fe-19f807946d03
EOF
```

## NetBeans

This section creates two configurations: one to compile the
project natively using native GNU gcc, and one to cross-compile
the project using XDS.

Having two configurations allows you to easily switch between them
using NetBean's **Run -> Set Project Configuration** menu.

### Native Configuration

Follow these steps to create the native configuration:

1. Open the **Tools** -> **Options** menu.

2. Open the **C/C++** tab.

3. Click on the **Add** button in the **Build Tools** sub-tab:

   ![Add new tool panel](./pictures/nb_newtool.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}

4. Fill the **Make Command** and **Debugger Command** fields to point to the XDS tools:

   ![Add new tool panel](./pictures/nb_xds_options.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}

5. Click **OK**.

6. Select the **File** -> **New Project** menu item to declare the
   project and create a native configuration.

7. Select **C/C++ Project with Existing Sources** and click on **Next**.

8. Specify your project directory and set **Select Configuration Mode** to
   "Custom".
   Be sure to keep **Tool Collection** set to "Default GNU" in order to create a
   *native configuration*, which is based on the native GNU GCC.

9. Click **Next**.

   ![Select Model panel](./pictures/nb_new-project-1.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}

10. Update the **Run in Folder** field to add the `build_native` suffix.
    Doing so results in the build files being located in the
    `build_native` sub-directory.
    Be sure to keep the defaults for all other settings and then click **Next**.

    ![Select Model panel](./pictures/nb_new-project-2.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}

11. Click through **Next** several times while always keeping the
    default settings until the **Finish** button appears.

12. Click **Finish** to complete the creation of the native configuration.

### Cross-Compilation Configuration

Follow these steps to create the configuration for cross-compilation
based on the XDS tools:

1. Edit project properties (using menu **File** -> **Project Properties**)
   to add a new configuration that will use XDS to cross-compile
   your application for example for a Renesas Gen3 board.

2. in the **Build** category, click on **Manage Configurations** button
   and then **New** button to add a new configuration named for example
   "Gen3 board".

   ![Select Build category](./pictures/nb_new-project-3.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}

3. Click the **Set Active** button.

4. Select the **Pre-Build** sub-category, and set the following:

   - Working Directory: `build_gen3`
   - Command Line: `xds-cli exec -c ../xds-project.conf -- cmake -DRSYNC_TARGET=root@renesas-gen3 -DRSYNC_PREFIX=/opt ..`
   - Pre-build First: `ticked`<br/><br/>

5. Select the **Make** sub-category, and set the following:

   - Working Directory: `build_gen3`
   - Build Command: `xds-cli exec -c ../xds-project.conf -- make remote-target-populate`
   - Clean Command: `xds-cli exec -c ../xds-project.conf -- make clean`<br/><br/>

   ![Select Make sub-category](./pictures/nb_new-project-4.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}

6. Select the **Run** sub-category, and set the following:

   - Run Command: `target/start-on-root@renesas-gen3.sh`
   - Run Directory: `build-gen3`<br/><br/>

   ![Select Run  sub-category](./pictures/nb_new-project-5.png){:: style="width:90%; max-width:700px; margin:auto; display:flex"}

7. Click **OK** to save settings.

By changing the configuration from **Default** to **Gen3 board**, you can
compile your helloworld application natively, which is the default configuration.
Or, you can cross-compile your application using XDS for the Renesas Gen3 board,
which is the Gen3 board configuration.

## Visual Studio Code

This section presents a Visual Studio example that creates tasks
that allow you to build an example that is based on CMake templates.

Follow these steps:

1. Start Visual Studio Code and open your project using the
   following commands:

   ```bash
   cd $MY_PROJECT_DIR
   code . &
   ```

2. Add new tasks by entering the `Ctrl+Shift+P` key combination and selecting
   the `Tasks: Configure Task` command.
   A list of task runner templates appears.

3. Define your own tasks.
   Following is an example that builds the
   [helloworld-native-application](https://github.com/iotbzh/helloworld-native-application)
   that is based on CMake templates.

   ```json
   {
       "version": "2.0.0",
       "type": "shell",
       "presentation": {
           "reveal": "always"
       },
       "tasks": [
           {
               "label": "clean",
               "type": "shell",
               "command": "/bin/rm -rf ${workspaceFolder}/build/* && mkdir -p build && echo Cleanup done.",
               "problemMatcher": []
           },
           {
               "label": "pre-build",
               "type": "shell",
               "group": "build",
               "command": "/opt/AGL/bin/xds-cli exec --rpath build --config xds-project.conf -- cmake -DRSYNC_TARGET=root@renesas-gen3 -DRSYNC_PREFIX=/opt ../",
               "problemMatcher": [
                   "$gcc"
               ]
           },
           {
               "label": "build",
               "type": "shell",
               "group": "build",
               "command": "/opt/AGL/bin/xds-cli exec --rpath build --config xds-project.conf -- make widget",
               "problemMatcher": [
                   "$gcc"
               ]
           },
           {
               "label": "populate",
               "type": "shell",
               "command": "/opt/AGL/bin/xds-cli exec --rpath build --config xds-project.conf -- make widget-target-install",
               "problemMatcher": []
           }
       ]
   }
   ```

4. Run a task by entering the `Ctrl+Shift+P` key combination and
   selecting `Tasks: Run task` and then selecting the specific task.
   For example, select `pre-build` to trigger pre-build task.

5. Optionally add keybindings that trigger tasks.
   Following is an example:

   ```json
   // Build
   {
     "key": "alt+f9",
     "command": "workbench.action.tasks.runTask",
     "args": "clean"
   },
   {
     "key": "alt+f10",
     "command": "workbench.action.tasks.runTask",
     "args": "pre-build"
   },
   {
     "key": "alt+f11",
     "command": "workbench.action.tasks.runTask",
     "args": "build"
   },
   {
     "key": "alt+f12",
     "command": "workbench.action.tasks.runTask",
     "args": "populate"
   },
   ```

   <!-- section-note -->
   **NOTES:**

   - You can find more details about Visual Source Code keybindings
     [here](https://code.visualstudio.com/docs/editor/tasks#_binding-keyboard-shortcuts-to-tasks).

   - You can find more details about Visual Source Code tasks
     [here](https://code.visualstudio.com/docs/editor/tasks).
   <!-- end-section-note -->