flycast/shell/linux/Makefile

306 lines
8.7 KiB
Makefile
Raw Normal View History

2015-07-14 01:35:34 +00:00
LOCAL_PATH := $(call my-dir)
FOR_LINUX :=1
#NO_REC := 1
#NO_REND := 1
WEBUI :=1
USE_ALSA := 1
USE_OSS := 1
#USE_PULSEAUDIO := 1
USE_EVDEV := 1
USE_JOYSTICK := 1
2015-07-14 01:35:34 +00:00
CXX=${CC_PREFIX}g++
CC=${CC_PREFIX}gcc
AS=${CC_PREFIX}as
STRIP=${CC_PREFIX}strip
LD=${CC}
MFLAGS :=
ASFLAGS :=
LDFLAGS :=
INCS :=
LIBS :=
CFLAGS :=
CXXFLAGS :=
2015-07-14 01:35:34 +00:00
# Platform auto-detection
# Can be overridden by using:
# make platform=x64
ifeq (,$(platform))
ARCH = $(shell uname -m)
ifeq ($(ARCH), $(filter $(ARCH), i386 i686))
platform = x86
else ifeq ($(ARCH), $(filter $(ARCH), x86_64 AMD64))
platform = x64
else ifneq (,$(findstring arm,$(ARCH)))
HARDWARE = $(shell grep Hardware /proc/cpuinfo)
ifneq (,$(findstring BCM2709,$(HARDWARE)))
platform = rpi2
else ifneq (,$(findstring AM33XX,$(HARDWARE)))
platform = beagle
else ifneq (,$(findstring Pandora,$(HARDWARE)))
platform = pandora
2015-07-28 15:10:21 +00:00
else ifneq (,$(findstring ODROIDC,$(HARDWARE)))
platform = odroidc1
else ifneq (,$(findstring ODROID-XU3,$(HARDWARE)))
platform = odroidxu3
else ifneq (,$(findstring ODROIDXU,$(HARDWARE)))
platform = odroidxu
else ifneq (,$(findstring ODROIDX2,$(HARDWARE)))
platform = odroidx2
else ifneq (,$(findstring ODROIDX,$(HARDWARE)))
platform = odroidx
else ifneq (,$(findstring ODROID-U2/U3,$(HARDWARE)))
platform = odroidu2
else ifneq (,$(findstring ODROIDU2,$(HARDWARE)))
platform = odroidu2
else
$(error Unsupported Hardware)
endif
2015-07-27 15:25:19 +00:00
else ifneq (,$(findstring mips,$(ARCH)))
platform = gcwz
else
$(error Unsupported CPU architecture)
endif
endif
2015-07-14 01:35:34 +00:00
$(info Platform: $(platform))
# Generic 32 bit x86 (a.k.a. i386/i486/i686)
ifneq (,$(findstring x86,$(platform)))
X86_REC := 1
NOT_ARM := 1
USE_X11 := 1
MFLAGS += -m32
ASFLAGS += --32
LDFLAGS += -m32
CFLAGS += -m32 -D TARGET_LINUX_x86 -D TARGET_NO_AREC -fsingle-precision-constant
CXXFLAGS += -fno-exceptions
# Generic 64 bit x86 (a.k.a. x64/AMD64/x86_64/Intel64/EM64T)
else ifneq (,$(findstring x64,$(platform)))
X64_REC := 1
NOT_ARM := 1
USE_X11 := 1
CFLAGS += -D TARGET_LINUX_x64 -D TARGET_NO_AREC -fsingle-precision-constant
CXXFLAGS += -fexceptions
# LinCPP
else ifneq (,$(findstring lincpp,$(platform)))
CPP_REC := 1
NOT_ARM := 1
USE_X11 := 1
CFLAGS += -D TARGET_LINUX_x64 -D TARGET_NO_JIT
CXXFLAGS += -fexceptions -std=gnu++11
# Raspberry Pi 2
else ifneq (,$(findstring rpi2,$(platform)))
MFLAGS += -marm -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard -funroll-loops
ASFLAGS += -march=armv7-a -mfpu=neon -mfloat-abi=softfp
CFLAGS += -D TARGET_BEAGLE -D TARGET_LINUX_ARMELv7 -DARM_HARDFP -fsingle-precision-constant
INCS += -I/opt/vc/include/ -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/vcos/pthreads -I../linux-deps/include
LIBS += -L/opt/vc/lib/ -L../linux-deps/lib -lbcm_host
USE_GLES := 1
# BeagleBone Black
else ifneq (,$(findstring beagle,$(platform)))
CC_PREFIX ?= arm-none-linux-gnueabi-
MFLAGS += -marm -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=softfp -funroll-loops
ASFLAGS := -march=armv7-a -mfpu=neon -mfloat-abi=softfp
CFLAGS += -D TARGET_BEAGLE -fsingle-precision-constant
USE_GLES := 1
# Pandora
else ifneq (,$(findstring pandora,$(platform)))
FOR_PANDORA := 1
USE_X11 := 1
USE_SDL := 1
PGO_USE := 1
USE_GLES := 1
MFLAGS +== -marm -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -funroll-loops -fpermissive
ASFLAGS += -march=armv7-a -mfpu=neon -mfloat-abi=softfp
CFLAGS += -D TARGET_PANDORA -D WEIRD_SLOWNESS -fsingle-precision-constant
# ODROIDs
else ifneq (,$(findstring odroid,$(platform)))
MFLAGS += -marm -mfpu=neon -mfloat-abi=hard -funroll-loops
ASFLAGS += -mfpu=neon -mfloat-abi=hard
CFLAGS += -D TARGET_BEAGLE -D TARGET_LINUX_ARMELv7 -DARM_HARDFP -fsingle-precision-constant
2015-07-28 15:10:21 +00:00
USE_GLES := 1
# ODROID-XU3, -XU3 Lite & -XU4
ifneq (,$(findstring odroidxu3,$(platform)))
MFLAGS += -march=armv7ve -mtune=cortex-a15.cortex-a7
ASFLAGS += -march=armv7ve
# Other ODROIDs
else
MFLAGS += -march=armv7-a
ASFLAGS += -march=armv7-a
# ODROID-C1 & -C1+
ifneq (,$(findstring odroidc1,$(platform)))
MFLAGS += -mtune=cortex-a5
# ODROID-U2, -U3, -X & -X2
else
MFLAGS += -mtune=cortex-a9
endif
endif
2015-07-27 15:25:19 +00:00
# GCW Zero
else ifneq (,$(findstring gcwz,$(platform)))
NOT_ARM := 1
NO_REC := 1
CC_PREFIX ?= /opt/gcw0-toolchain/usr/bin/mipsel-gcw0-linux-uclibc-
CFLAGS += -D TARGET_GCW0 -D TARGET_NO_REC -fsingle-precision-constant
2015-07-27 15:25:19 +00:00
LIBS += -L../linux-deps/lib -L./enta_viv -lglapi
GCWZ_PKG = reicast-gcwz.opk
GCWZ_PKG_FILES = gcwz/default.gcw0.desktop gcwz/icon-32.png
else
$(error Unknown platform)
endif
RZDCY_SRC_DIR = ../../core
include $(RZDCY_SRC_DIR)/core.mk
2015-07-14 01:35:34 +00:00
2015-07-26 14:12:16 +00:00
LDFLAGS += -g -Wl,-Map,$(notdir $@).map,--gc-sections -Wl,-O3 -Wl,--sort-common
2015-07-14 01:35:34 +00:00
CFLAGS += -g -O3 -D RELEASE -c -D USES_HOMEDIR #-D NO_REND
CFLAGS += -frename-registers -fno-strict-aliasing
CFLAGS += -ffast-math -ftree-vectorize
2015-07-14 01:35:34 +00:00
CXXFLAGS += -fno-rtti -fpermissive -fno-operator-names
2015-07-14 01:35:34 +00:00
INCS += -I$(RZDCY_SRC_DIR) -I$(RZDCY_SRC_DIR)/deps -I$(RZDCY_SRC_DIR)/khronos
LIBS += -lm -lrt -ldl
LIBS += -lpthread
2015-08-22 14:08:53 +00:00
PREFIX ?= /usr/local
2015-08-22 15:05:47 +00:00
MAN_DIR ?= ${PREFIX}/share/man/man1
2015-08-24 14:43:44 +00:00
MENUENTRY_DIR ?= ${PREFIX}/share/applications
ICON_DIR ?= ${PREFIX}/share/pixmaps
2015-08-22 14:08:53 +00:00
ifndef NOT_ARM
AS=${CC_PREFIX}gcc
ASFLAGS += $(CFLAGS)
endif
ifdef USE_SDL
2015-07-27 16:47:19 +00:00
CXXFLAGS += `sdl-config --cflags`
LIBS += `sdl-config --libs`
endif
2015-07-14 01:35:34 +00:00
ifdef PGO_MAKE
CFLAGS += -fprofile-generate -pg
LDFLAGS += -fprofile-generate
2015-07-14 01:35:34 +00:00
else
CFLAGS += -fomit-frame-pointer
2015-07-14 01:35:34 +00:00
endif
ifdef PGO_USE
CFLAGS += -fprofile-use
2015-07-14 01:35:34 +00:00
endif
ifdef LTO_TEST
CFLAGS += -flto -fwhole-program
LDFLAGS +=-flto -fwhole-program
2015-07-14 01:35:34 +00:00
endif
2015-07-27 14:22:29 +00:00
ifdef USE_X11
CFLAGS += -D SUPPORT_X11
CXXFLAGS += -D SUPPORT_X11
LIBS += -lX11
endif
2015-07-14 01:35:34 +00:00
ifdef USE_EVDEV
CXXFLAGS += -D USE_EVDEV
endif
ifdef USE_JOYSTICK
CXXFLAGS += -D USE_JOYSTICK
endif
2015-07-14 01:35:34 +00:00
ifdef USE_ALSA
CXXFLAGS += -D USE_ALSA
LIBS += -lasound
2015-07-14 01:35:34 +00:00
endif
ifdef USE_OSS
CXXFLAGS += -D USE_OSS
2015-07-14 01:35:34 +00:00
endif
ifdef USE_PULSEAUDIO
CXXFLAGS += -D USE_PULSEAUDIO
LIBS += -lpulse-simple
2015-07-14 01:35:34 +00:00
endif
2015-07-26 14:12:16 +00:00
# GLES on x11?
2015-07-21 14:01:06 +00:00
ifdef USE_GLES
CXXFLAGS += -DGLES
LIBS += -lEGL -lGLESv2
2015-07-21 14:01:06 +00:00
else
LIBS += -ldl -lGL #for desktop gl
2015-07-21 14:01:06 +00:00
endif
2015-07-14 01:35:34 +00:00
OBJECTS=$(RZDCY_FILES:.cpp=.build_obj)
OBJECTS:=$(OBJECTS:.c=.build_obj)
OBJECTS:=$(OBJECTS:.S=.build_obj)
OBJECTS:=$(patsubst $(RZDCY_SRC_DIR)/%,obj-$(platform)/%,$(OBJECTS))
2015-07-14 01:35:34 +00:00
EXECUTABLE_STRIPPED=nosym-reicast.elf
2015-08-22 14:08:53 +00:00
EXECUTABLE=reicast
2015-07-14 01:35:34 +00:00
2015-07-27 16:47:19 +00:00
2015-07-14 01:35:34 +00:00
all: $(CPPFILES) $(EXECUTABLE) $(EXECUTABLE_STRIPPED)
2015-07-27 15:25:19 +00:00
ifneq (,$(findstring gcwz,$(platform)))
mksquashfs $(EXECUTABLE_STRIPPED) $(GCWZ_PKG_FILES) $(GCWZ_PKG) -all-root
endif
2015-07-14 01:35:34 +00:00
$(EXECUTABLE): $(OBJECTS)
$(CXX) $(MFLAGS) $(EXTRAFLAGS) $(LDFLAGS) $(OBJECTS) $(LIBS) -o $@
$(EXECUTABLE_STRIPPED): $(EXECUTABLE)
cp $< $@ && $(STRIP) $@
obj-$(platform)/%.build_obj : $(RZDCY_SRC_DIR)/%.cpp
2015-07-14 01:35:34 +00:00
mkdir -p $(dir $@)
$(CXX) $(EXTRAFLAGS) $(INCS) $(CFLAGS) $(MFLAGS) $(CXXFLAGS) $< -o $@
2015-07-14 01:35:34 +00:00
obj-$(platform)/%.build_obj : $(RZDCY_SRC_DIR)/%.c
2015-07-14 01:35:34 +00:00
mkdir -p $(dir $@)
$(CC) $(EXTRAFLAGS) $(INCS) $(CFLAGS) $< -o $@
obj-$(platform)/%.build_obj : $(RZDCY_SRC_DIR)/%.S
2015-07-14 01:35:34 +00:00
mkdir -p $(dir $@)
$(AS) $(ASFLAGS) $(INCS) $< -o $@
2015-07-14 01:35:34 +00:00
2015-08-22 14:08:53 +00:00
install: $(EXECUTABLE)
mkdir -p $(DESTDIR)$(PREFIX)/bin 2>/dev/null || /bin/true
mkdir -p $(DESTDIR)$(PREFIX)/share/reicast/mappings 2>/dev/null || /bin/true
2015-08-22 15:05:47 +00:00
mkdir -p $(DESTDIR)$(MAN_DIR) 2>/dev/null || /bin/true
2015-08-24 14:43:44 +00:00
mkdir -p $(DESTDIR)$(MENUENTRY_DIR) 2>/dev/null || /bin/true
mkdir -p $(DESTDIR)$(ICON_DIR) 2>/dev/null || /bin/true
2015-08-22 14:08:53 +00:00
install -m755 $(EXECUTABLE) $(DESTDIR)$(PREFIX)/bin
install -m755 tools/reicast-joyinfo.py $(DESTDIR)$(PREFIX)/bin/reicast-joyinfo
install -m644 mappings/controller_gcwz.cfg $(DESTDIR)$(PREFIX)/share/reicast/mappings
install -m644 mappings/controller_generic.cfg $(DESTDIR)$(PREFIX)/share/reicast/mappings
install -m644 mappings/controller_pandora.cfg $(DESTDIR)$(PREFIX)/share/reicast/mappings
install -m644 mappings/controller_xboxdrv.cfg $(DESTDIR)$(PREFIX)/share/reicast/mappings
install -m644 mappings/controller_xpad.cfg $(DESTDIR)$(PREFIX)/share/reicast/mappings
install -m644 mappings/keyboard.cfg $(DESTDIR)$(PREFIX)/share/reicast/mappings
2015-08-22 15:05:47 +00:00
install -m644 man/reicast.1 $(DESTDIR)$(MAN_DIR)
2015-08-24 14:43:44 +00:00
install -m644 reicast.desktop $(DESTDIR)$(MENUENTRY_DIR)
install -m644 reicast.png $(DESTDIR)$(ICON_DIR)
2015-08-22 14:08:53 +00:00
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/$(EXECUTABLE)
2015-08-22 15:05:47 +00:00
rm -f $(DESTDIR)$(MAN_DIR)/reicast.1
2015-08-22 14:08:53 +00:00
2015-07-14 01:35:34 +00:00
clean:
rm -f $(OBJECTS) $(EXECUTABLE) $(EXECUTABLE_STRIPPED) .map