Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feature request] Allow building with shared lua #8153

Open
ofry opened this issue Feb 3, 2019 · 42 comments
Open

[feature request] Allow building with shared lua #8153

ofry opened this issue Feb 3, 2019 · 42 comments
Labels
feature request New enhancement to RetroArch. qb upstream issue

Comments

@ofry
Copy link

ofry commented Feb 3, 2019

First and foremost consider this:

  • Only RetroArch bugs should be filed here. Not core bugs or game bugs
  • This is not a forum or a help section, this is strictly developer oriented

Description

Allow building with shared lua (instead of baked-in) for debugging purposes.

Expected behavior

Should be option in configure script

Actual behavior

$ ./configure --help
Checking operating system ... Win32
====================
 Quickbuild script
====================
Package: retroarch

General environment variables:
  CC:         C compiler
  CFLAGS:     C compiler flags
  CXX:        C++ compiler
  CXXFLAGS:   C++ compiler flags
  LDFLAGS:    Linker flags

General options:
  --prefix=PATH               Install path prefix
  --sysconfdir=PATH           System wide config file prefix
  --bindir=PATH               Binary install directory
  --datarootdir=PATH          Read-only data install directory
  --docdir=PATH               Documentation install directory
  --mandir=PATH               Manpage install directory
  --global-config-dir=PATH    System wide config file prefix (Deprecated)
  --build=BUILD               The build system (no-op)
  --host=HOST                 Cross-compile with HOST-gcc instead of gcc
  --help                      Show this help

Custom options:
  --with-libretro             Config   Libretro library used
  --with-assets_dir           Config   Assets install directory
  --with-bin_dir              Config   Binary install directory (Deprecated)
  --with-man_dir              Config   Manpage install directory (Deprecated)
  --with-opengles_libs        Config   Link flags for custom GLES library
  --with-opengles_cflags      Config   C-flags for custom GLES library
  --enable-caca               Enable   Libcaca support
  --enable-sixel              Enable   Libsixel support
  --enable-debug              Enable   Enable a debug build
  --disable-libretrodb        Disable  Libretrodb support
  --disable-menu              Disable  Enable menu drivers
  --enable-rgui               Enable   RGUI menu
  --disable-rgui              Disable  RGUI menu
  --enable-materialui         Enable   MaterialUI menu
  --disable-materialui        Disable  MaterialUI menu
  --enable-xmb                Enable   XMB menu
  --disable-xmb               Disable  XMB menu
  --enable-ozone              Enable   Ozone menu
  --disable-ozone             Disable  Ozone menu
  --enable-stripes            Enable   Stripes menu
  --enable-zarch              Enable   Zarch menu
  --disable-runahead          Disable  Runahead support
  --enable-ssl                Enable   SSL/mbedtls support
  --disable-ssl               Disable  SSL/mbedtls support
  --disable-builtinmbedtls    Disable  Bake in the mbedtls library
  --disable-overlay           Disable  Overlay support
  --disable-dynamic           Disable  Dynamic loading of libretro library
  --enable-sdl                Enable   SDL support
  --disable-sdl               Disable  SDL support
  --enable-sdl2               Enable   SDL2 support (disables SDL 1.x)
  --disable-sdl2              Disable  SDL2 support (disables SDL 1.x)
  --enable-libusb             Enable   Libusb HID support
  --disable-libusb            Disable  Libusb HID support
  --enable-dbus               Enable   dbus support
  --enable-systemd            Enable   Systemd support
  --disable-systemd           Disable  Systemd support
  --enable-udev               Enable   Udev/Evdev gamepad support
  --disable-udev              Disable  Udev/Evdev gamepad support
  --enable-threads            Enable   Threading support
  --disable-threads           Disable  Threading support
  --enable-thread_storage     Enable   Thread Local Storage support
  --disable-thread_storage    Disable  Thread Local Storage support
  --enable-ffmpeg             Enable   FFmpeg support
  --disable-ffmpeg            Disable  FFmpeg support
  --enable-mpv                Enable   MPV support
  --enable-ssa                Enable   SSA/ASS for FFmpeg subtitle support
  --disable-ssa               Disable  SSA/ASS for FFmpeg subtitle support
  --enable-dylib              Enable   Dynamic loading support
  --disable-dylib             Disable  Dynamic loading support
  --enable-networking         Enable   Networking features (recommended)
  --disable-networking        Disable  Networking features (recommended)
  --enable-networkgamepad     Enable   Networked game pad (plus baked-in core)
  --disable-networkgamepad    Disable  Networked game pad (plus baked-in core)
  --disable-netplaydiscovery  Disable  Add netplay discovery (room creation, etc.)
  --enable-miniupnpc          Enable   Mini UPnP client library (for NAT traversal)
  --disable-miniupnpc         Disable  Mini UPnP client library (for NAT traversal)
  --disable-builtinminiupnpc  Disable  Bake in Mini UPnP client library (for NAT traversal)
  --enable-d3d8               Enable   Direct3D 8 support
  --disable-d3d9              Disable  Direct3D 9 support
  --disable-d3d10             Disable  Direct3D 10 support
  --disable-d3d11             Disable  Direct3D 11 support
  --disable-d3d12             Disable  Direct3D 12 support
  --disable-d3dx              Disable  Direct3DX support
  --enable-opengl             Enable   OpenGL support
  --disable-opengl            Disable  OpenGL support
  --enable-mali_fbdev         Enable   Mali fbdev context support
  --enable-vivante_fbdev      Enable   Vivante fbdev context support
  --enable-opendingux_fbdev   Enable   Opendingux fbdev context support
  --enable-opengles           Enable   Use GLESv2 instead of desktop GL
  --enable-opengles3          Enable   OpenGLES3 support
  --enable-x11                Enable   everything X11.
  --disable-x11               Disable  everything X11.
  --enable-xrandr             Enable   Xrandr support.
  --disable-xrandr            Disable  Xrandr support.
  --enable-omap               Enable   OMAP video support
  --enable-xinerama           Enable   Xinerama support.
  --disable-xinerama          Disable  Xinerama support.
  --enable-kms                Enable   KMS context support
  --disable-kms               Disable  KMS context support
  --enable-plain_drm          Enable   Plain DRM video support
  --enable-exynos             Enable   Exynos video support
  --enable-dispmanx           Enable   Dispmanx video support
  --enable-sunxi              Enable   Sunxi video support
  --enable-wayland            Enable   Wayland support
  --disable-wayland           Disable  Wayland support
  --enable-egl                Enable   EGL context support
  --disable-egl               Disable  EGL context support
  --enable-vg                 Enable   OpenVG support
  --disable-vg                Disable  OpenVG support
  --enable-cg                 Enable   Cg shader support
  --disable-cg                Disable  Cg shader support
  --enable-hlsl               Enable   HLSL9 shader support (for Direct3D9)
  --enable-libxml2            Enable   libxml2 support
  --disable-libxml2           Disable  libxml2 support
  --enable-builtinzlib        Enable   Bake in zlib
  --enable-zlib               Enable   zlib support (ZIP extract, PNG decoding/encoding)
  --disable-zlib              Disable  zlib support (ZIP extract, PNG decoding/encoding)
  --enable-alsa               Enable   ALSA support
  --disable-alsa              Disable  ALSA support
  --enable-tinyalsa           Enable   TinyALSA support
  --disable-tinyalsa          Disable  TinyALSA support
  --enable-audioio            Enable   AudioIO support
  --disable-audioio           Disable  AudioIO support
  --enable-oss                Enable   OSS support
  --disable-oss               Disable  OSS support
  --enable-rsound             Enable   RSound support
  --disable-rsound            Disable  RSound support
  --enable-roar               Enable   RoarAudio support
  --disable-roar              Disable  RoarAudio support
  --enable-al                 Enable   OpenAL support
  --disable-al                Disable  OpenAL support
  --enable-jack               Enable   JACK support
  --disable-jack              Disable  JACK support
  --enable-coreaudio          Enable   CoreAudio support
  --disable-coreaudio         Disable  CoreAudio support
  --enable-pulse              Enable   PulseAudio support
  --disable-pulse             Disable  PulseAudio support
  --enable-freetype           Enable   FreeType support
  --disable-freetype          Disable  FreeType support
  --disable-stb_font          Disable  stb_truetype font support
  --disable-stb_image         Disable  stb image loading support
  --disable-stb_vorbis        Disable  stb vorbis support
  --disable-ibxm              Disable  IBXM support
  --enable-xvideo             Enable   XVideo support
  --disable-xvideo            Disable  XVideo support
  --enable-python             Enable   Python 3 support for shaders
  --enable-v4l2               Enable   Video4linux2 support
  --disable-v4l2              Disable  Video4linux2 support
  --enable-neon               Enable   ARM NEON optimizations
  --enable-sse                Enable   x86 SSE optimizations (SSE, SSE2)
  --enable-floathard          Enable   Force hard float ABI (for ARM)
  --enable-floatsoftfp        Enable   Force soft float ABI (for ARM)
  --disable-chd               Disable  Compile in chd support
  --disable-7zip              Disable  Compile in 7z support
  --enable-flac               Enable   Compile in flac support
  --disable-flac              Disable  Compile in flac support
  --disable-builtinflac       Disable  Bake in flac support
  --disable-update_assets     Disable  Disable downloading assets with online updater
  --enable-preserve_dylib     Enable   Enable dlclose() for Valgrind support
  --enable-parport            Enable   Parallel port joypad support
  --disable-parport           Disable  Parallel port joypad support
  --disable-imageviewer       Disable  Built-in image viewer support.
  --enable-mmap               Enable   MMAP support
  --disable-mmap              Disable  MMAP support
  --enable-qt                 Enable   Qt companion support
  --disable-qt                Disable  Qt companion support
  --enable-xshm               Enable   XShm video driver support
  --disable-cheevos           Disable  Retro Achievements
  --enable-new_cheevos        Enable   Use rcheevos to process RetroAchievements
  --enable-lua                Enable   Lua support (for Retro Achievements)
  --disable-discord           Disable  Discord Integration
  --disable-shaderpipeline    Disable  Additional shader-based pipelines
  --enable-vulkan             Enable   Vulkan support
  --disable-vulkan            Disable  Vulkan support
  --disable-vulkan_display    Disable  Vulkan KHR display backend support
  --disable-rpng              Disable  RPNG support
  --disable-rbmp              Disable  RBMP support
  --disable-rjpeg             Disable  RJPEG support
  --disable-rtga              Disable  RTGA support
  --disable-hid               Disable  Low-level HID (Human Interface Device) support
  --disable-langextra         Disable  Multi-language support
  --enable-osmesa             Enable   Off-screen Mesa rendering
  --enable-videoprocessor     Enable   Enable video processor core
  --disable-videoprocessor    Disable  Enable video processor core
  --enable-videocore          Enable   Broadcom Videocore 4 support
  --disable-videocore         Disable  Broadcom Videocore 4 support
  --enable-drmingw            Enable   DrMingw exception handler
  --disable-easteregg         Disable  Easter egg

Steps to reproduce the bug

  1. [First step]
  2. [Second step]
  3. [and so on...]

Bisect Results

[Try to bisect and tell us when this started happening]

Version/Commit

You can find this information under Information/System Information

