-
-
Notifications
You must be signed in to change notification settings - Fork 217
Description
What kind of issue is this?
- PlatformIO Core.
If you’ve found a bug, please provide an information below.
You can erase any parts of this template not applicable to your Issue.
Configuration
Operating system: Win 10 x64
PlatformIO Version (platformio --version): 6.0.2a2
Description of problem
The PlatformIO core does not extract -D<macro> definitions from CCFLAGS into the e.g. VSCode Intellisense c_cpp_properties.json. Only macros in CPPDEFINES are.
Steps to Reproduce
- Create a new Nodemcuv2 + Arduino (ESP8266) project
- Add a call to
tzset();insetup()
Actual Results
Intellisense does not know about this function and highlights it as error.
Expected Results
Intellisense knows about this function since Arduino.h is included which includes time.h which says
#if __POSIX_VISIBLE
void tzset (void);
#endifIf problems with PlatformIO Build System:
The content of platformio.ini:
[env:d1_mini]
platform = espressif8266
board = d1_mini
framework = arduinoSource file to reproduce issue:
#include <Arduino.h>
#include <string.h>
#include <string>
void setup() {}
void loop()
{
const char *s = "test";
char buf[64];
strlcpy(buf, s, sizeof(buf));
setenv("TZ", "CST-8", 1);
tzset();
int res = strcasecmp("A", "a");
}Additional info
Intellisense does not recognize tzset() because that needs the _GNU_SOURCE to be defined (which through a specific chain enables POSIX_VISIBLE). The Arduino-ESP8266 build process activates that macro through CCFLAGS here and it correctly shows up in the build commands. However, the .vscode/c_cpp_properties.json does not have _GNU_SOURCE in the defines section because -D flags in CCFLAGS is not considered during the generation of this file.
I considered this fixing this by moving -D flags from CCFLAGS to CPPDEFINES, but this is then specific to Arduino-ESP8266. I think in general it would be good if the core is able to recognize this situation and relays the activated macros to the IDEs correctly. (See esp8266/Arduino#8579).