summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPriyeshkkumar <priyeshkkumar@gmail.com>2020-08-26 12:27:52 +0530
committerPriyeshkkumar <priyeshkkumar@gmail.com>2020-08-26 12:27:52 +0530
commitc2da552c7f39cb2add761203a97213322f0dbbf6 (patch)
tree98332048da14990bc2a1e3d44f456a64f392cbd1
parent62e5220edb7274297c5b3a4bf44fe4e67283346c (diff)
downloadfreetype2-c2da552c7f39cb2add761203a97213322f0dbbf6.tar.gz
[builds] Make necessary changes to compile dlg along with FreeType.
* autogen.sh (copy_submodule_files): New script to copy all the necessary dlg's source and include files from `submodules/dlg' to `src/dlg' * src/dlg/dlgwrap.c: A wrapper along `src/dlg.c', it enables the dlg's build only when `FT_LOGGING' maro is defined. * src/dlg/rules.mk: Makefile to compile dlg library along with rest of FreeType's modules. * builds/freetype.mk (DLG_DIR): New variable to include dlg's header files. (INCLUDES): Added `DLG_DIR'. (FT_CFLAGS): Added `-std=c99' flag. Include `src/dlg/rules.mk' file to build dlg. (OBJ_S, OBJ_M): Added `DLG_OBJS_M' and `DLG_OBJS_S'. * builds/toplevel.mk: For builds directly from the git repository we need to copy files from `submodule/dlg' to `src/dlg * {include/freetype/config, devel}/ftoption.h (FT_LOGGING): A new macro to enable or disable the logging facility in FreeType.
-rwxr-xr-xautogen.sh25
-rw-r--r--builds/freetype.mk9
-rw-r--r--builds/toplevel.mk17
-rw-r--r--devel/ftoption.h15
-rw-r--r--include/freetype/config/ftoption.h15
-rw-r--r--src/dlg/dlgwrap.c9
-rw-r--r--src/dlg/rules.mk67
7 files changed, 154 insertions, 3 deletions
diff --git a/autogen.sh b/autogen.sh
index 79c4e4e16..153593b6e 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -162,4 +162,29 @@ cd ../..
chmod +x ./configure
+
+# Copy all necessary dlg files.
+copy_submodule_files()
+{
+ echo "Copying files from \`submodules/dlg' to \`src/dlg'"
+ mkdir src/dlg/dlg
+ cp $DLG_INC_DIR/dlg.h src/dlg/dlg
+ cp $DLG_INC_DIR/output.h src/dlg/dlg
+ cp $DLG_SRC_DIR/* src/dlg
+}
+
+
+DLG_INC_DIR=submodules/dlg/include/dlg
+DLG_SRC_DIR=submodules/dlg/src/dlg
+
+if ! test -d "$DLG_INC_DIR"; then
+ echo "Submodule check out in \`submodules/dlg':"
+ git submodule init
+ git submodule update
+
+ copy_submodule_files
+else
+ copy_submodule_files
+fi
+
# EOF
diff --git a/builds/freetype.mk b/builds/freetype.mk
index 1d7eeb601..5eb79f392 100644
--- a/builds/freetype.mk
+++ b/builds/freetype.mk
@@ -101,6 +101,7 @@ PUBLIC_DIR := $(TOP_DIR)/include/freetype
INTERNAL_DIR := $(PUBLIC_DIR)/internal
SERVICES_DIR := $(INTERNAL_DIR)/services
CONFIG_DIR := $(PUBLIC_DIR)/config
+DLG_DIR := $(TOP_DIR)/src/dlg
# The documentation directory.
#
@@ -122,6 +123,7 @@ PROJECT_LIBRARY := $(LIB_DIR)/$(LIBRARY).$A
INCLUDES := $(subst /,$(COMPILER_SEP),$(OBJ_DIR) \
$(DEVEL_DIR) \
$(BUILD_DIR) \
+ $(DLG_DIR) \
$(TOP_DIR)/include)
INCLUDE_FLAGS := $(INCLUDES:%=$I%)
@@ -152,7 +154,7 @@ endif
#
FT_CFLAGS = $(CPPFLAGS) \
$(CFLAGS) \
- $DFT2_BUILD_LIBRARY
+ $DFT2_BUILD_LIBRARY -std=c99
FT_COMPILE := $(CC) $(ANSIFLAGS) $(INCLUDE_FLAGS) $(FT_CFLAGS)
@@ -220,6 +222,7 @@ $(FTDEBUG_OBJ): $(FTDEBUG_SRC) $(FREETYPE_H)
#
include $(SRC_DIR)/base/rules.mk
include $(patsubst %,$(SRC_DIR)/%/rules.mk,$(MODULES))
+include $(SRC_DIR)/dlg/rules.mk
# ftinit component
@@ -260,8 +263,8 @@ endif
# All FreeType library objects.
#
-OBJ_M := $(BASE_OBJ_M) $(BASE_EXT_OBJ) $(DRV_OBJS_M)
-OBJ_S := $(BASE_OBJ_S) $(BASE_EXT_OBJ) $(DRV_OBJS_S)
+OBJ_M := $(BASE_OBJ_M) $(BASE_EXT_OBJ) $(DRV_OBJS_M) $(DLG_OBJS_M)
+OBJ_S := $(BASE_OBJ_S) $(BASE_EXT_OBJ) $(DRV_OBJS_S) $(DLG_OBJS_S)
# The target `multi' on the Make command line indicates that we want to
diff --git a/builds/toplevel.mk b/builds/toplevel.mk
index 5de61c113..b1cfb1334 100644
--- a/builds/toplevel.mk
+++ b/builds/toplevel.mk
@@ -103,6 +103,23 @@ ifneq ($(findstring setup,$(MAKECMDGOALS)),)
check_platform := 1
endif
+# For builds directly from the git repository we need to copy files
+# from `submodule/dlg' to `src/dlg'
+#
+ifeq ($(wildcard src/dlg/dlg.*),)
+ ifeq ($(wildcard submodules/dlg/dlg.*),)
+ $(info Submodule check out in `submodules/dlg' )
+ $(shell git submodule init)
+ $(shell git submodule update)
+ endif
+
+ $(info Copying files from `submodules/dlg' to `src/dlg')
+ $(shell mkdir src/dlg/dlg)
+ $(shell cp submodules/dlg/include/dlg/dlg.h src/dlg/dlg)
+ $(shell cp submodules/dlg/include/dlg/output.h src/dlg/dlg)
+ $(shell cp submodules/dlg/src/dlg/dlg.c src/dlg/)
+endif
+
# Include the automatic host platform detection rules when we need to
# check the platform.
#
diff --git a/devel/ftoption.h b/devel/ftoption.h
index 307d1a382..13da427dd 100644
--- a/devel/ftoption.h
+++ b/devel/ftoption.h
@@ -431,6 +431,21 @@ FT_BEGIN_HEADER
#define FT_DEBUG_LEVEL_TRACE
+ /*************************************************************************
+ *
+ * Logging
+ *
+ * Compiling FreeType in debug or trace mode will make FreeType to write
+ * error and trace log messages to `stderr`.
+ * Enabling this macro will automatically force the `FT_DEBUG_LEVEL_ERROR`
+ * and `FT_DEBUG_LEVEL_TRACE` macros and will allow FreeType to write
+ * error and trace log messages to a file instead of `stderr`.
+ * For writing logs to file FreeType uses an external library `dlg`
+ * Source Code - `src/dlg`
+ *
+ */
+#define FT_LOGGING
+
/**************************************************************************
*
* Autofitter debugging
diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h
index 097f19b8a..a0498a1a2 100644
--- a/include/freetype/config/ftoption.h
+++ b/include/freetype/config/ftoption.h
@@ -431,6 +431,21 @@ FT_BEGIN_HEADER
/* #define FT_DEBUG_LEVEL_TRACE */
+ /*************************************************************************
+ *
+ * Logging
+ *
+ * Compiling FreeType in debug or trace mode will make FreeType to write
+ * error and trace log messages to `stderr`.
+ * Enabling this macro will automatically force the `FT_DEBUG_LEVEL_ERROR`
+ * and `FT_DEBUG_LEVEL_TRACE` macros and will allow FreeType to write
+ * error and trace log messages to a file instead of `stderr`.
+ * For writing logs to file FreeType uses an external library `dlg`
+ * Source Code - `src/dlg`
+ *
+ */
+/* #define FT_LOGGING */
+
/**************************************************************************
*
* Autofitter debugging
diff --git a/src/dlg/dlgwrap.c b/src/dlg/dlgwrap.c
new file mode 100644
index 000000000..08eff5239
--- /dev/null
+++ b/src/dlg/dlgwrap.c
@@ -0,0 +1,9 @@
+#include <freetype/freetype.h>
+
+
+#ifdef FT_LOGGING
+ #include "dlg.c"
+#else
+ /* ANSI C doesn't like empty source files */
+ typedef int _dlg_dummy;
+#endif
diff --git a/src/dlg/rules.mk b/src/dlg/rules.mk
new file mode 100644
index 000000000..401db93c8
--- /dev/null
+++ b/src/dlg/rules.mk
@@ -0,0 +1,67 @@
+#
+# FreeType 2 dlg logging library configuration rules
+#
+
+
+# Copyright (C) 1996-2020 by
+# David Turner, Robert Wilhelm, and Werner Lemberg.
+#
+# This file is part of the FreeType project, and may only be used, modified,
+# and distributed under the terms of the FreeType project license,
+# LICENSE.TXT. By continuing to use, modify, or distribute this file you
+# indicate that you have read the license and understand and accept it
+# fully.
+
+
+# dlg logging library directory
+#
+DLG_DIR := $(SRC_DIR)/dlg
+
+DLG_COMPILE := $(CC) $(ANSIFLAGS) \
+ $I$(subst /,$(COMPILER_SEP),$(DLG_DIR)) \
+ $(INCLUDE_FLAGS) \
+ $(FT_CFLAGS)
+
+
+# dlg logging library sources (i.e., C files)
+#
+DLG_SRC := $(DLG_DIR)/dlgwrap.c
+
+# dlg logging library headers
+#
+DLG_H := $(DLG_DIR)/dlg/dlg.h \
+ $(DLG_DIR)/dlg/output.h
+
+
+# dlg logging library object(s)
+#
+# DLG_OBJ_M is used during `multi' builds
+# DLG_OBJ_S is used during `single' builds
+#
+DLG_OBJ_M := $(DLG_SRC:$(DLG_DIR)/%.c=$(OBJ_DIR)/%.$O)
+DLG_OBJ_S := $(OBJ_DIR)/dlg.$O
+
+# dlg logging library source file for single build
+#
+DLG_SRC_S := $(DLG_DIR)/dlgwrap.c
+
+
+# dlg logging library - single object
+#
+$(DLG_OBJ_S): $(DLG_SRC_S) $(DLG_SRC) $(FREETYPE_H) $(DLG_H)
+ $(DLG_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(DLG_SRC_S))
+
+
+# dlg logging library - multiple objects
+#
+$(OBJ_DIR)/%.$O: $(DLG_DIR)/%.c $(FREETYPE_H) $(DLG_H)
+ $(DLG_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
+
+
+# update main object lists
+#
+DLG_OBJS_S += $(DLG_OBJ_S)
+DLG_OBJS_M += $(DLG_OBJ_M)
+
+
+# EOF