freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] GSoC-2020-priyesh 2b9ab2d: [builds/windows] Made changes to


From: Priyesh Kumar
Subject: [freetype2] GSoC-2020-priyesh 2b9ab2d: [builds/windows] Made changes to build dlg with FreeType on Windows.
Date: Thu, 27 Aug 2020 10:09:46 -0400 (EDT)

branch: GSoC-2020-priyesh
commit 2b9ab2dc1edb584d6cec2ea1ffe15b79a284f382
Author: Priyesh Kumar <priyeshkkumar@gmail.com>
Commit: Priyesh Kumar <priyeshkkumar@gmail.com>

        [builds/windows] Made changes to build dlg with FreeType on Windows.
    
        * builds/windows/vc2010/script.bat: New windows batch file to copy
        necessary dlg files from `submodules/dlg' to `src/dlg'.  This file is
        used as a pre-built event in visual studios.
    
        * builds/windows/ftdebug.c: Added support for logging and logging 
related
        public APIs.
        (ft_debug_init): Updates to support the change of levels of tracing
        components of FreeType at run-time.
        (FT_Trace_Set_Level): New function to change the levels of tracing
        components at run-time.
        (FT_Trace_Set_Default_Level): New function to reset the levels of
        tracing components back to default.
        (FT_Set_Log_Handler, FT_Set_Default_Log_Handler, FT_Callback): Added
        function definitions.
    
        * builds/windows/vc2010/freetype.vcxproj.filters: Added `src/dlgwrap.c'.
    
        * builds/windows/vc2010/freetype.vcxproj (AdditionalIncludeDirectories):
        Added include files of dlg for `Debug' and `Debug Static' configurations
        on both `x64' and `win32' platforms.
        (PreprocessorDefinitions): Added `FT_LOGGING' for `Debug' and
        `Debug Static' configurations on both `x64' and `win32' platforms.  
