fnc12 / Mitsoko

10 stars 1 forks source link

Duplicate filenames and GCC #8

Closed DonaldTrump88 closed 7 years ago

DonaldTrump88 commented 7 years ago

In the project, there are some files which have same files names. unfortunately, it is not allowed by GCC(https://www.gnu.org/software/make/manual/html_node/Error-Messages.html). due to this I get warnings like

Makefile:1642: warning: overriding recipe for target `Image.o'
Makefile:1212: warning: ignoring old recipe for target `Image.o'
Makefile:1697: warning: overriding recipe for target `Error.o'
Makefile:1548: warning: ignoring old recipe for target `Error.o'
Makefile:1765: warning: overriding recipe for target `String.o'
Makefile:1613: warning: ignoring old recipe for target `String.o'
Makefile:1985: warning: overriding recipe for target `Image.o'
Makefile:1642: warning: ignoring old recipe for target `Image.o'
Makefile:2505: warning: overriding recipe for target `ViewController.o'
Makefile:2419: warning: ignoring old recipe for target `ViewController.o'
Makefile:2670: warning: overriding recipe for target `Color.o'
Makefile:1942: warning: ignoring old recipe for target `Color.o'
Makefile:2710: warning: overriding recipe for target `Bundle.o'
Makefile:1672: warning: ignoring old recipe for target `Bundle.o'
Makefile:2807: warning: overriding recipe for target `View.o'
Makefile:2387: warning: ignoring old recipe for target `View.o'
Makefile:2891: warning: overriding recipe for target `WebView.o'
Makefile:2437: warning: ignoring old recipe for target `WebView.o'
Makefile:2982: warning: overriding recipe for target `Button.o'
Makefile:1937: warning: ignoring old recipe for target `Button.o'
Makefile:3120: warning: overriding recipe for target `ImageView.o'
Makefile:2048: warning: ignoring old recipe for target `ImageView.o'
Makefile:3208: warning: overriding recipe for target `Switch.o'
Makefile:2230: warning: ignoring old recipe for target `Switch.o'
Makefile:3246: warning: overriding recipe for target `TextView.o'
Makefile:2376: warning: ignoring old recipe for target `TextView.o'
Makefile:3346: warning: overriding recipe for target `Object.o'
Makefile:1748: warning: ignoring old recipe for target `Object.o'
Makefile:3364: warning: overriding recipe for target `String.o'
Makefile:1765: warning: ignoring old recipe for target `String.o'
Makefile:3452: warning: overriding recipe for target `Fragment.o'
Makefile:2596: warning: ignoring old recipe for target `Fragment.o'
/opt/Qt5.8.0/5.8/gcc_64/bin/qmake -o Makefile ../Mitsoko/Mitsoko.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug
Makefile:1642: warning: overriding recipe for target `Image.o'
Makefile:1212: warning: ignoring old recipe for target `Image.o'
Makefile:1697: warning: overriding recipe for target `Error.o'
Makefile:1548: warning: ignoring old recipe for target `Error.o'
Makefile:1765: warning: overriding recipe for target `String.o'
Makefile:1613: warning: ignoring old recipe for target `String.o'
Makefile:1985: warning: overriding recipe for target `Image.o'
Makefile:1642: warning: ignoring old recipe for target `Image.o'
Makefile:2505: warning: overriding recipe for target `ViewController.o'
Makefile:2419: warning: ignoring old recipe for target `ViewController.o'
Makefile:2670: warning: overriding recipe for target `Color.o'
Makefile:1942: warning: ignoring old recipe for target `Color.o'
Makefile:2710: warning: overriding recipe for target `Bundle.o'
Makefile:1672: warning: ignoring old recipe for target `Bundle.o'
Makefile:2807: warning: overriding recipe for target `View.o'
Makefile:2387: warning: ignoring old recipe for target `View.o'
Makefile:2891: warning: overriding recipe for target `WebView.o'
Makefile:2437: warning: ignoring old recipe for target `WebView.o'
Makefile:2982: warning: overriding recipe for target `Button.o'
Makefile:1937: warning: ignoring old recipe for target `Button.o'
Makefile:3120: warning: overriding recipe for target `ImageView.o'
Makefile:2048: warning: ignoring old recipe for target `ImageView.o'
Makefile:3208: warning: overriding recipe for target `Switch.o'
Makefile:2230: warning: ignoring old recipe for target `Switch.o'
Makefile:3246: warning: overriding recipe for target `TextView.o'
Makefile:2376: warning: ignoring old recipe for target `TextView.o'
Makefile:3346: warning: overriding recipe for target `Object.o'
Makefile:1748: warning: ignoring old recipe for target `Object.o'
Makefile:3364: warning: overriding recipe for target `String.o'
Makefile:1765: warning: ignoring old recipe for target `String.o'
Makefile:3452: warning: overriding recipe for target `Fragment.o'
Makefile:2596: warning: ignoring old recipe for target `Fragment.o'

At the end, building of shared library fails. I am trying to find some solution to it.

Will you consider renaming some of them if I did not find any solution ?

fnc12 commented 7 years ago

Never compiled with GCC. The lib is built for CrystaX NDK which uses clang to compile a project

DonaldTrump88 commented 7 years ago

My clang setup works but not GCC :(

DonaldTrump88 commented 7 years ago

Is it not possible to rename?

DonaldTrump88 commented 7 years ago

I can make pull request for that.

DonaldTrump88 commented 7 years ago

List of conflicting files.

Mitsoko-master\Image.cpp Mitsoko-master\iOSutil\CG\Image.cpp Mitsoko-master\iOSutil\UI\Image.cpp

Mitsoko-master\iOSutil\NS\Error.cpp Mitsoko-master\Url\Error.cpp

Mitsoko-master\AndroidUtil\java\lang\String.cpp Mitsoko-master\iOSutil\CF\String.cpp Mitsoko-master\iOSutil\NS\String.cpp

Mitsoko-master\iOSutil\MF\MailCompose\ViewController.cpp Mitsoko-master\iOSutil\UI\ViewController.cpp

Mitsoko-master\AndroidUtil\android\graphics\Color.cpp Mitsoko-master\iOSutil\UI\Color.cpp

Mitsoko-master\AndroidUtil\android\os\BaseBundle.cpp Mitsoko-master\AndroidUtil\android\os\Bundle.cpp Mitsoko-master\iOSutil\NS\Bundle.cpp

Mitsoko-master\AndroidUtil\android\view\View.cpp Mitsoko-master\iOSutil\UI\View.cpp Mitsoko-master\View.cpp

Mitsoko-master\AndroidUtil\android\webkit\WebView.cpp Mitsoko-master\iOSutil\UI\WebView.cpp

Mitsoko-master\AndroidUtil\android\widget\Button.cpp Mitsoko-master\iOSutil\UI\Button.cpp

Mitsoko-master\AndroidUtil\android\widget\ImageView.cpp Mitsoko-master\iOSutil\UI\ImageView.cpp

Mitsoko-master\AndroidUtil\android\widget\Switch.cpp Mitsoko-master\iOSutil\UI\Switch.cpp

Mitsoko-master\AndroidUtil\android\widget\TextView.cpp Mitsoko-master\iOSutil\UI\TextView.cpp

Mitsoko-master\AndroidUtil\java\lang\Object.cpp Mitsoko-master\iOSutil\NS\Object.cpp

Mitsoko-master\AndroidUtil\java\lang\String.cpp Mitsoko-master\iOSutil\CF\String.cpp Mitsoko-master\iOSutil\NS\String.cpp

Mitsoko-master\AndroidUtil\android\app\Fragment.cpp Mitsoko-master\AndroidUtil\android\support\v4\app\Fragment.cpp

fnc12 commented 7 years ago

Of course it is possible but this is lib refactoring cause one of the instruments (GCC) works bad. clang is better - it compiles faster and supports more C++11/14 features. All you can do is remove iOSUtil files from your build script but this fix isn't required in the repo - leave it for yourself as GCC hack

fnc12 commented 7 years ago

Or try this https://stackoverflow.com/questions/7316155/gcc-duplicate-identifiers-in-object-files-or-libraries

DonaldTrump88 commented 7 years ago

I tried different solutions, but did not work. Renaming files was not my first choice. Now I renamed some files. It seems works. Android supports GCC(https://developer.android.com/ndk/guides/standalone_toolchain.html). It will be great if you accept this pull request.

fnc12 commented 7 years ago

Android NDK uses libstdc++ (GNU's version of c++ stdlib) which doesn't support all features from C++11 (e.g. std::to_string is still missing). That's why GCC is sh*t and clang is good. clang uses libc++ - own version if c++ stdlib which also is used in Xcode. clang is the first compiler which enabled full support of C++11 and the first compiler which gains the newest C++ features. So it's easier for you to change NDK that to rewrite the lib due to broken compiler.