Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Link MagickCore to urlmon when targeting Windows #6032

Merged
merged 1 commit into from
Feb 4, 2023
Merged

Link MagickCore to urlmon when targeting Windows #6032

merged 1 commit into from
Feb 4, 2023

Conversation

giordano
Copy link
Contributor

@giordano giordano commented Feb 4, 2023

Prerequisites

  • I have written a descriptive pull-request title
  • I have verified that there are no overlapping pull-requests open
  • I have verified that I am following the existing coding patterns and practices as demonstrated in the repository.

Description

ReadURLImage function in coders/url.c uses
URLDownloadToFile, which requires linking to urlmon. Without this patch I get the following error at linking time:

libtool: link: cc -std=gnu11 -shared  MagickCore/.libs/libMagickCore_7_Q16HDRI_la-accelerate.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-animate.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-annotate.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-artifact.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-attribute.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-blob.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-cache.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-cache-view.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-channel.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-cipher.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-client.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-coder.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-color.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-colormap.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-colorspace.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-compare.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-composite.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-compress.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-configure.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-constitute.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-decorate.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-delegate.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-deprecate.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-display.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-distort.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-distribute-cache.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-draw.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-effect.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-enhance.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-exception.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-feature.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-fourier.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-fx.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-gem.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-geometry.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-histogram.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-identify.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-image.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-image-view.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-layer.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-linked-list.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-list.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-locale.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-log.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-magic.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-magick.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-matrix.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-memory.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-mime.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-module.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-monitor.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-montage.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-morphology.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-opencl.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-option.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-paint.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-pixel.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-policy.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-prepress.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-property.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-profile.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-quantize.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-quantum.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-quantum-export.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-quantum-import.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-random.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-registry.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-resample.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-resize.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-resource.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-segment.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-semaphore.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-shear.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-signature.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-splay-tree.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-static.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-statistic.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-stream.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-string.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-thread.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-timer.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-token.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-transform.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-threshold.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-type.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-utility.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-version.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-visual-effects.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-vision.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-widget.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-xml-tree.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-xwindow.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-nt-base.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-nt-feature.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-aai.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-art.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ashlar.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-avs.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-bayer.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-bgr.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-bmp.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-braille.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-cals.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-caption.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-cin.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-cip.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-clip.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-cmyk.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-cube.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-cut.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-dcm.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-dds.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-debug.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-dib.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-dng.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-dot.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-dpx.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-farbfeld.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-fax.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-fits.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-fl32.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ftxt.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-gif.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-gradient.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-gray.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-hald.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-hdr.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-histogram.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-hrz.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-html.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-icon.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-info.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-inline.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ipl.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-jnx.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-json.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-kernel.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-label.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-mac.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-magick.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-map.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-mask.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-mat.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-matte.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-meta.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-miff.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-mono.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-mpc.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-mpr.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-msl.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-mtv.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-mvg.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-null.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ora.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-otb.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-palm.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pango.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pattern.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pcd.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pcl.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pcx.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pdb.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pdf.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pes.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pgx.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pict.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pix.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-plasma.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pnm.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ps2.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ps3.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ps.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-psd.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pwp.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-qoi.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-raw.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-rgb.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-rgf.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-rla.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-rle.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-scr.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-screenshot.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-sct.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-sfw.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-sgi.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-sixel.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-stegano.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-strimg.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-sun.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-svg.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-tga.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-thumbnail.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-tile.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-tim2.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-tim.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ttf.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-txt.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-uil.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-url.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-uyvy.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-vicar.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-vid.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-video.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-viff.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-vips.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-wbmp.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-wpg.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-xbm.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-xc.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-xcf.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-xpm.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-xps.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-yaml.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ycbcr.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-yuv.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-clipboard.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-emf.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-jpeg.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-jp2.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-png.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ept.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-tiff.o filters/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-analyze.o   -L/workspace/destdir/lib /workspace/destdir/lib/liblcms2.dll.a -ltiff -ljpeg -lpng16 -lopenjp2 -lz -lgdi32 -luser32 -lpthread -lws2_32  -g -O2   -pthread -o MagickCore/.libs/libMagickCore-7.Q16HDRI-10.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker MagickCore/.libs/libMagickCore-7.Q16HDRI.dll.a
coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-url.o: In function `ReadURLImage':
/workspace/srcdir/ImageMagick/coders/url.c:214: undefined reference to `URLDownloadToFileA@20'
collect2: error: ld returned 1 exit status

The object file coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-url.o references the symbol URLDownloadToFile, but urlmon is not linked explicitly.

This is similar to #5119. See also discussion in #5727 (comment).

`ReadURLImage` function in `coders/url.c` uses
[`URLDownloadToFile`](https://learn.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/ms775123(v=vs.85)),
which requires linking to `urlmon`.  Without this patch I get the following
error at linking time:

```
libtool: link: cc -std=gnu11 -shared  MagickCore/.libs/libMagickCore_7_Q16HDRI_la-accelerate.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-animate.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-annotate.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-artifact.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-attribute.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-blob.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-cache.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-cache-view.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-channel.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-cipher.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-client.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-coder.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-color.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-colormap.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-colorspace.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-compare.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-composite.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-compress.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-configure.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-constitute.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-decorate.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-delegate.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-deprecate.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-display.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-distort.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-distribute-cache.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-draw.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-effect.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-enhance.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-exception.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-feature.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-fourier.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-fx.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-gem.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-geometry.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-histogram.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-identify.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-image.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-image-view.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-layer.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-linked-list.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-list.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-locale.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-log.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-magic.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-magick.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-matrix.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-memory.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-mime.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-module.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-monitor.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-montage.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-morphology.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-opencl.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-option.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-paint.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-pixel.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-policy.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-prepress.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-property.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-profile.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-quantize.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-quantum.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-quantum-export.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-quantum-import.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-random.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-registry.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-resample.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-resize.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-resource.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-segment.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-semaphore.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-shear.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-signature.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-splay-tree.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-static.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-statistic.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-stream.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-string.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-thread.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-timer.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-token.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-transform.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-threshold.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-type.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-utility.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-version.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-visual-effects.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-vision.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-widget.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-xml-tree.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-xwindow.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-nt-base.o MagickCore/.libs/libMagickCore_7_Q16HDRI_la-nt-feature.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-aai.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-art.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ashlar.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-avs.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-bayer.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-bgr.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-bmp.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-braille.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-cals.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-caption.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-cin.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-cip.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-clip.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-cmyk.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-cube.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-cut.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-dcm.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-dds.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-debug.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-dib.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-dng.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-dot.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-dpx.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-farbfeld.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-fax.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-fits.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-fl32.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ftxt.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-gif.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-gradient.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-gray.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-hald.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-hdr.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-histogram.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-hrz.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-html.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-icon.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-info.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-inline.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ipl.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-jnx.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-json.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-kernel.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-label.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-mac.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-magick.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-map.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-mask.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-mat.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-matte.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-meta.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-miff.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-mono.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-mpc.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-mpr.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-msl.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-mtv.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-mvg.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-null.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ora.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-otb.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-palm.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pango.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pattern.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pcd.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pcl.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pcx.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pdb.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pdf.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pes.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pgx.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pict.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pix.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-plasma.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pnm.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ps2.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ps3.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ps.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-psd.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-pwp.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-qoi.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-raw.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-rgb.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-rgf.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-rla.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-rle.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-scr.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-screenshot.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-sct.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-sfw.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-sgi.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-sixel.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-stegano.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-strimg.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-sun.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-svg.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-tga.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-thumbnail.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-tile.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-tim2.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-tim.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ttf.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-txt.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-uil.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-url.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-uyvy.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-vicar.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-vid.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-video.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-viff.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-vips.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-wbmp.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-wpg.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-xbm.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-xc.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-xcf.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-xpm.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-xps.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-yaml.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ycbcr.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-yuv.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-clipboard.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-emf.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-jpeg.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-jp2.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-png.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-ept.o coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-tiff.o filters/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-analyze.o   -L/workspace/destdir/lib /workspace/destdir/lib/liblcms2.dll.a -ltiff -ljpeg -lpng16 -lopenjp2 -lz -lgdi32 -luser32 -lpthread -lws2_32  -g -O2   -pthread -o MagickCore/.libs/libMagickCore-7.Q16HDRI-10.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker MagickCore/.libs/libMagickCore-7.Q16HDRI.dll.a
coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-url.o: In function `ReadURLImage':
/workspace/srcdir/ImageMagick/coders/url.c:214: undefined reference to `URLDownloadToFileA@20'
collect2: error: ld returned 1 exit status
```

The object file `coders/.libs/MagickCore_libMagickCore_7_Q16HDRI_la-url.o`
references the symbol `URLDownloadToFile`, but `urlmon` is not linked
explicitly.
@urban-warrior urban-warrior merged commit 5d05a08 into ImageMagick:main Feb 4, 2023
@giordano giordano deleted the mg/urlmon branch February 4, 2023 18:59
@Biswa96
Copy link
Contributor

Biswa96 commented Feb 4, 2023

urlmon library is required for coders/url.c file and it was added in this commit 36d3408. But I only compiled it using --with-modules option1. It creates a separate coders/url.dll file and links urlmon with url.dll.

In your case, you are compiling without that options2. So, all the modules object file are linked into a single libMagickCore*.dll file and it requires urlmon library. Thank you for fix the issue 👍

Just to be precise, I think the following change would be more accurate.

diff --git a/MagickCore/Makefile.am b/MagickCore/Makefile.am
index 547e614..cb6c861 100644
--- a/MagickCore/Makefile.am
+++ b/MagickCore/Makefile.am
@@ -50,6 +50,10 @@ endif # WITH_MODULES
 
 if WIN32_NATIVE_BUILD
 MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_LIBADD += -lws2_32 -lurlmon
+if WITH_MODULES
+else
+MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_LIBADD += -lurlmon
+endif
 endif
 
 nodist_MagickCore_libMagickCore_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_SOURCES =

Footnotes

  1. https://github.com/msys2/MINGW-packages/blob/master/mingw-w64-imagemagick/PKGBUILD

  2. https://github.com/JuliaPackaging/Yggdrasil/blob/master/I/ImageMagick/ImageMagick%407/build_tarballs.jl

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants