# Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. LOCAL_PATH:=$(call my-dir)/.. MATHFU_DIR?=$(LOCAL_PATH) include $(LOCAL_PATH)/android_config.mk # Conditionally include libstlport (so include path is added to CFLAGS) if # it's not being built using the NDK build process. define add-stlport-includes $(eval \ ifeq ($(NDK_PROJECT_PATH),) include external/stlport/libstlport.mk endif) endef # mathfu-cflags: disable_simd force_padding debug # Expands to the compiler flags for applications or libraries that use MathFu. # Where disable_simd specifies whether SIMD code should be disabled, # force_padding specifies whether padding should be added to data structures # in SIMD mode (-1 = default, 0 = padding off, 1 = padding on). # # NOTE: armeabi-v7a-hard has been deprecated. For more information see, # https://android.googlesource.com/platform/ndk/+/master/docs/HardFloatAbi.md define mathfu-cflags $(if $(subst 0,,$(strip $(1))),-DMATHFU_COMPILE_WITHOUT_SIMD_SUPPORT,\ $(if $(subst -1,,$(strip $(2))),\ -DMATHFU_COMPILE_FORCE_PADDING=$(strip $(2)),)) \ $(if $(APP_DEBUG),-DDEBUG=1,-DDEBUG=0) \ $(if $(filter armeabi-v7a-hard,$(TARGET_ARCH_ABI)),\ -mfpu=neon -mhard-float -mfloat-abi=hard) \ $(if $(filter x86,$(TARGET_ARCH_ABI)),-msse) \ $(if $(filter x86_64,$(TARGET_ARCH_ABI)),-msse4.1) endef # Configure common local variables to build mathfu adding $(1) to the end of # the build target's name. define mathfu-module $(eval \ LOCAL_MODULE:=libmathfu$(1) LOCAL_MODULE_TAGS:=optional LOCAL_COPY_HEADERS_TO:=mathfu$(1)) endef # Configure local variables to build mathfu adding $(1) to the end of the # build target's name, disabling SIMD depending upon the value of $(2) (see # mathfu-cflags $(1)) and configuring padding (see mathfu-cflags $(2)) # with $(3). define mathfu-build $(eval \ $$(call mathfu-module,$(1)) LOCAL_SRC_FILES:= LOCAL_COPY_HEADERS:=\ $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/include/mathfu/*.h)) LOCAL_CFLAGS:=$$(call mathfu-cflags,$(2),$(3)) LOCAL_EXPORT_CFLAGS:=$$(LOCAL_CFLAGS) LOCAL_EXPORT_C_INCLUDES:=\ $(LOCAL_PATH)/include \ $(DEPENDENCIES_VECTORIAL_DIR)/include LOCAL_EXPORT_LDLIBS:=-lm LOCAL_ARM_MODE:=arm LOCAL_ARM_NEON:=$(if $(filter \ armeabi-v7a armeabi-v7a-hard,$(TARGET_ARCH_ABI)),true,) $$(call add-stlport-includes)) endef # --- libmathfu --- # Target which builds an empty static library so that it's possible for # projects using this module to add the appropriate flags and includes to # their compile command line. This builds mathfu using the default build # configuration specified in ${mathfu}/android_config.mk include $(CLEAR_VARS) $(call mathfu-build,,$(MATHFU_DISABLE_SIMD),$(MATHFU_FORCE_PADDING)) include $(BUILD_STATIC_LIBRARY) # --- libmathfu_no_simd --- # Builds an empty static library (similar to libmathfu). # This build configuration has SIMD disabled. include $(CLEAR_VARS) $(call mathfu-build,_no_simd,1,-1) include $(BUILD_STATIC_LIBRARY) # --- libmathfu_simd --- # Builds an empty static library (similar to libmathfu). # This build configuration has SIMD enabled and padding enabled. include $(CLEAR_VARS) $(call mathfu-build,_simd_padding,0,1) include $(BUILD_STATIC_LIBRARY) # --- libmathfu_simd_no_padding --- # Builds an empty static library (similar to libmathfu). # This build configuration has SIMD enabled and padding disabled. include $(CLEAR_VARS) $(call mathfu-build,_simd_no_padding,0,0) include $(BUILD_STATIC_LIBRARY) mathfu_cflags:=