mingw-cross-env-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Mingw-cross-env-list] [SOLVED] : Re: Some background/help asked ...


From: Jos De Laender
Subject: [Mingw-cross-env-list] [SOLVED] : Re: Some background/help asked ...
Date: Thu, 27 Dec 2012 21:03:18 +0100
User-agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120824 Thunderbird/15.0


Gents,

This was a rather stupid mistake at my end, but with very weird failure mechanism.
I did patch the libmng.pkg as hereafter.
Mind the # XXX JDLA that I intended to be a comment, but clearly isn't (continuation character). How one gets from there to a libjpeg.h reference outside of the mxe tree is not so clear, but also not important.
Removing the offending line solves everything.

Sorry for that.

Jos

define $(PKG)_BUILD
    $(MAKE) -C '$(1)' -j '$(JOBS)' \
        -f '$(1)'/makefiles/makefile.unix \
        # XXX JDLA CC=$(TARGET)-gcc CFLAGS='-DMNG_BUILD_SO -DMNG_FULL_CMS'
        CC=$(TARGET)-gcc CFLAGS='-DMNG_BUILD_SO'
    $(TARGET)-ranlib '$(1)/libmng.a'
    $(INSTALL) -d '$(PREFIX)/$(TARGET)/lib'
    $(INSTALL) -m644 '$(1)/libmng.a' '$(PREFIX)/$(TARGET)/lib/'
    $(INSTALL) -d '$(PREFIX)/$(TARGET)/include'
$(INSTALL) -m644 '$(1)/libmng.h' '$(1)/libmng_conf.h' '$(1)/libmng_types.h' '$(PREFIX)/$(TARGET)/include/'
    $(SED) -e 'address@hidden@^$(PREFIX)/$(TARGET)^;' \
           -e 'address@hidden@^$(libmng_VERSION)^;' \
           -e 'address@hidden@^-ljpeg^;' \
           -e 'address@hidden@^lcms zlib^;' \
           < '$(1)/libmng.pc.in' > '$(1)/libmng.pc'
    $(INSTALL) -m644 '$(1)/libmng.pc' '$(PREFIX)/$(TARGET)/lib/pkgconfig/'
endef

Op 27-12-12 20:02, Jos De Laender schreef:
William,

I'm redoing (it all takes time though ...).

I guess you are right that there's no visible imagemagick->libmng dependency.
Although one is described in :
http://lists.gnu.org/archive/html/mingw-cross-env-list/2012-09/msg00030.html (and applied the libmng patch there described to make another project of mine working)

For what concerns the change to my host headers (which is/was totally unrelated to mxe) : libjpeg.h *is* broken on my system : it lacks an include <stdio.h> and <stdlib.h>, making it not compiling standalone, also that's a known issue.

But I believe all of this is not the core of my problem or question.
My real question is : why does it go and look *outside* the mxe tree anyhow ? I would assume it is not supposed to do so for a cross build ? So how can it happen ?
Or am I missing something ?

Do you think using the development branch would be more helpful ?

Jos



Op 27-12-12 14:51, William schreef:
Hello


On 12/27/2012 12:38 PM, Jos De Laender wrote:
I'm trying to setup mxe for a number of projects of mine and sometimes I'm really confused about what I see.

An example :

I download the stable branch.

make qt
make graphicsmagick
make imagemagick

Apparently goes fine.
Then I realize that something went wrong with imagemagick in the sense that lcms and lcms2 are mixed up.

Somewhere on the web one can find the solution : patch libmng.mk file such that mng doesn't use "full cms" or something along those lines.
So I patch that libmng.mk.

Then
make imagemagick => nothing happens even though I understood libmng is a dependency (and it built it in the first place).
imagemagick deps are (you can find them in src/imagemagick.mk, in the $(PKG)_DEPS line) : gcc bzip2 ffmpeg fftw freetype jasper jpeg lcms libpng libtool openexr pthreads tiff

it is not obvious that libmng is a dependency of imagemagick... you could check recursively on all listed dependencies, but it is likely it is not.

by doing :
cd src
grep "libmng" *.mk -l
I see that qt.mk uses libmng. So actually libmng is a dependency of qt (that you asked to explicitely compile "make qt"), but not of imagemagick.



So I go back one step
make libmng => fails because it accesses my (changed) /usr/lib/jpeglib.h (so not the one of mxe, the one of my host !)

It is not advised to change your host headers! Everything should work properly on itself. I do not understand however why libmng would access /usr/lib/jpeglib.h, because jpeg is not a "requirement" from mxe. Maybe your patch was not appropriate ?


The 2 last steps (failing to rebuild, but especially the looking outside of the mxe tree) concern me .... Can someone shed some light why this is happening, what is maybe wrong, how I should debug or produce more info ?

Somehow I'm a bit worried now of having a "good" cross environment.


- You should try to download the development branch, I personnaly find it better, as you can get more suitable advices from mxe users.

- Cancel your libmng patches :
git status   # shows you what files you changed
rm src/libmng.mk  # if you changed this file
git checkout src/libmng.mk  # recover the file

- in src/imagemagick.mk, try to replace in the deps line "$(PKG)_DEPS := gcc bzip2 ffmpeg fftw freetype jasper jpeg lcms libpng libtool openexr pthreads tiff" by "$(PKG)_DEPS := gcc bzip2 ffmpeg fftw freetype jasper jpeg lcms1 libpng libtool openexr pthreads tiff". It is just a try...

- if that does not work, send your log (log/imagemagick) to this mailing list, but before get sure to have a proper tree with no internal modifications ("git status" to check)

William





--
Jos De Laender
www.jodela.be




reply via email to

[Prev in Thread] Current Thread [Next in Thread]