diff --git a/core/linux/common.cpp b/core/linux/common.cpp index 8cd20099b..af5e92c66 100644 --- a/core/linux/common.cpp +++ b/core/linux/common.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include "hw/sh4/dyna/blockmanager.h" @@ -270,11 +271,32 @@ void enable_runfast() #endif } +void linux_fix_personality() { + printf("Personality: %08X\n", personality(0xFFFFFFFF)); + personality(~READ_IMPLIES_EXEC & personality(0xFFFFFFFF)); + printf("Updated personality: %08X\n", personality(0xFFFFFFFF)); +} + +void linux_rpi2_init() { + void* handle; + void (*rpi_bcm_init)(void); + + handle = dlopen("libbcm_host.so", RTLD_LAZY); + + if (handle) { + printf("found libbcm_host\n"); + *(void**) (&rpi_bcm_init) = dlsym(handle, "bcm_host_init"); + if (rpi_bcm_init) { + printf("rpi2: bcm_init\n"); + rpi_bcm_init(); + } + } +} + void common_linux_setup() { - printf("Personality: %08X\n", personality(0xFFFFFFFF)); - personality(~READ_IMPLIES_EXEC & personality(0xFFFFFFFF)); - printf("Updated personality: %08X\n", personality(0xFFFFFFFF)); + linux_fix_personality(); + linux_rpi2_init(); enable_runfast(); install_fault_handler(); diff --git a/shell/beagle/Makefile b/shell/beagle/Makefile index c9380005f..aa6b007b3 100644 --- a/shell/beagle/Makefile +++ b/shell/beagle/Makefile @@ -57,7 +57,7 @@ endif INCS := -I$(RZDCY_SRC_DIR) -I$(RZDCY_SRC_DIR)/deps -I$(RZDCY_SRC_DIR)/khronos -I../linux-deps/include LIBS := -L../linux-deps/lib -LIBS += -lm -lrt -lEGL -lGLESv2 #-lglslcompiler -lIMGegl -lpvr2d -lsrv_um +LIBS += -lm -lrt -ldl -lEGL -lGLESv2 #-lglslcompiler -lIMGegl -lpvr2d -lsrv_um LIBS += -lpthread -lX11 -lXdmcp -lXau ifdef USE_ALSA diff --git a/shell/gcwz/Makefile b/shell/gcwz/Makefile index ce228cf30..03cc37618 100644 --- a/shell/gcwz/Makefile +++ b/shell/gcwz/Makefile @@ -64,7 +64,7 @@ INCS := -I$(RZDCY_SRC_DIR) -I$(RZDCY_SRC_DIR)/deps -I$(RZDCY_SRC_DIR)/khronos -I LIBS := -L../linux-deps/lib -L./enta_viv LIBS += -lglapi -LIBS += -lm -lrt -lEGL -lGLESv2 #-lglslcompiler -lIMGegl -lpvr2d -lsrv_um +LIBS += -lm -lrt -ldl -lEGL -lGLESv2 #-lglslcompiler -lIMGegl -lpvr2d -lsrv_um LIBS += -lpthread #-lX11 -lXdmcp -lXau ifdef USE_ALSA diff --git a/shell/lin86/Makefile b/shell/lin86/Makefile index cf3789143..f0561facb 100644 --- a/shell/lin86/Makefile +++ b/shell/lin86/Makefile @@ -70,7 +70,7 @@ INCS := -I$(RZDCY_SRC_DIR) -I$(RZDCY_SRC_DIR)/deps -I$(RZDCY_SRC_DIR)/khronos -I LIBS := -L../linux-deps/lib/x86 -L./enta_viv #LIBS += -lglapi -LIBS += -lm -lrt +LIBS += -lm -lrt -ldl LIBS += -ldl -lGL #for desktop gl #use this for GLES #LIBS += -lEGL -lGLESv2 #-lglslcompiler -lIMGegl -lpvr2d -lsrv_um diff --git a/shell/pandora/Makefile b/shell/pandora/Makefile index 58db1f443..2a7bf68b1 100755 --- a/shell/pandora/Makefile +++ b/shell/pandora/Makefile @@ -77,7 +77,7 @@ INCS := -I$(RZDCY_SRC_DIR) -I$(RZDCY_SRC_DIR)/deps -I$(RZDCY_SRC_DIR)/khronos #-I../linux-deps/include LIBS := -L../linux-deps/lib -LIBS += -lm -lrt -lEGL -lGLESv2 +LIBS += -lm -lrt -ldl -lEGL -lGLESv2 #-lglslcompiler -lIMGegl -lpvr2d -lsrv_um LIBS += -lpthread diff --git a/shell/rapi2/Makefile b/shell/rapi2/Makefile new file mode 100644 index 000000000..1e8cfdf1d --- /dev/null +++ b/shell/rapi2/Makefile @@ -0,0 +1,90 @@ +LOCAL_PATH := $(call my-dir) +FOR_LINUX :=1 +WEBUI :=1 +#NO_REND := 1 +#NO_X11 := 1 +RZDCY_SRC_DIR = ../../core + +include $(RZDCY_SRC_DIR)/core.mk + +#CC_PREFIX ?= arm-none-linux-gnueabi- + +CXX=${CC_PREFIX}g++ +CC=${CC_PREFIX}gcc +AS=${CC_PREFIX}gcc +STRIP=${CC_PREFIX}strip + +LD=${CC} + +MFLAGS := -marm -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard -funroll-loops +ASFLAGS := -march=armv7-a -mfpu=neon -mfloat-abi=softfp + +LDFLAGS := -g -Wl,-Map,$(notdir $@).map,--gc-sections -Wl,-O3 -Wl,--sort-common + + +CXXFLAGS := -g -O3 -D RELEASE -c -D TARGET_BEAGLE -D TARGET_LINUX_ARMELv7 -DUSE_ALSA +CXXFLAGS += -frename-registers -fno-strict-aliasing -fsingle-precision-constant +CXXFLAGS += -ffast-math -ftree-vectorize -fprefetch-loop-arrays +#-std=c++0x + +CXXFLAGS += $(CFLAGS) $(MFLAGS) -fno-exceptions -fno-rtti +CXXFLAGS += -DARM_HARDFP -DGLES + + +ifdef PGO_MAKE + CXXFLAGS += -fprofile-generate -pg + LDFLAGS += -fprofile-generate +else + CXXFLAGS += -fomit-frame-pointer +endif + +ifdef PGO_USE + CXXFLAGS += -fprofile-use +endif + + +ifdef LTO_TEST + CXXFLAGS += -flto -fwhole-program + LDFLAGS +=-flto -fwhole-program +endif + +INCS := -I/opt/vc/include/ -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/vcos/pthreads -I$(RZDCY_SRC_DIR) -I$(RZDCY_SRC_DIR)/deps -I$(RZDCY_SRC_DIR)/khronos -I../linux-deps/include + +LIBS := -L/opt/vc/lib/ -L../linux-deps/lib +LIBS += -lm -lrt -ldl -lEGL -lGLESv2 #-lglslcompiler -lIMGegl -lpvr2d -lsrv_um +LIBS += -lpthread -lasound -lX11 -lXdmcp -lXau -lbcm_host + + +OBJECTS=$(RZDCY_FILES:.cpp=.build_obj) +OBJECTS:=$(OBJECTS:.c=.build_obj) +OBJECTS:=$(OBJECTS:.S=.build_obj) +OBJECTS:=$(patsubst $(RZDCY_SRC_DIR)/%,obj/%,$(OBJECTS)) + + +EXECUTABLE_STRIPPED=nosym-reicast.elf +EXECUTABLE=reicast.elf + +all: $(CPPFILES) $(EXECUTABLE) $(EXECUTABLE_STRIPPED) + +$(EXECUTABLE): $(OBJECTS) + echo $(RZDCY_FILES) + $(CXX) $(MFLAGS) $(EXTRAFLAGS) $(LDFLAGS) $(OBJECTS) $(LIBS) -o $@ + +$(EXECUTABLE_STRIPPED): $(EXECUTABLE) + cp $< $@ && $(STRIP) $@ + +obj/%.build_obj : $(RZDCY_SRC_DIR)/%.cpp + mkdir -p $(dir $@) + $(CXX) $(EXTRAFLAGS) $(INCS) $(CXXFLAGS) $< -o $@ + +obj/%.build_obj : $(RZDCY_SRC_DIR)/%.c + mkdir -p $(dir $@) + $(CC) $(EXTRAFLAGS) $(INCS) $(CXXFLAGS) $< -o $@ + +obj/%.build_obj : $(RZDCY_SRC_DIR)/%.S + mkdir -p $(dir $@) + $(AS) $(ASFLAGS) $(INCS) $(CXXFLAGS) $< -o $@ + + +clean: + rm $(OBJECTS) $(EXECUTABLE) -f