1 LOCAL_PATH:= $(call my-dir) 2 3 # We need to build this for both the device (as a shared library) 4 # and the host (as a static library for tools to use). 5 6 common_SRC_FILES := \ 7 png.c \ 8 pngerror.c \ 9 pngget.c \ 10 pngmem.c \ 11 pngpread.c \ 12 pngread.c \ 13 pngrio.c \ 14 pngrtran.c \ 15 pngrutil.c \ 16 pngset.c \ 17 pngtrans.c \ 18 pngwio.c \ 19 pngwrite.c \ 20 pngwtran.c \ 21 pngwutil.c \ 22 23 ifeq ($(ARCH_ARM_HAVE_NEON),true) 24 my_cflags_arm := -DPNG_ARM_NEON_OPT=2 25 endif 26 27 my_cflags_arm64 := -DPNG_ARM_NEON_OPT=2 28 29 # BUG: http://llvm.org/PR19472 - SLP vectorization (on ARM at least) crashes 30 # when we can't lower a vectorized bswap. 31 my_cflags_arm += -fno-slp-vectorize 32 33 my_src_files_arm := \ 34 arm/arm_init.c \ 35 arm/filter_neon.S \ 36 arm/filter_neon_intrinsics.c 37 38 39 common_CFLAGS := -std=gnu89 #-fvisibility=hidden ## -fomit-frame-pointer 40 41 ifeq ($(HOST_OS),windows) 42 ifeq ($(USE_MINGW),) 43 # Case where we're building windows but not under linux (so it must be cygwin) 44 # In this case, gcc cygwin doesn't recognize -fvisibility=hidden 45 $(info libpng: Ignoring gcc flag $(common_CFLAGS) on Cygwin) 46 common_CFLAGS := 47 endif 48 endif 49 50 ifeq ($(HOST_OS),darwin) 51 common_CFLAGS += -no-integrated-as 52 common_ASFLAGS += -no-integrated-as 53 endif 54 55 common_C_INCLUDES += 56 57 common_COPY_HEADERS_TO := libpng 58 common_COPY_HEADERS := png.h pngconf.h pngusr.h 59 60 # For the host 61 # ===================================================== 62 63 include $(CLEAR_VARS) 64 65 LOCAL_SRC_FILES := $(common_SRC_FILES) 66 LOCAL_CFLAGS += $(common_CFLAGS) 67 LOCAL_ASFLAGS += $(common_ASFLAGS) 68 LOCAL_C_INCLUDES += $(common_C_INCLUDES) external/zlib 69 70 LOCAL_MODULE:= libpng 71 72 LOCAL_COPY_HEADERS_TO := $(common_COPY_HEADERS_TO) 73 LOCAL_COPY_HEADERS := $(common_COPY_HEADERS) 74 75 include $(BUILD_HOST_STATIC_LIBRARY) 76 77 78 # For the device (static) 79 # ===================================================== 80 81 include $(CLEAR_VARS) 82 LOCAL_CLANG := true 83 LOCAL_SRC_FILES := $(common_SRC_FILES) 84 LOCAL_CFLAGS += $(common_CFLAGS) -ftrapv 85 LOCAL_CFLAGS_arm := $(my_cflags_arm) 86 LOCAL_ASFLAGS += $(common_ASFLAGS) 87 LOCAL_SRC_FILES_arm := $(my_src_files_arm) 88 LOCAL_CFLAGS_arm64 := $(my_cflags_arm64) 89 LOCAL_SRC_FILES_arm64 := $(my_src_files_arm) 90 91 LOCAL_C_INCLUDES += $(common_C_INCLUDES) \ 92 external/zlib 93 LOCAL_SHARED_LIBRARIES := \ 94 libz 95 96 LOCAL_MODULE:= libpng 97 98 include $(BUILD_STATIC_LIBRARY) 99 100 # For the device (shared) 101 # ===================================================== 102 103 include $(CLEAR_VARS) 104 LOCAL_CLANG := true 105 LOCAL_SRC_FILES := $(common_SRC_FILES) 106 LOCAL_CFLAGS += $(common_CFLAGS) -ftrapv 107 LOCAL_CFLAGS_arm := $(my_cflags_arm) 108 LOCAL_ASFLAGS += $(common_ASFLAGS) 109 LOCAL_SRC_FILES_arm := $(my_src_files_arm) 110 LOCAL_CFLAGS_arm64 := $(my_cflags_arm64) 111 LOCAL_SRC_FILES_arm64 := $(my_src_files_arm) 112 113 LOCAL_C_INCLUDES += $(common_C_INCLUDES) \ 114 external/zlib 115 LOCAL_SHARED_LIBRARIES := \ 116 libz 117 118 LOCAL_MODULE:= libpng 119 120 LOCAL_COPY_HEADERS_TO := $(common_COPY_HEADERS_TO) 121 LOCAL_COPY_HEADERS := $(common_COPY_HEADERS) 122 123 include $(BUILD_SHARED_LIBRARY) 124 125 # For testing 126 # ===================================================== 127 128 include $(CLEAR_VARS) 129 LOCAL_CLANG := true 130 LOCAL_C_INCLUDES:= $(common_C_INCLUDES) external/zlib 131 LOCAL_SRC_FILES:= pngtest.c 132 LOCAL_MODULE := pngtest 133 LOCAL_SHARED_LIBRARIES:= libpng libz 134 LOCAL_MODULE_TAGS := debug 135 include $(BUILD_EXECUTABLE) 136