Lumberyard 1.13 - Build failing on OSX

Trying to build the engine from the MacOS support files for 1.13 fails for me. When doing the build using the command line

sh lmbr_waf.sh build_darwin_x64_profile -p all

I at first get some errors about unused lambda captures in some unit tests (I don’t get those error when building in Xcode). I could fix those by adding

'-Wno-unused-lambda-capture',

to the COMMON_COMPILER_FLAGS in compile_settings_clang.py.

However, then both on the command line and in Xcode I get the errors


		In file included from /Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/SphericalHarmonics/PRT/BacklightingAlphaTextureMaterial.cpp:20:
In file included from /Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/SphericalHarmonics/PRT/BacklightingAlphaTextureMaterial.h:23:
In file included from /Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/PRT/ISHMaterial.h:21:
In file included from /Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/PRT/PRTTypes.h:442:
/Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/PRT/PRTTypes.inl:198:2: error: missing 'typename' prior to dependent type template name 'prtlist<T>::SListElem'
prtlist<T>::SListElem<TE> prtlist<T>::SListElem<TE>::CreateDummy()
^
/Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/PRT/PRTTypes.inl:262:2: error: missing 'typename' prior to dependent type template name 'prtlist<T>::SListElem'
prtlist<T>::SListElem<TE>& prtlist<T>::SListElem<TE>::operator=(const
^
/Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/PRT/PRTTypes.inl:280:2: error: missing 'typename' prior to dependent type template name 'prtlist<T>::SListElem'
prtlist<T>::SListElem<TE>& prtlist<T>::SListElem<TE>::operator++()
^
/Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/PRT/PRTTypes.inl:300:2: error: missing 'typename' prior to dependent type template name 'prtlist<T>::SListElem'
prtlist<T>::SListElem<TE> prtlist<T>::SListElem<TE>::operator++(int)
^
4 errors generated.

and


		Output:
In file included from /Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/SphericalHarmonics/PRT/BaseTextureMaterial.cpp:18:
In file included from /Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/SphericalHarmonics/PRT/BaseTextureMaterial.h:21:
In file included from /Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/PRT/ISHMaterial.h:21:
In file included from /Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/PRT/PRTTypes.h:442:
/Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/PRT/PRTTypes.inl:198:2: error: missing 'typename' prior to dependent type template name 'prtlist<T>::SListElem'
prtlist<T>::SListElem<TE> prtlist<T>::SListElem<TE>::CreateDummy()
^
/Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/PRT/PRTTypes.inl:262:2: error: missing 'typename' prior to dependent type template name 'prtlist<T>::SListElem'
prtlist<T>::SListElem<TE>& prtlist<T>::SListElem<TE>::operator=(const
^
/Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/PRT/PRTTypes.inl:280:2: error: missing 'typename' prior to dependent type template name 'prtlist<T>::SListElem'
prtlist<T>::SListElem<TE>& prtlist<T>::SListElem<TE>::operator++()
^
/Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/PRT/PRTTypes.inl:300:2: error: missing 'typename' prior to dependent type template name 'prtlist<T>::SListElem'
prtlist<T>::SListElem<TE> prtlist<T>::SListElem<TE>::operator++(int)
^
4 errors generated.

I can fix those by e.g. changing lines 195ff from


	#if defined(_MSC_VER)
typename
#endif
prtlist<T>::SListElem<TE> prtlist<T>::SListElem<TE>::CreateDummy()
{
return SListElem<TE>((SListElem<TE>*)(UINT_PTR)0xFFFFFFFF, NULL);
}

to


	typename
prtlist<T>::template SListElem<TE> prtlist<T>::SListElem<TE>::CreateDummy()
{
return SListElem<TE>((SListElem<TE>*)(UINT_PTR)0xFFFFFFFF, NULL);
}

but then I get (when compiling in Xcode) the following errors


/Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Tools/SceneAPI/SceneUI/RowWidgets/ManifestVectorHandler.h:0: Note: No relevant classes found. No output generated.
/Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Gems/GraphCanvas/Code/Source/Components/NodePropertyDisplays/EntityIdNodePropertyDisplay.h:0: Note: No relevant classes found. No output generated.
/Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Sandbox/Plugins/EditorUI_QT/AttributeView.cpp:550:52: error: qualified reference to 'QSizePolicy' is a constructor name rather than a type in this context
/Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Sandbox/Plugins/EditorUI_QT/AttributeView.cpp:704:40: error: qualified reference to 'QSizePolicy' is a constructor name rather than a type in this context
/Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Sandbox/Plugins/EditorUI_QT/AttributeView.cpp:550:52: error: qualified reference to 'QSizePolicy' is a constructor name rather than a type in this context
/Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Sandbox/Plugins/EditorUI_QT/AttributeView.cpp:704:40: error: qualified reference to 'QSizePolicy' is a constructor name rather than a type in this context

at which point I didn’t want to further mess around with the original sources.

So please assist on how to proceed. And of course I’m wondering why this hasn’t come up earlier in the forums? Am I doing something wrong? Different Xcode/clang version?

As a side note - it would be really great if you could also work with OSX and the sources on Github. So instead of downloading the Mac Support files, get the sources from Github and have another (shell) script to download required dependencies.

Just as a follow-up: Building from WAF and changing those constructor usages e.g. from QSizePolicy::QSizePolicy to simply QSizePolicy gets me one step further along, but the next error I hit is


		Output:
/Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Gems/CryEntityRemoval/Code/Source/CryEntityRemovalModule.cpp:56:25: error: member access into incomplete type 'IEditor'
GetIEditor()->SetLegacyUIEnabled(false);
^
/Users/hht/Documents/Development/other/Amazon/lumberyard-1.13/dev/Code/Sandbox/Editor/Include/EditorCoreAPI.h:32:8: note: forward declaration of 'IEditor'
struct IEditor;
^
1 error generated

which makes sense since that forward declaration seems to be fulfilled in line 56 of EditorCoreAPI.h by


#if defined(AZ_PLATFORM_WINDOWS)
#include "../IEditor.h"
#endif

In short: I really wonder how all this is supposed to compile under OSX…

THis is several months past, on a very important part of LY, iOS dev…did you give up or did someone get back to you and no one posted here as an update ?

If there is no reliable iOS, I’m not sure there is much of a point given mobile is SO important now.