1compiler := gcc 2extra_flags := 3use_neon := 0 4release := release 5EXE_EXT := 6 7ifeq ($(platform),) 8platform = unix 9ifeq ($(shell uname -a),) 10 platform = win 11else ifneq ($(findstring MINGW,$(shell uname -a)),) 12 platform = win 13else ifneq ($(findstring Darwin,$(shell uname -a)),) 14 platform = osx 15 arch = intel 16ifeq ($(shell uname -p),powerpc) 17 arch = ppc 18endif 19else ifneq ($(findstring win,$(shell uname -a)),) 20 platform = win 21endif 22endif 23 24ifeq ($(compiler),gcc) 25extra_rules_gcc := $(shell $(compiler) -dumpmachine) 26endif 27 28ifneq (,$(findstring armv7,$(extra_rules_gcc))) 29extra_flags += -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon 30use_neon := 1 31endif 32 33ifneq (,$(findstring hardfloat,$(extra_rules_gcc))) 34extra_flags += -mfloat-abi=hard 35endif 36 37ifeq (release,$(build)) 38extra_flags += -O2 39endif 40 41ifeq (debug,$(build)) 42extra_flags += -O0 -g 43endif 44 45ldflags := 46 47EXE_EXT := 48ifeq ($(platform), unix) 49else ifeq ($(platform), osx) 50compiler := $(CC) 51else 52EXE_EXT = .exe 53endif 54 55PWD_DIR := . 56LIBRETRO_COMM_DIR := ../.. 57CORE_DIR := $(LIBRETRO_COMM_DIR)/utils 58 59CC := $(compiler) 60CXX := $(subst CC,++,$(compiler)) 61flags := -I$(LIBRETRO_COMM_DIR)/include 62asflags := $(extra_flags) 63LDFLAGS := 64flags += -std=c99 -DMD5_BUILD_UTILITY -DSHA1_BUILD_UTILITY 65 66ifeq (1,$(use_neon)) 67ASMFLAGS := -INEON/asm 68asflags += -mfpu=neon 69endif 70 71DJB2_OBJS := $(CORE_DIR)/djb2.o 72 73MD5_OBJS := $(CORE_DIR)/md5.o \ 74 $(PWD_DIR)/md5_test.o 75 76SHA1_OBJS := $(CORE_DIR)/sha1.o \ 77 $(PWD_DIR)/sha1_main.o 78 79CRC32_OBJS := $(PWD_DIR)/crc32.o \ 80 $(LIBRETRO_COMM_DIR)/compat/fopen_utf8.o \ 81 $(LIBRETRO_COMM_DIR)/compat/compat_strl.o \ 82 $(LIBRETRO_COMM_DIR)/encodings/encoding_utf.o \ 83 $(LIBRETRO_COMM_DIR)/streams/file_stream.o \ 84 $(LIBRETRO_COMM_DIR)/vfs/vfs_implementation.o \ 85 $(LIBRETRO_COMM_DIR)/encodings/encoding_crc32.o 86 87UTILS := djb2$(EXE_EXT) md5$(EXE_EXT) sha1$(EXE_EXT) crc32$(EXE_EXT) 88 89all: $(UTILS) 90 91djb2$(EXE_EXT): $(DJB2_OBJS) 92 93md5$(EXE_EXT): $(MD5_OBJS) 94 95sha1$(EXE_EXT): $(SHA1_OBJS) 96 97crc32$(EXE_EXT): $(CRC32_OBJS) 98 99%.o: %.S 100 $(CC) -c -o $@ $(asflags) $(LDFLAGS) $(ASMFLAGS) $< 101 102%.o: %.c 103 $(CC) -c -o $@ $(flags) $< 104 105$(UTILS): 106 $(CC) -o $@ $(ldflags) $(flags) $^ 107 108clean: 109 rm -f $(CORE_DIR)/*.o 110 rm -f $(UTILS) 111 112strip: 113 strip -s $(UTILS) 114