Added
        `DLG_STATIC' for `Debug' configuration on `x64' and `win32' platforms.
        (DisableLanguageExtensions): We need to disable the `/Za' option when
        building dlg with FreeType as dlg strictly follows `C99' standards and
        the `/Za' option causes unexpected behaviours when compiling a `C99'
        file with `/Za' option enabled.
---
 builds/windows/ftdebug.c                       | 570 +++++++++++++++++--------
 builds/windows/vc2010/freetype.vcxproj         |  47 +-
 builds/windows/vc2010/freetype.vcxproj.filters |   3 +
 builds/windows/vc2010/script.bat               |  11 +
 4 files changed, 435 insertions(+), 196 deletions(-)

diff --git a/builds/windows/ftdebug.c b/builds/windows/ftdebug.c
index d589490..d698e56 100644
--- a/builds/windows/ftdebug.c
+++ b/builds/windows/ftdebug.c
@@ -16,34 +16,77 @@
  */
 
 
+/**************************************************************************
+ *
+ * This component contains various macros and functions used to ease the
+ * debugging of the FreeType engine.  Its main purpose is in assertion
+ * checking, tracing, and error detection.
+ *
+ * There are now three debugging modes:
+ *
+ * - trace mode
+ *
+ *   Error and trace messages are sent to the log file (which can be the
+ *   standard error output).
+ *
+ * - error mode
+ *
+ *   Only error messages are generated.
+ *
+ * - release mode:
+ *
+ *   No error message is sent or generated.  The code is free from any
+ *   debugging parts.
+ *
+ */
+
+
+#include <freetype/freetype.h>
+#include <freetype/internal/ftdebug.h>
+
+#ifdef FT_LOGGING
+
   /**************************************************************************
    *
-   * This component contains various macros and functions used to ease the
-   * debugging of the FreeType engine.  Its main purpose is in assertion
-   * checking, tracing, and error detection.
+   * Variable used when FT_LOGGING is enabled to control logging:
+   *
+   * 1. ft_default_trace_level: stores the value of trace levels which are
+   *    provided to FreeType using FT2_DEBUG environment variable.
    *
-   * There are now three debugging modes:
+   * 2. ft_fileptr: store the FILE*
    *
-   * - trace mode
+   * 3. ft_component: a string that holds the name of FT_COMPONENT
    *
-   *   Error and trace messages are sent to the log file (which can be the
-   *   standard error output).
+   * 4. ft_component_flag: a flag when true, prints the name of
+   * FT_COMPONENT along with actual log message.
    *
-   * - error mode
+   * 5. ft_timestamp_flag: a flag when true, prints time along with log
+   * actual log message.
    *
-   *   Only error messages are generated.
+   * 6. ft_have_newline_char: It is used to differentiate between a log
+   *    message with '\n' char and log message without '\n' char
    *
-   * - release mode:
+   * 7. ft_custom_trace_level: stores the value of custom trace level which
+   *    is provided by user at run-time.
    *
-   *   No error message is sent or generated.  The code is free from any
-   *   debugging parts.
+   * Static Variables are defined here to remove [ -Wunused-variable ]
+   * warning
    *
    */
+  static const char* ft_default_trace_level = NULL;
+  static FILE* ft_fileptr = NULL;
+  static const char* ft_component = NULL;
+  static bool ft_component_flag = false;
+  static bool ft_timestamp_flag = false;
+  static bool ft_have_newline_char = true;
+  static const char* ft_custom_trace_level = NULL;
 
+/* declared in ftdebug.h */
 
-#include <freetype/freetype.h>
-#include <freetype/internal/ftdebug.h>
+  dlg_handler ft_default_log_handler = NULL;
+  FT_Custom_Log_Handler custom_output_handler = NULL;
 
+#endif
 
 #ifdef FT_DEBUG_LEVEL_ERROR
 
@@ -54,51 +97,51 @@
 #include <windows.h>
 
 
-  /* documentation is in ftdebug.h */
+/* documentation is in ftdebug.h */
 
-  FT_BASE_DEF( void )
-  FT_Message( const char*  fmt,
-              ... )
-  {
-    static char  buf[8192];
-    va_list      ap;
+FT_BASE_DEF( void )
+FT_Message( const char*  fmt,
+            ... )
+{
+  static char  buf[8192];
+  va_list      ap;
 
 
-    va_start( ap, fmt );
-    vfprintf( stderr, fmt, ap );
-    /* send the string to the debugger as well */
-    vsprintf( buf, fmt, ap );
-    OutputDebugStringA( buf );
-    va_end( ap );
-  }
+  va_start( ap, fmt );
+  vfprintf( stderr, fmt, ap );
+  /* send the string to the debugger as well */
+  vsprintf( buf, fmt, ap );
+  OutputDebugStringA( buf );
+  va_end( ap );
+}
 
 
-  /* documentation is in ftdebug.h */
+/* documentation is in ftdebug.h */
 
-  FT_BASE_DEF( void )
-  FT_Panic( const char*  fmt,
-            ... )
-  {
-    static char  buf[8192];
-    va_list      ap;
+FT_BASE_DEF( void )
+FT_Panic( const char*  fmt,
+          ... )
+{
+  static char  buf[8192];
+  va_list      ap;
 
 
-    va_start( ap, fmt );
-    vsprintf( buf, fmt, ap );
-    OutputDebugStringA( buf );
-    va_end( ap );
+  va_start( ap, fmt );
+  vsprintf( buf, fmt, ap );
+  OutputDebugStringA( buf );
+  va_end( ap );
 
-    exit( EXIT_FAILURE );
-  }
+  exit( EXIT_FAILURE );
+}
 
 
-  /* documentation is in ftdebug.h */
+/* documentation is in ftdebug.h */
 
-  FT_BASE_DEF( int )
-  FT_Throw( FT_Error     error,
-            int          line,
-            const char*  file )
-  {
+FT_BASE_DEF( int )
+FT_Throw( FT_Error     error,
+          int          line,
+          const char*  file )
+{
 #if 0
     /* activating the code in this block makes FreeType very chatty */
     fprintf( stderr,
@@ -108,223 +151,392 @@
              error,
              FT_Error_String( error ) );
 #else
-    FT_UNUSED( error );
-    FT_UNUSED( line );
-    FT_UNUSED( file );
+  FT_UNUSED( error );
+  FT_UNUSED( line );
+  FT_UNUSED( file );
 #endif
 
-    return 0;
-  }
+  return 0;
+}
 
 #endif /* FT_DEBUG_LEVEL_ERROR */
 
 
 #ifdef FT_DEBUG_LEVEL_TRACE
 
-  /* array of trace levels, initialized to 0; */
-  /* this gets adjusted at run-time           */
-  static int  ft_trace_levels_enabled[trace_count];
+/* array of trace levels, initialized to 0; */
+/* this gets adjusted at run-time           */
+static int  ft_trace_levels_enabled[trace_count];
 
-  /* array of trace levels, always initialized to 0 */
-  static int  ft_trace_levels_disabled[trace_count];
+/* array of trace levels, always initialized to 0 */
+static int  ft_trace_levels_disabled[trace_count];
 
-  /* a pointer to either `ft_trace_levels_enabled' */
-  /* or `ft_trace_levels_disabled'                 */
-  int*  ft_trace_levels;
+/* a pointer to either `ft_trace_levels_enabled' */
+/* or `ft_trace_levels_disabled'                 */
+int*  ft_trace_levels;
 
