tomm / fab-agon-emulator

Agon Light, Agon Light 2, Agon Console8 Emulator for Linux, Windows, any system with libSDL
GNU General Public License v3.0
82 stars 19 forks source link

Make fails with undefined reference to `pthread_create' #16

Closed oldpatientsea closed 6 months ago

oldpatientsea commented 10 months ago

Make fails with undefined reference to `pthread_create' for me.

OS: Debian 11.8 gcc version: gcc (Debian 10.2.1-6) 10.2.1 20210110

Adding -pthread to the flags in src/vdp/Makefile and adding the flags to the instructions for test_main makes it compile although I am uncertain if there are any potential side effects and if it might not be better to simply add -pthread to test_main to minimise the scope. I'll leave that to your judgement.

diff --git a/src/vdp/Makefile b/src/vdp/Makefile
index c0c0d09..7c394e5 100644
--- a/src/vdp/Makefile
+++ b/src/vdp/Makefile
@@ -1,5 +1,5 @@
 CXX ?= g++
-CFLAGS = -Wall -O2 -fmax-errors=1 -std=c++11 -g -I. -I./dispdrivers -I./userspace-vdp-gl/src -I./userspace-vdp-gl/src/userspace-platform -I./userspace-vdp-gl/src/dispdrivers
+CFLAGS = -Wall -O2 -fmax-errors=1 -std=c++11 -pthread -g -I. -I./dispdrivers -I./userspace-vdp-gl/src -I./userspace-vdp-gl/src/userspace-platform -I./userspace-vdp-gl/src/dispdrivers
 OPTIONS = 

 SRCS = rust_glue.cpp
@@ -15,7 +15,7 @@ userspace-vdp-gl/vdp_gl.a:
        $(MAKE) -C userspace-vdp-gl/src

 test_main: $(OBJS) userspace-vdp-gl/vdp_gl.a vdp_quark104.o test_main.o
-       $(CXX) $(OBJS) test_main.o vdp-1.03.o userspace-vdp-gl/src/vdp-gl.a -o test_main
+       $(CXX) $(CFLAGS) $(OBJS) test_main.o vdp-1.03.o userspace-vdp-gl/src/vdp-gl.a -o test_main

 vdp_console8.so: $(OBJS) userspace-vdp-gl/vdp_gl.a vdp-console8.o
        $(CXX) -shared $(OBJS) vdp-console8.o userspace-vdp-gl/src/vdp-gl.a -o vdp_console8.so

New emulator looks great now! Nice work!

TheMostDifficultStep commented 10 months ago

Ah! I have this same issue, Linux Mint 20.3. GCC 9.4.0-1ubuntu1~20.4, rustc 1.73.0

tomm commented 10 months ago

Thanks! I added -lpthread just to test_main. Hope that's sufficient :crossed_fingers:

oldpatientsea commented 10 months ago

I've just tested this and - on Debian 11 - just adding to test_main is indeed sufficient - however it needs to be -pthread not -lpthread

Interesting Stack Overflow on the difference: https://stackoverflow.com/questions/23250863/difference-between-pthread-and-lpthread-while-compiling

To quote it, -pthread tells the compiler to link in the pthread library as well as configure the compilation for threads. Using the -lpthread option only causes the pthread library to be linked - the pre-defined macros don't get defined.

fayep commented 10 months ago

I can confirm that this works and that -pthread is available on clang too.

fayep commented 10 months ago

This change is required before applying my current patch for it to work on Mac.

gianlucarenzi commented 10 months ago

