Problems building Boost libraries for Windows Store when C++/CX is involved
Hi, I am working on porting the boost libraries we depend on to winrt, most porting is rather straightforward (basically switch from win32 apis which are 20 years old to apis which are 15 years old :D ). However I have hit a bit of a problem when compiling Boost.Log. Boost.Log depends on Boost.Asio which uses C++/CX to call some of the newer Store APIs (Windows::Networking and friends). When I build I get these errors: compile-c-c++ ..\..\..\bin.v2\libs\log\build\msvc-14.0\debug\log-api-winnt\threading-multi\windows-api-store\dump_ssse3.obj dump_ssse3.cpp ..\..\..\libs\log\src\dump_ssse3.cpp: fatal error C1107: could not find assembly 'platform.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 store >nul cl /Zm800 /ZW /EHsc -nologo @"..\..\..\bin.v2\libs\log\build\msvc-14.0\debug\log-api-winnt\threading-multi\windows-api-store\dump_ssse3.obj.rsp" (As you can see I have monkey-patched msvc.jam to append the "store" argument to vcvarsall.bat - to no avail :( -- the monkey-patch is here if you want to look at it: https://github.com/mauve/build/commits/universal-windows-boost-1.59.0 ) The @response file looks like this: "..\..\..\libs\log\src\dump_ssse3.cpp" -Fo"..\..\..\bin.v2\libs\log\build\msvc-14.0\debug\log-api-winnt\threading-multi\windows-api-store\dump_ssse3.obj" -TP /Z7 /Od /Ob0 /W3 /GR /MDd /Zc:forScope /Zc:wchar_t /wd4675 /EHs /arch:SSE2 /bigobj /wd4003 /wd4456 /wd4459 /wd4503 -c -DBOOST_ALL_NO_LIB=1 -DBOOST_CHRONO_DYN_LINK=1 -DBOOST_DATE_TIME_DYN_LINK=1 -DBOOST_FILESYSTEM_DYN_LINK=1 -DBOOST_LOG_BUILDING_THE_LIB=1 -DBOOST_LOG_DLL -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DBOOST_SYSTEM_DYN_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_THREAD_BUILD_DLL=1 -DBOOST_THREAD_DONT_USE_CHRONO=1 -DBOOST_THREAD_USE_DLL=1 -DDATE_TIME_INLINE -DWINAPI_FAMILY=WINAPI_FAMILY_APP -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -D_WIN32_WINNT=0x0603 "-I..\..\.." Regards, Mikael
On 05-Oct-15 12:48 PM, Mikael Olenfalk wrote:
Hi,
I am working on porting the boost libraries we depend on to winrt, most porting is rather straightforward (basically switch from win32 apis which are 20 years old to apis which are 15 years old :D ).
However I have hit a bit of a problem when compiling Boost.Log. Boost.Log depends on Boost.Asio which uses C++/CX to call some of the newer Store APIs (Windows::Networking and friends).
When I build I get these errors:
compile-c-c++ ..\..\..\bin.v2\libs\log\build\msvc-14.0\debug\log-api-winnt\threading-multi\windows-api-store\dump_ssse3.obj dump_ssse3.cpp ..\..\..\libs\log\src\dump_ssse3.cpp: fatal error C1107: could not find assembly 'platform.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 store >nul cl /Zm800 /ZW /EHsc -nologo @"..\..\..\bin.v2\libs\log\build\msvc-14.0\debug\log-api-winnt\threading-multi\windows-api-store\dump_ssse3.obj.rsp"
Mikael, according to: http://permalink.gmane.org/gmane.comp.lib.boost.devel/263303 it seems that command-line scripts in VS 2015 are quite broken. I could not get anything to work. Maybe, you could recheck my findings, and if they are sensible, report a bug to Microsoft? - Volodya
On 05.10.2015 12:48, Mikael Olenfalk wrote:
Hi,
I am working on porting the boost libraries we depend on to winrt, most porting is rather straightforward (basically switch from win32 apis which are 20 years old to apis which are 15 years old :D ).
However I have hit a bit of a problem when compiling Boost.Log. Boost.Log depends on Boost.Asio which uses C++/CX to call some of the newer Store APIs (Windows::Networking and friends).
When I build I get these errors:
compile-c-c++ ..\..\..\bin.v2\libs\log\build\msvc-14.0\debug\log-api-winnt\threading-multi\windows-api-store\dump_ssse3.obj dump_ssse3.cpp ..\..\..\libs\log\src\dump_ssse3.cpp: fatal error C1107: could not find assembly 'platform.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable
dump_ssse3.cpp (as well as other dump*.cpp files) are not related to Boost.ASIO or networking in general. I don't think the error above is related to Boost.ASIO. That said, I'm quite far from modern Windows development currently and I don't understand the error. I have no idea what an assembly or platform.winmd in particular is. The code in dump_ssse3.cpp uses compiler intrinsics to generate SSSE3-optimized x86 code, so maybe there's some limitation about using the intrinsics.
On 05-Oct-15 6:53 PM, Andrey Semashev wrote:
On 05.10.2015 12:48, Mikael Olenfalk wrote:
Hi,
I am working on porting the boost libraries we depend on to winrt, most porting is rather straightforward (basically switch from win32 apis which are 20 years old to apis which are 15 years old :D ).
However I have hit a bit of a problem when compiling Boost.Log. Boost.Log depends on Boost.Asio which uses C++/CX to call some of the newer Store APIs (Windows::Networking and friends).
When I build I get these errors:
compile-c-c++ ..\..\..\bin.v2\libs\log\build\msvc-14.0\debug\log-api-winnt\threading-multi\windows-api-store\dump_ssse3.obj dump_ssse3.cpp ..\..\..\libs\log\src\dump_ssse3.cpp: fatal error C1107: could not find assembly 'platform.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable
dump_ssse3.cpp (as well as other dump*.cpp files) are not related to Boost.ASIO or networking in general. I don't think the error above is related to Boost.ASIO.
That said, I'm quite far from modern Windows development currently and I don't understand the error. I have no idea what an assembly or platform.winmd in particular is. The code in dump_ssse3.cpp uses compiler intrinsics to generate SSSE3-optimized x86 code, so maybe there's some limitation about using the intrinsics.
Andrey, I don't believe this error has anything to do with Boost.Log or content of dump_sse3.cpp at all - it's emitted pretty much any time when cl.exe is passed /ZW switch (which asks to 'link' to Windows Runtime things), and these Windows Runtime things are not found in search paths. - Volodya
On 05.10.2015 22:44, Vladimir Prus wrote:
On 05-Oct-15 6:53 PM, Andrey Semashev wrote:
On 05.10.2015 12:48, Mikael Olenfalk wrote:
Hi,
I am working on porting the boost libraries we depend on to winrt, most porting is rather straightforward (basically switch from win32 apis which are 20 years old to apis which are 15 years old :D ).
However I have hit a bit of a problem when compiling Boost.Log. Boost.Log depends on Boost.Asio which uses C++/CX to call some of the newer Store APIs (Windows::Networking and friends).
When I build I get these errors:
compile-c-c++ ..\..\..\bin.v2\libs\log\build\msvc-14.0\debug\log-api-winnt\threading-multi\windows-api-store\dump_ssse3.obj
dump_ssse3.cpp ..\..\..\libs\log\src\dump_ssse3.cpp: fatal error C1107: could not find assembly 'platform.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable
dump_ssse3.cpp (as well as other dump*.cpp files) are not related to Boost.ASIO or networking in general. I don't think the error above is related to Boost.ASIO.
That said, I'm quite far from modern Windows development currently and I don't understand the error. I have no idea what an assembly or platform.winmd in particular is. The code in dump_ssse3.cpp uses compiler intrinsics to generate SSSE3-optimized x86 code, so maybe there's some limitation about using the intrinsics.
Andrey,
I don't believe this error has anything to do with Boost.Log or content of dump_sse3.cpp at all - it's emitted pretty much any time when cl.exe is passed /ZW switch (which asks to 'link' to Windows Runtime things), and these Windows Runtime things are not found in search paths.
Ok, thanks. If this is a problem with VS environment setup scripts, has this issue been reported to MS Connect?
On 05-Oct-15 11:21 PM, Andrey Semashev wrote:
Andrey,
I don't believe this error has anything to do with Boost.Log or content of dump_sse3.cpp at all - it's emitted pretty much any time when cl.exe is passed /ZW switch (which asks to 'link' to Windows Runtime things), and these Windows Runtime things are not found in search paths.
Ok, thanks.
If this is a problem with VS environment setup scripts, has this issue been reported to MS Connect?
I don't know, and I never used MS Connect. While I can do this, it would be better if somebody actually using VS on a daily basis try same and then report the bug. - Volodya
On Tue, Oct 6, 2015 at 8:33 AM, Vladimir Prus
On 05-Oct-15 11:21 PM, Andrey Semashev wrote:
Andrey,
I don't believe this error has anything to do with Boost.Log or content of dump_sse3.cpp at all - it's emitted pretty much any time when cl.exe is passed /ZW switch (which asks to 'link' to Windows Runtime things), and these Windows Runtime things are not found in search paths.
Ok, thanks.
If this is a problem with VS environment setup scripts, has this issue been reported to MS Connect?
I don't know, and I never used MS Connect. While I can do this, it would be better if somebody actually using VS on a daily basis try same and then report the bug.
I have reached out to some people at MS, I will update as soon as we have found a solution to this problem. So you do not need to report to MS Connect just yet. /M PS: sorry for responding slowly, gmail put all my boost emails in a forum category I have never heard of before.
On Tue, Oct 6, 2015 at 12:13 PM, Mikael Olenfalk
On Tue, Oct 6, 2015 at 8:33 AM, Vladimir Prus
wrote: On 05-Oct-15 11:21 PM, Andrey Semashev wrote:
Andrey,
I don't believe this error has anything to do with Boost.Log or content of dump_sse3.cpp at all - it's emitted pretty much any time when cl.exe is passed /ZW switch (which asks to 'link' to Windows Runtime things), and these Windows Runtime things are not found in search paths.
Ok, thanks.
If this is a problem with VS environment setup scripts, has this issue been reported to MS Connect?
I don't know, and I never used MS Connect. While I can do this, it would be better if somebody actually using VS on a daily basis try same and then report the bug.
I have reached out to some people at MS, I will update as soon as we have found a solution to this problem.
So you do not need to report to MS Connect just yet.
/M
MS got back to me and verified that this is indeed a bug in the setup scripts. I will just verify the workaround and then try to come up with patch for boost.build. Without promising anything I expect a fix to be shipped with Update 1. /M
On 08-Oct-15 10:32 PM, Mikael Olenfalk wrote:
I don't believe this error has anything to do with Boost.Log or content of dump_sse3.cpp at all - it's emitted pretty much any time when cl.exe is passed /ZW switch (which asks to 'link' to Windows Runtime things), and these Windows Runtime things are not found in search paths.
MS got back to me and verified that this is indeed a bug in the setup scripts. I will just verify the workaround and then try to come up with patch for boost.build. Without promising anything I expect a fix to be shipped with Update 1.
Great, thanks for clarifying the situation. Is there some public URL where progress of the bug is tracked, or it's behind closed doors? Thanks, - Volodya
On Fri, Oct 9, 2015 at 9:29 AM, Vladimir Prus
On 08-Oct-15 10:32 PM, Mikael Olenfalk wrote:
I don't believe this error has anything to do with Boost.Log or content
of dump_sse3.cpp at all - it's emitted pretty much any time when cl.exe is passed /ZW switch (which asks to 'link' to Windows Runtime things), and these Windows Runtime things are not found in search paths.
MS got back to me and verified that this is indeed a bug in the setup scripts. I will just verify the workaround and then try to come up with patch for boost.build. Without promising anything I expect a fix to be shipped with Update 1.
Great, thanks for clarifying the situation. Is there some public URL where progress of the bug is tracked, or it's behind closed doors?
It is tracked internally, I haven't heard of a public bug report. I can ask them to provide one if you want to but they sounded very confident this will be solved in U1. Given that U1 CTP was just released I will ask and verify. However it seems like the command line tools in VS2015 only support targeting UWP (and WP8.1) so we might need to take that into consideration when making a fix, refer this table I got from one of the people I have been talking with: *App Platform* *Toolset* *Win SDK* Win 8.0 (store) V110 (VS 2012) Win 8.0 WP 8.0 (store) V110 (VS 2012 U1) Win 8.0 & WP 8.0 Win 8.1 (store) V120 (VS 2013) Win 8.1 WP 8.1 (store) V120 (VS 2013 U1) Win 8.1 & WP 8.1 UWP (store) V140 (VS 2015) Win 10 /M
It is tracked internally, I haven't heard of a public bug report. I can ask them to provide one if you want to but they sounded very confident this will be solved in U1. Given that U1 CTP was just released I will ask and verify.
I've installed VS 2015 Update 1 but I'm still seeing build errors (could not find assembly 'platform.winmd'). here's my build statement: *.\b2 --build-dir=bld link=shared runtime-link=shared threading=multi address-model=64 --toolset=msvc-14.0 windows-api=store* Have you been able to verify if it will indeed build with U1? Is there something wrong that I'm doing with the build statement? ~G -- View this message in context: http://boost.2283326.n4.nabble.com/Problems-building-Boost-libraries-for-Win... Sent from the Boost - Dev mailing list archive at Nabble.com.
participants (4)
-
Andrey Semashev
-
GarrettG
-
Mikael Olenfalk
-
Vladimir Prus