[pango] Visual Studio builds: Generate .pc files



commit 626e3c4a4a5dffecb5b6cb9227843db50701f594
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Thu Apr 21 18:03:13 2016 +0800

    Visual Studio builds: Generate .pc files
    
    If python can be found at $(PythonPath)\python.exe (x86 builds) or
    $(PythonPathX64)\python.exe (x64 builds), generate .pc files for Pango, as
    appropriate with the build config chosen.  This will make building
    introspection on Visual Studio easier with packages that depend on Pango.

 build/win32/Makefile.am                        |    3 +
 build/win32/pangopc.py                         |   55 ++++++++++++
 build/win32/pc_base.py                         |  108 +++++++++++++++++++++++
 build/win32/replace.py                         |  109 ++++++++++++++++++++++++
 build/win32/vs10/Makefile.am                   |    1 +
 build/win32/vs10/pango-install.propsin         |   29 +++++--
 build/win32/vs10/pango-install.vcxproj         |   50 +++++++++--
 build/win32/vs10/pango-install.vcxproj.filters |   13 +++
 build/win32/vs11/Makefile.am                   |    1 +
 build/win32/vs12/Makefile.am                   |    1 +
 build/win32/vs14/Makefile.am                   |    1 +
 build/win32/vs9/pango-install.vcproj           |   88 +++++++++++++++++--
 build/win32/vs9/pango-install.vspropsin        |   14 +++
 13 files changed, 449 insertions(+), 24 deletions(-)
---
diff --git a/build/win32/Makefile.am b/build/win32/Makefile.am
index 71e5b47..90b9c09 100644
--- a/build/win32/Makefile.am
+++ b/build/win32/Makefile.am
@@ -34,6 +34,9 @@ EXTRA_DIST =  \
        pango-introspection-msvc.mak    \
        introspection-msvc.mak  \
        detectenv-msvc.mak      \
+       pangopc.py      \
+       pc_base.py      \
+       replace.py      \
        $(GENERATED_ITEMS)
 
 -include $(top_srcdir)/git.mk
