Makefile revision 3643
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# This code is free software; you can redistribute it and/or modify it
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# under the terms of the GNU General Public License version 2 only, as
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# published by the Free Software Foundation. Oracle designates this
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# particular file as subject to the "Classpath" exception as provided
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# by Oracle in the LICENSE file that accompanied this code.
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# This code is distributed in the hope that it will be useful, but WITHOUT
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# version 2 for more details (a copy is included in the LICENSE file that
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# accompanied this code).
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# You should have received a copy of the GNU General Public License version
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# 2 along with this work; if not, write to the Free Software Foundation,
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# or visit www.oracle.com if you need additional information or have any
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# questions.
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# Makefile for building all of font tools
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfBUILDDIR = ../..
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfMODULE = font
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfPACKAGE = sun.font
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfLIBRARY = fontmanager
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfPRODUCT = sun
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# Indicate we want the C++ compiler to do the linking.
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfCPLUSPLUSLIBRARY=true
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# Use higher optimization level
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfOPTIMIZATION_LEVEL = HIGHER
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfinclude $(BUILDDIR)/common/Defs.gmk
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# Created without -z defs on linux
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfifeq ($(PLATFORM), linux)
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf LDFLAGS_DEFS_OPTION =
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfendif
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# Files
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfinclude FILES_c.gmk
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfAUTO_FILES_JAVA_DIRS = sun/font
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfFILES_java += java/awt/Font.java java/text/Bidi.java
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfFILES_export = \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/font/SunLayoutEngine.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf java/awt/Font.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf java/text/Bidi.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/font/FileFont.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/font/FileFontStrike.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/font/FontManager.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/font/GlyphList.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/font/NativeFont.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/font/StrikeCache.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/font/NullFontScaler.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/font/FreetypeFontScaler.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/java2d/loops/DrawGlyphList.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/java2d/loops/DrawGlyphListAA.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/java2d/loops/DrawGlyphListLCD.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/java2d/loops/GraphicsPrimitive.java
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfifeq ($(PLATFORM), windows)
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf LDLIBS += user32.lib gdi32.lib $(OBJDIR)/../../../sun.awt/awt/$(OBJDIRNAME)/awt.lib
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf OTHER_CFLAGS += -DCC_NOEX
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf OTHER_CXXFLAGS += -DCC_NOEX
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfelse # PLATFORM unix
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf FILES_export += \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/font/NativeStrike.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/font/NativeStrikeDisposer.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/font/X11TextRenderer.java \
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf sun/awt/X11GraphicsEnvironment.java
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfendif # PLATFORM
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#In the non-OpenJDK mode we need to build T2K
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfifndef OPENJDK
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azft2k:
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf $(ECHO) "lib=" $(ACTUAL_LIBRARY)
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf $(MAKE) -C t2k
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfall build: t2k
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azft2k: library
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfclean clobber::
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf $(MAKE) -C t2k clean
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfelse
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfFILES_m=mapfile-vers.openjdk
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#make sure freetype dll will be available at runtime as well as link time
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#NB: Default freetype build system uses -h linker option and
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# result .so contains hardcoded library name that is later
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# used for adding dependencies to other objects
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# (e.g. libfontmanager.so).
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# It is not obvious how to extract that hardcoded name (libfreetype.so.6)
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# without overcomplicating logic here.
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# To workaround this we hardcode .6 suffix for now.
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# Note that .so.6 library will not be found by System.loadLibrary()
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# but fortunately we need to load FreeType library explicitly
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf# on windows only
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#TODO: rework this to avoid hardcoding library name in the makefile
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfifeq ($(PLATFORM), windows)
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf FREETYPE_LIB = $(LIB_LOCATION)/$(LIB_PREFIX)freetype.$(LIBRARY_SUFFIX)
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf OTHER_LDLIBS += $(FREETYPE_LIB_PATH)/freetype.lib
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfelse
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf ifeq ($(USING_SYSTEM_FT_LIB), false)
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf FREETYPE_LIB = $(LIB_LOCATION)/$(LIB_PREFIX)freetype.$(LIBRARY_SUFFIX).6
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf endif
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf OTHER_LDLIBS += -L$(FREETYPE_LIB_PATH) -lfreetype
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfendif
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azflibrary:: $(FREETYPE_LIB)
$(FREETYPE_LIB):
$(CP) $(FREETYPE_LIB_PATH)/$(LIB_PREFIX)freetype.$(LIBRARY_SUFFIX) $@
$(install-module-file)
endif
#ifeq ($(PLATFORM), solaris)
# FILES_reorder += reorder-$(ARCH)
#endif
include $(BUILDDIR)/common/Mapfile-vers.gmk
include $(BUILDDIR)/common/Library.gmk
.PHONY: t2k build all clean clobber
#
# Add to the ambient vpath to pick up files in subdirectories
#
vpath %.c $(PLATFORM_SRC)/native/$(PKGDIR)
vpath %.cpp $(SHARE_SRC)/native/$(PKGDIR)/layout
vpath %.cpp $(SHARE_SRC)/native/$(PKGDIR)
#
# Fontmanager is headless (independent of X/Motif)
#
CFLAGS += -DHEADLESS
CXXFLAGS += -DHEADLESS
ifndef OPENJDK
CPPFLAGS += -I$(CLOSED_SRC)/share/native/$(PKGDIR)/t2k
else
CPPFLAGS += -I$(FREETYPE_HEADERS_PATH) -I$(FREETYPE_HEADERS_PATH)/freetype2
endif
ifeq ($(PLATFORM), windows)
vpath %.cpp $(PLATFORM_SRC)/native/sun/windows
else # PLATFORM
#
# Libraries to link, and other C flags.
#
ifeq ($(PLATFORM), solaris)
# Note that on Solaris, fontmanager is built against the headless library.
LDFLAGS += -L$(LIBDIR)/$(LIBARCH)/headless
OTHER_LDLIBS += -lawt -L$(LIBDIR)/$(LIBARCH)/xawt -lmawt -lc $(LIBM) $(LIBCXX)
else # PLATFORM is linux
OTHER_LDLIBS += -lawt $(LIBM) $(LIBCXX)
ifeq ("$(CC_VER_MAJOR)", "3")
OTHER_LDLIBS += -Wl,-Bstatic -lgcc_eh -Wl,-Bdynamic
endif
endif
endif # PLATFORM
# set up compile flags..
CPPFLAGS += -I$(SHARE_SRC)/native/$(PKGDIR) \
-I$(SHARE_SRC)/native/$(PKGDIR)/layout \
-I$(SHARE_SRC)/native/sun/awt/image/cvutils \
-I$(PLATFORM_SRC)/native/sun/awt \
-I$(SHARE_SRC)/native/sun/awt/debug \
-I$(SHARE_SRC)/native/sun/java2d/loops \
-I$(SHARE_SRC)/native/sun/java2d/pipe \
-I$(PLATFORM_SRC)/native/sun/java2d \
-I$(SHARE_SRC)/native/sun/java2d \
-I$(TEMPDIR)/../../sun.awt/awt/CClassHeaders
ifeq ($(PLATFORM), windows)
CPPFLAGS += -I$(PLATFORM_SRC)/native/sun/windows
endif
# Make the Layout Engine build standalone
CPPFLAGS += -DLE_STANDALONE