aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--gyp/common_variables.gypi6
-rw-r--r--gyp/fontconfig.gyp107
-rw-r--r--gyp/gm.gyp2
-rw-r--r--third_party/fontconfig/README.chromium11
-rw-r--r--third_party/fontconfig/config/mac/config.h.template (renamed from third_party/fontconfig/config/mac/config.h)6
-rwxr-xr-xthird_party/fontconfig/process-template.py51
6 files changed, 174 insertions, 9 deletions
diff --git a/gyp/common_variables.gypi b/gyp/common_variables.gypi
index 74e596cf19..1c6111ac4a 100644
--- a/gyp/common_variables.gypi
+++ b/gyp/common_variables.gypi
@@ -57,6 +57,11 @@
}, {
'os_posix%': 1,
}],
+ [ 'skia_os in ["linux", "win", "mac"]', {
+ 'skia_poppler_enabled%': 1,
+ }, {
+ 'skia_poppler_enabled%': 0,
+ }],
[ 'skia_os in ["linux", "freebsd", "openbsd", "solaris"]', {
'skia_arch_width%': 64,
}, {
@@ -146,6 +151,7 @@
'skia_resource_cache_mb_limit%': '<(skia_resource_cache_mb_limit)',
'skia_resource_cache_count_limit%': '<(skia_resource_cache_count_limit)',
'skia_angle%': '<(skia_angle)',
+ 'skia_poppler_enabled%': '<(skia_poppler_enabled)',
'skia_arch_width%': '<(skia_arch_width)',
'skia_arch_type%': '<(skia_arch_type)',
'skia_chrome_utils%': '<(skia_chrome_utils)',
diff --git a/gyp/fontconfig.gyp b/gyp/fontconfig.gyp
index 35f699faae..0a4a09899a 100644
--- a/gyp/fontconfig.gyp
+++ b/gyp/fontconfig.gyp
@@ -13,13 +13,31 @@
'targets': [
{
'target_name': 'fontconfig',
+ 'type': 'none',
+ 'dependencies': [
+ 'libfontconfig',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '../third_party/externals/fontconfig',
+ ],
+ },
+ 'conditions': [
+ ['skia_os == "mac"', {
+ 'dependencies': [
+ 'fontconfig_setup',
+ ],
+ }],
+ ],
+ },
+ {
+ 'target_name': 'libfontconfig',
'type': 'static_library',
'dependencies': [
'freetype.gyp:freetype_poppler',
],
'include_dirs' : [
'../third_party/externals/fontconfig',
-
'../third_party/fontconfig/config',
'../third_party/fontconfig/config/src',
],
@@ -66,12 +84,12 @@
'conditions': [
['skia_os == "mac"', {
'include_dirs': [
+ '<(SHARED_INTERMEDIATE_DIR)/fontconfig_config',
'../third_party/fontconfig/config/mac',
'../third_party/fontconfig/config/mac/src',
],
- 'defines': [
- 'FC_CACHEDIR',
- 'FONTCONFIG_PATH',
+ 'dependencies': [
+ 'fontconfig_config_template',
],
'libraries': [
'$(SDKROOT)/usr/lib/libexpat.dylib',
@@ -97,4 +115,85 @@
],
},
],
+ 'conditions': [
+ ['skia_os == "mac"', {
+ 'variables': {
+ 'cachedir': '<(PRODUCT_DIR)/fontconfig/cache',
+ 'configdir': '<(PRODUCT_DIR)/fontconfig/etc',
+ },
+ 'targets': [
+ {
+ 'target_name': 'fontconfig_config_template',
+ 'type': 'none',
+ 'actions': [{
+ 'action_name': 'fontconfig_config_template',
+ 'message': 'Generating fontconfig header',
+ 'inputs': [
+ '../third_party/fontconfig/process-template.py',
+ '../third_party/fontconfig/config/mac/config.h.template',
+ ],
+ 'outputs': [
+ '<(SHARED_INTERMEDIATE_DIR)/fontconfig_config/config.h',
+ ],
+ 'action': [
+ 'python', '../third_party/fontconfig/process-template.py',
+ '-i', '../third_party/fontconfig/config/mac/config.h.template',
+ '-o', '<@(_outputs)',
+ '-p', '@FC_CACHEDIR@', '<(cachedir)',
+ '-p', '@FONTCONFIG_PATH@', '<(configdir)',
+ ],
+ }],
+ }, {
+ 'target_name': 'fontconfig_setup',
+ 'type': 'none',
+ 'dependencies': [
+ 'fc-cache',
+ ],
+ 'actions': [{
+ 'action_name': 'fontconfig_config_file',
+ 'message': 'Generating font.conf',
+ 'inputs': [
+ '../third_party/fontconfig/process-template.py',
+ '../third_party/externals/fontconfig/fonts.conf.in',
+ ],
+ 'outputs': [ '<(configdir)/fonts.conf', ],
+ 'action': [
+ 'python', '../third_party/fontconfig/process-template.py',
+ '-i', '../third_party/externals/fontconfig/fonts.conf.in',
+ '-o', '<(configdir)/fonts.conf',
+ '-p', '@FC_CACHEDIR@', '<(cachedir)',
+ '-k', '@FC_DEFAULT_FONTS@', '/System/Library/Fonts',
+ '-k', '@FC_FONTPATH@', '<dir>/Library/Fonts</dir>',
+ '-p', '@CONFIGDIR@', '<(configdir)/conf.d',
+ '-k', '@PACKAGE@', 'fontconfig',
+ '-k', '@VERSION@', '2.10.93',
+ ],
+ }, {
+ 'action_name': 'populate_fontconfig_cache',
+ 'message':
+ 'Generating fontconfig cache (this will take a few minutes).',
+ 'inputs': [
+ '<(PRODUCT_DIR)/fc-cache',
+ '<(configdir)/fonts.conf',
+ ],
+ 'outputs': [ '<(cachedir)/CACHEDIR.TAG', ],
+ 'action': [ '<(PRODUCT_DIR)/fc-cache', '-s', '-f', '-v', ],
+ }],
+ },
+ {
+ 'target_name': 'fc-cache',
+ 'type': 'executable',
+ 'dependencies': [
+ 'libfontconfig',
+ ],
+ 'libraries':[
+ '$(SDKROOT)/usr/lib/libexpat.dylib',
+ ],
+ 'sources': [
+ '../third_party/externals/fontconfig/fc-cache/fc-cache.c',
+ ],
+ },
+ ],
+ }],
+ ],
}
diff --git a/gyp/gm.gyp b/gyp/gm.gyp
index a543aca4db..657bc560ea 100644
--- a/gyp/gm.gyp
+++ b/gyp/gm.gyp
@@ -73,7 +73,7 @@
'pdfviewer_lib.gyp:pdfviewer_lib',
],
}],
- ['skia_os in ["linux", "mac", "win"]', {
+ ['skia_poppler_enabled', {
'dependencies': [
'poppler.gyp:libpoppler-cpp-gpl',
],
diff --git a/third_party/fontconfig/README.chromium b/third_party/fontconfig/README.chromium
index f9ea5b62b3..07bc5f59f8 100644
--- a/third_party/fontconfig/README.chromium
+++ b/third_party/fontconfig/README.chromium
@@ -33,9 +33,14 @@ third_party/fontconfig/config:
fc-lang/fclang.h
src/fcobjshash.h
-On Linux and Mac, these are the files generated by ./configure, with no
-additional flags.
+On Mac, these are the files generated by
+ ./configure --with-add-fonts=/System/Library/Fonts,/Library/Fonts
+config/mac/config.h.template then has a section added to the top:
+
++/* Manually added template defines */
++#define FC_CACHEDIR "@FC_CACHEDIR@"
++#define FONTCONFIG_PATH "@FONTCONFIG_PATH@"
+
On Windows, the configuration files were from
http://comments.gmane.org/gmane.comp.fonts.fontconfig/4438
(fontconfig development list).
-
diff --git a/third_party/fontconfig/config/mac/config.h b/third_party/fontconfig/config/mac/config.h.template
index 963ede8494..3eea946a19 100644
--- a/third_party/fontconfig/config/mac/config.h
+++ b/third_party/fontconfig/config/mac/config.h.template
@@ -1,6 +1,10 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
+/* Manually added template defines */
+#define FC_CACHEDIR "@FC_CACHEDIR@"
+#define FONTCONFIG_PATH "@FONTCONFIG_PATH@"
+
/* Define if building universal (internal helper macro) */
/* #undef AC_APPLE_UNIVERSAL_BUILD */
@@ -11,7 +15,7 @@
/* #undef ENABLE_LIBXML2 */
/* Additional font directories */
-#define FC_ADD_FONTS "yes"
+#define FC_ADD_FONTS "/System/Library/Fonts,/Library/Fonts"
/* Architecture prefix to use for cache file names */
/* #undef FC_ARCHITECTURE */
diff --git a/third_party/fontconfig/process-template.py b/third_party/fontconfig/process-template.py
new file mode 100755
index 0000000000..6c91402701
--- /dev/null
+++ b/third_party/fontconfig/process-template.py
@@ -0,0 +1,51 @@
+#!/usr/bin/python
+
+# Copyright 2014 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# A simple template processing script.
+
+import optparse
+import os
+import sys
+
+parser = optparse.OptionParser()
+parser.add_option('-i', '--input')
+parser.add_option('-o', '--output')
+parser.add_option(
+ '-k', '--keyword_substitution', action='append', nargs=2,
+ metavar=('KEY', 'VALUE'), help='Changes KEY to VALUE in the template.')
+parser.add_option(
+ '-p', '--path_substitution', action='append', nargs=2,
+ metavar=('KEY', 'PATH'),
+ help='Makes PATH absolute then changes KEY to PATH in the template.')
+
+(args, _) = parser.parse_args()
+
+input = sys.stdin
+if args.input:
+ input = open(args.input, 'r')
+
+output = sys.stdout
+if args.output:
+ output = open(args.output, 'w')
+
+path_subs = None
+if args.path_substitution:
+ path_subs = [
+ [sub[0], os.path.abspath(sub[1])] for sub in args.path_substitution
+ ]
+
+for line in input:
+ if args.keyword_substitution:
+ for (key, value) in args.keyword_substitution:
+ line = line.replace(key, value)
+ if path_subs:
+ for (key, path) in path_subs:
+ line = line.replace(key, path)
+ output.write(line)
+
+input.close()
+output.close()