danomatika / joyosc

(maintained) hid device to osc event daemon used in the robotcowboy project
http://robotcowboy.com
GNU General Public License v3.0
41 stars 2 forks source link

Trying to compile on Windows 10 #13

Closed zebra1993 closed 4 months ago

zebra1993 commented 4 months ago

Good Day everyone Im currently trying to compile joyosc for windows. ive gotten to the make part. the build process does suddenly stop though at this step. I have sdl2 and tinyxml2 installed with MSYS, configure does run cleanly.

Am i missing libaries, have i installed to much things?

[CONSOLE OUTPUT: (cut down to the none working part] Making all in joyosc make[3]: Entering directory '/c/Users/pepper/joyosc/src/joyosc' g++ -DHAVE_CONFIG_H -I. -I../../src -IC:/msys64/mingw64/include/SDL2 -Dmain=SDL_main -I../../lib/cpphelpers -g -O2 -MT Config.o -MD -MP -MF .deps/Config.Tpo -c -o Config.o Config.cpp Config.cpp: In member function 'bool Config::loadXMLFile(const std::string&)': Config.cpp:183:9: error: reference to 'XMLDocument' is ambiguous 183 | XMLDocument doc = new XMLDocument; | ^~~ In file included from Config.h:33, from Config.cpp:23: C:/msys64/mingw64/include/tinyxml2.h:1720:20: note: candidates are: 'class tinyxml2::XMLDocument' 1720 | class TINYXML2_LIB XMLDocument : public XMLNode | ^~~ In file included from C:/msys64/mingw64/include/urlmon.h:458, from C:/msys64/mingw64/include/objbase.h:163, from C:/msys64/mingw64/include/ole2.h:17, from C:/msys64/mingw64/include/wtypes.h:13, from C:/msys64/mingw64/include/winscard.h:10, from C:/msys64/mingw64/include/windows.h:97, from C:/msys64/mingw64/include/winsock2.h:23, from C:/msys64/mingw64/include/lo/lo_endian.h:24, from C:/msys64/mingw64/include/lo/lo.h:28, from Config.h:31: C:/msys64/mingw64/include/msxml.h:300:27: note: 'typedef class XMLDocument XMLDocument' 300 | typedef class XMLDocument XMLDocument; | ^~~ Config.cpp:183:22: error: 'doc' was not declared in this scope 183 | XMLDocument doc = new XMLDocument; | ^~~ Config.cpp:183:32: error: reference to 'XMLDocument' is ambiguous 183 | XMLDocument *doc = new XMLDocument; | ^~~ C:/msys64/mingw64/include/tinyxml2.h:1720:20: note: candidates are: 'class tinyxml2::XMLDocument' 1720 | class TINYXML2_LIB XMLDocument : public XMLNode | ^~~ C:/msys64/mingw64/include/msxml.h:300:27: note: 'typedef class XMLDocument XMLDocument' 300 | typedef class XMLDocument XMLDocument; | ^~~ Config.cpp:240:18: error: type '' argument given to 'delete', expected pointer 240 | if(doc) {delete doc;} | ^~~~~~ Config.cpp:244:18: error: type '' argument given to 'delete', expected pointer 244 | if(doc) {delete doc;} | ^~~~~~ make[3]: [Makefile:476: Config.o] Error 1 make[3]: Leaving directory '/c/Users/pepper/joyosc/src/joyosc' make[2]: [Makefile:385: all-recursive] Error 1 make[2]: Leaving directory '/c/Users/pepper/joyosc/src' make[1]: [Makefile:324: all] Error 2 make[1]: Leaving directory '/c/Users/pepper/joyosc/src' make: [Makefile:460: all-recursive] Error 1

danomatika commented 4 months ago

What version of tinyxml is installed?

zebra1993 commented 4 months ago

I am running both latest versions mingw-w64-x86_64-SDL2-2.30.3-1 and mingw-w64-x86_64-tinyxml2-10.0.0-1)

danomatika commented 4 months ago

It might be something to do with TinyXML 10. I will try to check tomorrow.

zebra1993 commented 4 months ago

What versions were you usually building with?, can see if i can downgrade and maybe then works?

danomatika commented 4 months ago

I am building with TinyXML 10.0.0 as well. Weird. It seems the using namespace tinyxml2 is somehow not working for you, although I can't imagine why.

danomatika commented 4 months ago

It looks like tinyxml might not be added to the search path. What is the output of pkg-config in msys2?

pkg-config --cflags --libs tinyxml2
zebra1993 commented 4 months ago