As today, on Debian 11.8 there is some issue on compiling. Please if cargo version is important (like the original agon-light-emulator, please note it clearly. Now the logs from a build: git clone https://github.com/tomm/fab-agon-emulator Cloning into 'fab-agon-emulator'... remote: Enumerating objects: 697, done. remote: Counting objects: 100% (108/108), done. remote: Compressing objects: 100% (57/57), done. remote: Total 697 (delta 59), reused 87 (delta 51), pack-reused 589 Receiving objects: 100% (697/697), 686.03 KiB | 5.04 MiB/s, done. Resolving deltas: 100% (411/411), done. ~/packages\> cd fab-agon-emulator/ ~/packages/fab-agon-emulator\> git submodule update --init Submodule 'sdcard' (https://github.com/tomm/popup-mos.git) registered for path 'sdcard' Submodule 'src/vdp/userspace-vdp-gl' (https://github.com/tomm/userspace-vdp-gl.git) registered for path 'src/vdp/userspace-vdp-gl' Cloning into '/home/gianluca/packages/fab-agon-emulator/sdcard'... Cloning into '/home/gianluca/packages/fab-agon-emulator/src/vdp/userspace-vdp-gl'... Submodule path 'sdcard': checked out '4f8c7da801f588fbda3407bf6fbdfdd12807d626' Submodule path 'src/vdp/userspace-vdp-gl': checked out 'f1fa3842ec3fb53acd2df5550a19fcdde5f2553f' ~/packages/fab-agon-emulator\> make make -C src/vdp make[1]: Entering directory '/home/gianluca/packages/fab-agon-emulator/src/vdp' make -C userspace-vdp-gl/src make[2]: Entering directory '/home/gianluca/packages/fab-agon-emulator/src/vdp/userspace-vdp-gl/src' g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c canvas.cpp -o canvas.o g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c codepages.cpp -o codepages.o In file included from codepages.cpp:27: codepages.h: In static member function ‘static const fabgl::CodePage* fabgl::CodePages::get(uint16_t, const fabgl::CodePage*)’: codepages.h:67:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 67 | for (int i = 0; i < sizeof(CodePage) / sizeof(CodePage*); ++i) | ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c collisiondetector.cpp -o collisiondetector.o g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c devdrivers/kbdlayouts.cpp -o devdrivers/kbdlayouts.o g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c devdrivers/keyboard.cpp -o devdrivers/keyboard.o In file included from devdrivers/keyboard.h:41, from devdrivers/keyboard.cpp:38: ./codepages.h: In static member function ‘static const fabgl::CodePage* fabgl::CodePages::get(uint16_t, const fabgl::CodePage*)’: ./codepages.h:67:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 67 | for (int i = 0; i < sizeof(CodePage) / sizeof(CodePage*); ++i) | ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ devdrivers/keyboard.cpp: In member function ‘bool fabgl::Keyboard::setLEDs(bool, bool, bool)’: devdrivers/keyboard.cpp:190:1: warning: no return statement in function returning non-void [-Wreturn-type] 190 | } | ^ devdrivers/keyboard.cpp: In member function ‘bool fabgl::Keyboard::blockingGetVirtualKey(fabgl::VirtualKeyItem*)’: devdrivers/keyboard.cpp:554:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 554 | for (int i = 0; i < sizeof(PAUSECODES); ++i) { | ~~^~~~~~~~~~~~~~~~~~~~ g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c devdrivers/soundgen.cpp -o devdrivers/soundgen.o g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c dispdrivers/vga16controller.cpp -o dispdrivers/vga16controller.o g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c dispdrivers/vga2controller.cpp -o dispdrivers/vga2controller.o g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c dispdrivers/vga4controller.cpp -o dispdrivers/vga4controller.o g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c dispdrivers/vga8controller.cpp -o dispdrivers/vga8controller.o g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c dispdrivers/vgabasecontroller.cpp -o dispdrivers/vgabasecontroller.o g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c dispdrivers/vgacontroller.cpp -o dispdrivers/vgacontroller.o dispdrivers/vgacontroller.cpp: In member function ‘virtual void fabgl::VGAController::VScroll(int, fabgl::Rect&)’: dispdrivers/vgacontroller.cpp:280:9: warning: variable ‘viewPortBuffersPerLine’ set but not used [-Wunused-but-set-variable] 280 | int viewPortBuffersPerLine = 0; | ^~~~~~~~~~~~~~~~~~~~~~ dispdrivers/vgacontroller.cpp:281:9: warning: variable ‘linePos’ set but not used [-Wunused-but-set-variable] 281 | int linePos = 1; | ^~~~~~~ dispdrivers/vgacontroller.cpp:301:15: warning: unused variable ‘Y1’ [-Wunused-variable] 301 | const int Y1 = paintState().scrollingRegion.Y1; | ^~ dispdrivers/vgacontroller.cpp:302:15: warning: unused variable ‘Y2’ [-Wunused-variable] 302 | const int Y2 = paintState().scrollingRegion.Y2; | ^~ g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c dispdrivers/vgapalettedcontroller.cpp -o dispdrivers/vgapalettedcontroller.o In file included from dispdrivers/vgapalettedcontroller.cpp:43: dispdrivers/vgapalettedcontroller.h: In constructor ‘fabgl::VGAPalettedController::VGAPalettedController(int, int, fabgl::NativePixelFormat, int, int, intr_handler_t)’: dispdrivers/vgapalettedcontroller.h:177:31: warning: ‘fabgl::VGAPalettedController::m_isrHandler’ will be initialized after [-Wreorder] 177 | intr_handler_t m_isrHandler; | ^~~~~~~~~~~~ dispdrivers/vgapalettedcontroller.h:138:31: warning: ‘void* fabgl::VGAPalettedController::m_primitiveExecTask’ [-Wreorder] 138 | TaskHandle_t m_primitiveExecTask; | ^~~~~~~~~~~~~~~~~~~ dispdrivers/vgapalettedcontroller.cpp:74:1: warning: when initialized here [-Wreorder] 74 | VGAPalettedController::VGAPalettedController(int linesCount, int columnsQuantum, NativePixelFormat nativePixelFormat, int viewPortRatioDiv, int viewPortRatioMul, intr_handler_t isrHandler) | ^~~~~~~~~~~~~~~~~~~~~ g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c displaycontroller.cpp -o displaycontroller.o g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c fabfonts.cpp -o fabfonts.o g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c fabutils.cpp -o fabutils.o fabutils.cpp: In member function ‘bool fabgl::TimeOut::expired(int)’: fabutils.cpp:79:31: warning: comparison of integer expressions of different signedness: ‘long unsigned int’ and ‘int’ [-Wsign-compare] 79 | return (millis() - m_start) > valueMS; | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~ g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c terminal.cpp -o terminal.o In file included from devdrivers/keyboard.h:41, from terminal.h:49, from fabgl.h:313, from terminal.cpp:51: ./codepages.h: In static member function ‘static const fabgl::CodePage* fabgl::CodePages::get(uint16_t, const fabgl::CodePage*)’: ./codepages.h:67:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 67 | for (int i = 0; i < sizeof(CodePage) / sizeof(CodePage*); ++i) | ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ terminal.cpp: In member function ‘virtual size_t fabgl::Terminal::write(const uint8_t*, size_t)’: terminal.cpp:1997:21: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare] 1997 | for (int i = 0; i < size; ++i) | ~~^~~~~~ terminal.cpp: In member function ‘void fabgl::Terminal::consumeFabGLSeq()’: terminal.cpp:3997:12: warning: variable ‘mode’ set but not used [-Wunused-but-set-variable] 3997 | auto mode = GPIO_MODE_DISABLE; | ^~~~ terminal.cpp:4032:12: warning: unused variable ‘level’ [-Wunused-variable] 4032 | auto level = (l == 1 || l == '1' || l == 'H') ? 1 : 0; | ^~~~~ terminal.cpp:4033:12: warning: unused variable ‘gpio’ [-Wunused-variable] 4033 | auto gpio = (gpio_num_t) extGetIntParam(); | ^~~~ terminal.cpp:4049:12: warning: unused variable ‘gpio’ [-Wunused-variable] 4049 | auto gpio = (gpio_num_t) extGetIntParam(); | ^~~~ terminal.cpp:4155:14: warning: unused variable ‘dispctrl’ [-Wunused-variable] 4155 | auto dispctrl = static_cast<BitmappedDisplayController*>(m_displayController); | ^~~~~~~~ terminal.cpp:4153:12: warning: unused variable ‘value’ [-Wunused-variable] 4153 | bool value = (extGetByteParam() == '1'); | ^~~~~ terminal.cpp: At global scope: terminal.cpp:489:13: warning: ‘void fabgl::uartFlushRXFIFO()’ defined but not used [-Wunused-function] 489 | static void uartFlushRXFIFO() | ^~~~~~~~~~~~~~~ terminal.cpp:478:13: warning: ‘void fabgl::uartFlushTXFIFO()’ defined but not used [-Wunused-function] 478 | static void uartFlushTXFIFO() | ^~~~~~~~~~~~~~~ g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c terminfo.cpp -o terminfo.o In file included from devdrivers/keyboard.h:41, from terminfo.h:37, from terminfo.cpp:27: ./codepages.h: In static member function ‘static const fabgl::CodePage* fabgl::CodePages::get(uint16_t, const fabgl::CodePage*)’: ./codepages.h:67:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 67 | for (int i = 0; i < sizeof(CodePage) / sizeof(CodePage*); ++i) | ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c userspace-platform/esp32time.cpp -o userspace-platform/esp32time.o g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c userspace-platform/fake_misc.cpp -o userspace-platform/fake_misc.o g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c userspace-platform/heap_allocator.cpp -o userspace-platform/heap_allocator.o g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c userspace-platform/Stream.cpp -o userspace-platform/Stream.o g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c userspace-platform/HardwareSerial.cpp -o userspace-platform/HardwareSerial.o g++ -Wall -O2 -fPIC -DUSERSPACE -g -std=c++11 -I. -I./dispdrivers -I./userspace-platform -c userspace-platform/ps2controller.cpp -o userspace-platform/ps2controller.o In file included from ./devdrivers/keyboard.h:41, from userspace-platform/ps2controller.cpp:2: ./codepages.h: In static member function ‘static const fabgl::CodePage* fabgl::CodePages::get(uint16_t, const fabgl::CodePage*)’: ./codepages.h:67:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 67 | for (int i = 0; i < sizeof(CodePage) / sizeof(CodePage*); ++i) | ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ar -rcs vdp-gl.a canvas.o codepages.o collisiondetector.o devdrivers/kbdlayouts.o devdrivers/keyboard.o devdrivers/soundgen.o dispdrivers/vga16controller.o dispdrivers/vga2controller.o dispdrivers/vga4controller.o dispdrivers/vga8controller.o dispdrivers/vgabasecontroller.o dispdrivers/vgacontroller.o dispdrivers/vgapalettedcontroller.o displaycontroller.o fabfonts.o fabutils.o terminal.o terminfo.o userspace-platform/esp32time.o userspace-platform/fake_misc.o userspace-platform/heap_allocator.o userspace-platform/Stream.o userspace-platform/HardwareSerial.o userspace-platform/ps2controller.o make[2]: Leaving directory '/home/gianluca/packages/fab-agon-emulator/src/vdp/userspace-vdp-gl/src' g++ -Wall -O2 -fmax-errors=1 -std=c++11 -g -I. -I./dispdrivers -I./userspace-vdp-gl/src -I./userspace-vdp-gl/src/userspace-platform -I./userspace-vdp-gl/src/dispdrivers -fPIC -c rust_glue.cpp -o rust_glue.o In file included from ./userspace-vdp-gl/src/devdrivers/keyboard.h:41, from ./userspace-vdp-gl/src/terminal.h:49, from ./userspace-vdp-gl/src/fabgl.h:313, from rust_glue.cpp:3: ./userspace-vdp-gl/src/codepages.h: In static member function ‘static const fabgl::CodePage* fabgl::CodePages::get(uint16_t, const fabgl::CodePage*)’: ./userspace-vdp-gl/src/codepages.h:67:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 67 | for (int i = 0; i < sizeof(CodePage) / sizeof(CodePage*); ++i) | ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ g++ -Wall -O2 -fmax-errors=1 -std=c++11 -g -I. -I./dispdrivers -I./userspace-vdp-gl/src -I./userspace-vdp-gl/src/userspace-platform -I./userspace-vdp-gl/src/dispdrivers -fPIC -c vdp-console8.cpp -o vdp-console8.o In file included from ./userspace-vdp-gl/src/devdrivers/keyboard.h:41, from ./userspace-vdp-gl/src/terminal.h:49, from ./userspace-vdp-gl/src/fabgl.h:313, from vdp-console8.h:2, from vdp-console8.cpp:5: ./userspace-vdp-gl/src/codepages.h: In static member function ‘static const fabgl::CodePage* fabgl::CodePages::get(uint16_t, const fabgl::CodePage*)’: ./userspace-vdp-gl/src/codepages.h:67:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 67 | for (int i = 0; i < sizeof(CodePage) / sizeof(CodePage*); ++i) | ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from vdp-console8/agon_keyboard.h:8, from vdp-console8/video.ino:57, from vdp-console8.cpp:12: vdp-console8/vdp_protocol.h: In function ‘int readByte_t()’: vdp-console8/vdp_protocol.h:46:6: warning: unused variable ‘i’ [-Wunused-variable] 46 | int i; | ^ In file included from vdp-console8/video.ino:59, from vdp-console8.cpp:12: vdp-console8/graphics.h: In function ‘void sendModeInformation()’: vdp-console8/graphics.h:31:11: warning: narrowing conversion of ‘(canvasW & 255)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 31 | canvasW & 0xFF, // Width in pixels (L) | ~~~~~~~~^~~~~~ vdp-console8/graphics.h:32:18: warning: narrowing conversion of ‘((canvasW >> 8) & 255)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 32 | (canvasW >> 8) & 0xFF, // Width in pixels (H) | ~~~~~~~~~~~~~~~^~~~~~ vdp-console8/graphics.h:33:11: warning: narrowing conversion of ‘(canvasH & 255)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 33 | canvasH & 0xFF, // Height in pixels (L) | ~~~~~~~~^~~~~~ vdp-console8/graphics.h:34:18: warning: narrowing conversion of ‘((canvasH >> 8) & 255)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 34 | (canvasH >> 8) & 0xFF, // Height in pixels (H) | ~~~~~~~~~~~~~~~^~~~~~ vdp-console8/graphics.h:35:11: warning: narrowing conversion of ‘(canvasW / fontW)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 35 | canvasW / fontW, // Width in characters (byte) | ~~~~~~~~^~~~~~~ vdp-console8/graphics.h:36:11: warning: narrowing conversion of ‘(canvasH / fontH)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 36 | canvasH / fontH, // Height in characters (byte) | ~~~~~~~~^~~~~~~ vdp-console8/graphics.h:37:20: warning: narrowing conversion of ‘getVGAColourDepth()’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 37 | getVGAColourDepth(), // Colour depth | ~~~~~~~~~~~~~~~~~^~ vdp-console8/graphics.h:38:3: warning: narrowing conversion of ‘videoMode’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 38 | videoMode, // The video mode number | ^~~~~~~~~ In file included from ./userspace-vdp-gl/src/fabfonts.h:32, from ./userspace-vdp-gl/src/fabgl.h:312, from vdp-console8.h:2, from vdp-console8.cpp:5: vdp-console8/graphics.h: In function ‘int change_mode(int)’: ./userspace-vdp-gl/src/fabglconf.h:210:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 210 | #define SVGA_1024x768_60Hz "\"1024x768@60Hz\" 65 1024 1048 1184 1344 768 771 777 806 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:210:28: note: in definition of macro ‘SVGA_1024x768_60Hz’ 210 | #define SVGA_1024x768_60Hz "\"1024x768@60Hz\" 65 1024 1048 1184 1344 768 771 777 806 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:198:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 198 | #define VGA_640x480_60Hz "\"640x480@60Hz\" 25.175 640 656 752 800 480 490 492 525 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:198:26: note: in definition of macro ‘VGA_640x480_60Hz’ 198 | #define VGA_640x480_60Hz "\"640x480@60Hz\" 25.175 640 656 752 800 480 490 492 525 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:195:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 195 | #define VGA_512x384_60Hz "\"512x384@60Hz\" 32.5 512 524 592 672 384 385 388 403 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:195:26: note: in definition of macro ‘VGA_512x384_60Hz’ 195 | #define VGA_512x384_60Hz "\"512x384@60Hz\" 32.5 512 524 592 672 384 385 388 403 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:198:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 198 | #define VGA_640x480_60Hz "\"640x480@60Hz\" 25.175 640 656 752 800 480 490 492 525 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:198:26: note: in definition of macro ‘VGA_640x480_60Hz’ 198 | #define VGA_640x480_60Hz "\"640x480@60Hz\" 25.175 640 656 752 800 480 490 492 525 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:177:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 177 | #define VGA_320x200_75Hz "\"320x200@75Hz\" 12.93 320 352 376 408 200 208 211 229 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:177:26: note: in definition of macro ‘VGA_320x200_75Hz’ 177 | #define VGA_320x200_75Hz "\"320x200@75Hz\" 12.93 320 352 376 408 200 208 211 229 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:198:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 198 | #define VGA_640x480_60Hz "\"640x480@60Hz\" 25.175 640 656 752 800 480 490 492 525 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:198:26: note: in definition of macro ‘VGA_640x480_60Hz’ 198 | #define VGA_640x480_60Hz "\"640x480@60Hz\" 25.175 640 656 752 800 480 490 492 525 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:198:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 198 | #define VGA_640x480_60Hz "\"640x480@60Hz\" 25.175 640 656 752 800 480 490 492 525 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:198:26: note: in definition of macro ‘VGA_640x480_60Hz’ 198 | #define VGA_640x480_60Hz "\"640x480@60Hz\" 25.175 640 656 752 800 480 490 492 525 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from vdp-console8/video.ino:56, from vdp-console8.cpp:12: vdp-console8/agon.h:140:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 140 | #define VGA_640x240_60Hz "\"640x240@60Hz\" 25.175 640 656 752 800 240 245 247 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vdp-console8/agon.h:140:26: note: in definition of macro ‘VGA_640x240_60Hz’ 140 | #define VGA_640x240_60Hz "\"640x240@60Hz\" 25.175 640 656 752 800 240 245 247 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vdp-console8/agon.h:140:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 140 | #define VGA_640x240_60Hz "\"640x240@60Hz\" 25.175 640 656 752 800 240 245 247 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vdp-console8/agon.h:140:26: note: in definition of macro ‘VGA_640x240_60Hz’ 140 | #define VGA_640x240_60Hz "\"640x240@60Hz\" 25.175 640 656 752 800 240 245 247 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vdp-console8/agon.h:140:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 140 | #define VGA_640x240_60Hz "\"640x240@60Hz\" 25.175 640 656 752 800 240 245 247 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vdp-console8/agon.h:140:26: note: in definition of macro ‘VGA_640x240_60Hz’ 140 | #define VGA_640x240_60Hz "\"640x240@60Hz\" 25.175 640 656 752 800 240 245 247 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vdp-console8/agon.h:140:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 140 | #define VGA_640x240_60Hz "\"640x240@60Hz\" 25.175 640 656 752 800 240 245 247 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vdp-console8/agon.h:140:26: note: in definition of macro ‘VGA_640x240_60Hz’ 140 | #define VGA_640x240_60Hz "\"640x240@60Hz\" 25.175 640 656 752 800 240 245 247 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ./userspace-vdp-gl/src/fabfonts.h:32, from ./userspace-vdp-gl/src/fabgl.h:312, from vdp-console8.h:2, from vdp-console8.cpp:5: ./userspace-vdp-gl/src/fabglconf.h:183:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 183 | #define QVGA_320x240_60Hz "\"320x240@60Hz\" 12.6 320 328 376 400 240 245 246 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:183:27: note: in definition of macro ‘QVGA_320x240_60Hz’ 183 | #define QVGA_320x240_60Hz "\"320x240@60Hz\" 12.6 320 328 376 400 240 245 246 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:183:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 183 | #define QVGA_320x240_60Hz "\"320x240@60Hz\" 12.6 320 328 376 400 240 245 246 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:183:27: note: in definition of macro ‘QVGA_320x240_60Hz’ 183 | #define QVGA_320x240_60Hz "\"320x240@60Hz\" 12.6 320 328 376 400 240 245 246 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:183:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 183 | #define QVGA_320x240_60Hz "\"320x240@60Hz\" 12.6 320 328 376 400 240 245 246 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:183:27: note: in definition of macro ‘QVGA_320x240_60Hz’ 183 | #define QVGA_320x240_60Hz "\"320x240@60Hz\" 12.6 320 328 376 400 240 245 246 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:183:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 183 | #define QVGA_320x240_60Hz "\"320x240@60Hz\" 12.6 320 328 376 400 240 245 246 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:183:27: note: in definition of macro ‘QVGA_320x240_60Hz’ 183 | #define QVGA_320x240_60Hz "\"320x240@60Hz\" 12.6 320 328 376 400 240 245 246 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:174:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 174 | #define VGA_320x200_70Hz "\"320x200@70Hz\" 12.5875 320 328 376 400 200 206 207 224 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:174:26: note: in definition of macro ‘VGA_320x200_70Hz’ 174 | #define VGA_320x200_70Hz "\"320x200@70Hz\" 12.5875 320 328 376 400 200 206 207 224 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:174:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 174 | #define VGA_320x200_70Hz "\"320x200@70Hz\" 12.5875 320 328 376 400 200 206 207 224 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:174:26: note: in definition of macro ‘VGA_320x200_70Hz’ 174 | #define VGA_320x200_70Hz "\"320x200@70Hz\" 12.5875 320 328 376 400 200 206 207 224 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:174:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 174 | #define VGA_320x200_70Hz "\"320x200@70Hz\" 12.5875 320 328 376 400 200 206 207 224 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:174:26: note: in definition of macro ‘VGA_320x200_70Hz’ 174 | #define VGA_320x200_70Hz "\"320x200@70Hz\" 12.5875 320 328 376 400 200 206 207 224 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:174:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 174 | #define VGA_320x200_70Hz "\"320x200@70Hz\" 12.5875 320 328 376 400 200 206 207 224 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:174:26: note: in definition of macro ‘VGA_320x200_70Hz’ 174 | #define VGA_320x200_70Hz "\"320x200@70Hz\" 12.5875 320 328 376 400 200 206 207 224 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:204:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 204 | #define SVGA_800x600_60Hz "\"800x600@60Hz\" 40 800 840 968 1056 600 601 605 628 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:204:27: note: in definition of macro ‘SVGA_800x600_60Hz’ 204 | #define SVGA_800x600_60Hz "\"800x600@60Hz\" 40 800 840 968 1056 600 601 605 628 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:204:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 204 | #define SVGA_800x600_60Hz "\"800x600@60Hz\" 40 800 840 968 1056 600 601 605 628 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:204:27: note: in definition of macro ‘SVGA_800x600_60Hz’ 204 | #define SVGA_800x600_60Hz "\"800x600@60Hz\" 40 800 840 968 1056 600 601 605 628 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:210:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 210 | #define SVGA_1024x768_60Hz "\"1024x768@60Hz\" 65 1024 1048 1184 1344 768 771 777 806 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:210:28: note: in definition of macro ‘SVGA_1024x768_60Hz’ 210 | #define SVGA_1024x768_60Hz "\"1024x768@60Hz\" 65 1024 1048 1184 1344 768 771 777 806 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:198:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 198 | #define VGA_640x480_60Hz "\"640x480@60Hz\" 25.175 640 656 752 800 480 490 492 525 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:198:26: note: in definition of macro ‘VGA_640x480_60Hz’ 198 | #define VGA_640x480_60Hz "\"640x480@60Hz\" 25.175 640 656 752 800 480 490 492 525 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:198:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 198 | #define VGA_640x480_60Hz "\"640x480@60Hz\" 25.175 640 656 752 800 480 490 492 525 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:198:26: note: in definition of macro ‘VGA_640x480_60Hz’ 198 | #define VGA_640x480_60Hz "\"640x480@60Hz\" 25.175 640 656 752 800 480 490 492 525 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from vdp-console8/video.ino:56, from vdp-console8.cpp:12: vdp-console8/agon.h:140:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 140 | #define VGA_640x240_60Hz "\"640x240@60Hz\" 25.175 640 656 752 800 240 245 247 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vdp-console8/agon.h:140:26: note: in definition of macro ‘VGA_640x240_60Hz’ 140 | #define VGA_640x240_60Hz "\"640x240@60Hz\" 25.175 640 656 752 800 240 245 247 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vdp-console8/agon.h:140:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 140 | #define VGA_640x240_60Hz "\"640x240@60Hz\" 25.175 640 656 752 800 240 245 247 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vdp-console8/agon.h:140:26: note: in definition of macro ‘VGA_640x240_60Hz’ 140 | #define VGA_640x240_60Hz "\"640x240@60Hz\" 25.175 640 656 752 800 240 245 247 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vdp-console8/agon.h:140:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 140 | #define VGA_640x240_60Hz "\"640x240@60Hz\" 25.175 640 656 752 800 240 245 247 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vdp-console8/agon.h:140:26: note: in definition of macro ‘VGA_640x240_60Hz’ 140 | #define VGA_640x240_60Hz "\"640x240@60Hz\" 25.175 640 656 752 800 240 245 247 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ./userspace-vdp-gl/src/fabfonts.h:32, from ./userspace-vdp-gl/src/fabgl.h:312, from vdp-console8.h:2, from vdp-console8.cpp:5: ./userspace-vdp-gl/src/fabglconf.h:183:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 183 | #define QVGA_320x240_60Hz "\"320x240@60Hz\" 12.6 320 328 376 400 240 245 246 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:183:27: note: in definition of macro ‘QVGA_320x240_60Hz’ 183 | #define QVGA_320x240_60Hz "\"320x240@60Hz\" 12.6 320 328 376 400 240 245 246 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:183:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 183 | #define QVGA_320x240_60Hz "\"320x240@60Hz\" 12.6 320 328 376 400 240 245 246 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:183:27: note: in definition of macro ‘QVGA_320x240_60Hz’ 183 | #define QVGA_320x240_60Hz "\"320x240@60Hz\" 12.6 320 328 376 400 240 245 246 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:183:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 183 | #define QVGA_320x240_60Hz "\"320x240@60Hz\" 12.6 320 328 376 400 240 245 246 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:183:27: note: in definition of macro ‘QVGA_320x240_60Hz’ 183 | #define QVGA_320x240_60Hz "\"320x240@60Hz\" 12.6 320 328 376 400 240 245 246 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:183:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 183 | #define QVGA_320x240_60Hz "\"320x240@60Hz\" 12.6 320 328 376 400 240 245 246 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:183:27: note: in definition of macro ‘QVGA_320x240_60Hz’ 183 | #define QVGA_320x240_60Hz "\"320x240@60Hz\" 12.6 320 328 376 400 240 245 246 262 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:174:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 174 | #define VGA_320x200_70Hz "\"320x200@70Hz\" 12.5875 320 328 376 400 200 206 207 224 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:174:26: note: in definition of macro ‘VGA_320x200_70Hz’ 174 | #define VGA_320x200_70Hz "\"320x200@70Hz\" 12.5875 320 328 376 400 200 206 207 224 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:174:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 174 | #define VGA_320x200_70Hz "\"320x200@70Hz\" 12.5875 320 328 376 400 200 206 207 224 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:174:26: note: in definition of macro ‘VGA_320x200_70Hz’ 174 | #define VGA_320x200_70Hz "\"320x200@70Hz\" 12.5875 320 328 376 400 200 206 207 224 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:174:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 174 | #define VGA_320x200_70Hz "\"320x200@70Hz\" 12.5875 320 328 376 400 200 206 207 224 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:174:26: note: in definition of macro ‘VGA_320x200_70Hz’ 174 | #define VGA_320x200_70Hz "\"320x200@70Hz\" 12.5875 320 328 376 400 200 206 207 224 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:174:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 174 | #define VGA_320x200_70Hz "\"320x200@70Hz\" 12.5875 320 328 376 400 200 206 207 224 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:174:26: note: in definition of macro ‘VGA_320x200_70Hz’ 174 | #define VGA_320x200_70Hz "\"320x200@70Hz\" 12.5875 320 328 376 400 200 206 207 224 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from vdp-console8/vdu.h:6, from vdp-console8/video.ino:62, from vdp-console8.cpp:12: vdp-console8/vdu_audio.h: In function ‘void sendAudioStatus(int, int)’: vdp-console8/vdu_audio.h:81:3: warning: narrowing conversion of ‘channel’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 81 | channel, | ^~~~~~~ vdp-console8/vdu_audio.h:82:3: warning: narrowing conversion of ‘status’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 82 | status, | ^~~~~~ In file included from vdp-console8/vdu.h:7, from vdp-console8/video.ino:62, from vdp-console8.cpp:12: vdp-console8/vdu_sys.h: In function ‘void sendCursorPosition()’: vdp-console8/vdu_sys.h:44:16: warning: narrowing conversion of ‘(((int)textCursor.fabgl::Point::X) / fontW)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 44 | textCursor.X / fontW, | ~~~~~~~~~~~~~^~~~~~~ vdp-console8/vdu_sys.h:45:16: warning: narrowing conversion of ‘(((int)textCursor.fabgl::Point::Y) / fontH)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 45 | textCursor.Y / fontH, | ~~~~~~~~~~~~~^~~~~~~ vdp-console8/vdu_sys.h: In function ‘void sendScreenChar(int, int)’: vdp-console8/vdu_sys.h:57:3: warning: narrowing conversion of ‘c’ from ‘char’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 57 | c, | ^ vdp-console8/vdu_sys.h: In function ‘void sendTime()’: vdp-console8/vdu_sys.h:80:17: warning: narrowing conversion of ‘(rtc.ESP32Time::getYear() - 1980)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 80 | rtc.getYear() - EPOCH_YEAR, // 0 - 255 vdp-console8/vdu_sys.h:81:15: warning: narrowing conversion of ‘rtc.ESP32Time::getMonth()’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 81 | rtc.getMonth(), // 0 - 11 | ~~~~~~~~~~~~^~ vdp-console8/vdu_sys.h:82:13: warning: narrowing conversion of ‘rtc.ESP32Time::getDay()’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 82 | rtc.getDay(), // 1 - 31 | ~~~~~~~~~~^~ vdp-console8/vdu_sys.h:83:19: warning: narrowing conversion of ‘rtc.ESP32Time::getDayofYear()’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 83 | rtc.getDayofYear(), // 0 - 365 | ~~~~~~~~~~~~~~~~^~ vdp-console8/vdu_sys.h:84:19: warning: narrowing conversion of ‘rtc.ESP32Time::getDayofWeek()’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 84 | rtc.getDayofWeek(), // 0 - 6 | ~~~~~~~~~~~~~~~~^~ vdp-console8/vdu_sys.h:85:14: warning: narrowing conversion of ‘rtc.ESP32Time::getHour(1)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 85 | rtc.getHour(true), // 0 - 23 | ~~~~~~~~~~~^~~~~~ vdp-console8/vdu_sys.h:86:16: warning: narrowing conversion of ‘rtc.ESP32Time::getMinute()’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 86 | rtc.getMinute(), // 0 - 59 | ~~~~~~~~~~~~~^~ vdp-console8/vdu_sys.h:87:16: warning: narrowing conversion of ‘rtc.ESP32Time::getSecond()’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 87 | rtc.getSecond(), // 0 - 59 | ~~~~~~~~~~~~~^~ vdp-console8/vdu_sys.h: In function ‘void sendKeyboardState()’: vdp-console8/vdu_sys.h:124:9: warning: narrowing conversion of ‘(delay & 255)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 124 | delay & 0xFF, | ~~~~~~^~~~~~ vdp-console8/vdu_sys.h:125:16: warning: narrowing conversion of ‘((delay >> 8) & 255)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 125 | (delay >> 8) & 0xFF, | ~~~~~~~~~~~~~^~~~~~ vdp-console8/vdu_sys.h:126:8: warning: narrowing conversion of ‘(rate & 255)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 126 | rate & 0xFF, | ~~~~~^~~~~~ vdp-console8/vdu_sys.h:127:15: warning: narrowing conversion of ‘((rate >> 8) & 255)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 127 | (rate >> 8) & 0xFF, | ~~~~~~~~~~~~^~~~~~ In file included from vdp-console8.cpp:12: vdp-console8/video.ino: In function ‘void print(const char*)’: vdp-console8/video.ino:201:20: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare] 201 | for (int i = 0; i < strlen(text); i++) { | ~~^~~~~~~~~~~~~~ g++ -shared rust_glue.o vdp-console8.o userspace-vdp-gl/src/vdp-gl.a -o vdp_console8.so g++ -Wall -O2 -fmax-errors=1 -std=c++11 -g -I. -I./dispdrivers -I./userspace-vdp-gl/src -I./userspace-vdp-gl/src/userspace-platform -I./userspace-vdp-gl/src/dispdrivers -fPIC -c vdp-1.03.cpp -o vdp-1.03.o In file included from ./userspace-vdp-gl/src/devdrivers/keyboard.h:41, from ./userspace-vdp-gl/src/terminal.h:49, from ./userspace-vdp-gl/src/fabgl.h:313, from vdp-1.03.h:3, from vdp-1.03.cpp:5: ./userspace-vdp-gl/src/codepages.h: In static member function ‘static const fabgl::CodePage* fabgl::CodePages::get(uint16_t, const fabgl::CodePage*)’: ./userspace-vdp-gl/src/codepages.h:67:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 67 | for (int i = 0; i < sizeof(CodePage) / sizeof(CodePage*); ++i) | ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from vdp-1.03.cpp:11: vdp-quark103/video.ino: In function ‘int readByte_t()’: vdp-quark103/video.ino:205:6: warning: unused variable ‘i’ [-Wunused-variable] 205 | int i; | ^ vdp-quark103/video.ino: In function ‘void sendCursorPosition()’: vdp-quark103/video.ino:314:9: warning: narrowing conversion of ‘(charX / ((int)Canvas->fabgl::Canvas::getFontInfo()->fabgl::FontInfo::width))’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 314 | charX / Canvas->getFontInfo()->width, | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vdp-quark103/video.ino:315:9: warning: narrowing conversion of ‘(charY / ((int)Canvas->fabgl::Canvas::getFontInfo()->fabgl::FontInfo::height))’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 315 | charY / Canvas->getFontInfo()->height, | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vdp-quark103/video.ino: In function ‘void sendScreenChar(int, int)’: vdp-quark103/video.ino:327:3: warning: narrowing conversion of ‘c’ from ‘char’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 327 | c, | ^ vdp-quark103/video.ino: In function ‘void sendPlayNote(int, int)’: vdp-quark103/video.ino:363:3: warning: narrowing conversion of ‘channel’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 363 | channel, | ^~~~~~~ vdp-quark103/video.ino:364:3: warning: narrowing conversion of ‘success’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 364 | success, | ^~~~~~~ vdp-quark103/video.ino: In function ‘void sendModeInformation()’: vdp-quark103/video.ino:375:5: warning: narrowing conversion of ‘(w & 255)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 375 | w & 0xFF, // Width in pixels (L) | ~~^~~~~~ vdp-quark103/video.ino:376:12: warning: narrowing conversion of ‘((w >> 8) & 255)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 376 | (w >> 8) & 0xFF, // Width in pixels (H) | ~~~~~~~~~^~~~~~ vdp-quark103/video.ino:377:5: warning: narrowing conversion of ‘(h & 255)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 377 | h & 0xFF, // Height in pixels (L) | ~~^~~~~~ vdp-quark103/video.ino:378:12: warning: narrowing conversion of ‘((h >> 8) & 255)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 378 | (h >> 8) & 0xFF, // Height in pixels (H) | ~~~~~~~~~^~~~~~ vdp-quark103/video.ino:379:5: warning: narrowing conversion of ‘(w / ((int)Canvas->fabgl::Canvas::getFontInfo()->fabgl::FontInfo::width))’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 379 | w / Canvas->getFontInfo()->width , // Width in characters (byte) | ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vdp-quark103/video.ino:380:5: warning: narrowing conversion of ‘(h / ((int)Canvas->fabgl::Canvas::getFontInfo()->fabgl::FontInfo::height))’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 380 | h / Canvas->getFontInfo()->height , // Height in characters (byte) | ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vdp-quark103/video.ino:381:3: warning: narrowing conversion of ‘VGAColourDepth’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 381 | VGAColourDepth, // Colour depth | ^~~~~~~~~~~~~~ vdp-quark103/video.ino: In function ‘void sendTime()’: vdp-quark103/video.ino:390:17: warning: narrowing conversion of ‘(rtc.ESP32Time::getYear() - 1980)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 390 | rtc.getYear() - EPOCH_YEAR, // 0 - 255 vdp-quark103/video.ino:391:15: warning: narrowing conversion of ‘rtc.ESP32Time::getMonth()’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 391 | rtc.getMonth(), // 0 - 11 | ~~~~~~~~~~~~^~ vdp-quark103/video.ino:392:13: warning: narrowing conversion of ‘rtc.ESP32Time::getDay()’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 392 | rtc.getDay(), // 1 - 31 | ~~~~~~~~~~^~ vdp-quark103/video.ino:393:19: warning: narrowing conversion of ‘rtc.ESP32Time::getDayofYear()’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 393 | rtc.getDayofYear(), // 0 - 365 | ~~~~~~~~~~~~~~~~^~ vdp-quark103/video.ino:394:19: warning: narrowing conversion of ‘rtc.ESP32Time::getDayofWeek()’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 394 | rtc.getDayofWeek(), // 0 - 6 | ~~~~~~~~~~~~~~~~^~ vdp-quark103/video.ino:395:14: warning: narrowing conversion of ‘rtc.ESP32Time::getHour(1)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 395 | rtc.getHour(true), // 0 - 23 | ~~~~~~~~~~~^~~~~~ vdp-quark103/video.ino:396:16: warning: narrowing conversion of ‘rtc.ESP32Time::getMinute()’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 396 | rtc.getMinute(), // 0 - 59 | ~~~~~~~~~~~~~^~ vdp-quark103/video.ino:397:16: warning: narrowing conversion of ‘rtc.ESP32Time::getSecond()’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 397 | rtc.getSecond(), // 0 - 59 | ~~~~~~~~~~~~~^~ vdp-quark103/video.ino: In function ‘void sendKeyboardState()’: vdp-quark103/video.ino:410:17: warning: narrowing conversion of ‘(kbRepeatDelay & 255)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 410 | kbRepeatDelay & 0xFF, | ~~~~~~~~~~~~~~^~~~~~ vdp-quark103/video.ino:411:24: warning: narrowing conversion of ‘((kbRepeatDelay >> 8) & 255)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 411 | (kbRepeatDelay >> 8) & 0xFF, | ~~~~~~~~~~~~~~~~~~~~~^~~~~~ vdp-quark103/video.ino:412:16: warning: narrowing conversion of ‘(kbRepeatRate & 255)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 412 | kbRepeatRate & 0xFF, | ~~~~~~~~~~~~~^~~~~~ vdp-quark103/video.ino:413:23: warning: narrowing conversion of ‘((kbRepeatRate >> 8) & 255)’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 413 | (kbRepeatRate >> 8) & 0xFF, | ~~~~~~~~~~~~~~~~~~~~^~~~~~ vdp-quark103/video.ino:414:32: warning: narrowing conversion of ‘((((int)scrollLock) | (((int)capsLock) << 1)) | (((int)numLock) << 2))’ from ‘int’ to ‘byte’ {aka ‘unsigned char’} [-Wnarrowing] 414 | scrollLock | (capsLock << 1) | (numLock << 2) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ vdp-quark103/video.ino: In function ‘void cls()’: vdp-quark103/video.ino:433:6: warning: unused variable ‘i’ [-Wunused-variable] 433 | int i; | ^ In file included from ./userspace-vdp-gl/src/dispdrivers/vgabasecontroller.h:48, from vdp-1.03.h:2, from vdp-1.03.cpp:5: vdp-quark103/video.ino: In function ‘int change_mode(int)’: ./userspace-vdp-gl/src/fabglconf.h:210:28: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 210 | #define SVGA_1024x768_60Hz "\"1024x768@60Hz\" 65 1024 1048 1184 1344 768 771 777 806 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:210:28: note: in definition of macro ‘SVGA_1024x768_60Hz’ 210 | #define SVGA_1024x768_60Hz "\"1024x768@60Hz\" 65 1024 1048 1184 1344 768 771 777 806 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:195:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 195 | #define VGA_512x384_60Hz "\"512x384@60Hz\" 32.5 512 524 592 672 384 385 388 403 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:195:26: note: in definition of macro ‘VGA_512x384_60Hz’ 195 | #define VGA_512x384_60Hz "\"512x384@60Hz\" 32.5 512 524 592 672 384 385 388 403 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:177:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 177 | #define VGA_320x200_75Hz "\"320x200@75Hz\" 12.93 320 352 376 408 200 208 211 229 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:177:26: note: in definition of macro ‘VGA_320x200_75Hz’ 177 | #define VGA_320x200_75Hz "\"320x200@75Hz\" 12.93 320 352 376 408 200 208 211 229 -HSync -VSync DoubleScan" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:198:26: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 198 | #define VGA_640x480_60Hz "\"640x480@60Hz\" 25.175 640 656 752 800 480 490 492 525 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./userspace-vdp-gl/src/fabglconf.h:198:26: note: in definition of macro ‘VGA_640x480_60Hz’ 198 | #define VGA_640x480_60Hz "\"640x480@60Hz\" 25.175 640 656 752 800 480 490 492 525 -HSync -VSync" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from vdp-1.03.cpp:11: vdp-quark103/video.ino: In function ‘void print(const char*)’: vdp-quark103/video.ino:678:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare] 678 | for(int i = 0; i < strlen(text); i++) { | ~~^~~~~~~~~~~~~~ vdp-quark103/video.ino: In function ‘void vdu_sys_sprites()’: vdp-quark103/video.ino:1367:18: warning: unused variable ‘temp’ [-Wunused-variable] 1367 | uint16_t n, temp; | ^~~~ g++ -shared rust_glue.o vdp-1.03.o userspace-vdp-gl/src/vdp-gl.a -o vdp_quark103.so g++ -Wall -O2 -fmax-errors=1 -std=c++11 -g -I. -I./dispdrivers -I./userspace-vdp-gl/src -I./userspace-vdp-gl/src/userspace-platform -I./userspace-vdp-gl/src/dispdrivers -fPIC -c vdp_quark104.cpp -o vdp_quark104.o In file included from ./userspace-vdp-gl/src/devdrivers/keyboard.h:41, from ./userspace-vdp-gl/src/terminal.h:49, from ./userspace-vdp-gl/src/fabgl.h:313, from vdp_quark104.h:2, from vdp_quark104.cpp:5: ./userspace-vdp-gl/src/codepages.h: In static member function ‘static const fabgl::CodePage* fabgl::CodePages::get(uint16_t, const fabgl::CodePage*)’: ./userspace-vdp-gl/src/codepages.h:67:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 67 | for (int i = 0; i < sizeof(CodePage) / sizeof(CodePage*); ++i) | ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from vdp-quark104/audio_channel.h:10, from vdp-quark104/agon_audio.h:18, from vdp-quark104/video.ino:60, from vdp_quark104.cpp:12: vdp-quark104/envelopes/volume.h: In member function ‘virtual uint8_t ADSRVolumeEnvelope::getVolume(uint8_t, uint32_t, int32_t)’: vdp-quark104/envelopes/volume.h:56:16: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int32_t’ {aka ‘int’} [-Wsign-compare] 56 | if (phaseTime < sustainDuration) { | ~~~~~~~~~~^~~~~~~~~~~~~~~~~ vdp-quark104/envelopes/volume.h: In member function ‘virtual bool ADSRVolumeEnvelope::isReleasing(uint32_t, int32_t)’: vdp-quark104/envelopes/volume.h:71:18: warning: comparison of integer expressions of different signedness: ‘uint32_t’ {aka ‘unsigned int’} and ‘int32_t’ {aka ‘int’} [-Wsign-compare] 71 | return (elapsed >= duration); | ~~~~~~~~^~~~~~~~~~~ vdp-quark104/envelopes/volume.h: In member function ‘virtual bool ADSRVolumeEnvelope::isFinished(uint32_t, int32_t)’: vdp-quark104/envelopes/volume.h:79:18: warning: comparison of integer expressions of different signedness: ‘uint32_t’ {aka ‘unsigned int’} and ‘int32_t’ {aka ‘int’} [-Wsign-compare] 79 | return (elapsed >= duration + this->_release); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from vdp-quark104/audio_channel.h:50, from vdp-quark104/agon_audio.h:18, from vdp-quark104/video.ino:60, from vdp_quark104.cpp:12: vdp-quark104/enhanced_samples_generator.h: In member function ‘virtual int EnhancedSamplesGenerator::getSample()’: vdp-quark104/enhanced_samples_generator.h:48:13: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare] 48 | if (_index >= samplePtr->length) { | ~~~~~~~^~~~~~~~~~~~~~~~~~~~ In file included from vdp-quark104/agon_audio.h:18, from vdp-quark104/video.ino:60, from vdp_quark104.cpp:12: vdp-quark104/audio_channel.h: In member function ‘bool audio_channel::isReleasing(uint32_t)’: vdp-quark104/audio_channel.h:293:17: warning: comparison of integer expressions of different signedness: ‘uint32_t’ {aka ‘unsigned int’} and ‘int32_t’ {aka ‘int’} [-Wsign-compare] 293 | return elapsed >= this->_duration; | ~~~~~~~~^~~~~~~~~~~~~~~~~~ vdp-quark104/audio_channel.h: In member function ‘bool audio_channel::isFinished(uint32_t)’: vdp-quark104/audio_channel.h:303:18: warning: comparison of integer expressions of different signedness: ‘uint32_t’ {aka ‘unsigned int’} and ‘int32_t’ {aka ‘int’} [-Wsign-compare] 303 | return (elapsed >= this->_duration); | ~~~~~~~~^~~~~~~~~~~~~~~~~~ vdp-quark104/audio_channel.h: In member function ‘void audio_channel::loop()’: vdp-quark104/audio_channel.h:335:17: warning: comparison of integer expressions of different signedness: ‘uint32_t’ {aka ‘unsigned int’} and ‘int32_t’ {aka ‘int’} [-Wsign-compare] 335 | if (elapsed >= this->_duration) { | ~~~~~~~~^~~~~~~~~~~~~~~~~~ In file included from vdp-quark104/video.ino:64, from vdp_quark104.cpp:12: vdp-quark104/vdu_stream_processor.h: In constructor ‘VDUStreamProcessor::VDUStreamProcessor(std::shared_ptr<Stream>, std::shared_ptr<Stream>, uint16_t)’: vdp-quark104/vdu_stream_processor.h:40:27: warning: ‘VDUStreamProcessor::originalOutputStream’ will be initialized after [-Wreorder] 40 | std::shared_ptr<Stream> originalOutputStream; | ^~~~~~~~~~~~~~~~~~~~ vdp-quark104/vdu_stream_processor.h:36:12: warning: ‘uint16_t VDUStreamProcessor::id’ [-Wreorder] 36 | uint16_t id = 65535; | ^~ vdp-quark104/vdu_stream_processor.h:11:3: warning: when initialized here [-Wreorder] 11 | VDUStreamProcessor(std::shared_ptr<Stream> inputStream, std::shared_ptr<Stream> outputStream, uint16_t bufferId) : | ^~~~~~~~~~~~~~~~~~ vdp-quark104/vdu_stream_processor.h: In member function ‘uint32_t VDUStreamProcessor::readLong_b()’: vdp-quark104/vdu_stream_processor.h:158:33: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 158 | while(inputStream->available() < sizeof(uint32_t)); | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~ In file included from vdp-quark104/vdu.h:7, from vdp-quark104/vdu_stream_processor.h:197, from vdp-quark104/video.ino:64, from vdp_quark104.cpp:12: vdp-quark104/vdu_audio.h: In member function ‘uint8_t VDUStreamProcessor::loadSample(uint8_t, uint32_t)’: vdp-quark104/vdu_audio.h:155:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare] 155 | for (auto n = 0; n < length; n++) sample->data[n] = readByte_b(); | ~~^~~~~~~~ In file included from vdp-quark104/vdu_sys.h:12, from vdp-quark104/vdu.h:8, from vdp-quark104/vdu_stream_processor.h:197, from vdp-quark104/video.ino:64, from vdp_quark104.cpp:12: vdp-quark104/vdu_buffered.h: In member function ‘void VDUStreamProcessor::vdu_sys_buffered()’: vdp-quark104/vdu_buffered.h:48:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] 48 | for (auto i = 0; i < bufferLength; i++) { | ~~^~~~~~~~~~~~~~ In file included from vdp-quark104/vdu.h:8, from vdp-quark104/vdu_stream_processor.h:197, from vdp-quark104/video.ino:64, from vdp_quark104.cpp:12: vdp-quark104/vdu_sys.h: In member function ‘void VDUStreamProcessor::sendScreenChar(uint16_t, uint16_t)’: vdp-quark104/vdu_sys.h:198:3: warning: narrowing conversion of ‘c’ from ‘char’ to ‘uint8_t’ {aka ‘unsigned char’} [-Wnarrowing] 198 | c, | ^ In file included from vdp-quark104/video.ino:65, from vdp_quark104.cpp:12: vdp-quark104/hexload.h: In member function ‘void VDUStreamProcessor::vdu_sys_hexload()’: vdp-quark104/hexload.h:51:27: warning: unused variable ‘ez80checksumerror’ [-Wunused-variable] 51 | bool done,defaultaddress,ez80checksumerror; | ^~~~~~~~~~~~~~~~~ In file included from vdp_quark104.cpp:12: vdp-quark104/video.ino: In function ‘void print(const char*)’: vdp-quark104/video.ino:203:21: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare] 203 | for (auto i = 0; i < strlen(text); i++) { | ~~^~~~~~~~~~~~~~ g++ -shared rust_glue.o vdp_quark104.o userspace-vdp-gl/src/vdp-gl.a -o vdp_quark104.so g++ -Wall -O2 -fmax-errors=1 -std=c++11 -g -I. -I./dispdrivers -I./userspace-vdp-gl/src -I./userspace-vdp-gl/src/userspace-platform -I./userspace-vdp-gl/src/dispdrivers -fPIC -c test_main.cpp -o test_main.o In file included from ./userspace-vdp-gl/src/devdrivers/keyboard.h:41, from ./userspace-vdp-gl/src/terminal.h:49, from ./userspace-vdp-gl/src/fabgl.h:313, from test_main.cpp:1: ./userspace-vdp-gl/src/codepages.h: In static member function ‘static const fabgl::CodePage* fabgl::CodePages::get(uint16_t, const fabgl::CodePage*)’: ./userspace-vdp-gl/src/codepages.h:67:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 67 | for (int i = 0; i < sizeof(CodePage) / sizeof(CodePage*); ++i) | ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ g++ rust_glue.o -lpthread test_main.o vdp-1.03.o userspace-vdp-gl/src/vdp-gl.a -o test_main /usr/bin/ld: userspace-vdp-gl/src/vdp-gl.a(terminal.o): in functionstd::thread::thread<void (&)(fabgl::Terminal), fabgl::Terminal, void>(void (&)(fabgl::Terminal), fabgl::Terminal&&)': /usr/include/c++/10/thread:149: undefined reference to pthread_create' /usr/bin/ld: userspace-vdp-gl/src/vdp-gl.a(fake_misc.o): in functionstd::thread::thread<void (&)(void), void const&, void>(void (&)(void), void const&)': /usr/include/c++/10/thread:149: undefined reference to pthread_create' collect2: error: ld returned 1 exit status make[1]: *** [Makefile:18: test_main] Error 1 make[1]: Leaving directory '/home/gianluca/packages/fab-agon-emulator/src/vdp' make: *** [Makefile:13: vdp] Error 2

oldpatientsea commented 10 months ago

@ gianlucarenzi this looks like the same error. Have you tried the fix described above ?

oldpatientsea commented 10 months ago

FYI my cargo version is cargo 1.69.0 (6e9a83356 2023-04-12). I have not experimented with different versions so cannot comment on how necessary it is.

gianlucarenzi commented 10 months ago

With the fix (-pthread) and with a more recent version of cargo it finishes the compiling and now I have the emulator running. FYI my cargo version is now: cargo 1.73.0 (9c4383fb5 2023-08-26) It was 1.46.0 default in Debian 11 Bullseye.

It should be nice if this procedure is going to be written on the README.md file, or simply notify the following link:

https://linux.how2shout.com/how-to-install-and-use-rust-on-debian-11-bullseye/

Regards, Gianluca

Il giorno lun 30 ott 2023 alle ore 13:02 Tim @.***> ha scritto:

FYI my cargo version is cargo 1.69.0 (6e9a83356 2023-04-12). I have not experimented with different versions so cannot comment on how necessary it is.

— Reply to this email directly, view it on GitHub https://github.com/tomm/fab-agon-emulator/issues/16#issuecomment-1785040016, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFN6ER4FZOURSZQD4QCHQ5DYB6JOFAVCNFSM6AAAAAA6LMBG6WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOBVGA2DAMBRGY . You are receiving this because you commented.Message ID: @.***>

-- Ciao e buona giornata.

"GP! In mezzo al campo stai proprio schifoso!" Coach M.Russo