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
55LIBRETRO_COMM_DIR := ../..
56CORE_DIR := $(LIBRETRO_COMM_DIR)/utils
57
58CC      := $(compiler)
59CXX     := $(subst CC,++,$(compiler))
60flags   := -I$(LIBRETRO_COMM_DIR)/include
61asflags := $(extra_flags)
62LDFLAGS :=
63flags   += -std=c99 -DMD5_BUILD_UTILITY -DSHA1_BUILD_UTILITY
64
65ifeq (1,$(use_neon))
66ASMFLAGS := -INEON/asm
67asflags += -mfpu=neon
68endif
69
70OBJS += $(CORE_DIR)/djb2.o \
71		  $(CORE_DIR)/md5.o \
72		  $(CORE_DIR)/sha1.o \
73		  $(CORE_DIR)/sha1_main.o \
74		  $(CORE_DIR)/crc32.o
75
76UTILS := djb2$(EXE_EXT) md5$(EXE_EXT) sha1$(EXE_EXT) crc32$(EXE_EXT)
77
78all: $(UTILS)
79
80djb2$(EXE_EXT): $(CORE_DIR)/djb2.o
81
82md5$(EXE_EXT): $(CORE_DIR)/md5.o
83
84sha1$(EXE_EXT): $(CORE_DIR)/sha1.o $(CORE_DIR)/sha1_main.o
85
86crc32$(EXE_EXT): $(CORE_DIR)/crc32.o $(CORE_DIR)/../encodings/encoding_crc32.o
87
88%.o: %.S
89	$(CC) -c -o $@ $(asflags) $(LDFLAGS)  $(ASMFLAGS)  $<
90
91%.o: %.c
92	$(CC) -c -o $@ $(flags) $<
93
94$(UTILS):
95	$(CC) -o $@ $(ldflags) $(flags) $^
96
97clean:
98	rm -f $(CORE_DIR)/*.o
99	rm -f $(UTILS)
100
101strip:
102	strip -s $(UTILS)
103