The header file `afwrtsys.h` has two distinct functions: to include the required writing system headers and also to generate code for each writing system. At each current use site only one or the other is used, with various macro trickery selecting one or the other. Split this header into `afws-decl.h` for the required writing system declarations and `afws-iter.h` for iterating over the writing systems to generate code. The motivation for this change is that the Visual C++ compiler treats the standard include guard idiom like `#pragma once` 'if no non-comment code or preprocessor directive comes before or after the standard form of the idiom'. It appears to check this after macro expansion, so if `WRITING_SYSTEM` expands to empty the bottom of `afwrtsys.h` is empty and looks like the standard include guard idiom which is treated like `#pragma once`, so subsequent inclusion of `afwrtsys.h` is elided. Fixes #1075. * src/autofit/afglobal.c (af_writing_system_classes), src/autofit/aftypes.h (AF_WritingSystem), src/autofit/rules.mk (AUTOF_DRV_H): Updated. * src/autofit/afwrtsys.h: Split into... * src/autofit/afws-decl.h, src/autofit/afws-iter.h: New files.
88 lines
2.4 KiB
Makefile
88 lines
2.4 KiB
Makefile
#
|
|
# FreeType 2 auto-fitter module configuration rules
|
|
#
|
|
|
|
|
|
# Copyright (C) 2003-2021 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.
|
|
|
|
|
|
# AUTOF driver directory
|
|
#
|
|
AUTOF_DIR := $(SRC_DIR)/autofit
|
|
|
|
|
|
# compilation flags for the driver
|
|
#
|
|
AUTOF_COMPILE := $(CC) $(ANSIFLAGS) \
|
|
$I$(subst /,$(COMPILER_SEP),$(AUTOF_DIR)) \
|
|
$(INCLUDE_FLAGS) \
|
|
$(FT_CFLAGS)
|
|
|
|
|
|
# AUTOF driver sources (i.e., C files)
|
|
#
|
|
AUTOF_DRV_SRC := $(AUTOF_DIR)/afblue.c \
|
|
$(AUTOF_DIR)/afcjk.c \
|
|
$(AUTOF_DIR)/afdummy.c \
|
|
$(AUTOF_DIR)/afglobal.c \
|
|
$(AUTOF_DIR)/afhints.c \
|
|
$(AUTOF_DIR)/afindic.c \
|
|
$(AUTOF_DIR)/aflatin.c \
|
|
$(AUTOF_DIR)/afloader.c \
|
|
$(AUTOF_DIR)/afmodule.c \
|
|
$(AUTOF_DIR)/afranges.c \
|
|
$(AUTOF_DIR)/afshaper.c \
|
|
|
|
# AUTOF driver headers
|
|
#
|
|
AUTOF_DRV_H := $(AUTOF_DRV_SRC:%c=%h) \
|
|
$(AUTOF_DIR)/afcover.h \
|
|
$(AUTOF_DIR)/aferrors.h \
|
|
$(AUTOF_DIR)/afscript.h \
|
|
$(AUTOF_DIR)/afstyles.h \
|
|
$(AUTOF_DIR)/aftypes.h \
|
|
$(AUTOF_DIR)/afws-decl.h \
|
|
$(AUTOF_DIR)/afws-iter.h
|
|
|
|
|
|
# AUTOF driver object(s)
|
|
#
|
|
# AUTOF_DRV_OBJ_M is used during `multi' builds.
|
|
# AUTOF_DRV_OBJ_S is used during `single' builds.
|
|
#
|
|
AUTOF_DRV_OBJ_M := $(AUTOF_DRV_SRC:$(AUTOF_DIR)/%.c=$(OBJ_DIR)/%.$O)
|
|
AUTOF_DRV_OBJ_S := $(OBJ_DIR)/autofit.$O
|
|
|
|
# AUTOF driver source file for single build
|
|
#
|
|
AUTOF_DRV_SRC_S := $(AUTOF_DIR)/autofit.c
|
|
|
|
|
|
# AUTOF driver - single object
|
|
#
|
|
$(AUTOF_DRV_OBJ_S): $(AUTOF_DRV_SRC_S) $(AUTOF_DRV_SRC) \
|
|
$(FREETYPE_H) $(AUTOF_DRV_H)
|
|
$(AUTOF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(AUTOF_DRV_SRC_S))
|
|
|
|
|
|
# AUTOF driver - multiple objects
|
|
#
|
|
$(OBJ_DIR)/%.$O: $(AUTOF_DIR)/%.c $(FREETYPE_H) $(AUTOF_DRV_H)
|
|
$(AUTOF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
|
|
|
|
|
|
# update main driver object lists
|
|
#
|
|
DRV_OBJS_S += $(AUTOF_DRV_OBJ_S)
|
|
DRV_OBJS_M += $(AUTOF_DRV_OBJ_M)
|
|
|
|
|
|
# EOF
|