diff --git a/build/win32/pangopc.py b/build/win32/pangopc.py
new file mode 100644
index 0000000..c5c27f3
--- /dev/null
+++ b/build/win32/pangopc.py
@@ -0,0 +1,55 @@
+#!/usr/bin/python
+#
+# Utility script to generate .pc files for Pango
+# for Visual Studio builds, to be used for
+# building introspection files
+
+# Author: Fan, Chun-wei
+# Date: April 21, 2016
+
+import os
+import sys
+import argparse
+
+from replace import replace_multi
+from pc_base import BasePCItems
+
+def main(argv):
+    base_pc = BasePCItems()
+
+    pango_parser = argparse.ArgumentParser(description='Setup basic .pc file info')
+    pango_parser.add_argument('--pangoft2',
+                              action='store_const',
+                              const=1,
+                              help='Create .pc for PangoFT2')
+    base_pc.setup(argv, pango_parser)
+    base_pkg_replace_items = {'@PANGO_API_VERSION@': '1.0'}
+
+    base_pkg_replace_items.update(base_pc.base_replace_items)
+
+    # Generate pango.pc
+    replace_multi(base_pc.top_srcdir + '/pango.pc.in',
+                  base_pc.srcdir + '/pango.pc',
+                  base_pkg_replace_items)
+
+    # Generate pangowin32.pc
+    replace_multi(base_pc.top_srcdir + '/pangowin32.pc.in',
+                  base_pc.srcdir + '/pangowin32.pc',
+                  base_pkg_replace_items)
+
+    # Generate pangoft2.pc, if requested
+    pango_args = pango_parser.parse_args()
+    if getattr(pango_args, 'pangoft2', None) is 1:
+        replace_multi(base_pc.top_srcdir + '/pangoft2.pc.in',
+                      base_pc.srcdir + '/pangoft2.pc',
+                      base_pkg_replace_items)
+
+    # Generate pangocairo.pc
+    pangocairo_replace_items = {'@PKGCONFIG_CAIRO_REQUIRES@': 'cairo'}
+    pangocairo_replace_items.update(base_pkg_replace_items)
+    replace_multi(base_pc.top_srcdir + '/pangocairo.pc.in',
+                  base_pc.srcdir + '/pangocairo.pc',
+                  pangocairo_replace_items)
+
+if __name__ == '__main__':
+    sys.exit(main(sys.argv))
diff --git a/build/win32/pc_base.py b/build/win32/pc_base.py
new file mode 100644
index 0000000..da10560
--- /dev/null
+++ b/build/win32/pc_base.py
@@ -0,0 +1,108 @@
+#!/usr/bin/python
+#
+# Simple utility script to generate the basic info
+# needed in a .pc (pkg-config) file, used especially
+# for introspection purposes
+
+# This can be used in various projects where
+# there is the need to generate .pc files,
+# and is copied from GLib's $(srcroot)/build/win32
+
+# Author: Fan, Chun-wei
+# Date: March 10, 2016
+
+import os
+import sys
+import argparse
+
+class BasePCItems:
+    def __init__(self):
+        self.base_replace_items = {}
+        self.exec_prefix = ''
+        self.includedir = ''
+        self.libdir = ''
+        self.prefix = ''
+        self.srcdir = os.path.dirname(__file__)
+        self.top_srcdir = self.srcdir + '\\..\\..'
+        self.version = ''
+
+    def setup(self, argv, parser=None):
+        if parser is None:
+            parser = argparse.ArgumentParser(description='Setup basic .pc file info')
+        parser.add_argument('--prefix', help='prefix of the installed library',
+                            required=True)
+        parser.add_argument('--exec-prefix',
+                            help='prefix of the installed programs, \
+                                  if different from the prefix')
+        parser.add_argument('--includedir',
+                            help='includedir of the installed library, \
+                                  if different from ${prefix}/include')
+        parser.add_argument('--libdir',
+                            help='libdir of the installed library, \
+                                  if different from ${prefix}/lib')
+        parser.add_argument('--version', help='Version of the package',
+                            required=True)
+        args = parser.parse_args()
+
+        self.version = args.version
+
+        # check whether the prefix and exec_prefix are valid
+        if not os.path.exists(args.prefix):
+            raise SystemExit('Specified prefix \'%s\' is invalid' % args.prefix)
+
+        # check and setup the exec_prefix
+        if getattr(args, 'exec_prefix', None) is None:
+            input_exec_prefix = args.prefix
+        else:
+            input_exec_prefix = args.exec_prefix
+        if not os.path.exists(input_exec_prefix):
+            raise SystemExit('Specified exec-prefix \'%s\' is invalid' %
+                             input_exec_prefix)
+
+
+        # check and setup the includedir
+        if getattr(args, 'includedir', None) is None:
+            self.includedir = '${prefix}/include'
+        else:
+            if args.includedir.startswith('${prefix}'):
+                includedir_use_shorthand = True
+                input_includedir = args.prefix + args.includedir[len('${prefix}'):]
+            else:
+                includedir_use_shorthand = False
+                input_includedir = args.includedir
+            if not os.path.exists(input_includedir):
+                raise SystemExit('Specified includedir \'%s\' is invalid' %
+                                  args.includedir)
+            if includedir_use_shorthand is True:
+                self.includedir = args.includedir.replace('\\','/')
+            else:
+                self.includedir = os.path.abspath(input_includedir).replace('\\','/')
+
+        # check and setup the libdir
+        if getattr(args, 'libdir', None) is None:
+            self.libdir = '${prefix}/lib'
+        else:
+            if args.libdir.startswith('${prefix}'):
+                libdir_use_shorthand = True
+                input_libdir = args.prefix + args.libdir[len('${prefix}'):]
+            else:
+                libdir_use_shorthand = False
+                input_libdir = args.libdir
+            if not os.path.exists(input_libdir):
+                raise SystemExit('Specified libdir \'%s\' is invalid' %
+                                             args.libdir)
+            if libdir_use_shorthand is True:
+                self.libdir = args.libdir.replace('\\','/')
+            else:
+                self.libdir = os.path.abspath(input_libdir).replace('\\','/')
+
+        # use absolute paths for prefix and exec_prefix
+        self.prefix = os.path.abspath(args.prefix).replace('\\','/')
+        self.exec_prefix = os.path.abspath(input_exec_prefix).replace('\\','/')
+
+        # setup dictionary for replacing items in *.pc.in
+        self.base_replace_items.update({'@VERSION@': self.version})
+        self.base_replace_items.update({'@prefix@': self.prefix})
+        self.base_replace_items.update({'@exec_prefix@': self.exec_prefix})
+        self.base_replace_items.update({'@libdir@': self.libdir})
+        self.base_replace_items.update({'@includedir@': self.includedir})
diff --git a/build/win32/replace.py b/build/win32/replace.py
new file mode 100644
index 0000000..a81bab9
--- /dev/null
+++ b/build/win32/replace.py
@@ -0,0 +1,109 @@
+#!/usr/bin/python
+#
+# Simple utility script to manipulate
+# certain types of strings in a file
+
+# This can be used in various projects where
+# there is the need to replace strings in files,
+# and is copied from GLib's $(srcroot)/build/win32
+
+# Author: Fan, Chun-wei
+# Date: September 03, 2014
+
+import os
+import sys
+import re
+import string
+import argparse
+
+valid_actions = ['remove-prefix',
+                 'replace-var',
+                 'replace-str',
+                 'remove-str']
+
+def replace_multi(src, dest, replace_items):
+    with open(src, 'r') as s:
+        with open(dest, 'w') as d:
+            for line in s:
+                replace_dict = dict((re.escape(key), value) \
+                               for key, value in replace_items.items())
+                replace_pattern = re.compile("|".join(replace_dict.keys()))
+                d.write(replace_pattern.sub(lambda m: \
+                        replace_dict[re.escape(m.group(0))], line))
+
+def replace(src, dest, instring, outstring):
+    replace_item = {instring: outstring}
+    replace_multi(src, dest, replace_item)
+
+def check_required_args(args, params):
+    for param in params:
+        if getattr(args, param, None) is None:
+            raise SystemExit('%s: error: --%s argument is required' % (__file__, param))
+
+def warn_ignored_args(args, params):
+    for param in params:
+        if getattr(args, param, None) is not None:
+            print('%s: warning: --%s argument is ignored' % (__file__, param))
+
+def main(argv):
+
+    parser = argparse.ArgumentParser(description='Process strings in a file.')
+    parser.add_argument('-a',
+                        '--action',
+                        help='Action to carry out.  Can be one of:\n'
+                             'remove-prefix\n'
+                             'replace-var\n'
+                             'replace-str\n'
+                             'remove-str',
+                        choices=valid_actions)
+    parser.add_argument('-i', '--input', help='Input file')
+    parser.add_argument('-o', '--output', help='Output file')
+    parser.add_argument('--instring', help='String to replace or remove')
+    parser.add_argument('--var', help='Autotools variable name to replace')
+    parser.add_argument('--outstring',
+                        help='New String to replace specified string or variable')
+    parser.add_argument('--removeprefix', help='Prefix of string to remove')
+
+    args = parser.parse_args()
+
+    input_string = ''
+    output_string = ''
+
+    # We must have action, input, output for all operations
+    check_required_args(args, ['action','input','output'])
+
+    # Build the arguments by the operation that is to be done,
+    # to be fed into replace()
+
+    # Get rid of prefixes from a string
+    if args.action == 'remove-prefix':
+        check_required_args(args, ['instring','removeprefix'])
+        warn_ignored_args(args, ['outstring','var'])
+        input_string = args.removeprefix + args.instring
+        output_string = args.instring
+
+    # Replace an m4-style variable (those surrounded by @...@)
+    if args.action == 'replace-var':
+        check_required_args(args, ['var','outstring'])
+        warn_ignored_args(args, ['instring','removeprefix'])
+        input_string = '@' + args.var + '@'
+        output_string = args.outstring
+
+    # Replace a string
+    if args.action == 'replace-str':
+        check_required_args(args, ['instring','outstring'])
+        warn_ignored_args(args, ['var','removeprefix'])
+        input_string = args.instring
+        output_string = args.outstring
+
+    # Remove a string
+    if args.action == 'remove-str':
+        check_required_args(args, ['instring'])
+        warn_ignored_args(args, ['var','outstring','removeprefix'])
+        input_string = args.instring
+        output_string = ''
+
+    replace(args.input, args.output, input_string, output_string)
+
+if __name__ == '__main__':
+    sys.exit(main(sys.argv))
diff --git a/build/win32/vs10/Makefile.am b/build/win32/vs10/Makefile.am
index 834fde2..1ba048f 100644
--- a/build/win32/vs10/Makefile.am
+++ b/build/win32/vs10/Makefile.am
@@ -26,6 +26,7 @@ EXTRA_DIST =  \
        pangocairo.vcxprojin                    \
        pangocairo.vcxproj.filtersin            \
        pango-install.vcxproj                   \