$ pkg-config --cflags --libs tinyxml2 Package tinyxml2 was not found in the pkg-config search path. Perhaps you should add the directory containing `tinyxml2.pc' to the PKG_CONFIG_PATH environment variable Package 'tinyxml2', required by 'virtual:world', not found

Edit#1 currently trying to find a way to add the link to the config path

Edit#2 did re install tinyxml2 while running mysys in admin mode, did run [ ./configure ] in admin mode aswell, running [ make ] as admin is the same error again

zebra1993 commented 4 months ago

Found this stack overflow: [ # echo $PKG_CONFIG_PATH ] /usr/lib/pkgconfig:/usr/share/pkgconfig:/lib/pkgconfig

tinyxml2.pc is in [ C:\msys64\mingw64\lib\pkgconfig ] which i assume is the [ :/lib/pkgconfig ] at the end?

zebra1993 commented 4 months ago

Just tried the 0.4.5 Tarball-Version, compiles all the way through. Getting the 0.5.0 from the same location, errors out at the usual place.

i did copy the 'lopack' and 'tinyobject' libaries over from 4.5 to 5.0, running [ ./configure ] again didnt change anything though

edit1# just tried the 0.4.5 version, OSC is getting sent when i move the joystick around (visible in protokol).

zebra1993 commented 4 months ago

After running 0.4.5 for a bit,

for the 1st issue, i think ill reinstall mysys2 completely and build the project from scratch the other two are probably fixed after that, maybe? will update.

Edit #1

still open, will keep to look into. trying to get 0.5.0 building tomorrow Can Axis have different thresholds, why no [-e]

danomatika commented 4 months ago

Just tried the 0.4.5 Tarball-Version, compiles all the way through. Getting the 0.5.0 from the same location, errors out at the usual place.

Ok, it is a regression with 0.5.0.

i did copy the 'lopack' and 'tinyobject' libaries over from 4.5 to 5.0, running [ ./configure ] again didnt change anything though

They are wrappers around liblo and tinyxml, respectively. Version 0.5.0 removed the need for them as I decided to just use both libs directly and it simplifies the build and install process.

danomatika commented 4 months ago

After running 0.4.5 for a bit, ...

Can you open these with separate issues, since this is unrelated to the build error? Also, please wait to test with 0.5.0 when it's working first. I don't have a Windows machine to try things directly.

zebra1993 commented 4 months ago

will open new issue. 👍

danomatika commented 4 months ago

Can you try the bugfix/win-build branch? You will need to check out this repo and generate the configure script by running ./autogen.sh. For autogen to work, you will need install auto tools, probably ala pacman -S autotools.

zebra1993 commented 4 months ago

getting this when running ./configure config.status: error: cannot find input file: 'src/Makefile.in' then config.status: error: cannot find input file: 'src/joyosc/Makefile.in' then config.status: error: cannot find input file: 'src/lsjs/Makefile.in' then config.status: error: cannot find input file: 'src/config.h.in'

i did run ./autogen.sh before starting configure

did copy the missign files over from 0.5.0, ./configure is now passing

zebra1993 commented 4 months ago

$ make Making all in lib make[1]: Entering directory '/c/Users/pepper/joyosc-dev/joyosc/lib' make[2]: Entering directory '/c/Users/pepper/joyosc-dev/joyosc/lib' make[2]: No rule to make target 'cpphelpers/Log.h', needed by 'all-am'. Stop. make[2]: Leaving directory '/c/Users/pepper/joyosc-dev/joyosc/lib' make[1]: [Makefile:386: all-recursive] Error 1 make[1]: Leaving directory '/c/Users/pepper/joyosc-dev/joyosc/lib' make: *** [Makefile:458: all-recursive] Error 1

copied the files in lib/cpphelpers over

make completed. ./joyosc.exe works, -e flag doesnt. -> opened an issue

danomatika commented 4 months ago

I set up CI (Continuous Integration) builds for Windows and Linux to see what's going on. Now that I can better debug, this should be fixed in the current master branch now.

copied the files in lib/cpphelpers over

This isn't necessary. You need to run git submodule init && git submodule update to pull those automatically.

In any case, please try the current master branch.

The full set up & build steps should be simpler now as the autotools package installs most of what's needed and there appears to be a new liblo package:

git clone https://github.com/danomatika/joyosc.git
cd joyosc
git submodule init
git submodule update
pacman -S autotools mingw-w64-x86_64-SDL2 mingw-w64-x86_64-liblo mingw-w64-x86_64-tinyxml2
./autogen.sh
./configure
make
zebra1993 commented 4 months ago

🥳 compile works correctly now.

Thank you ♥

danomatika commented 4 months ago

joyosc 0.5.1 is now available and includes these fixes. Please test the new dist tarball. Any new issues can go into a new release.