vscode-cpptools icon indicating copy to clipboard operation
vscode-cpptools copied to clipboard

Support SDCC as compiler

Open maxgerhardt opened this issue 4 years ago • 13 comments

Type: LanguageService

This issue is closely related to #2499 but more general. The linked issue talks requests that VSCode supports some of SDCC compiler's syntax for Intel 8051 projects. This issue requests that SDCC is generally a supported and recognized compiler in VSCode's C/C++ extension, since SDCC can do much more (compile code for STM8, Z80, PIC14, PIC16, etc.).

Describe the bug

  • OS and Version: Windows 10 x64
  • VS Code Version: 1.54.1
  • C/C++ Extension Version: 1.2.2
  • Other extensions you installed (and if the issue persists after disabling them): PlatformIO (2.3.0)
  • Does this issue involve using SSH remote to run the extension on a remote machine?: No
  • A clear and concise description of what the bug is, including information about the workspace (i.e. is the workspace a single project or multiple projects, size of the project, etc).:
    • When using SDCC as the compiler in the compilerPath of the .vscode/c_cpp_properties.json file, it is not being recongized correctly with the message "Unable to resolve configuration with compilerPath [..]/sdcc.exe. Using cl.exe instead."

Steps to reproduce

  1. (Note: I'm using PlatformIO to generate a project, auto-download SDCC and auto-generate the c_cpp_properties.json that is causing issues)
  2. Install the PlatformIO extension
  3. Create a new project for the STM8Blue board and SPL as framework
  4. Switch to the newly created project
  5. Change the platformio.ini of the project to
[env:stm8sblue]
platform = ststm8
board = stm8sblue
  1. Press Ctrl+Shift+P -> Rebuild IntelliSense
  2. Observe generated .vscode/c_cpp_properties.json containing SDCC in the compilerPath, example:
//
// !!! WARNING !!! AUTO-GENERATED FILE!
// PLEASE DO NOT MODIFY IT AND USE "platformio.ini":
// https://docs.platformio.org/page/projectconf/section_env_build.html#build-flags
//
{
    "configurations": [
        {
            "name": "PlatformIO",
            "includePath": [
                "C:/Users/Max/Documents/PlatformIO/Projects/stm8_testing/include",
                "C:/Users/Max/Documents/PlatformIO/Projects/stm8_testing/src",
                "C:/Users/Max/.platformio/packages/tool-unity",
                ""
            ],
            "browse": {
                "limitSymbolsToIncludedHeaders": true,
                "path": [
                    "C:/Users/Max/Documents/PlatformIO/Projects/stm8_testing/include",
                    "C:/Users/Max/Documents/PlatformIO/Projects/stm8_testing/src",
                    "C:/Users/Max/.platformio/packages/tool-unity",
                    ""
                ]
            },
            "defines": [
                "F_CPU=16000000L",
                "PLATFORMIO=50101",
                "STM8S_BLUE",
                "STM8S103",
                ""
            ],
            "compilerPath": "C:/Users/Max/.platformio/packages/toolchain-sdcc/bin/sdcc.exe",
            "compilerArgs": [
                "-mstm8",
                ""
            ]
        }
    ],
    "version": 4
}

Expected behavior

The SDCC compiler is recongized correctly in VSCode and compiler-specific includes like `#include "mcs51/8051.h" are recongized, and special SDCC syntax for e.g. special function registers (SFRs) and interrupt definitions are recongized.

  1. Logs from the command C/C++: Log Diagnostics: None relevant -- see below
  2. Logs from the language server: None relevant: see below

Actual behavior

Error message in the "C/C++ Configuration warnings" output tab:

[10.3.2021, 20:14:57] Die Konfiguration mit compilerPath "C:/Users/Max/.platformio/packages/toolchain-sdcc/bin/sdcc.exe" kann nicht aufgelöst werden. Stattdessen wird "cl.exe" verwendet.

Translates to

Unable to resolve configuration with compilerPath [..]/sdcc.exe. Using cl.exe instead."

Due to that of course, nothing SDCC specific like the compiler-specific includes or syntaxes are displayed correctly in VSCode.

Screenshots None relevant

maxgerhardt avatar Mar 10 '21 19:03 maxgerhardt

Related to https://github.com/microsoft/vscode-cpptools/issues/6677 .

sean-mcmanus avatar Mar 10 '21 20:03 sean-mcmanus

This feature request has received enough votes to be added to our backlog.

github-actions[bot] avatar May 09 '21 12:05 github-actions[bot]

What's going on here? People still use SDCC and VSCode, I really want to see VSCode add support for SDCC.

45gfg9 avatar Feb 12 '22 15:02 45gfg9

any update?

ArvoGuo avatar Feb 14 '23 16:02 ArvoGuo

@ArvoGuo No update.

sean-mcmanus avatar Feb 14 '23 23:02 sean-mcmanus

+1

jmjoy avatar Dec 10 '23 00:12 jmjoy

+1

syx-413 avatar Dec 30 '23 12:12 syx-413

+1

Any update?

abobija avatar Jun 02 '24 19:06 abobija

+1

Any update?

rushairer avatar Jul 04 '24 02:07 rushairer

There is already an addon for that https://marketplace.visualstudio.com/items?itemName=CL.eide

please close.

mrx23dot avatar Jul 11 '24 11:07 mrx23dot

+1

Any update?

Tentou-Reikie avatar Sep 24 '24 03:09 Tentou-Reikie

I would +1 this.

davemoore22 avatar May 16 '25 19:05 davemoore22

+1 Hard to believe this still isn't done. Aren't there any other compilers that would benefit from some simple customization for the C/C++ extension syntax? This seems pretty easy to do.

rjstone avatar Jun 03 '25 20:06 rjstone

+1 no changes for 5 years already

levshx avatar Jun 27 '25 07:06 levshx

Sad to see, that 4 years and 3 months later for this issue, or rather 7 years later for https://github.com/microsoft/vscode-cpptools/issues/2499, the best we have for SDCC coding in VSCode is #define'ing the missing syntax to an empty expression. The fundamental backlog issue https://github.com/microsoft/vscode-cpptools/issues/6677#issuecomment-833484970 hasn't been woked on?

maxgerhardt avatar Jun 27 '25 12:06 maxgerhardt

@maxgerhardt I think the main feature request that covers all these specifics is probably #6931

rjstone avatar Jun 28 '25 21:06 rjstone