-  /* define array of trace toggle names */
+/* define array of trace toggle names */
 #define FT_TRACE_DEF( x )  #x ,
 
-  static const char*  ft_trace_toggles[trace_count + 1] =
-  {
+static const char*  ft_trace_toggles[trace_count + 1] =
+ {
 #include <freetype/internal/fttrace.h>
     NULL
-  };
+ };
 
 #undef FT_TRACE_DEF
 
 
-  /* documentation is in ftdebug.h */
+/* documentation is in ftdebug.h */
 
-  FT_BASE_DEF( FT_Int )
-  FT_Trace_Get_Count( void )
-  {
-    return trace_count;
-  }
+FT_BASE_DEF( FT_Int )
+FT_Trace_Get_Count( void )
+{
+  return trace_count;
+}
 
 
-  /* documentation is in ftdebug.h */
+/* documentation is in ftdebug.h */
 
-  FT_BASE_DEF( const char * )
-  FT_Trace_Get_Name( FT_Int  idx )
-  {
-    int  max = FT_Trace_Get_Count();
+FT_BASE_DEF( const char * )
+FT_Trace_Get_Name( FT_Int  idx )
+{
+  int  max = FT_Trace_Get_Count();
 
 
-    if ( idx < max )
-      return ft_trace_toggles[idx];
-    else
-      return NULL;
-  }
+  if ( idx < max )
+    return ft_trace_toggles[idx];
+  else
+    return NULL;
+}
 
 
-  /* documentation is in ftdebug.h */
+/* documentation is in ftdebug.h */
 
-  FT_BASE_DEF( void )
-  FT_Trace_Disable( void )
-  {
-    ft_trace_levels = ft_trace_levels_disabled;
-  }
+FT_BASE_DEF( void )
+FT_Trace_Disable( void )
+{
+  ft_trace_levels = ft_trace_levels_disabled;
+}
 
 
-  /* documentation is in ftdebug.h */
+/* documentation is in ftdebug.h */
 