+       pango-install.vcxproj.filters           \
        README.txt                              \
        $(GENERATED_ITEMS)
 
diff --git a/build/win32/vs10/pango-install.propsin b/build/win32/vs10/pango-install.propsin
index f8cba89..efac894 100644
--- a/build/win32/vs10/pango-install.propsin
+++ b/build/win32/vs10/pango-install.propsin
@@ -5,12 +5,14 @@
   </ImportGroup>
   <PropertyGroup Label="UserMacros">
     <BinDir>$(SolutionDir)$(Configuration)\$(Platform)\bin</BinDir>
-    
<InstalledDlls>$(BinDir)\$(PangoDllPrefix)pango(PangoDllSuffix).dll;$(BinDir)\$(PangoDllPrefix)pangowin32(PangoDllSuffix).dll;$(BinDir)\$(PangoDllPrefix)pangocairo(PangoDllSuffix).dll</InstalledDlls>
-    <InstalledFCDlls>$(BinDir)\$(PangoDllPrefix)pangoft2(PangoDllSuffix).dll</InstalledFCDlls>
     <PangoInstallHeadersData>
 mkdir $(CopyDir)\include\pango-$(ApiVersion)\pango
 #include "pango.vs10.headers"
 
+if exist ..\pango.pc (mkdir $(CopyDir)\lib\pkgconfig &amp; copy ..\pango.pc $(CopyDir)\lib\pkgconfig)
+if exist ..\pangowin32.pc copy ..\pangowin32.pc $(CopyDir)\lib\pkgconfig
+if exist ..\pangocairo.pc copy ..\pangocairo.pc $(CopyDir)\lib\pkgconfig
+
 if "$(Configuration)" == "Release" goto END
 if "$(Configuration)" == "Debug" goto END
 
