bug 1255485 - force import libraries to be generated in objdir, not dist/bin. r=chmanchester draft
authorTed Mielczarek <ted@mielczarek.org>
Mon, 27 Nov 2017 09:03:31 -0500
changeset 721546 9a66832e441ca76bfb2b9d3eb9ae814423e42d44
parent 721545 161dc0fe77164e811866581586b3032424838c41
child 721626 88d3b062723ea33c9476fdb0ce01cbba8b8540f6
push id95865
push userbmo:ted@mielczarek.org
push dateWed, 17 Jan 2018 12:23:10 +0000
reviewerschmanchester
bugs1255485
milestone59.0a1
bug 1255485 - force import libraries to be generated in objdir, not dist/bin. r=chmanchester The MSVC linker winds up generating import libraries when linking some of our executables, presumably because they contain functions that are __declspec(dllexport). By default the import libraries get written alongside the exe, so we force them to be written to the objdir so they don't clutter up dist/bin. MozReview-Commit-ID: 7DTfCo3OdDQ
config/rules.mk
--- a/config/rules.mk
+++ b/config/rules.mk
@@ -551,17 +551,17 @@ endef
 #
 # PROGRAM = Foo
 # creates OBJS, links with LIBS to create Foo
 #
 $(PROGRAM): $(PROGOBJS) $(STATIC_LIBS_DEPS) $(EXTRA_DEPS) $(RESFILE) $(GLOBAL_DEPS) $(call mkdir_deps,$(FINAL_TARGET))
 	$(REPORT_BUILD)
 	@$(RM) $@.manifest
 ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
-	$(EXPAND_LINK) -NOLOGO -OUT:$@ -PDB:$(LINK_PDBFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_PROGRAM_LDFLAGS) $(PROGOBJS) $(RESFILE) $(STATIC_LIBS) $(SHARED_LIBS) $(OS_LIBS)
+	$(EXPAND_LINK) -NOLOGO -OUT:$@ -PDB:$(LINK_PDBFILE) -IMPLIB:$(basename $(@F)).lib $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_PROGRAM_LDFLAGS) $(PROGOBJS) $(RESFILE) $(STATIC_LIBS) $(SHARED_LIBS) $(OS_LIBS)
 ifdef MSMANIFEST_TOOL
 	@if test -f $@.manifest; then \
 		if test -f '$(srcdir)/$@.manifest'; then \
 			echo 'Embedding manifest from $(srcdir)/$@.manifest and $@.manifest'; \
 			$(MT) -NOLOGO -MANIFEST '$(win_srcdir)/$@.manifest' $@.manifest -OUTPUTRESOURCE:$@\;1; \
 		else \
 			echo 'Embedding manifest from $@.manifest'; \
 			$(MT) -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \