Closed
Bug 274751
Opened 20 years ago
Closed 20 years ago
Win32 Build fails with alternate objdir.
Categories
(NSPR :: NSPR, defect)
Tracking
(Not tracked)
RESOLVED
FIXED
4.6
People
(Reporter: wasti.redl, Assigned: wtc)
Details
Attachments
(1 file)
|
1.09 KB,
patch
|
cls
:
review+
|
Details | Diff | Splinter Review |
The current CVS head (2004-12-15, approx. 10:00 AM GMT) fails to build under the following conditions: 1) Build System: Win32 Visual C++ 7.1 (.Net 2003) 2) OS: WinXP SP2 3) Mozilla base directory: D:\mozsource\ 4) Mozilla configuration entries: GLIB_PREFIX=d:/mozsource/mozbuildtools/vc71idl/glib LIBIDL_PREFIX=d:/mozsource/mozbuildtools/vc71idl/libidl mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/suiteobj mk_add_options MOZ_CO_PROJECT=suite ac_add_options --enable-application=suite mk_add_options MOZ_MAKE_FLAGS=-j2 ac_add_options --enable-svg ac_add_options --enable-svg-renderer-gdiplus ac_add_options --enable-xpctools ac_add_options --disable-optimize ac_add_options --enable-debug #END MOZCONFIG The build will fail at least on the following actions: 1) Linking together the object files resulting from the $srcbase/mozilla/nsprpub/pr/src directory. Error Message: Could not find file nspr.res. Suspected Reason: Resource compiler call is misconfigured in the build script and does not respect the object file directory. nspr.res is the result of compiling nspr.rc and should reside in $srcbase/mozilla/suiteobj/nsprpub/pr/src, but the actual location is $srcbase/mozilla/nsprpub/pr/src. Apparently the output of the resource compiler is misplaced and therefore not found by the linker. This can be confirmed by copying the file to the correct location and resuming the build process: linking will then succeed. 2) Linking together the object files resulting from the $srcbase/mozilla/nsprpub/lib/ds directory. Error Message: Could not find file plds.res. Suspected Reason: Same as 1) Workaround: Don't use an alternate object file directory. (I've removed the MOZ_OBJDIR instruction from the config and so far it compiles just fine.) Resolution: Locate resource compiler call in build rules and instruct to respect object file directory. Severity set to normal because easy workaround exists.
| Reporter | ||
Comment 1•20 years ago
|
||
I believe the error must be somewhere in $srcbase/mozilla/nsprpub/config/rules.mk around line 363. How is $RES created? I have a strong feeling that it doesn't include the object dir. It doesn't come from within rules.mk, though. Hmm, this is strange. $srcbase/mozilla/nsprpub/pr/src/Makefile (that's one that failed) contains these two lines (324, 325): RES=$(OBJDIR)/nspr.res RESNAME=nspr.rc So RES should be ok. I'm afraid this requires someone who understands the build system better than I do.
Comment 2•20 years ago
|
||
It seems very likely to me that some part of your configuration is unusual. People build winxp with the .net compilers every day.
| Reporter | ||
Comment 3•20 years ago
|
||
Indeed something is unusual: I have an alternate objdir. I have posted the full configuration, but the error occurs in the NSPR, so stuff like XPC and SVG should have no influence at all. I have posted my complete configuration.
Comment 4•20 years ago
|
||
Using an objdir is not unusual, it is the recommended configuration.
As Ben said, building in an alternate objdir is the recommended build configuration. I tested it and it still works as expected. If nspr.res exists in your source dir, then it's because you didn't do a 'make distclean' before switching to an objdir build. You must make sure that your build tree is in a pristine state before changing from srcdir to objdir builds. Due to the VPATH feature of make, files that exist in the srcdir will satisfy the makefiles requirement for the file. Then later commands which expect the file to exist in the current directory will fail.
Status: UNCONFIRMED → RESOLVED
Closed: 20 years ago
Resolution: --- → INVALID
Apparently, nspr.res doesn't get removed with a 'make distclean'. That's a valid bug.
Status: RESOLVED → UNCONFIRMED
Component: Build Config → NSPR
Product: Mozilla Application Suite → NSPR
Resolution: INVALID → ---
Version: Trunk → other
Assignee: nobody → wtchang
Status: UNCONFIRMED → NEW
Ever confirmed: true
QA Contact: core.build-config → wtchang
| Assignee | ||
Comment 7•20 years ago
|
||
Thanks for pointing out the problem, cls. I introduced this bug when fixing bug 242741 (rev. 3.57 of mozilla/nsprpub/config/rules.mk). In that fix, $(RES) is no longer part of $(OBJS). So we will need to remove $(RES) as well in all makefile targets that remove $(OBJS).
Attachment #170192 -
Flags: review?(cls)
Attachment #170192 -
Flags: review?(cls) → review+
| Assignee | ||
Comment 8•20 years ago
|
||
I checked in the patch on the NSPR trunk (NSPR 4.6) and NSPRPUB_PRE_4_2_CLIENT_BRANCH (Mozilla 1.8 Alpha 6).
Status: NEW → RESOLVED
Closed: 20 years ago → 20 years ago
Resolution: --- → FIXED
Target Milestone: --- → 4.6
You need to log in
before you can comment on or make changes to this bug.
Description
•