@@ -20,8 +22,13 @@ copy ..\..\..\pango\pangofc-fontmap.h $(CopyDir)\include\pango-$(ApiVersion)\pan
 copy ..\..\..\pango\pango-ot.h $(CopyDir)\include\pango-$(ApiVersion)\pango
 copy ..\..\..\pango\pangoft2.h $(CopyDir)\include\pango-$(ApiVersion)\pango
 
+if exist ..\pangoft2.pc copy ..\pangoft2.pc $(CopyDir)\lib\pkgconfig
 :END
 </PangoInstallHeadersData>
+    <GenPangoPC>if exist $(PythonPath)\python.exe $(PythonPath)\python.exe ..\pangopc.py 
--version=$(PangoMajorVersion).$(PangoMinorVersion).$(PangoMicroVersion) --prefix=$(CopyDir)</GenPangoPC>
+    <GenPangoPCX64>if exist $(PythonPathX64)\python.exe $(PythonPathX64)\python.exe ..\pangopc.py 
--version=$(PangoMajorVersion).$(PangoMinorVersion).$(PangoMicroVersion) --prefix=$(CopyDir)</GenPangoPCX64>
+    <PangoPCFiles>..\pango.pc;..\pangowin32.pc;..\pangocairo.pc</PangoPCFiles>
+    <PangoFT2PCFiles>..\pangoft2.pc</PangoFT2PCFiles>
   </PropertyGroup>
   <PropertyGroup>
     <_PropertySheetDisplayName>pangoinstallprops</_PropertySheetDisplayName>
@@ -32,14 +39,20 @@ copy ..\..\..\pango\pangoft2.h $(CopyDir)\include\pango-$(ApiVersion)\pango
     <BuildMacro Include="BinDir">
       <Value>$(BinDir)</Value>
     </BuildMacro>
-    <BuildMacro Include="InstalledDlls">
-      <Value>$(InstalledDlls)</Value>
-    </BuildMacro>
-    <BuildMacro Include="InstalledFCDlls">
-      <Value>$(InstalledFCDlls)</Value>
-    </BuildMacro>
     <BuildMacro Include="PangoInstallHeadersData">
       <Value>$(PangoInstallHeadersData)</Value>
     </BuildMacro>
