* cross/ndk-build/ndk-build-shared-library.mk: ($(call objname,$(LOCAL_MODULE),$(basename $(1)))): * cross/ndk-build/ndk-build-static-library.mk: ($(call objname,$(LOCAL_MODULE),$(basename $(1)))): Revert broken typo fixes. * src/sfnt.c (TEST_STATIC): Define ARRAYELTS. (sfnt_table_names): New CVT and FPGM tables. (sfnt_decompose_compound_glyph, sfnt_decompose_glyph) (struct sfnt_large_integer, sfnt_multiply_divide_1) (sfnt_count_leading_zero_bits, sfnt_multiply_divide_2) (sfnt_multiply_divide, sfnt_mul_fixed, sfnt_div_fixed) (sfnt_ceil_fixed, sfnt_build_glyph_outline): Fix fixed point multiplication routines on systems without 64 bit long long type. (SFNT_ENABLE_HINTING, struct sfnt_test_dcontext, sfnt_test_move_to) (sfnt_test_line_to, sfnt_test_curve_to, sfnt_test_get_glyph) (sfnt_test_free_glyph, sfnt_test_span, sfnt_test_edge_ignore) (sfnt_read_cvt_table, sfnt_test_edge, sfnt_test_raster) (sfnt_read_fpgm_table, struct sfnt_unit_vector) (struct sfnt_interpreter_definition) (struct sfnt_interpreter_graphics_state, struct sfnt_interpreter) (sfnt_div_f26dot6, sfnt_mul_f26dot6, sfnt_floor_f26dot6) (sfnt_ceil_f26dot6, sfnt_round_f26dot6, sfnt_init_graphics_state) (sfnt_make_interpreter, enum sfnt_interpreter_run_context) (sfnt_interpret_trap, STACKSIZE, sfnt_set_srounding_state) (sfnt_skip_code, sfnt_interpret_unimplemented, sfnt_interpret_fdef) (sfnt_interpret_idef, sfnt_interpret_if, sfnt_interpret_else) (sfnt_round_none, sfnt_round_to_grid, sfnt_round_to_double_grid) (sfnt_round_down_to_grid, sfnt_round_up_to_grid) (sfnt_round_to_half_grid, sfnt_round_super, sfnt_validate_gs) (sfnt_interpret_run, sfnt_interpret_font_program) (test_interpreter_profile, test_cvt_values, test_interpreter_cvt) (test_interpreter_head, sfnt_make_test_interpreter) (struct sfnt_interpreter_test, sfnt_run_interpreter_test) (struct sfnt_generic_test_args, sfnt_generic_check) (sfnt_check_srp0, sfnt_check_szp0, sfnt_check_sloop) (struct sfnt_rounding_test_args, sfnt_check_rounding) (sfnt_check_smd, sfnt_check_scvtci, sfnt_check_sswci) (sfnt_check_ssw, sfnt_check_flipon, sfnt_check_flipoff) (npushb_test_args, npushw_test_args, pushb_test_args) (pushw_test_args, stack_overflow_test_args) (stack_underflow_test_args, rtg_test_args, rtg_symmetric_test_args) (rtg_1_test_args, rtg_1_symmetric_test_args, rthg_test_args) (rthg_1_test_args, rtdg_test_args, rtdg_1_test_args) (rtdg_2_test_args, rtdg_3_test_args, else_test_args) (jmpr_test_args, dup_test_args, pop_test_args, clear_test_args) (swap_test_args, depth_test_args, cindex_test_args) (mindex_test_args, raw_test_args, loopcall_test_args) (call_test_args, fdef_test_args, fdef_1_test_args, endf_test_args) (ws_test_args, rs_test_args, wcvtp_test_args, rcvt_test_args) (mppem_test_args, mps_test_args, debug_test_args, lt_test_args) (all_tests, main): Check in WIP hinting code. * src/sfnt.h (enum sfnt_table): Add `cvt ' and `fpgm' tables.
130 lines
4.1 KiB
Makefile
130 lines
4.1 KiB
Makefile
# Copyright 2023 Free Software Foundation, Inc.
|
|
|
|
# This file is part of GNU Emacs.
|
|
|
|
# GNU Emacs is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
# GNU Emacs is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
# ndk-build works by including a bunch of Makefiles which set
|
|
# variables, and then having those Makefiles include another makefile
|
|
# which actually builds targets.
|
|
|
|
eq = $(and $(findstring $(1),$(2)),$(findstring $(2),$(1)))
|
|
objname = $(1)-static-$(subst /,_,$(2).o)
|
|
|
|
define single-object-target
|
|
|
|
ifeq (x$(suffix $(1)),x.c)
|
|
|
|
$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1)
|
|
$(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_CFLAGS_$(LOCAL_MODULE)) $(call LOCAL_C_ADDITIONAL_FLAGS,$(1))
|
|
|
|
else
|
|
ifeq (x$(suffix $(1)),x.$(or $(LOCAL_CPP_EXTENSION),cpp))
|
|
|
|
$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1)
|
|
$(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_CFLAGS_$(LOCAL_MODULE)) $(NDK_CXXFLAGS_$(LOCAL_MODULE))
|
|
|
|
else
|
|
ifneq ($(or $(call eq,x$(suffix $(1)),x.s),$(call eq,x$(suffix $(1)),x.S)),)
|
|
|
|
$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1)
|
|
$(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_ASFLAGS_$(LOCAL_MODULE))
|
|
|
|
else
|
|
ifneq (x$(suffix $(1)),x.asm)
|
|
$$(error Unsupported suffix: $(suffix $(1)))
|
|
else
|
|
ifneq (x$(LOCAL_ASM_RULE_DEFINED),x)
|
|
# Call this function to define a rule that will generate $(1) from
|
|
# $(2), a ``.asm'' file. This is an Emacs extension.
|
|
|
|
$(call LOCAL_ASM_RULE,$(call objname,$(LOCAL_MODULE),$(basename $(1))),$(LOCAL_PATH)/$(strip $(1)))
|
|
|
|
else
|
|
ifeq ($(findstring x86,$(NDK_BUILD_ARCH)),)
|
|
$$(error Trying to build nasm file on non-Intel platform!)
|
|
else
|
|
|
|
$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1)
|
|
$(NDK_BUILD_NASM) -o $$@ -i $(LOCAL_PATH) -i $$(dir $$<) $(NDK_ASFLAGS_$(LOCAL_MODULE)) $$<
|
|
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ALL_OBJECT_FILES$(LOCAL_MODULE) += $(call objname,$(LOCAL_MODULE),$(basename $(1)))
|
|
endef
|
|
|
|
NDK_CFLAGS_$(LOCAL_MODULE) := $(addprefix -I,$(LOCAL_C_INCLUDES))
|
|
NDK_CFLAGS_$(LOCAL_MODULE) += -fPIC -iquote $(LOCAL_PATH) $(LOCAL_EXPORT_CFLAGS) $(LOCAL_CFLAGS) $(LOCAL_CFLAGS_$(NDK_BUILD_ARCH))
|
|
NDK_ASFLAGS_$(LOCAL_MODULE) := $(LOCAL_ASFLAGS) $(LOCAL_ASFLAGS_$(NDK_BUILD_ARCH))
|
|
NDK_LDFLAGS_$(LOCAL_MODULE) := $(LOCAL_LDLIBS) $(LOCAL_LDFLAGS)
|
|
NDK_CXXFLAGS_$(LOCAL_MODULE) := $(LOCAL_CPPFLAGS) $(LOCAL_RTTI_FLAG)
|
|
ALL_OBJECT_FILES$(LOCAL_MODULE) :=
|
|
|
|
# Now look for features in LOCAL_CPP_FEATURES and enable them.
|
|
|
|
ifneq ($(findstring exceptions,$(LOCAL_CPPFLAGS)),)
|
|
NDK_CXXFLAGS_$(LOCAL_MODULE) += -fexceptions
|
|
endif
|
|
|
|
ifneq ($(findstring rtti,$(LOCAL_CPPFLAGS)),)
|
|
NDK_CXXFLAGS_$(LOCAL_MODULE) += -frtti
|
|
endif
|
|
|
|
|
|
ifeq ($(NDK_BUILD_ARCH)$(NDK_ARM_MODE),armarm)
|
|
NDK_CFLAGS ::= -marm
|
|
else
|
|
ifeq ($(NDK_BUILD_ARCH),arm)
|
|
NDK_CFLAGS ::= -mthumb
|
|
endif
|
|
endif
|
|
|
|
LOCAL_MODULE_FILENAME := $(strip $(LOCAL_MODULE_FILENAME))
|
|
|
|
ifndef LOCAL_MODULE_FILENAME
|
|
ifeq ($(findstring lib,$(LOCAL_MODULE)),lib)
|
|
LOCAL_MODULE_FILENAME := $(LOCAL_MODULE)
|
|
else
|
|
LOCAL_MODULE_FILENAME := lib$(LOCAL_MODULE)
|
|
endif
|
|
endif
|
|
|
|
LOCAL_MODULE_FILENAME := $(LOCAL_MODULE_FILENAME).a
|
|
|
|
# Record this module's dependencies and exported includes and CFLAGS,
|
|
# and then add that of its dependencies.
|
|
|
|
include ndk-resolve.mk
|
|
|
|
# Then define rules to build all objects.
|
|
ALL_SOURCE_FILES := $(LOCAL_SRC_FILES) $(LOCAL_SRC_FILES_$(NDK_BUILD_ARCH))
|
|
|
|
# Now filter out code that is only built on systems with neon.
|
|
ifeq ($(NDK_BUILD_ABI),armeabi-v7a)
|
|
ALL_SOURCE_FILES := $(filter-out %.neon,$(ALL_SOURCE_FILES))
|
|
endif
|
|
|
|
# This defines all dependencies.
|
|
ALL_OBJECT_FILES$(LOCAL_MODULE) =
|
|
|
|
$(foreach source,$(ALL_SOURCE_FILES),$(eval $(call single-object-target,$(source))))
|
|
|
|
# Now define the rule to build the library.
|
|
$(LOCAL_MODULE_FILENAME): $(ALL_OBJECT_FILES$(LOCAL_MODULE))
|
|
$(NDK_BUILD_AR) r $@ $^
|