Closed budrus closed 3 years ago
Highly welcomed by the eCAL project too.
I am on it ...
Today I tried a compilation in Windows 10 Pro (VS2017 x64):
cmake -Bbuild -Hiceoryx_meta -Ax64
cmake --build build
In order to successfully compile the current main (347224e):
set(CMAKE_GENERATOR_PLATFORM "x64")
in the if(WIN32)
section of cmake/[cpptoml,cyclonedds,googletest]/CmakeListes.txt
. I also added a "-Ax64"
option in execute_process
. I set the same CMAKE_GENERATOR_PLATFORM
in the *.cmake.in
files, but it should be useless (imho)target_compile_definitions(iceoryx_posh PUBLIC _ENABLE_EXTENDED_ALIGNED_STORAGE)
in iceoryx_posh
static_cast<T>
), since CL raises a compilation error:
iceoryx_posh\test\moduletests
: test_mepoo_mempool.cpp:28
, test_mepoo_typed_mempool.cpp:[42, 93]
iceoryx_utils\test\moduletests
: test_cxx_forward_list.cpp:1837
, test_cxx_list.cpp:2140
, test_semaphore_module.cpp:78
getpid
is available in Win as _getpid
after the inclusion of process.h
. I have included the following snippets at the begin of two sources: iceoryx_posh/source/roudi/roudi.cpp
and iceoryx_posh/source/runtime/message_queue_interface.cpp
#ifdef _WIN32
#include <process.h>
inline int getpid() { return _getpid(); }
#endif
for sure there is a better place/definition of this wrapper.
Even if compiled correctly, still I got errors in tests, that I'm attaching (compiled in Debug). I hope it will helps.
binding_c_intengrationtests_stderr.txt binding_c_intengrationtests_stdout.txt
posh_components.txt posh_integrationtests_stderr.txt posh_integrationtests_stdout.txt posh_moduletests_stderr.txt posh_moduletests_stdout.txt
utils_integrationtests_stdout.txt utils_moduletests_stderr.txt utils_moduletests_stdout.txt utils_componenttests_stout.txt test_stress_sofi_stdout.txt
The examples (like simple publisher/subscriber) crashes with errors about UID/GID (not finding 0). Ican provide more detail on request.
Cool @MatteoRagni, thanks for pushing the WIndows support. So far we do not officially support it. I also think there was no running setup so far. @elfenpiff can give a status where we are.
Hi @MatteoRagni thanks for your work but Windows is currently not yet supported. We only have a compilation test in our pipeline where the semaphore is verified.
Your getpid
snippet would fit perfectly into: https://github.com/eclipse/iceoryx/blob/master/iceoryx_utils/platform/win/include/iceoryx_utils/platform/unistd.hpp
Here I proceed as follows.
unistd.h
)getpid
in linux.At the moment the following in Windows should work:
The next big Windows port would be:
If you would like to start with this you could try to run only the iceoryx_utils message queue tests:
./build/utils/test/utils_moduletests --gtest_filter="MessageQueue*"
in Windows. If everything is ported and and green we could merge it into iceoryx and we would be one step closer to our windows support.
@MatteoRagni would you like to continue? Otherwise I hope that I can continue exactly with this in 2 or 3 weeks.
Btw. if you have further questions you can contact me via gitter: https://gitter.im/eclipse/iceoryx (or directly)
@elfenpiff I tried the actual situation of the test utils_moduletests --gtest_filter="MessageQueue*"
(I removed the _WIN32
guard). I'm attaching the results, but I had to disable timedSend
, since it goes in dead lock.
Unfortunately 8 on 19 are green... 😞
I'll try to check out to make something green, but it is something that I have to do in my free time unfortunately.
@MatteoRagni no problem. I will try to work as soon as possible on it. Maybe you get the Windows support as your personal christmas present ;) but I cannot promise this.
Basic Windows support is implemented. All examples are running and most of the unit tests too (except unix domain sockets or ACLs). The tests which are excluded at the moment are testing corner cases which are not relevant for the everyday use and will be implemented with #846
Brief feature description
Having the possibility to use iceoryx on Windows 10
Detailed information
Needed for ROS2 tier 1 support ROS2 Tiers
[x] Unit and integration tests, except timing tests, of the supported features need to run on Windows
define public private
#529The following features have to be implemented