Closed Bug 202425 Opened 22 years ago Closed 22 years ago

gfx freetype sets local defines which are not tracked by the dependency system

Categories

(SeaMonkey :: Build Config, defect)

x86
Linux
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED
mozilla1.4beta

People

(Reporter: saugart, Assigned: netscape)

Details

Attachments

(7 files, 1 obsolete file)

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4a) Gecko/20030415 Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4a) Gecko/20030415 I built mozilla from the CVS source last night (April 16, 2003) on Linux. My system has a version of freetype2, which Mozilla cheerfully detected during its configuration process: checking for freetype-config... (cached) /usr/bin/freetype-config checking for FreeType - version >= 6.1.0... yes However, MOZ_ENABLE_FREETYPE2 is not enabled in mozilla-config.h Reproducible: Didn't try Steps to Reproduce: 1. Download a source tarball (I used the 1.4a source) 2. Install the .mozconfig file I will attach as attachment #1 [details] [diff] [review]. 3. make -f client.mk 2>&1 | tee make.out 4) dist/bin/mozilla Actual Results: Mozilla downloaded the latest CVS, configured, and built. When I started mozilla, I got the warning: WARNING: freetype not compiled in, file nsFT2FontNode.cpp, line 51 There is no MOZ_ENABLE_FREETYPE2 defined in mozilla-config.h. Expected Results: Had freetype2 support compiled in. Not displayed the warning. Had MOZ_ENABLE_FREETYPE2 defined in mozilla-config.h. I'm attaching the make.out file (make's output) as attachment #2 [details] [diff] [review].
The uncompressed version is long: 2 MB; 31,000 lines. The bzip2'd version is 172 KB.
When changing configure options, you need to run a 'make distclean' between builds. The MOZ_ENABLE_FREETYPE2 define is set by the local Makefile based upon the MOZ_ENABLE_FREETYPE2 environment definition. I don't see nsFT2FontNode.cpp being recompiled in your log so it appears to have been compiled already with a previous configuration. There's no logic in the local Makefile to make sure that the files which depend upon the local -DMOZ_ENABLE_FREETYPE2 define are rebuilt when the env variable changes. Either -DMOZ_ENABLE_FREETYPE2 needs to be moved up to the global header or a local header needs to be generated with that define.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Summary: CVS Build of mozilla: MOZ_ENABLE_FREETYPE2 unexpectedly not defined → gfx freetype sets local defines which are not tracked by the dependency system
Attached patch v0.5 (obsolete) — Splinter Review
Haven't tested the code changes but this is the basic idea for the build system changes.
This is just the generic code to remove non-global defines from mozilla-config.h.
Attachment #121012 - Attachment is obsolete: true
Attachment #121017 - Flags: review?(darin)
Comment on attachment 121017 [details] [diff] [review] non-global defines v1.0 (checked in) r=darin
Attachment #121017 - Flags: review?(darin) → review+
Thanks to Christopher Seawood for Comment #3. I could not bear the thought of doing a "make distclean" and then presumably waiting for hours for another build, so I cheated. First, I used LXR to search for all the places in the source code that mention USE_FREETYPE, FT2_<anything>, and MOZ_ENABLE_FREETYPE2. This gave me the attached file: (see my next attachment for more)
I then wrote a bit of awk to pull out the file names alone and generate a shell script with a bunch of lines of the form: touch <filename-affected-by-config-change> Here it is.
I drive the awk script with this little bit of Bourne shell. I did manual review on the output until I was happy with it (special-cased some files that didn't need touching), and then piped the output through "sh". At any rate, this probably saved me a lot of waiting, even given the time to do some manual review, and I thought I'd share the trick. Obviously this is not a useful general solution to the problem -- but it can be a timesaver.
Attachment #121017 - Attachment description: non-global defines v1.0 → non-global defines v1.0 (checked in)
Attached patch v1.0Splinter Review
This patch generates a gfx/gfx-config.h file at configure time which contains the gfx specific defines. Atm, that's just MOZ_ENABLE_FREETYPE2.
Attachment #121260 - Flags: superreview?(roc+moz)
Attachment #121260 - Flags: review?(blizzard)
Attachment #121260 - Flags: superreview?(roc+moz) → superreview+
Attachment #121260 - Flags: review?(blizzard) → review+
Amid much carnage, the patch was checked in.
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla1.4beta
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: