| 1 | compiler := gcc |
| 2 | extra_flags := |
| 3 | use_neon := 0 |
| 4 | build = release |
| 5 | DYLIB := so |
| 6 | PREFIX := /usr |
| 7 | INSTALLDIR := $(PREFIX)/lib/retroarch/filters/audio |
| 8 | |
| 9 | ifeq ($(platform),) |
| 10 | platform = unix |
| 11 | ifeq ($(shell uname -s),) |
| 12 | platform = win |
| 13 | else ifneq ($(findstring Darwin,$(shell uname -s)),) |
| 14 | platform = osx |
| 15 | arch = intel |
| 16 | ifeq ($(shell uname -p),powerpc) |
| 17 | arch = ppc |
| 18 | endif |
| 19 | else ifneq ($(findstring MINGW,$(shell uname -s)),) |
| 20 | platform = win |
| 21 | endif |
| 22 | endif |
| 23 | |
| 24 | ifeq ($(platform),gcc) |
| 25 | extra_rules_gcc := $(shell $(compiler) -dumpmachine) |
| 26 | endif |
| 27 | |
| 28 | ifneq (,$(findstring armv7,$(extra_rules_gcc))) |
| 29 | extra_flags += -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon |
| 30 | use_neon := 1 |
| 31 | endif |
| 32 | |
| 33 | ifneq (,$(findstring hardfloat,$(extra_rules_gcc))) |
| 34 | extra_flags += -mfloat-abi=hard |
| 35 | endif |
| 36 | |
| 37 | ifeq (release,$(build)) |
| 38 | extra_flags += -O2 |
| 39 | endif |
| 40 | |
| 41 | ifeq (debug,$(build)) |
| 42 | extra_flags += -O0 -g |
| 43 | endif |
| 44 | |
| 45 | ldflags := $(LDFLAGS) -shared -lm -Wl,--version-script=link.T |
| 46 | |
| 47 | ifeq ($(platform), unix) |
| 48 | DYLIB = so |
| 49 | else ifeq ($(platform), osx) |
| 50 | compiler := $(CC) |
| 51 | DYLIB = dylib |
| 52 | ldflags := -dynamiclib |
| 53 | ARCHFLAGS= |
| 54 | MINVERFLAGS= |
| 55 | ifeq ($(shell uname -p),arm) |
| 56 | MINVERFLAGS = -mmacosx-version-min=10.15 -stdlib=libc++ # macOS (Metal, ARM 64bit) |
| 57 | else ifeq ($(HAVE_METAL),1) |
| 58 | MINVERFLAGS = -mmacosx-version-min=10.13 -stdlib=libc++ # macOS (Metal, x86 64bit) |
| 59 | else ifeq ($(shell uname -p),powerpc) |
| 60 | MINVERFLAGS = -mmacosx-version-min=10.5 # macOSX (PowerPC 32-bit) |
| 61 | else ifeq ($(shell uname -m),i386) |
| 62 | MINVERFLAGS = -mmacosx-version-min=10.6 # macOSX (OpenGL, x86 32bit) |
| 63 | else |
| 64 | MINVERFLAGS = -mmacosx-version-min=10.7 -stdlib=libc++ # macOSX (OpenGL, x86 64bit) |
| 65 | endif |
| 66 | |
| 67 | # Build for a specific architecture when ARCH is defined as a switch |
| 68 | ifeq ($(ARCH),arm64) |
| 69 | MINVERFLAGS = -mmacosx-version-min=10.15 -stdlib=libc++ # macOS (Metal, ARM 64bit) |
| 70 | ARCHFLAGS = -arch arm64 |
| 71 | else ifeq ($(ARCH),x86_64) |
| 72 | ifeq ($(HAVE_METAL),1) |
| 73 | MINVERFLAGS = -mmacosx-version-min=10.13 -stdlib=libc++ |
| 74 | else |
| 75 | MINVERFLAGS = -mmacosx-version-min=10.7 -stdlib=libc++ |
| 76 | endif |
| 77 | ARCHFLAGS = -arch x86_64 |
| 78 | else ifeq ($(ARCH),x86) |
| 79 | MINVERFLAGS = -mmacosx-version-min=10.6 |
| 80 | ARCHFLAGS = -arch x86 |
| 81 | else ifeq ($(ARCH),ppc) |
| 82 | MINVERFLAGS = -mmacosx-version-min=10.5 |
| 83 | ARCHFLAGS = -arch ppc |
| 84 | endif |
| 85 | ifeq ($(BUILDBOT),1) |
| 86 | ARCHFLAGS = -target $(LIBRETRO_APPLE_PLATFORM) -isysroot $(LIBRETRO_APPLE_ISYSROOT) |
| 87 | endif |
| 88 | extraflags += $(MINVERFLAGS) $(ARCHFLAGS) |
| 89 | ldflags += $(MINVERFLAGS) $(ARCHFLAGS) |
| 90 | else |
| 91 | extra_flags += -static-libgcc -static-libstdc++ |
| 92 | DYLIB = dll |
| 93 | endif |
| 94 | |
| 95 | CC := $(compiler) -Wall |
| 96 | CXX := $(subst CC,++,$(compiler)) -std=gnu++0x -Wall |
| 97 | flags := $(CPPFLAGS) $(CFLAGS) -fPIC $(extra_flags) -I../../include |
| 98 | asflags := $(ASFLAGS) -fPIC $(extra_flags) |
| 99 | objects := |
| 100 | |
| 101 | ifeq (1,$(use_neon)) |
| 102 | ASMFLAGS := -INEON/asm |
| 103 | asflags += -mfpu=neon |
| 104 | endif |
| 105 | |
| 106 | plugs := $(wildcard *.c) |
| 107 | objects := $(plugs:.c=.o) |
| 108 | targets := $(objects:.o=.$(DYLIB)) |
| 109 | |
| 110 | all: build; |
| 111 | |
| 112 | %.o: %.S |
| 113 | $(CC) -c -o $@ $(asflags) $(ASMFLAGS) $< |
| 114 | |
| 115 | %.o: %.c |
| 116 | $(CC) -c -o $@ $(flags) $< |
| 117 | |
| 118 | %.$(DYLIB): %.o |
| 119 | $(CC) -o $@ $(ldflags) $(flags) $^ |
| 120 | |
| 121 | build: $(targets) |
| 122 | |
| 123 | clean: |
| 124 | rm -f *.o |
| 125 | rm -f *.$(DYLIB) |
| 126 | |
| 127 | strip: |
| 128 | strip -s *.$(DYLIB) |
| 129 | |
| 130 | install: |
| 131 | mkdir -p $(DESTDIR)$(INSTALLDIR) |
| 132 | cp -t $(DESTDIR)$(INSTALLDIR) $(targets) *.dsp |
| 133 | |
| 134 | test-install: |
| 135 | DESTDIR=/tmp/build $(MAKE) install |