+    <BuildMacro Include="GenPangoPC">
+      <Value>$(GenPangoPC)</Value>
+    </BuildMacro>
+    <BuildMacro Include="GenPangoPCX64">
+      <Value>$(GenPangoPCX64)</Value>
+    </BuildMacro>
+    <BuildMacro Include="PangoPCFiles">
+      <Value>$(PangoPCFiles)</Value>
+    </BuildMacro>
+    <BuildMacro Include="PangoFT2PCFiles">
+      <Value>$(PangoFT2PCFiles)</Value>
+    </BuildMacro>
   </ItemGroup>
 </Project>
diff --git a/build/win32/vs10/pango-install.vcxproj b/build/win32/vs10/pango-install.vcxproj
index ac0289f..28ac16e 100644
--- a/build/win32/vs10/pango-install.vcxproj
+++ b/build/win32/vs10/pango-install.vcxproj
@@ -157,29 +157,63 @@
   <ItemGroup>
     <CustomBuild Include="..\..\..\config.h.win32">
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Installing Build 
Results...</Message>
+      <AdditionalInputs 
Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PangoPCFiles)</AdditionalInputs>
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PangoDoInstallBin) 
$(PangoInstallHeadersData)</Command>
-      <Outputs 
Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(InstalledDlls);%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">blah;%(Outputs)</Outputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug_FC|Win32'">Installing Build 
Results...</Message>
+      <AdditionalInputs 
Condition="'$(Configuration)|$(Platform)'=='Debug_FC|Win32'">$(PangoPCFiles);$(PangoFT2PCFiles)</AdditionalInputs>
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug_FC|Win32'">$(PangoDoInstallBin) 
$(PangoInstallHeadersData)</Command>
-      <Outputs 
Condition="'$(Configuration)|$(Platform)'=='Debug_FC|Win32'">$(InstalledDlls);$(InstalledFCDlls);%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_FC|Win32'">blah;%(Outputs)</Outputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Installing Build Results...</Message>
+      <AdditionalInputs 
Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PangoPCFiles)</AdditionalInputs>
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PangoDoInstallBin) 
$(PangoInstallHeadersData)</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(InstalledDlls);%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">blah;%(Outputs)</Outputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug_FC|x64'">Installing Build 
Results...</Message>
+      <AdditionalInputs 
Condition="'$(Configuration)|$(Platform)'=='Debug_FC|x64'">$(PangoPCFiles);$(PangoFT2PCFiles)</AdditionalInputs>
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug_FC|x64'">$(PangoDoInstallBin) 
$(PangoInstallHeadersData)</Command>
-      <Outputs 
Condition="'$(Configuration)|$(Platform)'=='Debug_FC|x64'">$(InstalledDlls);$(InstalledFCDlls);%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_FC|x64'">blah;%(Outputs)</Outputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Installing Build 
Results...</Message>
+      <AdditionalInputs 
Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PangoPCFiles)</AdditionalInputs>
       <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PangoDoInstallBin) 
$(PangoInstallHeadersData)</Command>
-      <Outputs 
Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(InstalledDlls);%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">blah;%(Outputs)</Outputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release_FC|Win32'">Installing Build 
Results...</Message>
+      <AdditionalInputs 
Condition="'$(Configuration)|$(Platform)'=='Release_FC|Win32'">$(PangoPCFiles);$(PangoFT2PCFiles)</AdditionalInputs>
       <Command Condition="'$(Configuration)|$(Platform)'=='Release_FC|Win32'">$(PangoDoInstallBin) 
$(PangoInstallHeadersData)</Command>
-      <Outputs 
Condition="'$(Configuration)|$(Platform)'=='Release_FC|Win32'">$(InstalledDlls);$(InstalledFCDlls);%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release_FC|Win32'">blah;%(Outputs)</Outputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Installing Build 
Results...</Message>
+      <AdditionalInputs 
Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PangoPCFiles)</AdditionalInputs>
       <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PangoDoInstallBin) 
$(PangoInstallHeadersData)</Command>
-      <Outputs 
Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(InstalledDlls);%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">blah;%(Outputs)</Outputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Release_FC|x64'">Installing Build 
Results...</Message>
+      <AdditionalInputs 
Condition="'$(Configuration)|$(Platform)'=='Release_FC|x64'">$(PangoPCFiles);$(PangoFT2PCFiles)</AdditionalInputs>
       <Command Condition="'$(Configuration)|$(Platform)'=='Release_FC|x64'">$(PangoDoInstallBin) 