Environment information

  • OS: [The operating system you're running]
  • Compiler: [In case you are running local builds]
@ofry
Copy link
Author

ofry commented Feb 3, 2019

I think this is related: #7569

@orbea
Copy link
Contributor

orbea commented Feb 3, 2019

I have no way to test a shared lua and that PR was ignored...

@orbea orbea added qb feature request New enhancement to RetroArch. labels Feb 3, 2019
@ofry
Copy link
Author

ofry commented Feb 3, 2019

@orbea There are lua packages in MinGW/MSYS2 toolchain.

$ pacman -Ss lua
mingw32/mingw-w64-i686-lua 5.3.5-1 [установлен]
    A powerful light-weight programming language designed for extending applications. (mingw-w64)
mingw32/mingw-w64-i686-lua-lpeg 1.0.1-1
    Pattern-matching library for Lua (mingw-w64)
mingw32/mingw-w64-i686-lua-mpack 1.0.7-1
    Msgpack serialization library for Lua (mingw-w64)
mingw32/mingw-w64-i686-lua51 5.1.5-4 [установлен]
    A powerful light-weight programming language designed for extending applications. Version 5.1.x (mingw-w64)
mingw32/mingw-w64-i686-lua51-bitop 1.0.2-1
    C extension adding bitwise operations on numbers for Lua (mingw-w64)
mingw32/mingw-w64-i686-lua51-lgi 0.9.2-1
    LGI is gobject-introspection based dynamic Lua binding to GObject based libraries (mingw-w64)
mingw32/mingw-w64-i686-lua51-lpeg 1.0.1-1
    Pattern-matching library for Lua 5.1 (mingw-w64)
mingw32/mingw-w64-i686-lua51-lsqlite3 0.9.3-1
    LuaSQLite is a Lua 5 binding to allow users/developers to manipulate SQLite 2 and SQLite 3 databases (through different implementations) from lua
mingw32/mingw-w64-i686-lua51-luarocks 2.4.4-1
    the package manager for Lua modules (mingw-w64)
mingw32/mingw-w64-i686-lua51-mpack 1.0.7-1
    Msgpack serialization library for Lua 5.1 (mingw-w64)
mingw32/mingw-w64-i686-lua51-winapi 1.4.2-1
    Minimal but useful Lua bindings to the Windows API
mingw32/mingw-w64-i686-luabind-git 0.9.1.144.ge414c57-1 [установлен]
    A library that helps you create bindings between C++ and Lua (mingw-w64)
mingw32/mingw-w64-i686-luajit-git 2.0.4.49.ga68c411-1
    Just-in-time compiler and drop-in replacement for Lua 5.1 (mingw-w64)
mingw32/mingw-w64-i686-premake 4.3-2
    A build configuration tool. Describe your build using Lua and generate the project files for your specific toolset (mingw-w64)
mingw32/mingw-w64-i686-python2-numexpr 2.6.9-1
    Fast numerical array expression evaluator for Python, NumPy, PyTables, pandas (mingw-w64)
mingw32/mingw-w64-i686-python2-theano 1.0.4-1
    Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. (mingw-w64)
mingw32/mingw-w64-i686-python3-numexpr 2.6.9-1
    Fast numerical array expression evaluator for Python, NumPy, PyTables, pandas (mingw-w64)
mingw32/mingw-w64-i686-python3-theano 1.0.4-1
    Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. (mingw-w64)
mingw32/mingw-w64-i686-tolua 5.2.4-3 [установлен]
    A tool that greatly simplifies the integration of C/C++ code with Lua (mingw-w64)
mingw64/mingw-w64-x86_64-lua 5.3.5-1 [установлен]
    A powerful light-weight programming language designed for extending applications. (mingw-w64)
mingw64/mingw-w64-x86_64-lua-lpeg 1.0.1-1
    Pattern-matching library for Lua (mingw-w64)
mingw64/mingw-w64-x86_64-lua-mpack 1.0.7-1
    Msgpack serialization library for Lua (mingw-w64)
mingw64/mingw-w64-x86_64-lua51 5.1.5-4 [установлен]
    A powerful light-weight programming language designed for extending applications. Version 5.1.x (mingw-w64)
mingw64/mingw-w64-x86_64-lua51-bitop 1.0.2-1
    C extension adding bitwise operations on numbers for Lua (mingw-w64)
mingw64/mingw-w64-x86_64-lua51-lgi 0.9.2-1
    LGI is gobject-introspection based dynamic Lua binding to GObject based libraries (mingw-w64)
mingw64/mingw-w64-x86_64-lua51-lpeg 1.0.1-1
    Pattern-matching library for Lua 5.1 (mingw-w64)
mingw64/mingw-w64-x86_64-lua51-lsqlite3 0.9.3-1
    LuaSQLite is a Lua 5 binding to allow users/developers to manipulate SQLite 2 and SQLite 3 databases (through different implementations) from lua
mingw64/mingw-w64-x86_64-lua51-luarocks 2.4.4-1
    the package manager for Lua modules (mingw-w64)
mingw64/mingw-w64-x86_64-lua51-mpack 1.0.7-1
    Msgpack serialization library for Lua 5.1 (mingw-w64)
mingw64/mingw-w64-x86_64-lua51-winapi 1.4.2-1
    Minimal but useful Lua bindings to the Windows API
mingw64/mingw-w64-x86_64-luabind-git 0.9.1.144.ge414c57-1 [установлен]
    A library that helps you create bindings between C++ and Lua (mingw-w64)
mingw64/mingw-w64-x86_64-luajit-git 2.0.4.49.ga68c411-1
    Just-in-time compiler and drop-in replacement for Lua 5.1 (mingw-w64)
mingw64/mingw-w64-x86_64-premake 4.3-2
    A build configuration tool. Describe your build using Lua and generate the project files for your specific toolset (mingw-w64)
mingw64/mingw-w64-x86_64-python2-numexpr 2.6.9-1
    Fast numerical array expression evaluator for Python, NumPy, PyTables, pandas (mingw-w64)
mingw64/mingw-w64-x86_64-python2-theano 1.0.4-1
    Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. (mingw-w64)
mingw64/mingw-w64-x86_64-python3-numexpr 2.6.9-1
    Fast numerical array expression evaluator for Python, NumPy, PyTables, pandas (mingw-w64)
mingw64/mingw-w64-x86_64-python3-theano 1.0.4-1
    Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. (mingw-w64)
mingw64/mingw-w64-x86_64-tolua 5.2.4-3 [установлен]
    A tool that greatly simplifies the integration of C/C++ code with Lua (mingw-w64)

Is it enough for test?

@orbea
Copy link
Contributor

orbea commented Feb 3, 2019

Testing it during the build is no problem for me, testing it during runtime is. I think its only used for the new cheevos implementation and I haven't used that before (Or the old cheevos).

@orbea
Copy link
Contributor

orbea commented Feb 3, 2019

I rebased my branch and found it doesn't build with lua51, but it does with lua52. I'll look to see if lua53 builds as well tomorrow.

https://github.com/orbea/RetroArch/commit/3ad7c92f786f0160e511cd0487ce022122ab31c7

If you want to test it you need ./configure --enable-new_cheevos --enable-lua --disable-builtinlua.

@ofry
Copy link
Author

ofry commented Feb 5, 2019

ofry@games MINGW64 ~/orbea-Retroarch
$ make clean && ./configure --enable-new_cheevos --enable-lua --disable-builtinlua
rm -rf obj-unix
rm -f retroarch
rm -f *.d
Checking operating system ... Win32
Unknown option --disable-builtinlua

@orbea
Copy link
Contributor

orbea commented Feb 5, 2019

Its not merged in the master, only on my branch.

@ofry
Copy link
Author

ofry commented Feb 5, 2019

$ make clean && ./configure --enable-new_cheevos --enable-lua --disable-builtinlua && make
rm -rf obj-unix
rm -f retroarch
rm -f *.d
Checking operating system ... Win32
Checking for suitable working C compiler ... /mingw64/bin/gcc works
Checking for suitable working C++ compiler ... /mingw64/bin/g++ works
Checking for windres ... /mingw64/bin/windres
Checking for pkg-config ... /mingw64/bin/pkg-config
Checking for availability of switch -std=gnu99 in /mingw64/bin/gcc ... yes
Checking for availability of switch -Wno-unused-result in /mingw64/bin/gcc ... yes
Checking for availability of switch -Wno-unused-variable in /mingw64/bin/gcc ... yes
Checking function sd_get_machine_names in -lsystemd ... no
Checking presence of package bcm_host ... no
Checking function bcm_host_init in -lbcm_host ... no
Checking function ass_library_init in -lass ... yes
Checking function pthread_create in -lpthread ... yes
Checking function pthread_key_create in -lpthread ... yes
Checking function socket in -lws2_32 ... yes
Checking existence of -lminiupnpc ... yes
Checking function fcntl in -lc ... no
Checking function getopt_long in -lc ... no
Checking presence of package alsa ... no
Checking presence of predefined macro AUDIO_SETINFO in sys/audioio.h ... no
Checking presence of header file sys/soundcard.h ... no
Checking presence of header file soundcard.h ... no
Checking existence of -lossaudio ... no
Checking function alcOpenDevice in -lopenal ... yes
Checking presence of package rsound >= 1.1 ... no
Checking presence of package libroar ... no
Checking presence of package jack >= 0.120.1 ... no
Checking presence of package libpulse ... no
Checking presence of package sdl >= 1.2.10 ... 1.2.15
Checking presence of package sdl2 >= 2.0.0 ... 2.0.9
Notice: SDL drivers will be replaced by SDL2 ones.
Checking presence of package Qt5Core >= 5.2 ... 5.12.0
Checking presence of package Qt5Gui >= 5.2 ... 5.12.0
Checking presence of package Qt5Widgets >= 5.2 ... 5.12.0
Checking presence of package Qt5Concurrent >= 5.2 ... 5.12.0
Checking presence of package Qt5Network >= 5.2 ... 5.12.0
Checking presence of package openssl >= 1.0.0 ... 1.1.1a
Checking presence of package flac ... 1.3.2
Checking presence of header file mbedtls/entropy.h ... yes
Checking existence of -lmbedtls ... yes
Checking existence of -lmbedx509 ... yes
Checking existence of -lmbedcrypto ... yes
Checking presence of package lua5.2 ... no
Forced to build with package lua5.2, but cannot locate. Exiting ...

But:

$ pacman -Ss lua
mingw32/mingw-w64-i686-lua 5.3.5-1 [установлен]
    A powerful light-weight programming language designed for extending applications. (mingw-w64)
mingw32/mingw-w64-i686-lua-lpeg 1.0.1-1 [установлен]
    Pattern-matching library for Lua (mingw-w64)
mingw32/mingw-w64-i686-lua-mpack 1.0.7-1 [установлен]
    Msgpack serialization library for Lua (mingw-w64)
mingw32/mingw-w64-i686-lua51 5.1.5-4 [установлен]
    A powerful light-weight programming language designed for extending applications. Version 5.1.x (mingw-w64)
mingw32/mingw-w64-i686-lua51-bitop 1.0.2-1 [установлен]
    C extension adding bitwise operations on numbers for Lua (mingw-w64)
mingw32/mingw-w64-i686-lua51-lgi 0.9.2-1 [установлен]
    LGI is gobject-introspection based dynamic Lua binding to GObject based libraries (mingw-w64)
mingw32/mingw-w64-i686-lua51-lpeg 1.0.1-1 [установлен]
    Pattern-matching library for Lua 5.1 (mingw-w64)
mingw32/mingw-w64-i686-lua51-lsqlite3 0.9.3-1 [установлен]
    LuaSQLite is a Lua 5 binding to allow users/developers to manipulate SQLite 2 and SQLite 3 databases (through different implementations) from lua
mingw32/mingw-w64-i686-lua51-luarocks 2.4.4-1 [установлен]
    the package manager for Lua modules (mingw-w64)
mingw32/mingw-w64-i686-lua51-mpack 1.0.7-1 [установлен]
    Msgpack serialization library for Lua 5.1 (mingw-w64)
mingw32/mingw-w64-i686-lua51-winapi 1.4.2-1 [установлен]
    Minimal but useful Lua bindings to the Windows API
mingw32/mingw-w64-i686-luabind-git 0.9.1.144.ge414c57-1 [установлен]
    A library that helps you create bindings between C++ and Lua (mingw-w64)
mingw32/mingw-w64-i686-luajit-git 2.0.4.49.ga68c411-1
    Just-in-time compiler and drop-in replacement for Lua 5.1 (mingw-w64)
mingw32/mingw-w64-i686-premake 4.3-2
    A build configuration tool. Describe your build using Lua and generate the project files for your specific toolset (mingw-w64)
mingw32/mingw-w64-i686-python2-numexpr 2.6.9-1
    Fast numerical array expression evaluator for Python, NumPy, PyTables, pandas (mingw-w64)
mingw32/mingw-w64-i686-python2-theano 1.0.4-1
    Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. (mingw-w64)
mingw32/mingw-w64-i686-python3-numexpr 2.6.9-1
    Fast numerical array expression evaluator for Python, NumPy, PyTables, pandas (mingw-w64)
mingw32/mingw-w64-i686-python3-theano 1.0.4-1
    Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. (mingw-w64)
mingw32/mingw-w64-i686-tolua 5.2.4-3 [установлен]
    A tool that greatly simplifies the integration of C/C++ code with Lua (mingw-w64)
mingw64/mingw-w64-x86_64-lua 5.3.5-1 [установлен]
    A powerful light-weight programming language designed for extending applications. (mingw-w64)
mingw64/mingw-w64-x86_64-lua-lpeg 1.0.1-1 [установлен]
    Pattern-matching library for Lua (mingw-w64)
mingw64/mingw-w64-x86_64-lua-mpack 1.0.7-1 [установлен]
    Msgpack serialization library for Lua (mingw-w64)
mingw64/mingw-w64-x86_64-lua51 5.1.5-4 [установлен]
    A powerful light-weight programming language designed for extending applications. Version 5.1.x (mingw-w64)
mingw64/mingw-w64-x86_64-lua51-bitop 1.0.2-1 [установлен]
    C extension adding bitwise operations on numbers for Lua (mingw-w64)
mingw64/mingw-w64-x86_64-lua51-lgi 0.9.2-1 [установлен]
    LGI is gobject-introspection based dynamic Lua binding to GObject based libraries (mingw-w64)
mingw64/mingw-w64-x86_64-lua51-lpeg 1.0.1-1 [установлен]
    Pattern-matching library for Lua 5.1 (mingw-w64)
mingw64/mingw-w64-x86_64-lua51-lsqlite3 0.9.3-1 [установлен]
    LuaSQLite is a Lua 5 binding to allow users/developers to manipulate SQLite 2 and SQLite 3 databases (through different implementations) from lua
mingw64/mingw-w64-x86_64-lua51-luarocks 2.4.4-1 [установлен]
    the package manager for Lua modules (mingw-w64)
mingw64/mingw-w64-x86_64-lua51-mpack 1.0.7-1 [установлен]
    Msgpack serialization library for Lua 5.1 (mingw-w64)
mingw64/mingw-w64-x86_64-lua51-winapi 1.4.2-1 [установлен]
    Minimal but useful Lua bindings to the Windows API
mingw64/mingw-w64-x86_64-luabind-git 0.9.1.144.ge414c57-1 [установлен]
    A library that helps you create bindings between C++ and Lua (mingw-w64)
mingw64/mingw-w64-x86_64-luajit-git 2.0.4.49.ga68c411-1
    Just-in-time compiler and drop-in replacement for Lua 5.1 (mingw-w64)
mingw64/mingw-w64-x86_64-premake 4.3-2
    A build configuration tool. Describe your build using Lua and generate the project files for your specific toolset (mingw-w64)
mingw64/mingw-w64-x86_64-python2-numexpr 2.6.9-1
    Fast numerical array expression evaluator for Python, NumPy, PyTables, pandas (mingw-w64)
mingw64/mingw-w64-x86_64-python2-theano 1.0.4-1
    Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. (mingw-w64)
mingw64/mingw-w64-x86_64-python3-numexpr 2.6.9-1
    Fast numerical array expression evaluator for Python, NumPy, PyTables, pandas (mingw-w64)
mingw64/mingw-w64-x86_64-python3-theano 1.0.4-1
    Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. (mingw-w64)
mingw64/mingw-w64-x86_64-tolua 5.2.4-3 [установлен]
    A tool that greatly simplifies the integration of C/C++ code with Lua (mingw-w64)

@orbea
Copy link
Contributor

orbea commented Feb 5, 2019

I'm not sure which package of those you want, I haven't gotten around to hooking up lua53 yet either. Lua upstream doesn't provide a .pc file and forces all distros to do it for them downstream so it could be the maintainer for arch neglected to do that and that will have to be worked around?

This package is the one that currently builds here in Slackware linux and my branch.

https://slackbuilds.org/repository/14.2/development/lua52/

@ofry
Copy link
Author

ofry commented Feb 5, 2019

I think script should check lua 5.1 and 5.3 too...

@orbea
Copy link
Contributor

orbea commented Feb 5, 2019

Lua 5.1 is apparently not supported and won't build. I just haven't gotten to trying lua 5.3 yet.

@ofry
Copy link
Author

ofry commented Feb 9, 2019

Lua 5.1 is apparently not supported and won't build. I just haven't gotten to trying lua 5.3 yet.

@orbea I'm not see any info about supported Lua versions in https://github.com/RetroAchievements/rcheevos repo.

@orbea
Copy link
Contributor

orbea commented Feb 9, 2019

Its using features that are not included with lua51, I spent sometime trying to improve qb.libs.sh to be able to check more than one pkgconfig file or library versions, but I ran into complications with check_lib... Its going to be a little tricky.

@orbea
Copy link
Contributor

orbea commented Feb 9, 2019

@ofry or anyone else, can you provide me the contents of your available lua52 and lua53 packages?

@orbea
Copy link
Contributor

orbea commented Feb 9, 2019

Good news, I think I have a good start, but it is still missing some details and needs testing.

92eab16

The bad news is I ran into a new roadblock, the new cheevos doesn't build anymore...

cheevos-new/cheevos.c: In function ‘cheevos_award_task_softcore’:
cheevos-new/cheevos.c:445:48: warning: passing argument 4 of ‘task_push_http_transfer’ from incompatible pointer type [-Wincompatible-pointer-types]
    task_push_http_transfer(buffer, true, NULL, cheevos_award_task_softcore, user_data);
                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from cheevos-new/cheevos.c:62:
cheevos-new/../tasks/tasks_internal.h:40:7: note: expected ‘retro_task_callback_t’ {aka ‘void (*)(struct retro_task *, void *, void *, const char *)’} but argument is of type ‘void (*)(void *, void *, const char *)’
 void *task_push_http_transfer(const char *url, bool mute, const char *type,
       ^~~~~~~~~~~~~~~~~~~~~~~
cheevos-new/cheevos.c: In function ‘cheevos_award_task_hardcore’:
cheevos-new/cheevos.c:476:48: warning: passing argument 4 of ‘task_push_http_transfer’ from incompatible pointer type [-Wincompatible-pointer-types]
    task_push_http_transfer(buffer, true, NULL, cheevos_award_task_hardcore, user_data);
                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from cheevos-new/cheevos.c:62:
cheevos-new/../tasks/tasks_internal.h:40:7: note: expected ‘retro_task_callback_t’ {aka ‘void (*)(struct retro_task *, void *, void *, const char *)’} but argument is of type ‘void (*)(void *, void *, const char *)’
 void *task_push_http_transfer(const char *url, bool mute, const char *type,
       ^~~~~~~~~~~~~~~~~~~~~~~
cheevos-new/cheevos.c: In function ‘cheevos_lboard_submit_task’:
cheevos-new/cheevos.c:621:48: warning: passing argument 4 of ‘task_push_http_transfer’ from incompatible pointer type [-Wincompatible-pointer-types]
    task_push_http_transfer(buffer, true, NULL, cheevos_lboard_submit_task, user_data);
                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from cheevos-new/cheevos.c:62:
cheevos-new/../tasks/tasks_internal.h:40:7: note: expected ‘retro_task_callback_t’ {aka ‘void (*)(struct retro_task *, void *, void *, const char *)’} but argument is of type ‘void (*)(void *, void *, const char *)’
 void *task_push_http_transfer(const char *url, bool mute, const char *type,
       ^~~~~~~~~~~~~~~~~~~~~~~
cheevos-new/cheevos.c: In function ‘cheevos_test_leaderboards’:
cheevos-new/cheevos.c:676:13: error: too few arguments to function ‘runloop_msg_queue_push’
             runloop_msg_queue_push("Leaderboard attempt cancelled!",
             ^~~~~~~~~~~~~~~~~~~~~~
In file included from cheevos-new/cheevos.c:58:
cheevos-new/../retroarch.h:385:6: note: declared here
 void runloop_msg_queue_push(const char *msg,
      ^~~~~~~~~~~~~~~~~~~~~~
cheevos-new/cheevos.c: In function ‘cheevos_iterate’:
cheevos-new/cheevos.c:1356:10: error: too few arguments to function ‘runloop_msg_queue_push’
          runloop_msg_queue_push(
          ^~~~~~~~~~~~~~~~~~~~~~
In file included from cheevos-new/cheevos.c:58:
cheevos-new/../retroarch.h:385:6: note: declared here
 void runloop_msg_queue_push(const char *msg,
      ^~~~~~~~~~~~~~~~~~~~~~
cheevos-new/cheevos.c:1767:10: error: too few arguments to function ‘runloop_msg_queue_push’
          runloop_msg_queue_push(
          ^~~~~~~~~~~~~~~~~~~~~~
In file included from cheevos-new/cheevos.c:58:
cheevos-new/../retroarch.h:385:6: note: declared here
 void runloop_msg_queue_push(const char *msg,
      ^~~~~~~~~~~~~~~~~~~~~~
cheevos-new/cheevos.c:1770:10: error: too few arguments to function ‘runloop_msg_queue_push’
          runloop_msg_queue_push(
          ^~~~~~~~~~~~~~~~~~~~~~
In file included from cheevos-new/cheevos.c:58:
cheevos-new/../retroarch.h:385:6: note: declared here
 void runloop_msg_queue_push(const char *msg,
      ^~~~~~~~~~~~~~~~~~~~~~
CC deps/rcheevos/src/rcheevos/lboard.c
CC deps/rcheevos/src/rcheevos/alloc.c
make: *** [Makefile:201: obj-unix/release/cheevos-new/cheevos.o] Error 1
make: *** Waiting for unfinished jobs....

@ofry
Copy link
Author

ofry commented Feb 9, 2019

@orbea I not see in MSYS2/MinGW lua52 package.

About lua53:

mingw64/mingw-w64-x86_64-lua 5.3.5-1 [установлен]
    A powerful light-weight programming language designed for extending applications. (mingw-w64)
ofry@games MSYS ~
$ pacman -Ql mingw-w64-x86_64-lua
mingw-w64-x86_64-lua /mingw64/
mingw-w64-x86_64-lua /mingw64/bin/
mingw-w64-x86_64-lua /mingw64/bin/lua
mingw-w64-x86_64-lua /mingw64/bin/lua.exe
mingw-w64-x86_64-lua /mingw64/bin/lua5.3
mingw-w64-x86_64-lua /mingw64/bin/lua53.dll
mingw-w64-x86_64-lua /mingw64/bin/luac
mingw-w64-x86_64-lua /mingw64/bin/luac.exe
mingw-w64-x86_64-lua /mingw64/bin/luac5.3
mingw-w64-x86_64-lua /mingw64/include/
mingw-w64-x86_64-lua /mingw64/include/lauxlib.h
mingw-w64-x86_64-lua /mingw64/include/lua.h
mingw-w64-x86_64-lua /mingw64/include/lua.hpp
mingw-w64-x86_64-lua /mingw64/include/luaconf.h
mingw-w64-x86_64-lua /mingw64/include/lualib.h
mingw-w64-x86_64-lua /mingw64/lib/
mingw-w64-x86_64-lua /mingw64/lib/liblua.a
mingw-w64-x86_64-lua /mingw64/lib/liblua.dll.a
mingw-w64-x86_64-lua /mingw64/lib/lua/
mingw-w64-x86_64-lua /mingw64/lib/lua/5.3/
mingw-w64-x86_64-lua /mingw64/lib/pkgconfig/
mingw-w64-x86_64-lua /mingw64/lib/pkgconfig/lua.pc
mingw-w64-x86_64-lua /mingw64/lib/pkgconfig/lua5.3.pc
mingw-w64-x86_64-lua /mingw64/share/
mingw-w64-x86_64-lua /mingw64/share/doc/
mingw-w64-x86_64-lua /mingw64/share/doc/lua/
mingw-w64-x86_64-lua /mingw64/share/doc/lua/contents.html
mingw-w64-x86_64-lua /mingw64/share/doc/lua/index.css
mingw-w64-x86_64-lua /mingw64/share/doc/lua/logo.gif
mingw-w64-x86_64-lua /mingw64/share/doc/lua/lua.css
mingw-w64-x86_64-lua /mingw64/share/doc/lua/manual.css
mingw-w64-x86_64-lua /mingw64/share/doc/lua/manual.html
mingw-w64-x86_64-lua /mingw64/share/doc/lua/osi-certified-72x60.png
mingw-w64-x86_64-lua /mingw64/share/doc/lua/readme.html
mingw-w64-x86_64-lua /mingw64/share/licenses/
mingw-w64-x86_64-lua /mingw64/share/licenses/lua/
mingw-w64-x86_64-lua /mingw64/share/licenses/lua/LICENSE
mingw-w64-x86_64-lua /mingw64/share/lua/
mingw-w64-x86_64-lua /mingw64/share/lua/5.3/
mingw-w64-x86_64-lua /mingw64/share/man/
mingw-w64-x86_64-lua /mingw64/share/man/man1/
mingw-w64-x86_64-lua /mingw64/share/man/man1/lua.1.gz
mingw-w64-x86_64-lua /mingw64/share/man/man1/luac.1.gz

@orbea
Copy link
Contributor

orbea commented Feb 9, 2019

Thanks, I might have to give some consideration to the include directories which could be in multiple places for check_val, but I am going to wait for the new cheevos to build again for now.

@orbea
Copy link
Contributor

orbea commented Feb 10, 2019

The new cheevos builds again thanks to @natinusala so here is an updated commit which successfully builds with a system lua53 or lua52 using the pkgconfig path.

./configure --enable-new_cheevos --enable-lua --disable-builtinlua
make

https://github.com/orbea/RetroArch/commit/f436a04100726e7b083e7d69d2c6d3b98366644e

Remaining problems:

  • check_header needs similar work to be able to find lua.h in three possible places which is required by the rcheevos dependency.
  • building with PKG_CONF_PATH=none doesn't work and check_val needs to be fixed as well.
  • This starts a big change in how qb prints configure output which needs to be made for other parts of the script too for the sake of consistency.

@orbea
Copy link
Contributor

orbea commented Feb 11, 2019

@ofry I think this should be close.

https://github.com/orbea/RetroArch/commit/3df935bb5a59fcdcc9b375e278887df985956300

There are some finishing touches, but it would be good to test it during build and runtime now if you can help with that? It successfully builds with lua5.3 or lua5.2 here with or without PKG_CONF_PATH=none.

@ofry
Copy link
Author

ofry commented Feb 11, 2019

ofry@games MINGW64 ~/orbea-Retroarch
$ make clean && ./configure --enable-new_cheevos --enable-lua --disable-builtinlua && mak
rm -rf obj-unix
rm -f retroarch
rm -f *.d
Checking operating system ... Win32
Checking for suitable working C compiler ... /mingw64/bin/gcc works
Checking for suitable working C++ compiler ... /mingw64/bin/g++ works
Checking for windres ... /mingw64/bin/windres
Checking for pkg-config ... /mingw64/bin/pkg-config
Checking for availability of switch -std=gnu99 in /mingw64/bin/gcc ... yes
Checking for availability of switch -Wno-unused-result in /mingw64/bin/gcc ... yes
Checking for availability of switch -Wno-unused-variable in /mingw64/bin/gcc ... yes
Checking function sd_get_machine_names in -lsystemd ... no
Checking presence of package bcm_host ... no
Checking function bcm_host_init in -lbcm_host ... no
Checking function ass_library_init in -lass ... yes
Checking function pthread_create in -lpthread ... yes
Checking function pthread_key_create in -lpthread ... yes
Checking function socket in -lws2_32 ... yes
Checking existence of -lminiupnpc ... yes
Checking function fcntl in -lc ... no
Checking function getopt_long in -lc ... no
Checking presence of package alsa ... no
Checking presence of predefined macro AUDIO_SETINFO in sys/audioio.h ... no
Checking presence of header file sys/soundcard.h ... no
Checking presence of header file soundcard.h ... no
Checking existence of -lossaudio ... no
Checking function alcOpenDevice in -lopenal ... yes
Checking presence of package rsound >= 1.1 ... no
Checking presence of package libroar ... no
Checking presence of package jack >= 0.120.1 ... no
Checking presence of package libpulse ... no
Checking presence of package sdl >= 1.2.10 ... 1.2.15
Checking presence of package sdl2 >= 2.0.0 ... 2.0.9
Notice: SDL drivers will be replaced by SDL2 ones.
Checking presence of package Qt5Core >= 5.2 ... 5.12.1
Checking presence of package Qt5Gui >= 5.2 ... 5.12.1
Checking presence of package Qt5Widgets >= 5.2 ... 5.12.1
Checking presence of package Qt5Concurrent >= 5.2 ... 5.12.1
Checking presence of package Qt5Network >= 5.2 ... 5.12.1
Checking presence of package openssl >= 1.0.0 ... 1.1.1a
Checking presence of package flac ... 1.3.2
Checking presence of header file mbedtls/entropy.h ... yes
Checking existence of -lmbedtls ... yes
Checking existence of -lmbedx509 ... yes
Checking existence of -lmbedcrypto ... yes
Checking presence of package lua5.3 ... 5.3.5
Checking presence of header file include/lua.h ... no
Build assumed that include/lua.h exists, but cannot locate. Exiting ...

@orbea
Copy link
Contributor

orbea commented Feb 11, 2019

What does the command /mingw64/bin/pkg-config --cflags-only-I lua5.3 return for you?

@ofry
Copy link
Author

ofry commented Feb 11, 2019

$ /mingw64/bin/pkg-config --cflags-only-I lua5.3
-IC:/msys64/mingw64/include

@orbea
Copy link
Contributor

orbea commented Feb 11, 2019

I see why it doesn't work now, but I am also not sure I see a better way....

How far do you get with?

PKG_CONF_PATH=none ./configure --enable-new_cheevos --enable-lua --disable-builtinlua
make

Here it returns:

$ pkg-config --cflags-only-I lua5.3
-I/usr/include/lua5.3

The idea was to return the base directory which would be lua5.3, lua5.2 or a blank variable ('') so it could pass this variable to check_header and test the correct lua.h header. In your case it would be lua.h and in mine it would be lua5.3/lua.h or lua5.2/lua.h depending on which lua version check_pkgconf or check_lib found.

I suppose the easiest would be to drop check_header here and hope that lua.h is actually there, but that doesn't sound ideal...

@ofry
Copy link
Author

ofry commented Feb 11, 2019

ofry@games MINGW64 ~/orbea-RetroArch
$ make clean && PKG_CONF_PATH=none ./configure --enable-new_cheevos --enable-lua --disable-builtinlua && make
rm -rf obj-unix
rm -f retroarch
rm -f *.d
Checking operating system ... Win32
Checking for suitable working C compiler ... /mingw64/bin/gcc works
Checking for suitable working C++ compiler ... /mingw64/bin/g++ works
Checking for windres ... /mingw64/bin/windres
Checking for pkg-config ... none
Warning: pkg-config not found, package checks will fail.
Checking for availability of switch -std=gnu99 in /mingw64/bin/gcc ... yes
Checking for availability of switch -Wno-unused-result in /mingw64/bin/gcc ... yes
Checking for availability of switch -Wno-unused-variable in /mingw64/bin/gcc ... yes
Checking function sd_get_machine_names in -lsystemd ... no
Checking presence of package bcm_host ... no
Checking function bcm_host_init in -lbcm_host ... no
Checking function ass_library_init in -lass ... yes
Checking function pthread_create in -lpthread ... yes
Checking function pthread_key_create in -lpthread ... yes
Checking function socket in -lws2_32 ... yes
Checking existence of -lminiupnpc ... yes
Checking function fcntl in -lc ... no
Checking function getopt_long in -lc ... no
Checking presence of package alsa ... no
Checking existence of -lasound ... no
Checking presence of predefined macro AUDIO_SETINFO in sys/audioio.h ... no
Checking presence of header file sys/soundcard.h ... no
Checking presence of header file soundcard.h ... no
Checking existence of -lossaudio ... no
Checking function alcOpenDevice in -lopenal ... yes
Checking presence of package rsound >= 1.1 ... no
Checking presence of package libroar ... no
Checking presence of package jack >= 0.120.1 ... no
Checking existence of -ljack ... no
Checking presence of package libpulse ... no
Checking existence of -lpulse ... no
Checking presence of package sdl >= 1.2.10 ... no
Checking existence of -lSDL ... yes
Checking existence of /usr/include/SDL ... no
Checking existence of /usr/local/include/SDL ... no
Checking presence of package sdl2 >= 2.0.0 ... no
Checking existence of -lSDL2 ... yes
Checking existence of /usr/include/SDL2 ... no
Checking existence of /usr/local/include/SDL2 ... no
Checking presence of package Qt5Core >= 5.2 ... no
Checking presence of package Qt5Gui >= 5.2 ... no
Checking presence of package Qt5Widgets >= 5.2 ... no
Checking presence of package Qt5Concurrent >= 5.2 ... no
Checking presence of package Qt5Network >= 5.2 ... no
Notice: Not building Qt support, required libraries were not found.
Checking presence of package openssl >= 1.0.0 ... no
Checking presence of package flac ... no
Checking existence of -lFLAC ... yes
Checking presence of header file mbedtls/entropy.h ... yes
Checking existence of -lmbedtls ... yes
Checking existence of -lmbedx509 ... yes
Checking existence of -lmbedcrypto ... yes
Checking presence of package lua ... no
Checking existence of -llua5.3 ... no
Checking existence of -llua5.2 ... no
Forced to build with library lua, but cannot locate. Exiting ...

@orbea
Copy link
Contributor

orbea commented Feb 11, 2019

Huh, didn't expect that....

What the does command /mingw64/bin/pkg-config --libs lua5.3 return for you?

lua is a mess unfortunately. :\

$ pkg-config --libs lua5.3
-llua5.3 -lm

@ofry
Copy link
Author

ofry commented Feb 11, 2019

ofry@games MINGW64 ~/orbea-RetroArch
$ /mingw64/bin/pkg-config --libs lua5.3
-LC:/msys64/mingw64/lib -llua -lm

@orbea
Copy link
Contributor

orbea commented Feb 11, 2019

Of course....this is a real mess....I suppose there is another platform which only ships lua.pc?

@orbea
Copy link
Contributor

orbea commented Feb 11, 2019

To be honest I think this needs to be fixed in lua first or it will just break for every other platform...

Every distro providing their own pkgconfig files and shared libraries is just maddening and not supportable, I think upstream suggests using a static lua like we already do even if I agree with you its not ideal...

@orbea
Copy link
Contributor

orbea commented Feb 11, 2019

Another idea would be to also add support for lua51 in rcheevos which would make this a little easier, but I don't think I am up for that task...

@ofry
Copy link
Author

ofry commented Feb 11, 2019

I made this feature request just for debugging purposes, because of #7832 built-in lua and mpv core conflicts. So even some hardcoded paths or trying to locate lua.h from pkg-config will be useful.

@orbea
Copy link
Contributor

orbea commented Feb 11, 2019

I suspect this would build on your system.

diff --git a/Makefile.common b/Makefile.common
index f8d9f9cb41..00c12266f8 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -1676,7 +1675,8 @@ ifeq ($(HAVE_NETWORKING), 1)
             deps/rcheevos/src/rcheevos/format.o \
             deps/rcheevos/src/rurl/url.o
 
-         ifeq ($(HAVE_LUA), 1)
+         ifeq ($(HAVE_BUILTINLUA), 1)
+            HAVE_LUA = 1
             DEFINES += -DHAVE_LUA \
                        -DLUA_32BITS \
                        -Ideps/lua/src
@@ -1713,6 +1713,10 @@ ifeq ($(HAVE_NETWORKING), 1)
                    deps/lua/src/lutf8lib.o \
                    deps/lua/src/loadlib.o \
                    deps/lua/src/linit.o
+         else ifeq ($(HAVE_LUA), 1)
+            DEFINES   += -DHAVE_LUA
+            DEF_FLAGS += $(LUA_CFLAGS)
+            LIBS      += $(LUA_LIBS)
          else
             DEFINES += -DRC_DISABLE_LUA
          endif
diff --git a/qb/config.libs.sh b/qb/config.libs.sh
index 5d50bce765..cda46cf5f4 100644
--- a/qb/config.libs.sh
+++ b/qb/config.libs.sh
@@ -297,6 +297,12 @@ if [ "$HAVE_SSL" != 'no' ]; then
    fi
 fi
 
+if [ "$HAVE_LUA" = 'no' ]; then
+   HAVE_BUILTINLUA=no
+fi
+
+check_pkgconf LUA lua
+
 check_enabled THREADS LIBUSB libusb 'Threads are' false
 check_val '' LIBUSB -lusb-1.0 libusb-1.0 libusb-1.0 1.0.13 '' false
 
diff --git a/qb/config.params.sh b/qb/config.params.sh
index 33bca52459..35e452c240 100644
--- a/qb/config.params.sh
+++ b/qb/config.params.sh
@@ -123,6 +123,7 @@ HAVE_CHEEVOS=yes           # Retro Achievements
 HAVE_NEW_CHEEVOS=no        # Use rcheevos to process RetroAchievements
 C89_NEW_CHEEVOS=no
 HAVE_LUA=no                # Lua support (for Retro Achievements)
+HAVE_BUILTINLUA=yes        # Bake in lua support
 HAVE_DISCORD=yes           # Discord Integration
 C89_DISCORD=no
 HAVE_SHADERPIPELINE=yes    # Additional shader-based pipelines

@ofry
Copy link
Author

ofry commented Feb 11, 2019

@orbea Please tell me where I should apply this patch? On top of your lua branch? Or?

@orbea
Copy link
Contributor

orbea commented Feb 11, 2019

The current master.

I made a PR to fix the lua include which is a general preexisting issue.

#8254

@ofry
Copy link
Author

ofry commented Feb 11, 2019

On current master:

ofry@games MINGW64 ~/RetroArch
$ make clean && ./configure --enable-new_cheevos --enable-lua --disable-builtinlua && make DEBUG=1
rm -rf obj-unix
rm -f retroarch
rm -f *.d
Checking operating system ... Win32
Unknown option --disable-builtinlua

@orbea
Copy link
Contributor

orbea commented Feb 11, 2019

You need to apply the patch against master.

@orbea
Copy link
Contributor

orbea commented Feb 11, 2019

Fwiw the lua+mpv issue I think is a conflict in the lua versions RetroArch and libmpv are built against, the crash is clearly in the lua code and I suspect it would need to be fixed there...

Or otherwise we need to find a way to avoid the situation.

@ofry
Copy link
Author

ofry commented Feb 12, 2019

@orbea

After applying your patch to current master, it compiles and runs fine.

ofry@games MINGW64 ~/RetroArch
$ make clean && ./configure --enable-new_cheevos --enable-lua --disable-builtinlua && make DEBUG=1
rm -rf obj-unix
rm -f retroarch
rm -f *.d
Checking operating system ... Win32
Checking for suitable working C compiler ... /mingw64/bin/gcc works
Checking for suitable working C++ compiler ... /mingw64/bin/g++ works
Checking for windres ... /mingw64/bin/windres
Checking for pkg-config ... /mingw64/bin/pkg-config
Checking for availability of switch -std=gnu99 in /mingw64/bin/gcc ... yes
Checking for availability of switch -Wno-unused-result in /mingw64/bin/gcc ... yes
Checking for availability of switch -Wno-unused-variable in /mingw64/bin/gcc ... yes
Checking function sd_get_machine_names in -lsystemd ... no
Checking presence of package bcm_host ... no
Checking function bcm_host_init in -lbcm_host ... no
Checking function ass_library_init in -lass ... yes
Checking function pthread_create in -lpthread ... yes
Checking function pthread_key_create in -lpthread ... yes
Checking function socket in -lws2_32 ... yes
Checking existence of -lminiupnpc ... yes
Checking function fcntl in -lc ... no
Checking function getopt_long in -lc ... no
Checking presence of package alsa ... no
Checking presence of predefined macro AUDIO_SETINFO in sys/audioio.h ... no
Checking presence of header file sys/soundcard.h ... no
Checking presence of header file soundcard.h ... no
Checking existence of -lossaudio ... no
Checking function alcOpenDevice in -lopenal ... yes
Checking presence of package rsound >= 1.1 ... no
Checking presence of package libroar ... no
Checking presence of package jack >= 0.120.1 ... no
Checking presence of package libpulse ... no
Checking presence of package sdl >= 1.2.10 ... 1.2.15
Checking presence of package sdl2 >= 2.0.0 ... 2.0.9
Notice: SDL drivers will be replaced by SDL2 ones.
Checking presence of package Qt5Core >= 5.2 ... 5.12.1
Checking presence of package Qt5Gui >= 5.2 ... 5.12.1
Checking presence of package Qt5Widgets >= 5.2 ... 5.12.1
Checking presence of package Qt5Concurrent >= 5.2 ... 5.12.1
Checking presence of package Qt5Network >= 5.2 ... 5.12.1
Checking presence of package openssl >= 1.0.0 ... 1.1.1a
Checking presence of package flac ... 1.3.2
Checking presence of header file mbedtls/entropy.h ... yes
Checking existence of -lmbedtls ... yes
Checking existence of -lmbedx509 ... yes
Checking existence of -lmbedcrypto ... yes
Checking presence of package lua ... 5.3.5
Checking presence of package libusb-1.0 >= 1.0.13 ... 1.0.22
Checking existence of -ldinput8 ... yes
Checking existence of -ld3d9 ... yes
Checking existence of -ldsound ... yes
Checking presence of header file GL/gl.h ... yes
Checking existence of -lopengl32 ... yes
Checking function cgCreateContext in -lcg -lcgGL ... no
Checking presence of package zlib ... 1.2.11
Checking presence of package libavcodec >= 54 ... 58.35.100
Checking presence of package libavformat >= 54 ... 58.20.100
Checking presence of package libavdevice ... 58.5.100
Checking presence of package libswresample ... 3.3.100
Checking presence of package libavresample ... no
Checking presence of package libavutil >= 51 ... 56.22.100
Checking presence of package libswscale >= 2.1 ... 5.3.100
Checking presence of header file libavutil/channel_layout.h ... yes
Checking presence of package gbm >= 9.0 ... no
Checking presence of package libdrm ... no
Checking presence of package libxml-2.0 ... 2.9.9
Checking presence of package libv4l2 ... no
Checking presence of package freetype2 ... 22.1.16
Checking presence of package x11 ... no
Checking presence of package xcb ... no
Checking presence of package wayland-egl >= 10.1.0 ... no
Checking presence of package wayland-cursor >= 1.12 ... no
Checking presence of package wayland-protocols >= 1.15 ... no
Checking presence of package wayland-scanner >= 1.12 ... no
Checking presence of package xkbcommon >= 0.3.2 ... no
Checking presence of package xext ... no
Checking presence of package xxf86vm ... no
Notice: wayland libraries not found, disabling wayland support.
Notice: X11, Xext or xf86vm not present. Skipping X11 code paths.
Checking presence of package libudev ... no
Checking presence of header file linux/parport.h ... no
Checking function strcasestr in -lc ... no
Checking function mmap in -lc ... no
Checking for moc ... /mingw64/bin/moc works
Creating make config: config.mk
Creating config header: config.h
CC version_git.c
CC frontend/frontend.c
CC frontend/frontend_driver.c
CC frontend/drivers/platform_null.c
CC ui/ui_companion_driver.c
CC ui/drivers/ui_null.c
CC ui/drivers/null/ui_null_window.c
CC ui/drivers/null/ui_null_browser_window.c
CC ui/drivers/null/ui_null_msg_window.c
CC ui/drivers/null/ui_null_application.c
CC core_impl.c
CC retroarch.c
CC dirs.c
CC paths.c
CC command.c
CC msg_hash.c
CC intl/msg_hash_us.c
CC libretro-common/queues/task_queue.c
CC tasks/task_content.c
CC tasks/task_save.c
CC tasks/task_file_transfer.c
CC tasks/task_image.c
CC tasks/task_audio_mixer.c
CC libretro-common/encodings/encoding_utf.c
CC libretro-common/encodings/encoding_crc32.c
CC libretro-common/compat/fopen_utf8.c
CC libretro-common/lists/file_list.c
CC libretro-common/lists/dir_list.c
CC libretro-common/file/retro_dirent.c
CC libretro-common/streams/stdin_stream.c
CC libretro-common/streams/file_stream.c
CC libretro-common/streams/file_stream_transforms.c
CC libretro-common/streams/interface_stream.c
CC libretro-common/streams/memory_stream.c
CC libretro-common/vfs/vfs_implementation.c
CC libretro-common/lists/string_list.c
CC libretro-common/string/stdstring.c
CC libretro-common/memmap/memalign.c
CC setting_list.c
CC list_special.c
CC libretro-common/file/nbio/nbio_stdio.c
CC libretro-common/file/nbio/nbio_linux.c
CC libretro-common/file/nbio/nbio_unixmmap.c
CC libretro-common/file/nbio/nbio_windowsmmap.c
CC libretro-common/file/nbio/nbio_orbis.c
CC libretro-common/file/nbio/nbio_intf.c
CC libretro-common/file/file_path.c
CC file_path_special.c
CC file_path_str.c
CC libretro-common/hash/rhash.c
CC audio/audio_driver.c
CC libretro-common/audio/audio_mixer.c
CC input/common/input_common.c
CC input/input_driver.c
CC input/input_mapper.c
CC led/led_driver.c
CC led/drivers/led_null.c
CC gfx/video_coord_array.c
CC gfx/video_display_server.c
CC gfx/video_driver.c
CC gfx/video_crt_switch.c
CC camera/camera_driver.c
CC wifi/wifi_driver.c
CC location/location_driver.c
CC driver.c
CC configuration.c
CC libretro-common/dynamic/dylib.c
CC dynamic.c
CC cores/dynamic_dummy.c
CC libretro-common/queues/message_queue.c
CC managers/core_manager.c
CC managers/state_manager.c
CC gfx/drivers_font_renderer/bitmapfont.c
CC tasks/task_autodetect.c
CC input/input_autodetect_builtin.c
CC input/input_keymaps.c
CC input/input_remapping.c
CC libretro-common/queues/fifo_queue.c
CC managers/core_option_manager.c
CC libretro-common/compat/compat_fnmatch.c
CC libretro-common/compat/compat_posix_string.c
CC managers/cheat_manager.c
CC core_info.c
CC libretro-common/file/config_file.c
CC libretro-common/file/config_file_userdata.c
CC tasks/task_screenshot.c
CC tasks/task_powerstate.c
CC libretro-common/gfx/scaler/scaler.c
CC gfx/video_shader_parse.c
CC libretro-common/gfx/scaler/pixconv.c
CC libretro-common/gfx/scaler/scaler_int.c
CC libretro-common/gfx/scaler/scaler_filter.c
CC gfx/font_driver.c
CC gfx/video_filter.c
CC libretro-common/audio/resampler/audio_resampler.c
CC libretro-common/audio/dsp_filter.c
CC libretro-common/audio/resampler/drivers/sinc_resampler.c
CC libretro-common/audio/resampler/drivers/nearest_resampler.c
CC libretro-common/audio/resampler/drivers/null_resampler.c
CC libretro-common/utils/md5.c
CC location/drivers/nulllocation.c
CC camera/drivers/nullcamera.c
CC wifi/drivers/nullwifi.c
CC gfx/drivers/nullgfx.c
CC gfx/display_servers/dispserv_null.c
CC audio/drivers/nullaudio.c
CC input/drivers/nullinput.c
CC input/drivers_hid/null_hid.c
CC input/drivers_joypad/null_joypad.c
CC playlist.c
CC movie.c
CC record/record_driver.c
CC record/drivers/record_null.c
CC libretro-common/features/features_cpu.c
CC performance_counters.c
CC verbosity.c
CC midi/midi_driver.c
CC midi/drivers/null_midi.c
CC runahead/copy_load_info.c
CC runahead/dirty_input.c
CC runahead/mem_util.c
CC runahead/mylist.c
CC runahead/run_ahead.c
CC runahead/secondary_core.c
CC audio/drivers_resampler/cc_resampler.c
CC intl/msg_hash_de.c
CC intl/msg_hash_eo.c
CC intl/msg_hash_es.c
CC intl/msg_hash_fr.c
CC intl/msg_hash_it.c
CC intl/msg_hash_ja.c
CC intl/msg_hash_ko.c
CC intl/msg_hash_nl.c
CC intl/msg_hash_pl.c
CC intl/msg_hash_pt_br.c
CC intl/msg_hash_pt_pt.c
CC intl/msg_hash_ru.c
CC intl/msg_hash_vn.c
CC intl/msg_hash_chs.c
CC intl/msg_hash_cht.c
CC intl/msg_hash_ar.c
CC intl/msg_hash_el.c
CC libretro-common/compat/compat_getopt.c
CC libretro-common/compat/compat_strcasestr.c
CC libretro-common/compat/compat_strl.c
CC libretro-common/formats/image_texture.c
CC cores/libretro-imageviewer/image_core.c
CXX ui/drivers/ui_qt.cpp
CXX ui/drivers/qt/ui_qt_application.cpp
CXX ui/drivers/qt/ui_qt_window.cpp
CXX ui/drivers/qt/ui_qt_browser_window.cpp
CXX ui/drivers/qt/ui_qt_load_core_window.cpp
CXX ui/drivers/qt/ui_qt_msg_window.cpp
CXX ui/drivers/qt/gridview.cpp
CXX ui/drivers/qt/shaderparamsdialog.cpp
CXX ui/drivers/qt/coreoptionsdialog.cpp
CXX ui/drivers/qt/filedropwidget.cpp
CXX ui/drivers/qt/coreinfodialog.cpp
CXX ui/drivers/qt/playlistentrydialog.cpp
CXX ui/drivers/qt/viewoptionsdialog.cpp
CXX ui/drivers/qt/qt_playlist.cpp
CXX ui/drivers/qt/updateretroarch.cpp
CXX ui/drivers/qt/thumbnaildownload.cpp
CXX ui/drivers/qt/thumbnailpackdownload.cpp
CXX ui/drivers/qt/playlistthumbnaildownload.cpp
CC libretro-db/bintree.c
CC libretro-db/libretrodb.c
CC libretro-db/query.c
CC libretro-db/rmsgpack.c
CC libretro-db/rmsgpack_dom.c
CC database_info.c
CC tasks/task_database.c
CC tasks/task_database_cue.c
CC deps/mbedtls/aes.c
CC deps/mbedtls/aesni.c
CC deps/mbedtls/arc4.c
CC deps/mbedtls/asn1parse.c
CC deps/mbedtls/asn1write.c
CC deps/mbedtls/base64.c
CC deps/mbedtls/bignum.c
CC deps/mbedtls/blowfish.c
CC deps/mbedtls/camellia.c
CC deps/mbedtls/ccm.c
CC deps/mbedtls/cipher.c
CC deps/mbedtls/cipher_wrap.c
CC deps/mbedtls/cmac.c
CC deps/mbedtls/ctr_drbg.c
CC deps/mbedtls/des.c
CC deps/mbedtls/dhm.c
CC deps/mbedtls/ecdh.c
CC deps/mbedtls/ecdsa.c
CC deps/mbedtls/ecjpake.c
CC deps/mbedtls/ecp.c
CC deps/mbedtls/ecp_curves.c
CC deps/mbedtls/entropy.c
CC deps/mbedtls/entropy_poll.c
CC deps/mbedtls/error.c
CC deps/mbedtls/gcm.c
CC deps/mbedtls/havege.c
CC deps/mbedtls/hmac_drbg.c
CC deps/mbedtls/md.c
CC deps/mbedtls/md2.c
CC deps/mbedtls/md4.c
CC deps/mbedtls/md5.c
CC deps/mbedtls/md_wrap.c
CC deps/mbedtls/memory_buffer_alloc.c
CC deps/mbedtls/oid.c
CC deps/mbedtls/padlock.c
CC deps/mbedtls/pem.c
CC deps/mbedtls/pk.c
CC deps/mbedtls/pk_wrap.c
CC deps/mbedtls/pkcs12.c
CC deps/mbedtls/pkcs5.c
CC deps/mbedtls/pkparse.c
CC deps/mbedtls/pkwrite.c
CC deps/mbedtls/platform.c
CC deps/mbedtls/ripemd160.c
CC deps/mbedtls/rsa.c
CC deps/mbedtls/sha1.c
CC deps/mbedtls/sha256.c
CC deps/mbedtls/sha512.c
CC deps/mbedtls/threading.c
CC deps/mbedtls/timing.c
CC deps/mbedtls/version.c
CC deps/mbedtls/version_features.c
CC deps/mbedtls/xtea.c
CC deps/mbedtls/certs.c
CC deps/mbedtls/pkcs11.c
CC deps/mbedtls/x509.c
CC deps/mbedtls/x509_create.c
CC deps/mbedtls/x509_crl.c
CC deps/mbedtls/x509_crt.c
CC deps/mbedtls/x509_csr.c
CC deps/mbedtls/x509write_crt.c
CC deps/mbedtls/x509write_csr.c
CC deps/mbedtls/debug.c
CC deps/mbedtls/net_sockets.c
CC deps/mbedtls/ssl_cache.c
CC deps/mbedtls/ssl_ciphersuites.c
CC deps/mbedtls/ssl_cli.c
CC deps/mbedtls/ssl_cookie.c
CC deps/mbedtls/ssl_srv.c
CC deps/mbedtls/ssl_ticket.c
CC deps/mbedtls/ssl_tls.c
CC audio/drivers/openal.c
CC audio/drivers/dsound.c
CC audio/drivers/wasapi.c
CC audio/drivers/xaudio.c
CC midi/drivers/winmm_midi.c
CC libretro-common/audio/conversion/s16_to_float.c
CC libretro-common/audio/conversion/float_to_s16.c
CC libretro-common/audio/audio_mix.c
CC libretro-common/formats/wav/rwav.c
CC menu/drivers/rgui.c
CC menu/drivers/materialui.c
CC menu/drivers/xmb.c
CC menu/drivers/ozone/ozone.c
CC menu/drivers/ozone/ozone_entries.c
CC menu/drivers/ozone/ozone_display.c
CC menu/drivers/ozone/ozone_texture.c
CC menu/drivers/ozone/ozone_theme.c
CC menu/drivers/ozone/ozone_sidebar.c
CC menu/menu_shader.c
CC menu/menu_driver.c
CC menu/menu_content.c
CC menu/menu_input.c
CC menu/menu_entries.c
CC menu/menu_setting.c
CC menu/menu_networking.c
CC menu/widgets/menu_filebrowser.c
CC menu/widgets/menu_dialog.c
CC menu/widgets/menu_input_dialog.c
CC menu/widgets/menu_input_bind_dialog.c
CC menu/widgets/menu_entry.c
CC menu/widgets/menu_osk.c
CC menu/menu_cbs.c
CC menu/cbs/menu_cbs_ok.c
CC menu/cbs/menu_cbs_cancel.c
CC menu/cbs/menu_cbs_select.c
CC menu/cbs/menu_cbs_start.c
CC menu/cbs/menu_cbs_info.c
CC menu/cbs/menu_cbs_refresh.c
CC menu/cbs/menu_cbs_left.c
CC menu/cbs/menu_cbs_right.c
CC menu/cbs/menu_cbs_deferred_push.c
CC menu/cbs/menu_cbs_scan.c
CC menu/cbs/menu_cbs_get_value.c
CC menu/cbs/menu_cbs_label.c
CC menu/cbs/menu_cbs_sublabel.c
CC menu/cbs/menu_cbs_title.c
CC menu/cbs/menu_cbs_up.c
CC menu/cbs/menu_cbs_down.c
CC menu/cbs/menu_cbs_contentlist_switch.c
CC menu/menu_displaylist.c
CC menu/menu_animation.c
CC menu/drivers/menu_generic.c
CC menu/drivers/null.c
CC menu/drivers_display/menu_display_null.c
CC tasks/task_overlay.c
CC input/input_overlay.c
CC led/drivers/led_overlay.c
CC gfx/drivers_font_renderer/stb.c
CC gfx/drivers_font_renderer/stb_unicode.c
CC gfx/drivers_font_renderer/freetype.c
CC libretro-common/rthreads/rthreads.c
CC gfx/video_thread_wrapper.c
CC audio/audio_thread_wrapper.c
CC input/drivers/dinput.c
CC input/drivers_joypad/dinput_joypad.c
CC input/drivers_joypad/xinput_joypad.c
CC input/drivers_hid/libusb_hid.c
CC input/drivers_joypad/hid_joypad.c
CC input/connect/joypad_connection.c
CC input/connect/connect_ps2adapter.c
CC input/connect/connect_psxadapter.c
CC input/connect/connect_ps3.c
CC input/connect/connect_ps4.c
CC input/connect/connect_wii.c
CC input/connect/connect_nesusb.c
CC input/connect/connect_snesusb.c
CC input/connect/connect_wiiupro.c
CC input/connect/connect_wiiugca.c
CC input/drivers/winraw_input.c
CC ui/drivers/ui_win32.c
CC ui/drivers/win32/ui_win32_window.c
CC ui/drivers/win32/ui_win32_browser_window.c
CC ui/drivers/win32/ui_win32_msg_window.c
CC ui/drivers/win32/ui_win32_application.c
CC gfx/drivers_context/gfx_null_ctx.c
CC gfx/video_state_tracker.c
CC gfx/drivers/gl.c
CC libretro-common/gfx/gl_capabilities.c
CC gfx/drivers_font/gl_raster_font.c
CC libretro-common/glsym/rglgen.c
CC menu/drivers_display/menu_display_gl.c
CC cores/libretro-ffmpeg/ffmpeg_fft.c
CC libretro-common/glsym/glsym_gl.c
CC gfx/drivers_shader/shader_glsl.c
CC gfx/drivers/sdl2_gfx.c
CC input/drivers/sdl_input.c
CC input/drivers_joypad/sdl_joypad.c
CC audio/drivers/sdl_audio.c
CC gfx/drivers_context/sdl_gl_ctx.c
CC gfx/drivers/vulkan.c
CC gfx/common/vulkan_common.c
CC libretro-common/vulkan/vulkan_symbol_wrapper.c
CC gfx/drivers_font/vulkan_raster_font.c
CXX gfx/drivers_shader/shader_vulkan.cpp
CC gfx/drivers_context/khr_display_ctx.c
CC menu/drivers_display/menu_display_vulkan.c
CC gfx/drivers_font/d3d_w32_font.c
CC gfx/drivers/d3d10.c
CC gfx/common/d3d10_common.c
CC gfx/drivers_font/d3d10_font.c
CC menu/drivers_display/menu_display_d3d10.c
CC gfx/drivers/d3d11.c
CC gfx/common/d3d11_common.c
CC gfx/drivers_font/d3d11_font.c
CC menu/drivers_display/menu_display_d3d11.c
CC gfx/drivers/d3d12.c
CC gfx/common/d3d12_common.c
CC gfx/drivers_font/d3d12_font.c
CC menu/drivers_display/menu_display_d3d12.c
CC gfx/common/d3dcompiler_common.c
CC gfx/common/dxgi_common.c
CC gfx/drivers/d3d9.c
CC gfx/common/d3d9_common.c
CC menu/drivers_display/menu_display_d3d9.c
CC gfx/common/d3d_common.c
CXX gfx/drivers_shader/slang_process.cpp
CXX gfx/drivers_shader/slang_preprocess.cpp
CXX gfx/drivers_shader/glslang_util.cpp
CXX gfx/drivers_shader/slang_reflection.cpp
CXX deps/glslang/glslang.cpp
CXX deps/glslang/glslang/SPIRV/disassemble.cpp
CXX deps/glslang/glslang/SPIRV/GlslangToSpv.cpp
CXX deps/glslang/glslang/SPIRV/Logger.cpp
CXX deps/glslang/glslang/SPIRV/doc.cpp
CXX deps/glslang/glslang/SPIRV/InReadableOrder.cpp
CXX deps/glslang/glslang/SPIRV/SPVRemapper.cpp
CXX deps/glslang/glslang/SPIRV/SpvBuilder.cpp
In file included from deps/glslang/glslang/SPIRV/hex_float.h:39,
                 from deps/glslang/glslang/SPIRV/SpvBuilder.cpp:49:
deps/glslang/glslang/SPIRV/bitutils.h: In instantiation of 'Dest spvutils::BitwiseCast(Src) [with Dest = spvutils::Float16; Src = short unsigned int]':
deps/glslang/glslang/SPIRV/hex_float.h:138:47:   required from 'T spvutils::FloatProxy<T>::getAsFloat() const [with T = spvutils::Float16]'
deps/glslang/glslang/SPIRV/hex_float.h:821:52:   required from here
deps/glslang/glslang/SPIRV/bitutils.h:29:14: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of non-trivially copyable type 'class spvutils::Float16'; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
   std::memcpy(&dest, &source, sizeof(dest));
   ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from deps/glslang/glslang/SPIRV/SpvBuilder.cpp:49:
deps/glslang/glslang/SPIRV/hex_float.h:43:7: note: 'class spvutils::Float16' declared here
 class Float16 {
       ^~~~~~~
In file included from deps/glslang/glslang/SPIRV/hex_float.h:39,
                 from deps/glslang/glslang/SPIRV/SpvBuilder.cpp:49:
deps/glslang/glslang/SPIRV/bitutils.h: In instantiation of 'Dest spvutils::BitwiseCast(Src) [with Dest = spvutils::FloatProxy<spvutils::Float16>; Src = short unsigned int]':
deps/glslang/glslang/SPIRV/hex_float.h:431:28:   required from 'void spvutils::HexFloat<T, Traits>::setFromSignUnbiasedExponentAndNormalizedSignificand(bool, spvutils::HexFloat<T, Traits>::int_type, spvutils::HexFloat<T, Traits>::uint_type, bool) [with T = spvutils::FloatProxy<spvutils::Float16>; Traits = spvutils::HexFloatTraits<spvutils::FloatProxy<spvutils::Float16> >; spvutils::HexFloat<T, Traits>::int_type = short int; spvutils::HexFloat<T, Traits>::uint_type = short unsigned int]'
deps/glslang/glslang/SPIRV/hex_float.h:633:5:   required from 'void spvutils::HexFloat<T, Traits>::castTo(other_T&, spvutils::round_direction) [with other_T = spvutils::HexFloat<spvutils::FloatProxy<spvutils::Float16>, spvutils::HexFloatTraits<spvutils::FloatProxy<spvutils::Float16> > >; T = spvutils::FloatProxy<float>; Traits = spvutils::HexFloatTraits<spvutils::FloatProxy<float> >]'
deps/glslang/glslang/SPIRV/hex_float.h:817:39:   required from here
deps/glslang/glslang/SPIRV/bitutils.h:29:14: warning: 'void* memcpy(void*, const void*, size_t)' copying an object of non-trivial type 'class spvutils::FloatProxy<spvutils::Float16>' from an array of 'short unsigned int' [-Wclass-memaccess]
   std::memcpy(&dest, &source, sizeof(dest));
   ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from deps/glslang/glslang/SPIRV/SpvBuilder.cpp:49:
deps/glslang/glslang/SPIRV/hex_float.h:115:7: note: 'class spvutils::FloatProxy<spvutils::Float16>' declared here
 class FloatProxy {
       ^~~~~~~~~~
CXX deps/glslang/glslang/glslang/GenericCodeGen/CodeGen.cpp
CXX deps/glslang/glslang/glslang/GenericCodeGen/Link.cpp
CXX deps/glslang/glslang/OGLCompilersDLL/InitializeDll.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/PoolAlloc.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/attribute.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/ParseContextBase.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/Scan.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/Constant.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/reflection.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/ShaderLang.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/InfoSink.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/IntermTraverse.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/linkValidate.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/ParseHelper.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/glslang_tab.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/parseConst.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/SymbolTable.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/Initialize.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/intermOut.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/limits.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/propagateNoContraction.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/iomapper.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/RemoveTree.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/Versions.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/Intermediate.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/preprocessor/PpContext.cpp
CXX deps/glslang/glslang/glslang/MachineIndependent/preprocessor/PpAtom.cpp
CXX deps/glslang/glslang/glslang/OSDependent/Windows/main.cpp
CXX deps/glslang/glslang/glslang/OSDependent/Windows/ossource.cpp
CXX deps/glslang/glslang/hlsl/hlslParseables.cpp
CXX deps/glslang/glslang/hlsl/hlslParseHelper.cpp
CXX deps/glslang/glslang/hlsl/hlslScanContext.cpp
CXX deps/glslang/glslang/hlsl/hlslTokenStream.cpp
CXX deps/glslang/glslang/hlsl/hlslAttributes.cpp
CXX deps/glslang/glslang/hlsl/hlslOpMap.cpp
CXX deps/glslang/glslang/hlsl/hlslGrammar.cpp
CXX deps/SPIRV-Cross/spirv_cross.cpp
CXX deps/SPIRV-Cross/spirv_cfg.cpp
CXX deps/SPIRV-Cross/spirv_glsl.cpp
CXX deps/SPIRV-Cross/spirv_hlsl.cpp
CXX deps/SPIRV-Cross/spirv_msl.cpp
CC gfx/drivers_context/wgl_ctx.c
CC libretro-common/file/archive_file.c
CC libretro-common/streams/trans_stream.c
CC libretro-common/streams/trans_stream_pipe.c
CC libretro-common/file/archive_file_7z.c
CC deps/7zip/7zIn.c
CC deps/7zip/Bra86.c
CC deps/7zip/7zFile.c
CC deps/7zip/7zStream.c
CC deps/7zip/LzFind.c
CC deps/7zip/LzmaDec.c
CC deps/7zip/LzmaEnc.c
CC deps/7zip/7zCrcOpt.c
CC deps/7zip/Bra.c
CC deps/7zip/7zDec.c
CC deps/7zip/Bcj2.c
CC deps/7zip/7zCrc.c
CC deps/7zip/Lzma2Dec.c
CC deps/7zip/7zBuf.c
CC deps/ibxm/ibxm.c
CC deps/libFLAC/bitmath.c
CC deps/libFLAC/bitreader.c
CC deps/libFLAC/cpu.c
CC deps/libFLAC/crc.c
CC deps/libFLAC/fixed.c
CC deps/libFLAC/float.c
CC deps/libFLAC/format.c
CC deps/libFLAC/lpc.c
CC deps/libFLAC/lpc_intrin_avx2.c
CC deps/libFLAC/lpc_intrin_sse2.c
CC deps/libFLAC/lpc_intrin_sse41.c
CC deps/libFLAC/lpc_intrin_sse.c
CC deps/libFLAC/md5.c
CC deps/libFLAC/memory.c
CC deps/libFLAC/stream_decoder.c
CC deps/libFLAC/windows_unicode_filenames.c
CC libretro-common/file/archive_file_zlib.c
CC libretro-common/streams/trans_stream_zlib.c
CC libretro-common/formats/libchdr/libchdr_bitstream.c
CC libretro-common/formats/libchdr/libchdr_cdrom.c
CC libretro-common/formats/libchdr/libchdr_chd.c
CC libretro-common/formats/libchdr/libchdr_huffman.c
CC libretro-common/streams/chd_stream.c
CC libretro-common/formats/libchdr/libchdr_zlib.c
CC libretro-common/formats/libchdr/libchdr_flac.c
CC libretro-common/formats/libchdr/libchdr_flac_codec.c
CC libretro-common/formats/libchdr/libchdr_lzma.c
CC libretro-common/formats/tga/rtga.c
CC libretro-common/formats/png/rpng.c
CC libretro-common/formats/png/rpng_encode.c
CC libretro-common/formats/jpeg/rjpeg.c
CC libretro-common/formats/bmp/rbmp.c
CC libretro-common/formats/bmp/rbmp_encode.c
CC libretro-common/formats/json/jsonsax.c
CC libretro-common/formats/json/jsonsax_full.c
CC libretro-common/formats/image_transfer.c
CC cores/libretro-gong/gong.c
CC libretro-common/net/net_compat.c
CC libretro-common/net/net_http.c
CC libretro-common/net/net_http_parse.c
CC libretro-common/net/net_socket.c
CC libretro-common/net/net_natt.c
CC network/net_http_special.c
CC tasks/task_http.c
CC tasks/task_netplay_lan_scan.c
CC tasks/task_netplay_nat_traversal.c
CC tasks/task_wifi.c
CC tasks/task_netplay_find_content.c
CC libretro-common/net/net_socket_ssl.c
CC libretro-common/net/net_ifinfo.c
CC network/netplay/netplay_delta.c
CC network/netplay/netplay_frontend.c
CC network/netplay/netplay_handshake.c
CC network/netplay/netplay_init.c
CC network/netplay/netplay_io.c
CC network/netplay/netplay_keyboard.c
CC network/netplay/netplay_sync.c
CC network/netplay/netplay_discovery.c
CC network/netplay/netplay_buf.c
CC network/netplay/netplay_room_parse.c
CC cheevos-new/cheevos.c
CC cheevos-new/badges.c
CC cheevos-new/fixup.c
CC cheevos-new/parser.c
CC cheevos-new/hash.c
CC deps/rcheevos/src/rcheevos/trigger.c
CC deps/rcheevos/src/rcheevos/condset.c
CC deps/rcheevos/src/rcheevos/condition.c
CC deps/rcheevos/src/rcheevos/operand.c
CC deps/rcheevos/src/rcheevos/term.c
CC deps/rcheevos/src/rcheevos/expression.c
CC deps/rcheevos/src/rcheevos/value.c
CC deps/rcheevos/src/rcheevos/lboard.c
CC deps/rcheevos/src/rcheevos/alloc.c
CC deps/rcheevos/src/rcheevos/format.c
CC deps/rcheevos/src/rurl/url.c
CXX deps/discord-rpc/src/discord_rpc.cpp
CXX deps/discord-rpc/src/rpc_connection.cpp
In file included from deps/discord-rpc/src/serialization.h:15,
                 from deps/discord-rpc/src/rpc_connection.h:4,
                 from deps/discord-rpc/src/rpc_connection.cpp:1:
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/document.h: In instantiation of 'void rapidjson::GenericValue<Encoding, Allocator>::SetObjectRaw(rapidjson::GenericValue<Encoding, Allocator>::Member*, rapidjson::SizeType, Allocator&) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>::Member = rapidjson::GenericMember<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >; rapidjson::SizeType = unsigned int]':
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/document.h:2363:9:   required from 'bool rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::EndObject(rapidjson::SizeType) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = FixedLinearAllocator<2048>; rapidjson::SizeType = unsigned int]'
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/reader.h:1736:18:   required from 'rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::IterativeParsingState rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::Transit(rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::IterativeParsingState, rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::Token, rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::IterativeParsingState, InputStream&, Handler&) [with unsigned int parseFlags = 1; InputStream = rapidjson::GenericInsituStringStream<rapidjson::UTF8<> >; Handler = rapidjson::GenericDocument<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<>, FixedLinearAllocator<2048> >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = FixedLinearAllocator<2048>]'
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/reader.h:1832:58:   required from 'rapidjson::ParseResult rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::IterativeParse(InputStream&, Handler&) [with unsigned int parseFlags = 1; InputStream = rapidjson::GenericInsituStringStream<rapidjson::UTF8<> >; Handler = rapidjson::GenericDocument<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<>, FixedLinearAllocator<2048> >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = FixedLinearAllocator<2048>]'
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/reader.h:487:46:   required from 'rapidjson::ParseResult rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::Parse(InputStream&, Handler&) [with unsigned int parseFlags = 1; InputStream = rapidjson::GenericInsituStringStream<rapidjson::UTF8<> >; Handler = rapidjson::GenericDocument<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<>, FixedLinearAllocator<2048> >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = FixedLinearAllocator<2048>]'
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/document.h:2159:22:   required from 'rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>& rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::ParseStream(InputStream&) [with unsigned int parseFlags = 1; SourceEncoding = rapidjson::UTF8<>; InputStream = rapidjson::GenericInsituStringStream<rapidjson::UTF8<> >; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = FixedLinearAllocator<2048>]'
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/document.h:2175:62:   required from 'rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>& rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::ParseStream(InputStream&) [with unsigned int parseFlags = 1; InputStream = rapidjson::GenericInsituStringStream<rapidjson::UTF8<> >; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = FixedLinearAllocator<2048>]'
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/document.h:2200:58:   required from 'rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>& rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::ParseInsitu(rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::Ch*) [with unsigned int parseFlags = 0; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = FixedLinearAllocator<2048>; rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::Ch = char]'
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/document.h:2208:47:   required from 'rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>& rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::ParseInsitu(rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::Ch*) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = FixedLinearAllocator<2048>; rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::Ch = char]'
deps/discord-rpc/src/rpc_connection.cpp:115:50:   required from here
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/document.h:1952:24: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'rapidjson::GenericValue<rapidjson::UTF8<> >::Member' {aka 'struct rapidjson::GenericMember<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >'} with no trivial copy-assignment; use copy-assignment instead [-Wclass-memaccess]
             std::memcpy(m, members, count * sizeof(Member));
             ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from deps/discord-rpc/src/serialization.h:15,
                 from deps/discord-rpc/src/rpc_connection.h:4,
                 from deps/discord-rpc/src/rpc_connection.cpp:1:
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/document.h:71:8: note: 'rapidjson::GenericValue<rapidjson::UTF8<> >::Member' {aka 'struct rapidjson::GenericMember<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >'} declared here
 struct GenericMember {
        ^~~~~~~~~~~~~
In file included from deps/discord-rpc/src/serialization.h:15,
                 from deps/discord-rpc/src/rpc_connection.h:4,
                 from deps/discord-rpc/src/rpc_connection.cpp:1:
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/document.h: In instantiation of 'void rapidjson::GenericValue<Encoding, Allocator>::SetArrayRaw(rapidjson::GenericValue<Encoding, Allocator>*, rapidjson::SizeType, Allocator&) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::SizeType = unsigned int]':
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/document.h:2371:9:   required from 'bool rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::EndArray(rapidjson::SizeType) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = FixedLinearAllocator<2048>; rapidjson::SizeType = unsigned int]'
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/reader.h:1766:18:   required from 'rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::IterativeParsingState rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::Transit(rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::IterativeParsingState, rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::Token, rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::IterativeParsingState, InputStream&, Handler&) [with unsigned int parseFlags = 1; InputStream = rapidjson::GenericInsituStringStream<rapidjson::UTF8<> >; Handler = rapidjson::GenericDocument<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<>, FixedLinearAllocator<2048> >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = FixedLinearAllocator<2048>]'
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/reader.h:1832:58:   required from 'rapidjson::ParseResult rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::IterativeParse(InputStream&, Handler&) [with unsigned int parseFlags = 1; InputStream = rapidjson::GenericInsituStringStream<rapidjson::UTF8<> >; Handler = rapidjson::GenericDocument<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<>, FixedLinearAllocator<2048> >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = FixedLinearAllocator<2048>]'
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/reader.h:487:46:   required from 'rapidjson::ParseResult rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::Parse(InputStream&, Handler&) [with unsigned int parseFlags = 1; InputStream = rapidjson::GenericInsituStringStream<rapidjson::UTF8<> >; Handler = rapidjson::GenericDocument<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<>, FixedLinearAllocator<2048> >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = FixedLinearAllocator<2048>]'
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/document.h:2159:22:   required from 'rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>& rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::ParseStream(InputStream&) [with unsigned int parseFlags = 1; SourceEncoding = rapidjson::UTF8<>; InputStream = rapidjson::GenericInsituStringStream<rapidjson::UTF8<> >; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = FixedLinearAllocator<2048>]'
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/document.h:2175:62:   required from 'rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>& rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::ParseStream(InputStream&) [with unsigned int parseFlags = 1; InputStream = rapidjson::GenericInsituStringStream<rapidjson::UTF8<> >; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = FixedLinearAllocator<2048>]'
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/document.h:2200:58:   required from 'rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>& rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::ParseInsitu(rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::Ch*) [with unsigned int parseFlags = 0; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = FixedLinearAllocator<2048>; rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::Ch = char]'
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/document.h:2208:47:   required from 'rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>& rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::ParseInsitu(rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::Ch*) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = FixedLinearAllocator<2048>; rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::Ch = char]'
deps/discord-rpc/src/rpc_connection.cpp:115:50:   required from here
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/document.h:1939:24: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'class rapidjson::GenericValue<rapidjson::UTF8<> >' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
             std::memcpy(e, values, count * sizeof(GenericValue));
             ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
deps/discord-rpc/thirdparty/rapidjson-1.1.0/include/rapidjson/document.h:540:7: note: 'class rapidjson::GenericValue<rapidjson::UTF8<> >' declared here
 class GenericValue {
       ^~~~~~~~~~~~
CXX deps/discord-rpc/src/serialization.cpp
CC discord/discord.c
CXX deps/discord-rpc/src/discord_register_win.cpp
CXX deps/discord-rpc/src/connection_win.cpp
CC input/input_remote.c
CC cores/libretro-net-retropad/net_retropad_core.c
CC deps/miniupnpc/igd_desc_parse.c
CC deps/miniupnpc/upnpreplyparse.c
CC deps/miniupnpc/upnpcommands.c
CC deps/miniupnpc/upnperrors.c
CC deps/miniupnpc/connecthostport.c
CC deps/miniupnpc/portlistingparse.c
CC deps/miniupnpc/receivedata.c
deps/miniupnpc/receivedata.c: In function 'receivedata':
deps/miniupnpc/receivedata.c:84:21: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'u_long' {aka 'const long unsigned int'} [-Wformat=]
   printf("scope_id=%u\n", src_addr6->sin6_scope_id);
                    ~^     ~~~~~~~~~~~~~~~~~~~~~~~~
                    %lu
deps/miniupnpc/receivedata.c:84:21: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'u_long' {aka 'const long unsigned int'} [-Wformat=]
   printf("scope_id=%u\n", src_addr6->sin6_scope_id);
                    ~^     ~~~~~~~~~~~~~~~~~~~~~~~~
                    %lu
CC deps/miniupnpc/upnpdev.c
CC deps/miniupnpc/minissdpc.c
CC deps/miniupnpc/miniwget.c
CC deps/miniupnpc/miniupnpc.c
CC deps/miniupnpc/minixml.c
CC deps/miniupnpc/minisoap.c
WINDRES media/rarch.rc
CC gfx/common/win32_common.c
CC frontend/drivers/platform_win32.c
CC gfx/drivers/gdi_gfx.c
CC gfx/drivers_context/gdi_ctx.c
CC gfx/drivers_font/gdi_font.c
CC gfx/display_servers/dispserv_win32.c
CC menu/drivers_display/menu_display_gdi.c
CC record/drivers/record_ffmpeg.c
CC cores/libretro-ffmpeg/ffmpeg_core.c
CC tasks/task_decompress.c
MOC ui/drivers/ui_qt.h
CXX obj-unix/debug/ui/drivers/moc_ui_qt.cpp
MOC ui/drivers/qt/ui_qt_load_core_window.h
CXX obj-unix/debug/ui/drivers/qt/moc_ui_qt_load_core_window.cpp
MOC ui/drivers/qt/gridview.h
CXX obj-unix/debug/ui/drivers/qt/moc_gridview.cpp
MOC ui/drivers/qt/shaderparamsdialog.h
CXX obj-unix/debug/ui/drivers/qt/moc_shaderparamsdialog.cpp
MOC ui/drivers/qt/coreoptionsdialog.h
CXX obj-unix/debug/ui/drivers/qt/moc_coreoptionsdialog.cpp
MOC ui/drivers/qt/filedropwidget.h
CXX obj-unix/debug/ui/drivers/qt/moc_filedropwidget.cpp
MOC ui/drivers/qt/coreinfodialog.h
CXX obj-unix/debug/ui/drivers/qt/moc_coreinfodialog.cpp
MOC ui/drivers/qt/playlistentrydialog.h
CXX obj-unix/debug/ui/drivers/qt/moc_playlistentrydialog.cpp
MOC ui/drivers/qt/viewoptionsdialog.h
CXX obj-unix/debug/ui/drivers/qt/moc_viewoptionsdialog.cpp
LD retroarch

Could you make PR?

@ofry
Copy link
Author

ofry commented Feb 12, 2019

@orbea About lua+mpv issue, I'm interested, could it compile and run fine with built-in lua, built-in ffmpeg and built-in mpv simultaneously?

@orbea
Copy link
Contributor

orbea commented Feb 12, 2019

Could you make PR?

Ofc not, that patch only works for your system and will cause issues on several others...

@orbea About lua+mpv issue, I'm interested, could it compile and run fine with built-in lua, built-in ffmpeg and built-in mpv simultaneously?

The builtin mpv doesn't use the builtin ffmpeg, it uses libmpv which is presumably built against a system version of ffmpeg (Just like the ffmpeg core).

There are a few issues that need to be addressed with lua + mpv.

  1. The audio is not fully hooked up with the builtin mpv core and causes build errors, commenting this out gets past the errors, but then there is no audio.
  2. While compiling both the ffmpeg and mpv cores at once works, it will force using the mpv core at runtime and this needs to be configurable at runtime.
  3. Compiling with both libmpv and lua causes some kind of issue in the system lua which libmpv is built against, its preferable to build libmpv with lua for both the OSD and youtube-dl support.

As for the system lua this issue is essentially stuck and at one of two upstream issues need to be resolved before I might be able to make it work.

  1. Upstream lua starts shipping its own shared libraries and pkgconfig files instead of forcing every distro to reinvent the wheel.
  2. Upstream recheevos allows building with all three lua versions instead of just lua52 or lua53.

@ofry
Copy link
Author

ofry commented Feb 13, 2019

This PR in mpv upstream could add audio callback:

mpv-player/mpv#5566

Could anyone fix code style issues in this PR?

@ofry
Copy link
Author

ofry commented Mar 8, 2019

@orbea Could crossplatform lua version check be done by this way?

First, lua executable (with different versions) could be:

lua
lua53
lua5.3
lua52
lua5.2
lua51
lua5.1

Paths to these commands (and are it exist at all) we can get at least by:

which lua

For version check we could parse output of this command:

lua -v

Examples:

ofry@games MINGW64 ~
$ lua -v
Lua 5.3.5  Copyright (C) 1994-2018 Lua.org, PUC-Rio

ofry@games MINGW64 ~
$ lua5.1 -v
Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio

@orbea
Copy link
Contributor

orbea commented Mar 8, 2019

That is not a very clean solution and doesn't address problems like the header directories. Also fwiw we use the exists function instead of which(1) in qb/qb.init.sh for portability concerns.

The current roadblock is in issue RetroAchievements/rcheevos#15.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request New enhancement to RetroArch. qb upstream issue
Projects
None yet
Development

No branches or pull requests

2 participants