owncloud / client

🖥️ Desktop Syncing Client for ownCloud
GNU General Public License v2.0
1.39k stars 667 forks source link

cross compiling issues #569

Closed dgallig closed 11 years ago

dgallig commented 11 years ago

Hi everybody ... I was following the instructions here http://doc.owncloud.org/desktop/1.2/building.html#generic-build-instructions and here https://github.com/owncloud/mirall/blob/master/doc/building.rst

to cross compile for the win plataform ...

I had no problem compiling the linux client , but when I try

linux-uswh:~/crosscompile/ocsync-build # zypper si -d mingw32-csync Reading installed packages... Loading repository data... Source package 'mingw32-csync' not found. Resolving package dependencies...

Nothing to do.

and then

linux-uswh:~/crosscompile/ocsync-build # mingw32-cmake -DCMAKE_BUILD_TYPE="Debug" ../ocsync -- The C compiler identification is GNU 4.8.0 -- Check for working C compiler: /usr/bin/i686-w64-mingw32-gcc -- Check for working C compiler: /usr/bin/i686-w64-mingw32-gcc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Found CMocka: /usr/i686-w64-mingw32/sys-root/mingw/bin/libcmocka.dll
-- Looking for argp.h -- Looking for argp.h - not found -- Looking for nanosleep in rt -- Looking for nanosleep in rt - not found -- Looking for clock_gettime in rt -- Looking for clock_gettime in rt - not found -- Looking for dlopen in dl -- Looking for dlopen in dl - not found -- Looking for asprintf -- Looking for asprintf - not found -- Looking for fnmatch -- Looking for fnmatch - not found -- Looking for timegm -- Looking for timegm - not found -- Looking for strerror_r -- Looking for strerror_r - not found -- Looking for utimes -- Looking for utimes - not found -- Looking for lstat -- Looking for lstat - not found -- Copy file from /root/crosscompile/ocsync/CTestCustom.cmake to /root/crosscompile/ocsync-build/CTestCustom.cmake -- Found PKG_CONFIG: /usr/bin/pkg-config (found version "0.25") -- checking for module 'sqlite3' -- found sqlite3, version 3.7.12.1 CMake Error at cmake/Modules/FindSQLite3.cmake:82 (message): Could not find SQLite3 Call Stack (most recent call first): src/CMakeLists.txt:13 (find_package)

-- Configuring incomplete, errors occurred!

Plataform is fresh installed suse 12.2

Some idea ?

Thanks in advance

David

dgallig commented 11 years ago

BTW those are the results with cmake : linux-uswh:~/crosscompile/ocsync-build # cmake -DCMAKE_BUILD_TYPE="Debug" ../ocsync -- The C compiler identification is GNU 4.7.1 -- Check for working C compiler: /usr/bin/gcc -- Check for working C compiler: /usr/bin/gcc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Performing Test WITH_FPIC -- Performing Test WITH_FPIC - Success -- Performing Test WITH_STACK_PROTECTOR -- Performing Test WITH_STACK_PROTECTOR - Success -- Performing Test WITH_FORTIFY_SOURCE -- Performing Test WITH_FORTIFY_SOURCE - Success -- Performing Test ICONV_HAVE_WERROR -- Performing Test ICONV_HAVE_WERROR - Success -- Performing Test ICONV_SECOND_ARGUMENT_IS_CONST -- Performing Test ICONV_SECOND_ARGUMENT_IS_CONST - Failed -- Found Iconv: /usr/lib/libc.so -- Found CMocka: /usr/lib/libcmocka.so
-- Looking for argp.h -- Looking for argp.h - found -- Looking for clock_gettime in rt -- Looking for clock_gettime in rt - found -- Looking for dlopen in dl -- Looking for dlopen in dl - found -- Looking for asprintf -- Looking for asprintf - found -- Looking for fnmatch -- Looking for fnmatch - found -- Looking for timegm -- Looking for timegm - found -- Looking for strerror_r -- Looking for strerror_r - found -- Looking for utimes -- Looking for utimes - found -- Looking for lstat -- Looking for lstat - found -- Found PKG_CONFIG: /usr/bin/pkg-config (found version "0.25") -- checking for module 'sqlite3' -- found sqlite3, version 3.7.12.1 -- Found SQLite3: /usr/lib/libsqlite3.so -- Found Iniparser: /usr/lib/libiniparser.so
-- Found Libsmbclient: /usr/lib/libsmbclient.so -- checking for module 'neon' -- found neon, version 0.29.6 -- Found Neon: /usr/lib/libneon.so
-- neon-config executable: /usr/bin/neon-config -- libneon has been compiled with LFS support -- Found Doxygen: /usr/bin/doxygen (found version "1.8.1") -- latex command LATEX_COMPILER not found but usually required. You will probably get warnings and user inetraction on doxy run. -- makeindex command MAKEINDEX_COMPILER not found but usually required. -- dvips command DVIPS_CONVERTER not found but usually required. -- Generate /root/crosscompile/ocsync-build/doc/doxy.config from doxy.config.in -- Configuring done -- Generating done -- Build files have been written to: /root/crosscompile/ocsync-build