$(PangoInstallHeadersData)</Command>
-      <Outputs 
Condition="'$(Configuration)|$(Platform)'=='Release_FC|x64'">$(InstalledDlls);$(InstalledFCDlls);%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release_FC|x64'">blah;%(Outputs)</Outputs>
+    </CustomBuild>
+    <CustomBuild Include="..\pangopc.py">
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating .pc files...</Message>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GenPangoPC)</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PangoPCFiles);%(Outputs)</Outputs>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug_FC|Win32'">Generating .pc files...</Message>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug_FC|Win32'">$(GenPangoPC) 
--pangoft2</Command>
+      <Outputs 
Condition="'$(Configuration)|$(Platform)'=='Debug_FC|Win32'">$(PangoPCFiles);$(PangoFT2PCFile);%(Outputs)</Outputs>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generating .pc files...</Message>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GenPangoPCX64)</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PangoPCFiles);%(Outputs)</Outputs>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug_FC|x64'">Generating .pc files...</Message>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug_FC|x64'">$(GenPangoPCX64) 
--pangoft2</Command>
+      <Outputs 
Condition="'$(Configuration)|$(Platform)'=='Debug_FC|x64'">$(PangoPCFiles);$(PangoFT2PCFile);%(Outputs)</Outputs>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Generating .pc files...</Message>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GenPangoPC)</Command>
+      <Outputs 
Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PangoPCFiles);%(Outputs)</Outputs>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release_FC|Win32'">Generating .pc 
files...</Message>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release_FC|Win32'">$(GenPangoPC) 
--pangoft2</Command>
+      <Outputs 
Condition="'$(Configuration)|$(Platform)'=='Release_FC|Win32'">$(PangoPCFiles);$(PangoFT2PCFile);%(Outputs)</Outputs>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generating .pc files...</Message>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GenPangoPCX64)</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PangoPCFiles);%(Outputs)</Outputs>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release_FC|x64'">Generating .pc files...</Message>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release_FC|x64'">$(GenPangoPCX64) 
--pangoft2</Command>
+      <Outputs 
Condition="'$(Configuration)|$(Platform)'=='Release_FC|x64'">$(PangoPCFiles);$(PangoFT2PCFile);%(Outputs)</Outputs>
     </CustomBuild>
   </ItemGroup>
   <ItemGroup>
diff --git a/build/win32/vs10/pango-install.vcxproj.filters b/build/win32/vs10/pango-install.vcxproj.filters
new file mode 100644
index 0000000..9a12c75
--- /dev/null
+++ b/build/win32/vs10/pango-install.vcxproj.filters
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <ItemGroup>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <CustomBuild Include="..\pangopc.py"><Filter>Resource Files</Filter></CustomBuild>
+    <CustomBuild Include="..\..\..\config.h.win32"><Filter>Resource Files</Filter></CustomBuild>
+  </ItemGroup>
+</Project>
diff --git a/build/win32/vs11/Makefile.am b/build/win32/vs11/Makefile.am
index 3984baf..ff4af39 100644
--- a/build/win32/vs11/Makefile.am
+++ b/build/win32/vs11/Makefile.am
@@ -15,6 +15,7 @@ EXTRA_DIST =  \
        pangocairo.vcxproj                      \
        pangocairo.vcxproj.filters              \
        pango-install.vcxproj                   \
+       pango-install.vcxproj.filters           \
        README.txt
 
 DISTCLEANFILES = $(EXTRA_DIST)
diff --git a/build/win32/vs12/Makefile.am b/build/win32/vs12/Makefile.am
index 146d90c..b30d789 100644
--- a/build/win32/vs12/Makefile.am
+++ b/build/win32/vs12/Makefile.am
@@ -15,6 +15,7 @@ EXTRA_DIST =  \
        pangocairo.vcxproj                      \
        pangocairo.vcxproj.filters              \
        pango-install.vcxproj                   \
+       pango-install.vcxproj.filters           \
        README.txt
 
 DISTCLEANFILES = $(EXTRA_DIST)
diff --git a/build/win32/vs14/Makefile.am b/build/win32/vs14/Makefile.am
index 0d210ec..e735ba5 100644
--- a/build/win32/vs14/Makefile.am
+++ b/build/win32/vs14/Makefile.am
@@ -15,6 +15,7 @@ EXTRA_DIST =  \
        pangocairo.vcxproj                      \
        pangocairo.vcxproj.filters              \
        pango-install.vcxproj                   \
