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