KimBP / AIS

An Arduino library able to decode AIS messages
Other
30 stars 9 forks source link

Allow this library to easy integrate in platformIO #14

Open marcelrv opened 1 month ago

marcelrv commented 1 month ago

Thanks for your library. I used it in small project: https://github.com/marcelrv/MAIANA-WiFi/

Unfortunately needed to copy the files to the project instead of directly referencing the github repository. PlatformIO somehow tries to compile all the files, inclusing the linux example one and obvious runs into all sort of issues.

With proposed small changes it excludes the linux file from the compiling (at least on esp32) so we can easier integrate it and directly reference your github.

marcelrv commented 1 month ago

Hi,

Here is the pointer to the library.json, what it does. https://docs.platformio.org/en/latest/manifests/library-json/index.html

wrt to the #ifndef I fully agree that it does not make much sense.. It is workaround for (what I consider) very odd, behaviour of the platformIO environment. If I remove these, it tries to compile those, even though in the library.json I explicitly try to avoid that which is why I included the "exclude": [ "Examples/linux/*" ], "build_src_filter": [ "+<AIS.*>", "-<Examples/**/*>" ],

The only thing I can think of is that it only considers these if the library is actually published in the platformIO repository. (I did not want to try that by publishing your library there, as it seems it is difficult to remove once published)

Compiling .pio\build\wemos_d1_mini32\lib33d\ElegantOTA\elop.cpp.o
Compiling .pio\build\wemos_d1_mini32\lib1a8\AIS\AIS.cpp.o
Compiling .pio\build\wemos_d1_mini32\lib1a8\AIS\Examples\linux\vdm_dump.cpp.o
Compiling .pio\build\wemos_d1_mini32\lib680\SPIFFS\SPIFFS.cpp.o
Compiling .pio\build\wemos_d1_mini32\lib9ec\AsyncUDP\AsyncUDP.cpp.o
Compiling .pio\build\wemos_d1_mini32\libe75\ESPmDNS\ESPmDNS.cpp.o
Archiving .pio\build\wemos_d1_mini32\lib694\libUpdate.a
Archiving .pio\build\wemos_d1_mini32\lib3f0\libWebServer.a
Archiving .pio\build\wemos_d1_mini32\libf2b\libLittleFS.a
Compiling .pio\build\wemos_d1_mini32\FrameworkArduino\Esp.cpp.o
Compiling .pio\build\wemos_d1_mini32\FrameworkArduino\FirmwareMSC.cpp.o
Compiling .pio\build\wemos_d1_mini32\FrameworkArduino\FunctionalInterrupt.cpp.o
Compiling .pio\build\wemos_d1_mini32\FrameworkArduino\HWCDC.cpp.o
Compiling .pio\build\wemos_d1_mini32\FrameworkArduino\HardwareSerial.cpp.o
Compiling .pio\build\wemos_d1_mini32\FrameworkArduino\IPAddress.cpp.o
Compiling .pio\build\wemos_d1_mini32\FrameworkArduino\IPv6Address.cpp.o
In file included from lib/AIS/Examples/linux/vdm_dump.cpp:42:
lib/AIS/Examples/linux/../../AIS.cpp:30: warning: "htonl" redefined
 #define htonl(x) ( ( ((x)<<24) & 0xFF000000UL) | \

In file included from C:/Users/marce/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/lwip/src/include/lwip/ip_addr.h:41,
                 from C:/Users/marce/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/lwip/src/include/lwip/sockets.h:46,
                 from C:/Users/marce/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/net/if.h:17,
                 from lib/AIS/Examples/linux/vdm_dump.cpp:38:
Compiling .pio\build\wemos_d1_mini32\FrameworkArduino\MD5Builder.cpp.o
C:/Users/marce/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/lwip/src/include/lwip/def.h:121: note: this is the location of the previous definition
 #define htonl(x) lwip_htonl(x)

In file included from lib/AIS/Examples/linux/vdm_dump.cpp:42:
lib/AIS/Examples/linux/../../AIS.cpp:34: warning: "htons" redefined
 #define htons(x) ( ((x)<<8) | (((x)>>8)&0xFF) )

In file included from C:/Users/marce/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/lwip/src/include/lwip/ip_addr.h:41,
                 from C:/Users/marce/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/lwip/src/include/lwip/sockets.h:46,
                 from C:/Users/marce/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/net/if.h:17,
                 from lib/AIS/Examples/linux/vdm_dump.cpp:38:
C:/Users/marce/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/lwip/src/include/lwip/def.h:119: note: this is the location of the previous definition
 #define htons(x) lwip_htons(x)

In file included from C:/Users/marce/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/lwip/src/include/lwip/ip_addr.h:43,
Compiling .pio\build\wemos_d1_mini32\FrameworkArduino\Print.cpp.o
                 from C:/Users/marce/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/lwip/src/include/lwip/sockets.h:46,
                 from C:/Users/marce/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include/net/if.h:17,
                 from lib/AIS/Examples/linux/vdm_dump.cpp:38:
C:/Users/marce/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/lwip/src/include/lwip/ip4_addr.h:63:37: error: expected ')' before numeric constant
 #define IPADDR_NONE         ((u32_t)0xffffffffUL)
                             ~       ^~~~~~~~~~~~
C:/Users/marce/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/lwip/src/include/lwip/inet.h:71:29: note: in expansion of macro 'IPADDR_NONE'
 #define INADDR_NONE         IPADDR_NONE
                             ^~~~~~~~~~~
C:/Users/marce/.platformio/packages/framework-arduinoespressif32/cores/esp32/IPAddress.h:95:18: note: in expansion of macro 'INADDR_NONE'
 extern IPAddress INADDR_NONE;
                  ^~~~~~~~~~~
lib/AIS/Examples/linux/vdm_dump.cpp: In function 'void read_stdin()':
lib/AIS/Examples/linux/vdm_dump.cpp:162:8: error: 'getline' was not declared in this scope
  while(getline(&line, &size,fd) >= 0) {
        ^~~~~~~
lib/AIS/Examples/linux/vdm_dump.cpp:162:8: note: suggested alternative:
In file included from c:\users\marce\.platformio\packages\toolchain-xtensa-esp32@8.4.0+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\string:52,
                 from c:\users\marce\.platformio\packages\toolchain-xtensa-esp32@8.4.0+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\stdexcept:39,
                 from c:\users\marce\.platformio\packages\toolchain-xtensa-esp32@8.4.0+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\array:39,
                 from c:\users\marce\.platformio\packages\toolchain-xtensa-esp32@8.4.0+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\tuple:39,
                 from c:\users\marce\.platformio\packages\toolchain-xtensa-esp32@8.4.0+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\functional:54,
                 from C:/Users/marce/.platformio/packages/framework-arduinoespressif32/cores/esp32/HardwareSerial.h:49,
                 from C:/Users/marce/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:184,
                 from lib/AIS/Examples/linux/../../AIS.h:35,
                 from lib/AIS/Examples/linux/vdm_dump.cpp:41:
c:\users\marce\.platformio\packages\toolchain-xtensa-esp32@8.4.0+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits\basic_string.h:6378:5: note:   'std::getline'
     getline(basic_istream<_CharT, _Traits>&& __is,
     ^~~~~~~
*** [.pio\build\wemos_d1_mini32\lib1a8\AIS\Examples\linux\vdm_dump.cpp.o] Error 1
================================================================== [FAILED] Took 13.77 seconds ==================================================================

 *  The terminal process "C:\Users\marce\.platformio\penv\Scripts\platformio.exe 'run'" terminated with exit code: 1.
 *