ghmer commented 11 years ago

I am not sure where to begin as you obviously are not that experienced when it comes to compiling, but let's try:

Source package 'mingw32-csync' not found.

Does not mean 'nothing to do'. You should have stopped here as there is something wrong. The error you experience during cmake call

CMake Error at cmake/Modules/FindSQLite3.cmake:82 (message): Could not find SQLite3

clearly tells you that it is missing a requirement.

So you may go on and install the missing dependencies (which, in that case , is at least the cross-compiled version of the sqlite library, there may be others libraries missing as well). Google for the mingw32-csync package leads you to the SPEC file where you will find all dependencies. Unfortunately you won't come very far as there are several issues with the documentation and the toolchain as well. So unless you are familiar with C++, includes and linking, I don't think that you will be able to build the package. Don't take me wrong, this is not your fault, at least the documentation has to be cleaned up.

dgallig commented 11 years ago

Ciao Mario , thanks for your reply .... No , I never cross compiled anything :P ... First time .

But running cmake I have this

checking for module 'sqlite3' -- found sqlite3, version 3.7.12.1 -- Found SQLite3: /usr/lib/libsqlite3.so -- Found Iniparser: /usr/lib/libiniparser.so

So ... It's Sqlite ( the right version ) installed or not ?

Are you telling me that the documentation is very incomplete and there' s nothing to do about it ?

Many thanks

David

ghmer commented 11 years ago

Hi David,

there is a difference between cmake and mingw32-cmake. First one uses *nix libraries installed on your system, while the second one uses cross-compiled libraries (for Windows). It also looks like the package not only checks for required development libraries, but also for some executables as well. This is why your first output shows something like "found sqlite" and later tells you the opposite of this.

The documentation is not very incomplete, but it lacks complete information regarding the proper packages that have to be installed. The command zypper si -d mingw32-csync is used to fetch all dependencies required to build this package. As this is the very first command that is failing you won't have all dependencies installed. As I mentioned before, you may search for the SPEC file that lists all those dependencies and install those manually. Unfortunately, even after installing those packages there were still missing dependencies, at least for me. I was thinking about rewriting this documentation ( at least the packages part), but I need some time to figure out which packages are needed. The rest of the documentation looks good to me, I was able to compile the windows binary several times today. If you want to build it right now AND you don't care about disk space and also have a fast internet connection, you may install all available mingw libraries. Attention, this is truly overkill! :-)

dgallig commented 11 years ago

Hi Mario You have been very clear , I have understood it perfectly . Many Thx

danimo commented 11 years ago

So can we close this one?

dgallig commented 11 years ago

yep :) thx