Humm...  as much as building a freetype application tells us that the
libraries work, I'm wondering if we could just do something like this
in the makefile sanity check:

ifdef OPENJDK
  FREETYPE_VERSION_H=$(FREETYPE_HEADERS_PATH)/freetype/freetype.h
  _FREETYPE_VER := \
    if [ -f "${FREETYPE_VERSION_H}" ] ; then \
      _major="`${GREP} 'define FREETYPE_MAJOR' | ${CUT} -d' ' -f3`" ; \
      _minor="`${GREP} 'define FREETYPE_MINOR' | ${CUT} -d' ' -f3`" ; \
      _micro="`${GREP} 'define FREETYPE_PATCH' | ${CUT} -d' ' -f3`" ; \
      $(ECHO) "${_major}.${_minor}.${_micro}"; \
    else \
      $(ECHO) "0.0.0"; \
    fi
  FREETYPE_VER :=$(call GetVersion,"$(_FREETYPE_VER)")
  FREETYPE_CHECK :=$(call 
CheckVersions,$(FREETYPE_VER),$(REQUIRED_FREETYPE_VERSION))

sane-freetype:
        @if [ "$(FREETYPE_CHECK)" != "same" -a "$(FREETYPE_CHECK)" != "newer" 
]; then \
          $(ECHO) "ERROR: The version of freetype being used is older than \n" \
              "    the required version of '$(REQUIRED_FREETYPE_VERSION)'. \n" \
              "    The version of freetype found was '$(FREETYPE_VER)'. \n" \
              "" >> $(ERROR_FILE) ; \
        fi

else

#do nothing  (not OpenJDK)
sane-freetype:

endif


---
Just a thought.... Then that whole freetype check program can go away,
but if the libraries are wrong, we won't find out at sanity check time.

(I have not tested the above logic)

-kto

Tim Bell wrote:
Kelly O'Hair wrote:
Looks good Tim.

Thanks, Kelly.  I plan to push this fix to the build forest later today.

I wish that freetype just had a simple version.h file we could check. :^(

I checked the freetype 2.3.5 include files... we could use this from
include/freetype/freetype.h:

  /*************************************************************************
   *
   *  @enum:
   *    FREETYPE_XXX
   *
   *  @description:
   *    These three macros identify the FreeType source code version.
   *    Use @FT_Library_Version to access them at runtime.
   *
   *  @values:
   *    FREETYPE_MAJOR :: The major version number.
   *    FREETYPE_MINOR :: The minor version number.
   *    FREETYPE_PATCH :: The patch level.
   *
   *  @note:
   *    The version number of FreeType if built as a dynamic link library
   *    with the `libtool' package is _not_ controlled by these three
   *    macros.
   */
#define FREETYPE_MAJOR  2
#define FREETYPE_MINOR  3
#define FREETYPE_PATCH  5



Tim

-kto

Tim Bell wrote:
Hi Folks

When building OpenJDK, the freetype sanity check compiles a
little program to test that the freetype include files and
libraries are available, and also that the version number is
acceptable.

If building on Windows and using a Visual Studio compiler
newer than 2003, this program will fail due to the new
rules for accessing MSVCR??.dll. [1]

I didn't make the up the rules, in fact I am extremely
puzzled that Microsoft is forcing ALL external developers
and ISVs to solve this problem.  I am trying to get the
OpenJDK build to deal with them or at least tolerate
them for those people out there who build OpenJDK on
Windows.

The bugzilla report:
  https://bugs.openjdk.java.net/show_bug.cgi?id=100101

The code review:
  http://cr.openjdk.java.net/~tbell/6705913/webrev.00/

These changes build OK on all JPRT systems:

linux_i586_2.6
linux_x64_2.6
solaris_i586_5.10
solaris_sparc_5.10
solaris_sparcv9_5.10
solaris_x64_5.10-
windows_i586_5.0
windows_x64_5.2

They also work on my Windows XP SP2 / Visual Studio 2008
build machine.

Thanks in advance-

Tim

[1] How to redistribute the Visual C++ Libraries with your application (Ben 
Anderson)
http://blogs.msdn.com/vcblog/archive/2007/10/12/how-to-redistribute-the-visual-c-libraries-with-your-application.aspx

Reply via email to