Makefile.win32 confusingly fails to list cairo.lib as a rather important install component
Submitted by Andreas Mohr
Assigned to cairo-bugs mailing list
Description
src/Makefile.win32
unfortunately does not provide an install target. Rather, it resorts to post-build logging of potentially all result files that are relevant to a user:
static: inform $(CFG)/cairo-static.lib
dynamic: inform $(CFG)/cairo.dll
$(CFG)/cairo.dll: $(OBJECTS)
@$(LD) $(CAIRO_LDFLAGS) -DLL -OUT:$@ $(CAIRO_LIBS) $(PIXMAN_LIBS) $(OBJECTS)
$(CFG)/cairo-static.lib: $(OBJECTS_STATIC)
@$(AR) $(CAIRO_ARFLAGS) -OUT:$@ $(PIXMAN_LIBS) $(OBJECTS_STATIC)
all: inform $(CFG)/cairo.dll $(CFG)/cairo-static.lib
@echo "Built successfully!"
@echo "You should copy the following files to a proper place now:"
@echo ""
@echo " cairo-version.h (NOTE: toplevel, not the src/cairo-version.h one!)"
@echo " src/cairo-features.h"
@for x in $(enabled_cairo_headers); do echo " src/$$x"; done
@echo " src/$(CFG)/cairo.dll"
@echo " src/$(CFG)/cairo-static.lib"
To add insult to injury, this to-be-installed files list is incomplete since it fails to mention the required link-time dynamic .lib (likely implicitly produced by the $(LD) invocation for cairo.dll above - as opposed to all other openly mentioned targets - yet nonetheless crucial).
This caused interim chaos and despair (read: considerable delay) due to not having placed all required files for other people to be using (in the non-static case, i.e.: cairo.dll/cairo.lib pair).
The reason that this issue was not caught in-place is that I was directly transplanting the "official, authoritative" list into CMake install parts, rather than having a look at the result directory contents itself, where I would then possibly have wondered about that additional file.
So, it seems there's that additional line missing:
@echo " src/$(CFG)/cairo.lib"
Severity major since it kills usability/productivity and that little effort ought to be fixed quickly.
Thanks!
Version: 1.12.14