1compiler := gcc 2extra_flags := 3use_neon := 0 4release := release 5EXE_EXT := 6TARGET := database_task 7HAVE_ZLIB := 1 8HAVE_7ZIP := 1 9HAVE_THREADS := 1 10 11ifeq ($(platform),) 12platform = unix 13ifeq ($(shell uname -a),) 14 platform = win 15else ifneq ($(findstring MINGW,$(shell uname -a)),) 16 platform = win 17else ifneq ($(findstring Darwin,$(shell uname -a)),) 18 platform = osx 19 arch = intel 20ifeq ($(shell uname -p),powerpc) 21 arch = ppc 22endif 23else ifneq ($(findstring win,$(shell uname -a)),) 24 platform = win 25endif 26endif 27 28ifeq ($(compiler),gcc) 29extra_rules_gcc := $(shell $(compiler) -dumpmachine) 30endif 31 32ifneq (,$(findstring armv7,$(extra_rules_gcc))) 33extra_flags += -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon 34CFLAGS += -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon 35CXXFLAGS += -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon 36use_neon := 1 37endif 38 39ifneq (,$(findstring hardfloat,$(extra_rules_gcc))) 40extra_flags += -mfloat-abi=hard 41CFLAGS += -mfloat-abi=hard 42CXXFLAGS += -mfloat-abi=hard 43endif 44 45ifeq ($(build),) 46build = release 47endif 48 49ifeq ($(DEBUG), 1) 50build = debug 51endif 52 53ifeq (release,$(build)) 54extra_flags += -O2 55CFLAGS += -O2 56CXXFLAGS += -O2 57LDFLAGS += -O2 58endif 59 60ifeq (debug,$(build)) 61extra_flags += -O0 -g 62CFLAGS += -O0 -g 63CXXFLAGS += -O0 -g 64LDFLAGS += -O0 -g 65endif 66 67ifneq ($(SANITIZER),) 68 CFLAGS := -fsanitize=$(SANITIZER) $(CFLAGS) 69 CXXFLAGS := -fsanitize=$(SANITIZER) $(CXXFLAGS) 70 LDFLAGS := -fsanitize=$(SANITIZER) $(LDFLAGS) 71endif 72 73EXE_EXT := 74ifeq ($(platform), unix) 75else ifeq ($(platform), osx) 76compiler := $(CC) 77else 78EXE_EXT = .exe 79endif 80 81CORE_DIR = ../../.. 82DEPS_DIR = $(CORE_DIR)/deps 83LIBRETRO_COMM_DIR = $(CORE_DIR)/libretro-common 84INCDIRS := -I$(LIBRETRO_COMM_DIR)/include 85 86CC := $(compiler) 87CXX := $(subst CC,++,$(compiler)) 88asflags := $(extra_flags) 89flags += -std=c99 90 91SOURCES_C := \ 92 $(CORE_DIR)/samples/tasks/database/main.c \ 93 $(CORE_DIR)/tasks/task_database.c \ 94 $(CORE_DIR)/tasks/task_database_cue.c \ 95 $(CORE_DIR)/database_info.c \ 96 $(CORE_DIR)/core_info.c \ 97 $(CORE_DIR)/msg_hash.c \ 98 $(CORE_DIR)/intl/msg_hash_us.c \ 99 $(CORE_DIR)/playlist.c \ 100 $(CORE_DIR)/verbosity.c \ 101 $(CORE_DIR)/libretro-db/bintree.c \ 102 $(CORE_DIR)/libretro-db/libretrodb.c \ 103 $(CORE_DIR)/libretro-db/query.c \ 104 $(CORE_DIR)/libretro-db/rmsgpack.c \ 105 $(CORE_DIR)/libretro-db/rmsgpack_dom.c \ 106 $(LIBRETRO_COMM_DIR)/file/archive_file.c \ 107 $(LIBRETRO_COMM_DIR)/file/config_file.c \ 108 $(LIBRETRO_COMM_DIR)/file/file_path.c \ 109 $(LIBRETRO_COMM_DIR)/file/file_path_io.c \ 110 $(LIBRETRO_COMM_DIR)/file/retro_dirent.c \ 111 $(LIBRETRO_COMM_DIR)/hash/rhash.c \ 112 $(LIBRETRO_COMM_DIR)/compat/compat_fnmatch.c \ 113 $(LIBRETRO_COMM_DIR)/compat/compat_posix_string.c \ 114 $(LIBRETRO_COMM_DIR)/compat/compat_strcasestr.c \ 115 $(LIBRETRO_COMM_DIR)/compat/compat_strl.c \ 116 $(LIBRETRO_COMM_DIR)/compat/fopen_utf8.c \ 117 $(LIBRETRO_COMM_DIR)/formats/json/rjson.c \ 118 $(LIBRETRO_COMM_DIR)/encodings/encoding_crc32.c \ 119 $(LIBRETRO_COMM_DIR)/encodings/encoding_utf.c \ 120 $(LIBRETRO_COMM_DIR)/queues/task_queue.c \ 121 $(LIBRETRO_COMM_DIR)/lists/dir_list.c \ 122 $(LIBRETRO_COMM_DIR)/lists/string_list.c \ 123 $(LIBRETRO_COMM_DIR)/streams/interface_stream.c \ 124 $(LIBRETRO_COMM_DIR)/streams/memory_stream.c \ 125 $(LIBRETRO_COMM_DIR)/streams/file_stream.c \ 126 $(LIBRETRO_COMM_DIR)/string/stdstring.c \ 127 $(LIBRETRO_COMM_DIR)/vfs/vfs_implementation.c 128 129DEFINES = -DHAVE_LIBRETRODB -DHAVE_COMPRESSION 130 131ifeq ($(HAVE_ZLIB), 1) 132SOURCES_C += \ 133 $(LIBRETRO_COMM_DIR)/file/archive_file_zlib.c \ 134 $(LIBRETRO_COMM_DIR)/streams/trans_stream_zlib.c 135DEFINES += -DHAVE_ZLIB 136LIBS += -lz 137endif 138 139ifeq ($(HAVE_7ZIP), 1) 140SOURCES_C += \ 141 $(LIBRETRO_COMM_DIR)/file/archive_file_7z.c 142DEFINES += -DHAVE_7ZIP -D_7ZIP_ST 143INCDIRS += -I$(DEPS_DIR) 144 145SOURCES_C += $(DEPS_DIR)/7zip/7zIn.c \ 146 $(DEPS_DIR)/7zip/Bra86.c \ 147 $(DEPS_DIR)/7zip/7zFile.c \ 148 $(DEPS_DIR)/7zip/7zStream.c \ 149 $(DEPS_DIR)/7zip/LzFind.c \ 150 $(DEPS_DIR)/7zip/LzmaDec.c \ 151 $(DEPS_DIR)/7zip/LzmaEnc.c \ 152 $(DEPS_DIR)/7zip/7zCrcOpt.c \ 153 $(DEPS_DIR)/7zip/Bra.c \ 154 $(DEPS_DIR)/7zip/7zDec.c \ 155 $(DEPS_DIR)/7zip/Bcj2.c \ 156 $(DEPS_DIR)/7zip/7zCrc.c \ 157 $(DEPS_DIR)/7zip/Lzma2Dec.c \ 158 $(DEPS_DIR)/7zip/7zBuf.c 159endif 160 161ifeq ($(HAVE_THREADS), 1) 162SOURCES_C += \ 163 $(LIBRETRO_COMM_DIR)/rthreads/rthreads.c 164DEFINES += -DHAVE_THREADS 165 166ifeq (,$(findstring MSYS,$(uname -s))) 167LIBS += -lpthread 168endif 169endif 170 171flags := $(INCDIRS) 172INCFLAGS := $(INCDIRS) 173 174CFLAGS += $(DEFINES) 175CXXFLAGS += $(DEFINES) 176 177OBJECTS = $(SOURCES_C:.c=.o) 178 179OBJOUT = -o 180LINKOUT = -o 181 182ifneq (,$(findstring msvc,$(platform))) 183 OBJOUT = -Fo 184LINKOUT = -out: 185ifeq ($(STATIC_LINKING),1) 186 LD ?= lib.exe 187else 188 LD = link.exe 189endif 190else 191 LD = $(CC) 192endif 193 194all: $(TARGET)$(EXE_EXT) 195$(TARGET)$(EXE_EXT): $(OBJECTS) 196 $(LD) $(LINKOUT)$@ $(SHARED) $(OBJECTS) $(LDFLAGS) $(LIBS) 197 198%.o: %.c 199 $(CC) $(INCFLAGS) $(CFLAGS) -c $(OBJOUT)$@ $< 200 201%.o: %.cpp 202 $(CXX) $(INCFLAGS) $(CXXFLAGS) -c $(OBJOUT)$@ $< 203 204clean: 205 rm -f $(OBJECTS) 206