+       pango-install.vcxproj.filters           \
        README.txt
 
 DISTCLEANFILES = $(EXTRA_DIST)
diff --git a/build/win32/vs9/pango-install.vcproj b/build/win32/vs9/pango-install.vcproj
index 39fc198..aba571b 100644
--- a/build/win32/vs9/pango-install.vcproj
+++ b/build/win32/vs9/pango-install.vcproj
@@ -28,7 +28,7 @@
                        DeleteExtensionsOnClean=""
                        >
                        <Tool
-                               Name="VCPreBuildEventTool"
+                               Name="VCPostBuildEventTool"
                                CommandLine="$(PangoInstallBin) $(PangoInstallHeadersData)"
                        />
                </Configuration>
@@ -41,7 +41,7 @@
                        DeleteExtensionsOnClean=""
                        >
                        <Tool
-                               Name="VCPreBuildEventTool"
+                               Name="VCPostBuildEventTool"
                                CommandLine="$(PangoInstallBin) $(PangoInstallHeadersData)"
                        />
                </Configuration>
@@ -55,7 +55,7 @@
                        WholeProgramOptimization="1"
                        >
                        <Tool
-                               Name="VCPreBuildEventTool"
+                               Name="VCPostBuildEventTool"
                                CommandLine="$(PangoInstallBin) $(PangoInstallHeadersData)"
                        />
                </Configuration>
@@ -69,7 +69,7 @@
                        WholeProgramOptimization="1"
                        >
                        <Tool
-                               Name="VCPreBuildEventTool"
+                               Name="VCPostBuildEventTool"
                                CommandLine="$(PangoInstallBin) $(PangoInstallHeadersData)"
                        />
                </Configuration>
@@ -82,7 +82,7 @@
                        DeleteExtensionsOnClean=""
                        >
                        <Tool
-                               Name="VCPreBuildEventTool"
+                               Name="VCPostBuildEventTool"
                                CommandLine="$(PangoInstallBin) $(PangoInstallHeadersData)"
                        />
                </Configuration>
@@ -95,7 +95,7 @@
                        DeleteExtensionsOnClean=""
                        >
                        <Tool
-                               Name="VCPreBuildEventTool"
+                               Name="VCPostBuildEventTool"
                                CommandLine="$(PangoInstallBin) $(PangoInstallHeadersData)"
                        />
                </Configuration>
@@ -109,7 +109,7 @@
                        DeleteExtensionsOnClean=""
                        >
                        <Tool
-                               Name="VCPreBuildEventTool"
+                               Name="VCPostBuildEventTool"
                                CommandLine="$(PangoInstallBin) $(PangoInstallHeadersData)"
                        />
                </Configuration>
@@ -123,7 +123,7 @@
                        DeleteExtensionsOnClean=""
                        >
                        <Tool
-                               Name="VCPreBuildEventTool"
+                               Name="VCPostBuildEventTool"
                                CommandLine="$(PangoInstallBin) $(PangoInstallHeadersData)"
                        />
                </Configuration>
@@ -131,6 +131,78 @@
        <References>
        </References>
        <Files>
