Benjamin-Dobell / Heimdall

Heimdall is a cross-platform open-source tool suite used to flash firmware (aka ROMs) onto Samsung Galaxy devices.
MIT License
2.57k stars 584 forks source link

build 1.4RC error on OSX #52

Closed victormo closed 12 years ago

victormo commented 12 years ago

Trying to build 1.4RC from sources on OSX 10.6.8, after configure; make I get this error message:

make all-am depbase=echo source/Arguments.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I. -I/usr/local/include/libusb-1.0 -I../libpit/Source -g -O2 -MT source/Arguments.o -MD -MP -MF $depbase.Tpo -c -o source/Arguments.o source/Arguments.cpp &&\ mv -f $depbase.Tpo $depbase.Po In file included from source/Arguments.cpp:22: source/Arguments.h:135: error: expected ‘,’ or ‘...’ before ‘>’ token source/Arguments.h:135: error: wrong number of template arguments (1, should be 4) /usr/include/c++/4.2.1/bits/stl_map.h:93: error: provided for ‘template<class _Key, class _Tp, class _Compare, class _Alloc> class std::map’ source/Arguments.h:136: error: default argument missing for parameter 3 of ‘Heimdall::Arguments::Arguments(const std::map<std::basic_string<char, std::char_traits, std::allocator >, Heimdall::ArgumentType, std::less<std::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits, std::allocator >, Heimdall::ArgumentType> > >&, const std::map<std::basic_string<char, std::char_traits, std::allocator >, std::basic_string<char, std::char_traits, std::allocator >, std::less<std::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits, std::allocator >, std::basic_string<char, std::char_traits, std::allocator > > > >&, std::string)’ source/Arguments.cpp:75: error: prototype for ‘Heimdall::Arguments::Arguments(const std::map<std::basic_string<char, std::char_traits, std::allocator >, Heimdall::ArgumentType, std::less<std::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits, std::allocator >, Heimdall::ArgumentType> > >&, const std::map<std::basic_string<char, std::char_traits, std::allocator >, std::basic_string<char, std::char_traits, std::allocator >, std::less<std::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits, std::allocator >, std::basic_string<char, std::char_traits, std::allocator > > > >&, std::map<std::basic_string<char, std::char_traits, std::allocator >, std::basic_string<char, std::char_traits, std::allocator >, std::less<std::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits, std::allocator >, std::basic_string<char, std::char_traits, std::allocator > > > >)’ does not match any in class ‘Heimdall::Arguments’ source/Arguments.h:124: error: candidates are: Heimdall::Arguments::Arguments(const Heimdall::Arguments&) source/Arguments.h:136: error: Heimdall::Arguments::Arguments(const std::map<std::basic_string<char, std::char_traits, std::allocator >, Heimdall::ArgumentType, std::less<std::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits, std::allocator >, Heimdall::ArgumentType> > >&, const std::map<std::basic_string<char, std::char_traits, std::allocator >, std::basic_string<char, std::char_traits, std::allocator >, std::less<std::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits, std::allocator >, std::basic_string<char, std::char_traits, std::allocator > > > >&, std::string) make[1]: * [source/Arguments.o] Error 1 make: * [all] Error 2

willyaranda commented 12 years ago

Same on Mountain Lion (10.8.2)

RichardBronosky commented 12 years ago

Same on the latest 10.7 On Oct 2, 2012 7:03 AM, "Guillermo López Leal" notifications@github.com wrote:

Same on Mountain Lion (10.8.2)

— Reply to this email directly or view it on GitHubhttps://github.com/Benjamin-Dobell/Heimdall/issues/52#issuecomment-9067380.

Benjamin-Dobell commented 12 years ago

Wow, that's some crazy C++ parsing going on by the compiler there. If you're interested in the gory details read here: http://stackoverflow.com/questions/851584/default-template-class-argument-confuses-g

Nonetheless, I've fixed it now.

Benjamin-Dobell commented 12 years ago

If any of you were having issues compiling Heimdall Frontend, particularly if you downloaded the Qt SDK rather than compiling it yourself; I've added support for a bunch of environment variables that can be set before calling qmake.

Running qmake will now print out these variables (and their current value) so you know what is going on.

Example usage:

QT_FRAMEWORKS_DIR = /Users/ben/QtSDK/Desktop/Qt/4.8.1/gcc/lib/
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
QMAKE_MAC_SDK = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/
mattiascockburn commented 12 years ago

This issue is not fixed for Linux AFAICS. Tried git master just a moment ago (Archlinux x86_64 current) and the above mentioned error prevails. I am not sure if it is my setup or the code thats wrong, as i am a bloody noob when it comes to C++:

mv -f $depbase.Tpo $depbase.Po depbase=`echo source/DumpAction.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\ g++ -DHAVE_CONFIG_H -I. -I/usr/include/libusb-1.0 -I../libpit/Source -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2 -MT source/DumpAction.o -MD -MP -MF $depbase.Tpo -c -o source/DumpAction.o source/DumpAction.cpp &&\ mv -f $depbase.Tpo $depbase.Po source/Arguments.cpp:74:1: error: prototype for ‘Heimdall::Arguments::Arguments(const std::mapstd::basic_string&, const std::mapstd::basic_string >&, std::mapstd::basic_string >)’ does not match any in class ‘Heimdall::Arguments’ In file included from source/Arguments.cpp:22:0: source/Arguments.h:123:8: error: candidates are: Heimdall::Arguments::Arguments(const Heimdall::Arguments&) source/Arguments.h:135:4: error: Heimdall::Arguments::Arguments(const std::mapstd::basic_string&, const std::mapstd::basic_string >&, const std::mapstd::basic_string >&) make[1]: **\* [source/Arguments.o] Error 1 make[1]: **\* Waiting for unfinished jobs....

I have disabled the GUI build, this issue seems to occur when i try to build libpit

Benjamin-Dobell commented 12 years ago

Sorry guys, I did fix the original error here.

It's just that immediately afterwards I broke something else! I changed both Arguments.cpp and Arguments.h locally but only committed and pushed the header. Oops!

If you pull now it should be resolved.