-  FT_BASE_DEF( void )
-  FT_Trace_Enable( void )
-  {
-    ft_trace_levels = ft_trace_levels_enabled;
-  }
+FT_BASE_DEF( void )
+FT_Trace_Enable( void )
+{
+  ft_trace_levels = ft_trace_levels_enabled;
+}
 
 
-  /**************************************************************************
-   *
-   * Initialize the tracing sub-system.  This is done by retrieving the
-   * value of the `FT2_DEBUG' environment variable.  It must be a list of
-   * toggles, separated by spaces, `;', or `,'.  Example:
-   *
-   *   export FT2_DEBUG="any:3 memory:7 stream:5"
-   *
-   * This requests that all levels be set to 3, except the trace level for
-   * the memory and stream components which are set to 7 and 5,
-   * respectively.
-   *
-   * See the file `include/freetype/internal/fttrace.h' for details of
-   * the available toggle names.
-   *
-   * The level must be between 0 and 7; 0 means quiet (except for serious
-   * runtime errors), and 7 means _very_ verbose.
-   */
-  FT_BASE_DEF( void )
-  ft_debug_init( void )
-  {
-    const char*  ft2_debug = getenv( "FT2_DEBUG" );
+/**************************************************************************
+ *
+ * Initialize the tracing sub-system.  This is done by retrieving the
+ * value of the `FT2_DEBUG' environment variable.  It must be a list of
+ * toggles, separated by spaces, `;', or `,'.  Example:
+ *
+ *   export FT2_DEBUG="any:3 memory:7 stream:5"
+ *
+ * This requests that all levels be set to 3, except the trace level for
+ * the memory and stream components which are set to 7 and 5,
+ * respectively.
+ *
+ * See the file `include/freetype/internal/fttrace.h' for details of
+ * the available toggle names.
+ *
+ * The level must be between 0 and 7; 0 means quiet (except for serious
+ * runtime errors), and 7 means _very_ verbose.
+ */
+FT_BASE_DEF( void )
+ft_debug_init( void )
+{
+  const char* ft2_debug = NULL;
 
 
-    if ( ft2_debug )
-    {
-      const char*  p = ft2_debug;
-      const char*  q;
+#ifdef FT_LOGGING
 
+if( ft_custom_trace_level != NULL )
+    ft2_debug = ft_custom_trace_level;
+else
+    ft2_debug = ft_default_trace_level;
 
-      for ( ; *p; p++ )
-      {
-        /* skip leading whitespace and separators */
-        if ( *p == ' ' || *p == '\t' || *p == ',' || *p == ';' || *p == '=' )
-          continue;
+#else
+    ft2_debug = ft_getenv( "FT2_DEBUG" );
+#endif /* FT_LOGGIGN */
 
-        /* read toggle name, followed by ':' */
-        q = p;
-        while ( *p && *p != ':' )
-          p++;
+  if ( ft2_debug )
+  {
+    const char* p = ft2_debug;
+    const char* q;
 
-        if ( !*p )
-          break;
+    for ( ; *p; p++ )
+    {
+      /* skip leading whitespace and separators */
+      if ( *p == ' ' || *p == '\t' || *p == ',' || *p == ';' || *p == '=' )
+        continue;
 
-        if ( *p == ':' && p > q )
+#ifdef FT_LOGGING
+        /* check extra arguments for logging */
+        if( *p == '-' )
         {
-          FT_Int  n, i, len = (FT_Int)( p - q );
-          FT_Int  level = -1, found = -1;
+          const char* r = ++p;
+          if( *r == 'v' )
+          {
+            ft_component_flag = true;
+            const char* s = ++r;
+            if( *s == 't' )
+            {
+              ft_timestamp_flag = true;
+              p++;
+            }
+            p++;
+          }
+          else if( *r == 't' )
+          {
+            ft_timestamp_flag = true;
+            const char* s = ++r;
+            if( *s == 'v' )
+            {
+              ft_component_flag = true;
+              p++;
+            }
+            p++;
+          }
+        }
+#endif /* FT_LOGGING */
 
+      /* read toggle name, followed by ':' */
+      q = p;
+      while ( *p && *p != ':' )
+        p++;
 
-          for ( n = 0; n < trace_count; n++ )
-          {
-            const char*  toggle = ft_trace_toggles[n];
+      if ( !*p )
+        break;
 
+      if ( *p == ':' && p > q )
+      {
+        FT_Int  n, i, len = (FT_Int)( p - q );
+        FT_Int  level = -1, found = -1;
 
-            for ( i = 0; i < len; i++ )
-            {
-              if ( toggle[i] != q[i] )
-                break;
-            }
 
-            if ( i == len && toggle[i] == 0 )
-            {
-              found = n;
+        for ( n = 0; n < trace_count; n++ )
+        {
+          const char*  toggle = ft_trace_toggles[n];
+
+
+          for ( i = 0; i < len; i++ )
+          {
+            if ( toggle[i] != q[i] )
               break;
-            }
           }
 
-          /* read level */
-          p++;
-          if ( *p )
+          if ( i == len && toggle[i] == 0 )
           {
-            level = *p - '0';
-            if ( level < 0 || level > 7 )
-              level = -1;
+            found = n;
+            break;
           }
+        }
 
-          if ( found >= 0 && level >= 0 )
+        /* read level */
+        p++;
+        if ( *p )
+        {
+          level = *p - '0';
+          if ( level < 0 || level > 7 )
+            level = -1;
+        }
+
+        if ( found >= 0 && level >= 0 )
+        {
+          if ( found == trace_any )
           {
-            if ( found == trace_any )
-            {
-              /* special case for `any' */
-              for ( n = 0; n < trace_count; n++ )
-                ft_trace_levels_enabled[n] = level;
-            }
-            else
-              ft_trace_levels_enabled[found] = level;
+            /* special case for `any' */
+            for ( n = 0; n < trace_count; n++ )
+              ft_trace_levels_enabled[n] = level;
           }
+          else
+            ft_trace_levels_enabled[found] = level;
         }
       }
     }
-
-    ft_trace_levels = ft_trace_levels_enabled;
   }
 
+  ft_trace_levels = ft_trace_levels_enabled;
+}
+
 
 #else  /* !FT_DEBUG_LEVEL_TRACE */
 
 
+FT_BASE_DEF( void )
+ft_debug_init( void )
+{
+  /* nothing */
+}
+
+
+FT_BASE_DEF( FT_Int )
+FT_Trace_Get_Count( void )
+{
+  return 0;
+}
+
+
+FT_BASE_DEF( const char * )
+FT_Trace_Get_Name( FT_Int  idx )
+{
+  FT_UNUSED( idx );
+
+  return NULL;
+}
+
+
+FT_BASE_DEF( void )
+FT_Trace_Disable( void )
+{
+  /* nothing */
+}
+
+
+/* documentation is in ftdebug.h */
+
+FT_BASE_DEF( void )
+FT_Trace_Enable( void )
+{
+  /* nothing */
+}
+
+#endif /* !FT_DEBUG_LEVEL_TRACE */
+
+#ifdef FT_LOGGING
+
+  /**************************************************************************
+   *
+   * If FT_LOGGING is enabled, FreeType needs to initialize all logging
+   * variables to write logs.
+   * Therefore it uses `ft_logging_init()` function to initialize a
+   * loggging variables and `ft_logging_deinit()` to un-initialize the
+   * logging variables.
+   *
+   */
+
   FT_BASE_DEF( void )
-  ft_debug_init( void )
+  ft_logging_init( void )
   {
-    /* nothing */
-  }
+    ft_default_log_handler = ft_log_handler;
+    ft_default_trace_level = ft_getenv( "FT2_DEBUG" );
+    if( ft_getenv( "FT_LOGGING_FILE" ) )
+      ft_fileptr = fopen( ft_getenv( "FT_LOGGING_FILE" ) , "w" );
+    else
+      ft_fileptr = stderr;
 
+    ft_debug_init();
+    /* We need to set the default FreeType specific dlg's output handler */
+    dlg_set_handler( ft_default_log_handler, NULL );
 
-  FT_BASE_DEF( FT_Int )
-  FT_Trace_Get_Count( void )
-  {
-    return 0;
   }
 
+  FT_BASE_DEF( void )
+  ft_logging_deinit( void )
+  {
+    fclose( ft_fileptr );
+  }
 
-  FT_BASE_DEF( const char * )
-  FT_Trace_Get_Name( FT_Int  idx )
+  /*************************************************************************
+   *
+   * An Output log handler specific to FreeType used by dlg library.
+   *
+   */
+  FT_BASE_DEF( void )
+  ft_log_handler( const struct dlg_origin* origin,
+                              const char* string, void* data )
   {
-    FT_UNUSED( idx );
+    ( void ) data;
+     const char* features ;
+     if( ft_timestamp_flag && ft_component_flag && ft_have_newline_char )
+      features = "[%h:%m  %t]    %c";
+     else if( ft_component_flag && ft_have_newline_char)
+      features = "[%t]    %c";
+     else if( ft_timestamp_flag && ft_have_newline_char )
+      features = "[%h:%m]    %c";
+     else
+      features = "%c";
+
+          dlg_generic_outputf_stream( ft_fileptr, features, origin, string,
+                                dlg_default_output_styles, true );
+
+
+     if( strchr( string, '\n' ) )
+       ft_have_newline_char = true;
+     else
+       ft_have_newline_char = false;
 
-    return NULL;
   }
 
+/* documentation is in ftdebug.h */
+  FT_BASE_DEF( void )
+  ft_add_tag( const char* tag )
+  {
+    ft_component = tag;
+    dlg_add_tag( tag, NULL );
+  }
 
+/* documentation is in ftdebug.h */
   FT_BASE_DEF( void )
-  FT_Trace_Disable( void )
+  ft_remove_tag( const char* tag )
   {
-    /* nothing */
+    dlg_remove_tag( tag, NULL );
   }
 
+/* documentation is in ftlogging.h */
 
-  /* documentation is in ftdebug.h */
+  FT_EXPORT_DEF( void )
+  FT_Trace_Set_Level( const char* level )
+  {
+    ft_component_flag = NULL;
+    ft_timestamp_flag = NULL;
+    ft_custom_trace_level = level;
+    ft_debug_init();
+  }
 
-  FT_BASE_DEF( void )
-  FT_Trace_Enable( void )
+/* documentation is in ftlogging.h */
+
+  FT_EXPORT_DEF( void )
+  FT_Trace_Set_Default_Level( void )
   {
-    /* nothing */
+    ft_component_flag = NULL;
+    ft_timestamp_flag = NULL;
+    ft_custom_trace_level = NULL ;
+    ft_debug_init();
   }
 
+/****************************************************************************
+ *
+ * Functions to handle custom log handler:
+ *
+ */
 
-#endif /* !FT_DEBUG_LEVEL_TRACE */
+  FT_EXPORT_DEF( void )
+  FT_Set_Log_Handler( FT_Custom_Log_Handler handler )
+  {
+    custom_output_handler = handler;
+  }
+
+  FT_EXPORT_DEF( void )
+  FT_Set_Default_Log_Handler()
+  {
+    custom_output_handler = NULL;
+  }
+
+  FT_BASE_DEF( void )
+  FT_Callback( const char* fmt, ... )
+  {
+    va_list ap;
+    va_start( ap, fmt );
+    custom_output_handler( ft_component , fmt, ap );
+    va_end( ap );
+  }
 
+#endif /* FT_LOGGING */
 
 /* END */
diff --git a/builds/windows/vc2010/freetype.vcxproj 
b/builds/windows/vc2010/freetype.vcxproj
index d61eeec..41080fe 100644
--- a/builds/windows/vc2010/freetype.vcxproj
+++ b/builds/windows/vc2010/freetype.vcxproj
@@ -89,11 +89,11 @@
   <ItemDefinitionGroup 
Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      
<AdditionalIncludeDirectories>$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      
<AdditionalIncludeDirectories>..\..\..\src\dlg\;$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;DLL_EXPORT;FT_LOGGING;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
       <WarningLevel>Level4</WarningLevel>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
@@ -111,15 +111,18 @@
       
<AdditionalLibraryDirectories>$(UserLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       
<AdditionalDependencies>$(UserDependencies);%(AdditionalDependencies)</AdditionalDependencies>
     </Lib>
+    <PreBuildEvent>
+      <Command>call $(SolutionDir)script.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      
<AdditionalIncludeDirectories>$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      
<AdditionalIncludeDirectories>..\..\..\src\dlg\;$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;DLL_EXPORT;FT_LOGGING;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
       <WarningLevel>Level4</WarningLevel>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
@@ -137,15 +140,18 @@
       
<AdditionalLibraryDirectories>$(UserLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       
<AdditionalDependencies>$(UserDependencies);%(AdditionalDependencies)</AdditionalDependencies>
     </Lib>
+    <PreBuildEvent>
+      <Command>call $(SolutionDir)script.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug 
Static|Win32'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      
<AdditionalIncludeDirectories>$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      
<AdditionalIncludeDirectories>..\..\..\src\dlg;$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;FT_LOGGING;DLG_STATIC;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
       <WarningLevel>Level4</WarningLevel>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
@@ -163,15 +169,18 @@
       
<AdditionalLibraryDirectories>$(UserLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       
<AdditionalDependencies>$(UserDependencies);%(AdditionalDependencies)</AdditionalDependencies>
     </Lib>
+    <PreBuildEvent>
+      <Command>call $(SolutionDir)script.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug 
Static|x64'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      
<AdditionalIncludeDirectories>$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      
<AdditionalIncludeDirectories>..\..\..\src\dlg;$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;FT_LOGGING;DLG_STATIC;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <DisableLanguageExtensions>true</DisableLanguageExtensions>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
       <WarningLevel>Level4</WarningLevel>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>Default</CompileAs>
@@ -189,12 +198,15 @@
       
<AdditionalLibraryDirectories>$(UserLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       
<AdditionalDependencies>$(UserDependencies);%(AdditionalDependencies)</AdditionalDependencies>
     </Lib>
+    <PreBuildEvent>
+      <Command>call $(SolutionDir)script.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup 
Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
       <Optimization>MaxSpeed</Optimization>
       <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-      
<AdditionalIncludeDirectories>$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      
<AdditionalIncludeDirectories>..\..\..\src\dlg;$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <FunctionLevelLinking>true</FunctionLevelLinking>
@@ -221,7 +233,7 @@
     <ClCompile>
       <Optimization>MaxSpeed</Optimization>
       <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-      
<AdditionalIncludeDirectories>$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      
<AdditionalIncludeDirectories>..\..\..\src\dlg;$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <FunctionLevelLinking>true</FunctionLevelLinking>
@@ -248,7 +260,7 @@
     <ClCompile>
       <Optimization>MaxSpeed</Optimization>
       <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-      
<AdditionalIncludeDirectories>$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      
<AdditionalIncludeDirectories>..\..\..\src\dlg;$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <FunctionLevelLinking>true</FunctionLevelLinking>
@@ -275,7 +287,7 @@
     <ClCompile>
       <Optimization>MaxSpeed</Optimization>
       <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-      
<AdditionalIncludeDirectories>$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      
<AdditionalIncludeDirectories>..\..\..\src\dlg;$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <FunctionLevelLinking>true</FunctionLevelLinking>
@@ -323,6 +335,7 @@
     <ClCompile Include="..\..\..\src\cache\ftcache.c" />
     <ClCompile Include="..\..\..\src\cff\cff.c" />
     <ClCompile Include="..\..\..\src\cid\type1cid.c" />
+    <ClCompile Include="..\..\..\src\dlg\dlgwrap.c" />
     <ClCompile Include="..\..\..\src\gzip\ftgzip.c" />
     <ClCompile Include="..\..\..\src\lzw\ftlzw.c" />
     <ClCompile Include="..\..\..\src\pcf\pcf.c" />
@@ -348,4 +361,4 @@
   <Target Name="AfterBuild">
     <Copy SourceFiles="$(TargetPath)" DestinationFolder="..\..\..\objs" />
   </Target>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/builds/windows/vc2010/freetype.vcxproj.filters 
b/builds/windows/vc2010/freetype.vcxproj.filters
index 345e1f1..0fa15fd 100644
--- a/builds/windows/vc2010/freetype.vcxproj.filters
+++ b/builds/windows/vc2010/freetype.vcxproj.filters
@@ -131,6 +131,9 @@
     <ClCompile Include="..\..\..\src\base\ftwinfnt.c">
       <Filter>Source Files\FT_MODULES</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\..\src\dlg\dlgwrap.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="..\..\..\src\base\ftver.rc">
diff --git a/builds/windows/vc2010/script.bat b/builds/windows/vc2010/script.bat
new file mode 100644
index 0000000..a6f973a
--- /dev/null
+++ b/builds/windows/vc2010/script.bat
@@ -0,0 +1,11 @@
+@echo OFF
+
+:: Move to Top Dir
+cd ..\..\..\
+
+:: Copy dlg's files from `submodules\dlg' to `src\dlg'
+IF NOT EXIST src\dlg\dlg (
+       mkdir src\dlg\dlg
+       COPY submodules\dlg\include\dlg\dlg.h src\dlg\dlg
+       COPY submodules\dlg\include\dlg\output.h src\dlg\dlg
+       COPY submodules\dlg\src\dlg\dlg.c src\dlg\ )
\ No newline at end of file



reply via email to

[Prev in Thread] Current Thread [Next in Thread]