aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornotaz2012-05-01 00:39:05 +0300
committernotaz2012-05-27 20:11:00 +0300
commitdd4d5a35678c8ff7f9a7c0ac42be354671534f96 (patch)
treefa3b4edac9a112bd15fb78c16f5992b080871211
parentb105cf4f5e168fdce54c6011533df76d196a917b (diff)
downloadpcsx_rearmed-dd4d5a35678c8ff7f9a7c0ac42be354671534f96.tar.gz
pcsx_rearmed-dd4d5a35678c8ff7f9a7c0ac42be354671534f96.tar.bz2
pcsx_rearmed-dd4d5a35678c8ff7f9a7c0ac42be354671534f96.zip
automatically build plugins
-rw-r--r--Makefile33
-rwxr-xr-xconfigure31
-rw-r--r--frontend/main.c4
-rw-r--r--frontend/menu.c4
-rw-r--r--plugins/gpulib/Makefile19
-rw-r--r--plugins/gpulib/gpulib.mak5
-rw-r--r--plugins/spunull/Makefile16
7 files changed, 92 insertions, 20 deletions
diff --git a/Makefile b/Makefile
index aa97b12..527ddd9 100644
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,7 @@ endif
#DRC_DBG = 1
#PCNT = 1
-all: config.mak $(TARGET)
+all: config.mak $(TARGET) plugins_
ifneq ($(wildcard config.mak),)
config.mak: ./configure
@@ -118,14 +118,14 @@ OBJS += maemo/hildon.o maemo/main.o
maemo/%.o: maemo/%.c
else
OBJS += frontend/menu.o frontend/linux/in_evdev.o
-OBJS += frontend/common/input.o frontend/linux/xenv.o
+OBJS += frontend/common/input.o
ifeq "$(PLATFORM)" "generic"
OBJS += frontend/plat_sdl.o frontend/common/in_sdl.o
endif
ifeq "$(PLATFORM)" "pandora"
OBJS += frontend/linux/fbdev.o
-OBJS += frontend/plat_omap.o
+OBJS += frontend/plat_omap.o frontend/linux/xenv.o
OBJS += frontend/plat_pandora.o
endif
ifeq "$(PLATFORM)" "caanoo"
@@ -163,30 +163,44 @@ frontend/revision.h: FORCE
$(TARGET): $(OBJS)
$(CC) -o $@ $^ $(LDFLAGS) $(LDLIBS) -Wl,-Map=$@.map
-clean: $(PLAT_CLEAN)
+clean: $(PLAT_CLEAN) clean_plugins
$(RM) $(TARGET) $(OBJS) $(TARGET).map
ifneq ($(PLUGINS),)
+plugins_: $(PLUGINS)
+
$(PLUGINS):
- make -C plugins/gpulib/ clean
make -C $(dir $@)
clean_plugins:
make -C plugins/gpulib/ clean
for dir in $(PLUGINS) ; do \
$(MAKE) -C $$(dirname $$dir) clean; done
+else
+plugins_:
+clean_plugins:
endif
# ----------- release -----------
VER ?= $(shell git describe master)
+ifeq "$(PLATFORM)" "generic"
+OUT = pcsx_rearmed_$(VER)
+
+rel: pcsx $(PLUGINS) \
+ frontend/pandora/skin readme.txt COPYING
+ rm -rf $(OUT)
+ mkdir -p $(OUT)/plugins
+ mkdir -p $(OUT)/bios
+ cp -r $^ $(OUT)/
+ mv $(OUT)/*.so* $(OUT)/plugins/
+ zip -9 -r $(OUT).zip $(OUT)
+endif
+
ifeq "$(PLATFORM)" "pandora"
PND_MAKE ?= $(HOME)/dev/pnd/src/pandora-libraries/testdata/scripts/pnd_make.sh
-PLUGINS ?= plugins/spunull/spunull.so plugins/gpu-gles/gpu_gles.so \
- plugins/gpu_unai/gpu_unai.so plugins/dfxvideo/gpu_peops.so
-
rel: pcsx $(PLUGINS) \
frontend/pandora/pcsx.sh frontend/pandora/pcsx.pxml.templ frontend/pandora/pcsx.png \
frontend/pandora/picorestore frontend/pandora/skin readme.txt COPYING
@@ -208,9 +222,6 @@ PLAT_CLEAN = caanoo_clean
caanoo_clean:
$(RM) frontend/320240/pollux_set
-PLUGINS ?= plugins/spunull/spunull.so plugins/gpu_unai/gpu_unai.so \
- plugins/gpu-gles/gpu_gles.so
-
rel: pcsx $(PLUGINS) \
frontend/320240/caanoo.gpe frontend/320240/pcsx26.png \
frontend/320240/pcsxb.png frontend/320240/skin \
diff --git a/configure b/configure
index 7cfd626..4aed26a 100755
--- a/configure
+++ b/configure
@@ -28,6 +28,8 @@ platform_list="generic pandora maemo caanoo"
platform="generic"
sound_driver_list="oss alsa none"
sound_driver="alsa"
+plugins="plugins/spunull/spunull.so \
+plugins/dfxvideo/gpu_peops.so plugins/gpu_unai/gpu_unai.so"
ram_fixed="no"
drc_cache_base="no"
have_armv6=""
@@ -219,6 +221,25 @@ EOF
fi
fi
+# check for GLES headers
+cat > $TMPC <<EOF
+#include <GLES/gl.h>
+#include <GLES/glext.h>
+#include <EGL/egl.h>
+void *test(void) {
+ return eglGetDisplay( (EGLNativeDisplayType)0 );
+}
+EOF
+if compile_object; then
+ plugins="$plugins plugins/gpu-gles/gpu_gles.so"
+fi
+
+# short plugin list for display
+for p in $plugins; do
+ p1=`basename $p`
+ plugins_short="$p1 $plugins_short"
+done
+
# set things that failed to autodetect to "no"
test "x$have_armv6" != "x" || have_armv6="no"
test "x$have_armv7" != "x" || have_armv7="no"
@@ -227,6 +248,7 @@ test "x$have_arm_neon" != "x" || have_arm_neon="no"
echo "architecture $ARCH"
echo "platform $platform"
echo "sound driver $sound_driver"
+echo "plugins $plugins_short"
echo "C compiler $CC"
echo "C compiler flags $CFLAGS"
echo "linker flags $LDFLAGS"
@@ -263,6 +285,15 @@ none)
echo "USE_NO_SOUND = 1" >> $config_mak
;;
esac
+if [ "$ARCH" = "arm" ]; then
+ echo "PLUGINS = $plugins" >> $config_mak
+else
+ echo -n "PLUGINS =" >> $config_mak
+ for p in $plugins; do
+ echo -n " ${p}.${ARCH}" >> $config_mak
+ done
+ echo >> $config_mak
+fi
if [ "$have_armv6" = "yes" ]; then
echo "HAVE_ARMV6 = 1" >> $config_mak
fi
diff --git a/frontend/main.c b/frontend/main.c
index 4ebcf34..8df9036 100644
--- a/frontend/main.c
+++ b/frontend/main.c
@@ -131,7 +131,7 @@ static void set_default_paths(void)
strcpy(Config.Pad2, "builtin_pad");
strcpy(Config.Net, "Disabled");
#if defined(__arm__) && !defined(__ARM_ARCH_7A__) /* XXX */
- strcpy(Config.Gpu, "gpuPCSX4ALL.so");
+ strcpy(Config.Gpu, "gpu_unai.so");
#endif
snprintf(Config.PatchesDir, sizeof(Config.PatchesDir), "." PATCHES_DIR);
@@ -732,7 +732,7 @@ void *SysLoadLibrary(const char *lib) {
// convenience hack
if (strstr(lib, ".x86") == NULL) {
char name[MAXPATHLEN];
- snprintf(name, sizeof(name), "%s.x86", lib);
+ snprintf(name, sizeof(name), "%s.x86_64", lib);
lib = name;
}
#endif
diff --git a/frontend/menu.c b/frontend/menu.c
index b3b7177..57156d5 100644
--- a/frontend/menu.c
+++ b/frontend/menu.c
@@ -489,6 +489,10 @@ fail:
menu_sync_config();
+ // caanoo old config compat hack
+ if (strcmp(Config.Gpu, "gpuPCSX4ALL.so") == 0)
+ strcpy(Config.Gpu, "gpu_unai.so");
+
// sync plugins
for (i = bios_sel = 0; bioses[i] != NULL; i++)
if (strcmp(Config.Bios, bioses[i]) == 0)
diff --git a/plugins/gpulib/Makefile b/plugins/gpulib/Makefile
index 2739e5c..4a45aa2 100644
--- a/plugins/gpulib/Makefile
+++ b/plugins/gpulib/Makefile
@@ -23,15 +23,28 @@ OBJS += cspace.o
endif
CFLAGS += $(PLUGIN_CFLAGS)
+# need to compile to another dir, same files are compiled
+# into main binary without PIC
+OBJS2 = $(patsubst %.o,obj/%.o,$(OBJS))
+
TARGET = gpulib.$(EXT)
-all: ../../config.mak $(TARGET)
+all: ../../config.mak obj $(TARGET)
-$(TARGET): $(OBJS)
+$(TARGET): $(OBJS2)
$(AR) crs $@ $^
+obj/%.o: %.c
+ $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $^
+
+obj/%.o: %.s
+ $(AS) $(ASFLAGS) -o $@ $^
+
clean:
- $(RM) $(TARGET) $(OBJS)
+ $(RM) $(TARGET) $(OBJS2)
+
+obj:
+ mkdir -p $@
../../config.mak:
@echo "Please run ./configure before running make!"
diff --git a/plugins/gpulib/gpulib.mak b/plugins/gpulib/gpulib.mak
index 48e73cb..349a0c8 100644
--- a/plugins/gpulib/gpulib.mak
+++ b/plugins/gpulib/gpulib.mak
@@ -25,6 +25,9 @@ endif
CC_STANDLALONE = $(CC)
CC_GPULIB = $(CC)
+WD = $(shell pwd)
+PLUGINDIR = $(shell basename $(WD))
+
all: ../../config.mak $(TARGETS)
ifdef BIN_STANDLALONE
@@ -33,6 +36,7 @@ CC_STANDLALONE = $(CXX)
endif
$(BIN_STANDLALONE)$(EXT): $(SRC) $(SRC_STANDALONE) $(GPULIB_A)
$(CC_STANDLALONE) -o $@ $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) $(LDLIBS_STANDALONE)
+ ln -fs $(PLUGINDIR)/$@ ../
endif
ifdef BIN_GPULIB
@@ -41,6 +45,7 @@ CC_GPULIB = $(CXX)
endif
$(BIN_GPULIB)$(EXT): $(SRC) $(SRC_GPULIB) $(GPULIB_A)
$(CC_GPULIB) -o $@ $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) $(LDLIBS_GPULIB)
+ ln -fs $(PLUGINDIR)/$@ ../
endif
$(GPULIB_A):
diff --git a/plugins/spunull/Makefile b/plugins/spunull/Makefile
index eb81cab..dcd25ea 100644
--- a/plugins/spunull/Makefile
+++ b/plugins/spunull/Makefile
@@ -1,12 +1,20 @@
-all: ../../config.mak spunull.so
-
include ../../config.mak
-spunull.so: spunull.c
+ifneq "$(ARCH)" "arm"
+ EXT = .$(ARCH)
+endif
+TARGET = spunull.so$(EXT)
+WD = $(shell pwd)
+PLUGINDIR = $(shell basename $(WD))
+
+all: ../../config.mak $(TARGET)
+
+$(TARGET): spunull.c
$(CC) $(CFLAGS) -shared -fPIC -ggdb -O2 -o $@ $^
+ ln -fs $(PLUGINDIR)/$(TARGET) ../
clean:
- $(RM) spunull.so
+ $(RM) $(TARGET)
../../config.mak:
@echo "Please run ./configure before running make!"