+               <Filter
+                       Name="Resource Files"
+                       Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+                       UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+                       >
+                       <File RelativePath="..\pangopc.py">
+                               <FileConfiguration Name="Debug_FC|Win32">
+                                       <Tool
+                                               Name="VCCustomBuildTool"
+                                               Description="Generating .pc files..."
+                                               CommandLine="$(GenPangoPC) --pangoft2"
+                                               
Outputs="..\pango.pc;..\pangowin32.pc;..\pangocairo.pc;..\pangoft2.pc"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration Name="Debug|Win32">
+                                       <Tool
+                                               Name="VCCustomBuildTool"
+                                               Description="Generating .pc files..."
+                                               CommandLine="$(GenPangoPC)"
+                                               Outputs="..\pango.pc;..\pangowin32.pc;..\pangocairo.pc"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration Name="Release_FC|Win32">
+                                       <Tool
+                                               Name="VCCustomBuildTool"
+                                               Description="Generating .pc files..."
+                                               CommandLine="$(GenPangoPC) --pangoft2"
+                                               
Outputs="..\pango.pc;..\pangowin32.pc;..\pangocairo.pc;..\pangoft2.pc"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration Name="Release|Win32">
+                                       <Tool
+                                               Name="VCCustomBuildTool"
+                                               Description="Generating .pc files..."
+                                               CommandLine="$(GenPangoPC)"
+                                               Outputs="..\pango.pc;..\pangowin32.pc;..\pangocairo.pc"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration Name="Debug_FC|x64">
+                                       <Tool
+                                               Name="VCCustomBuildTool"
+                                               Description="Generating .pc files..."
+                                               CommandLine="$(GenPangoPCX64) --pangoft2"
+                                               
Outputs="..\pango.pc;..\pangowin32.pc;..\pangocairo.pc;..\pangoft2.pc"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration Name="Debug|x64">
+                                       <Tool
+                                               Name="VCCustomBuildTool"
+                                               Description="Generating .pc files..."
+                                               CommandLine="$(GenPangoPCX64)"
+                                               Outputs="..\pango.pc;..\pangowin32.pc;..\pangocairo.pc"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration Name="Release_FC|x64">
+                                       <Tool
+                                               Name="VCCustomBuildTool"
+                                               Description="Generating .pc files..."
+                                               CommandLine="$(GenPangoPCX64) --pangoft2"
+                                               
Outputs="..\pango.pc;..\pangowin32.pc;..\pangocairo.pc;..\pangoft2.pc"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration Name="Release|x64">
+                                       <Tool
+                                               Name="VCCustomBuildTool"
+                                               Description="Generating .pc files..."
+                                               CommandLine="$(GenPangoPCX64)"
+                                               Outputs="..\pango.pc;..\pangowin32.pc;..\pangocairo.pc"
+                                       />
+                               </FileConfiguration>
+                       </File>
+               </Filter>
        </Files>
        <Globals>
        </Globals>
diff --git a/build/win32/vs9/pango-install.vspropsin b/build/win32/vs9/pango-install.vspropsin
index 955e4a3..3ea9cb2 100644
--- a/build/win32/vs9/pango-install.vspropsin
+++ b/build/win32/vs9/pango-install.vspropsin
@@ -11,6 +11,10 @@
 mkdir $(CopyDir)\include\pango-$(ApiVersion)\pango&#x0D;&#x0A;
 #include "pango.headers"
 
+if exist ..\pango.pc (mkdir $(CopyDir)\lib\pkgconfig &amp; copy ..\pango.pc 
$(CopyDir)\lib\pkgconfig)&#x0D;&#x0A;
+if exist ..\pangowin32.pc copy ..\pangowin32.pc $(CopyDir)\lib\pkgconfig&#x0D;&#x0A;
+if exist ..\pangocairo.pc copy ..\pangocairo.pc $(CopyDir)\lib\pkgconfig&#x0D;&#x0A;
+
 if &quot;$(ConfigurationName)&quot; == &quot;Release&quot; goto END&#x0D;&#x0A;
 if &quot;$(ConfigurationName)&quot; == &quot;Debug&quot; goto END&#x0D;&#x0A;
 
@@ -20,7 +24,17 @@ copy ..\..\..\pango\pangofc-fontmap.h $(CopyDir)\include\pango-$(ApiVersion)\pan
 copy ..\..\..\pango\pango-ot.h $(CopyDir)\include\pango-$(ApiVersion)\pango&#x0D;&#x0A;
 copy ..\..\..\pango\pangoft2.h $(CopyDir)\include\pango-$(ApiVersion)\pango&#x0D;&#x0A;
 
+if exist ..\pangoft2.pc copy ..\pangoft2.pc $(CopyDir)\lib\pkgconfig&#x0D;&#x0A;
+
 :END&#x0D;&#x0A;
 "
        />
+       <UserMacro
+               Name="GenPangoPC"
+               Value="if exist $(PythonPath)\python.exe $(PythonPath)\python.exe ..\pangopc.py 
--version=$(PangoMajorVersion).$(PangoMinorVersion).$(PangoMicroVersion) --prefix=$(CopyDir)"
+       />
+       <UserMacro
+               Name="GenPangoPCX64"
+               Value="if exist $(PythonPathX64)\python.exe $(PythonPathX64)\python.exe ..\pangopc.py 
--version=$(PangoMajorVersion).$(PangoMinorVersion).$(PangoMicroVersion) --prefix=$(CopyDir)"
+       />
 </VisualStudioPropertySheet>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]