Git Product home page Git Product logo

libretro-super's Introduction

Libretro Super Repository

Fetch, build and install a number of libretro projects.

Dependencies

See the Compilation notes for prerequisites.

Usage

Download and Build

make

Install

make install

libretro-super's People

Contributors

aliaspider avatar andres-asm avatar barbudreadmon avatar cuttlefishjones865 avatar fjtrujy avatar fpscan avatar fr500 avatar hizzlekizzle avatar hunterk avatar inactive123 avatar jdgleaver avatar kivutar avatar lasers avatar libretroadmin avatar m4xw avatar markwkidd avatar negativeexponent avatar oggom avatar phcoder avatar r-type avatar realnc avatar robloach avatar rsn8887 avatar sanaki avatar sergiobenrocha2 avatar tatsuya79 avatar themaister avatar webgeek1234 avatar wizzardsk avatar zoltanvb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libretro-super's Issues

Minor core title misspellings

Some of the core names are spelled inaccurately. This is what I've found, probably have missed some nightly-only cores:
bNES -> bnes, DeSmuME svn -> DeSmuME (SVN), dosbox -> DOSBox, gambatte -> Gambatte, handy -> Handy, Mednafen Neopop -> Mednafen NeoPop, Mupen64plus -> Mupen64Plus, prboom -> PrBoom
EDIT: Most of these seem to only be misspelled only in the names that are shown before version on the bottom of the screen, the ones in the Info section are often fine.

Scripting Standardization and Re-write

This is a skeleton issue which I will use to consolidate all the other pull requests I will make over the next while to begin the process of using good practices and standards that will vastly improve performance, readability and code reusage.

Extensions in Mupen64plus .info file don't match retro_system_info

https://github.com/libretro/mupen64plus-libretro/blob/master/libretro/libretro.c#L363 says n64|v64|z64.

https://github.com/libretro/libretro-super/blob/master/dist/info/mupen64plus_libretro.info says n64|v64|z64|bin|u1.

I do believe these lists are supposed to match each other. I could change this myself, but I'd rather poll for consensus on which version is correct first. (I prefer the system_info version because I've never seen a u1, and bin can belong to dozens of different systems.)

scummvm compile options

Is there any reason why scummvm is not built with all engines/features ? In particular, I enabled the dreamweb engine and libvorbis which seemed to work fine. In the makefile:
ENABLED_DREAMWEB=$(ENABLED)

more hacky:
LDD += -lvorbisfile -lvorbis -logg
DEFINES += -DVORBIS

Writing a core

How do I write a core? I can't find any documentation.

Script Cleanliness

So, it should be very simple to move the faux readlink function into libretro-config.sh (or another separate script) and then reuse it through the rest of the scripts that source it. That would (like the other issues/pull requests I've opened) save a lot of code reusage. The same would be true of the die() function.

let's switch to Repo

There are a lot of git repositories in this project. Repo is a nice tool for managing projects spanning large numbers of git repositories. Let's use it.

https://code.google.com/p/git-repo/

https://source.android.com/source/developing.html

To get all the code into a new development machine:
Previously

git clone git://github.com/libretro/libretro-super.git
cd libretro-super
./libretro-fetch.sh

With Repo this becomes

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
mkdir ra-src
cd ra-src
repo init -u https://github.com/libretro/libretro-manifest.git
repo sync

To update one's code:
Previously
./libretro-fetch.sh and git pull in libretro-super every so often
With Repo this becomes
repo sync

Down the road, if we wanted, we could setup things like repo sync android, repo sync windows and repo sync ios to only fetch code for those specific projects.

If anyone builds in Windows there could be an issue using repo, but apparently there are workarounds to get repo working in windows.

Repo has a few advantages I can think of.
As git repositories/cores are added/removed from the libretro umbrella, default.xml is edited to reflect these changes (it's stored in https://github.com/libretro/libretro-manifest.git)
repo sync automatically picks up on these changes as they occur and developers' code bases are updated with the new repositories. Currently, I have to remember to do a pull on libretro-super every once in a while before running ./libretro-fetch.sh to avoid getting out of sync.
Repo is faster. A fresh pull using ./libretro-fetch.sh takes me 8 min 52 sec seconds vs 3 min 38 sec for a fresh pull with repo sync

Dinothawr Build Failing

Under an Arch Linux installation (x86_64), I'm getting a build failure for the Dinothawr core. Output is as follows:

=== Building Dinothawr ===
rm -f surface_cluster.o render_target.o tilemap.o surface_cache.o bg_manager.o game_manager.o libretro.o rpng.o game.o sfx_manager.o surface.o font.o pugixml/pugixml.o audio/utils.o audio/mixer.o ogg/framing.o ogg/bitwise.o vorbis/floor1.o vorbis/mdct.o vorbis/mapping0.o vorbis/vorbisfile.o vorbis/res0.o vorbis/registry.o vorbis/analysis.o vorbis/codebook.o vorbis/vorbisenc.o vorbis/info.o vorbis/psy.o vorbis/sharedbook.o vorbis/lpc.o vorbis/barkmel.o vorbis/window.o vorbis/lookup.o vorbis/bitrate.o vorbis/lsp.o vorbis/synthesis.o vorbis/block.o vorbis/smallft.o vorbis/envelope.o vorbis/floor0.o dinothawr_libretro.dll
g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O3 -std=gnu++0x -ffast-math -Wall -pedantic  -I. -DOV_EXCLUDE_STATIC_CALLBACKS -c -o surface_cluster.o surface_cluster.cpp
g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O3 -std=gnu++0x -ffast-math -Wall -pedantic  -I. -DOV_EXCLUDE_STATIC_CALLBACKS -c -o render_target.o render_target.cpp
g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O3 -std=gnu++0x -ffast-math -Wall -pedantic  -I. -DOV_EXCLUDE_STATIC_CALLBACKS -c -o tilemap.o tilemap.cpp
g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O3 -std=gnu++0x -ffast-math -Wall -pedantic  -I. -DOV_EXCLUDE_STATIC_CALLBACKS -c -o surface_cache.o surface_cache.cpp
g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O3 -std=gnu++0x -ffast-math -Wall -pedantic  -I. -DOV_EXCLUDE_STATIC_CALLBACKS -c -o bg_manager.o bg_manager.cpp
g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O3 -std=gnu++0x -ffast-math -Wall -pedantic  -I. -DOV_EXCLUDE_STATIC_CALLBACKS -c -o game_manager.o game_manager.cpp
g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O3 -std=gnu++0x -ffast-math -Wall -pedantic  -I. -DOV_EXCLUDE_STATIC_CALLBACKS -c -o libretro.o libretro.cpp
g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O3 -std=gnu++0x -ffast-math -Wall -pedantic  -I. -DOV_EXCLUDE_STATIC_CALLBACKS -c -o rpng.o rpng.cpp
g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O3 -std=gnu++0x -ffast-math -Wall -pedantic  -I. -DOV_EXCLUDE_STATIC_CALLBACKS -c -o game.o game.cpp
g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O3 -std=gnu++0x -ffast-math -Wall -pedantic  -I. -DOV_EXCLUDE_STATIC_CALLBACKS -c -o sfx_manager.o sfx_manager.cpp
g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O3 -std=gnu++0x -ffast-math -Wall -pedantic  -I. -DOV_EXCLUDE_STATIC_CALLBACKS -c -o surface.o surface.cpp
g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O3 -std=gnu++0x -ffast-math -Wall -pedantic  -I. -DOV_EXCLUDE_STATIC_CALLBACKS -c -o font.o font.cpp
g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O3 -std=gnu++0x -ffast-math -Wall -pedantic  -I. -DOV_EXCLUDE_STATIC_CALLBACKS -c -o pugixml/pugixml.o pugixml/pugixml.cpp
g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O3 -std=gnu++0x -ffast-math -Wall -pedantic  -I. -DOV_EXCLUDE_STATIC_CALLBACKS -c -o audio/utils.o audio/utils.cpp  
g++ -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O3 -std=gnu++0x -ffast-math -Wall -pedantic  -I. -DOV_EXCLUDE_STATIC_CALLBACKS -c -o audio/mixer.o audio/mixer.cpp
"gcc" CXX="g++" -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O3 -std=gnu99 -ffast-math  -I. -Ivorbis -c -o ogg/framing.o ogg/framing.c
gcc: error: CXX=g++: No such file or directory
Makefile:77: recipe for target 'ogg/framing.o' failed 
make: *** [ogg/framing.o] Error 1
make: *** Waiting for unfinished jobs....
Failed to build Dinothawr
cp: cannot stat ‘dinothawr_libretro.so’: No such file or directory

Thoughts?

Missing a README with a simple howto

I bumped into this project yesterday, and before I could start compiling I had to do a lot of googling since there was no README around here.
It would be a nice thing 😄

picodrive cp issue

Hi,
There is a cp issue after compiling picodrive core (libretro-build-common.sh):
cp "picodrive_libretro${FORMAT}.${FORMAT_EXT}" "${RARCH_DIST_DIR}"

name has changed to picodrive_retro.dll

Thanks

o2em core fails to build under fedora linux

When compiling, the script fails with the following error message:

relocation R_X86_64_32S against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
libretro.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
gmake: *** [o2em_libretro.dll] Error 1
Failed to build o2em
cp: cannot stat «o2em_libretro.so»: No such file or directory

This happens on Fedora 20 KDE Spin. GCC version: 4.8.3

Unable to fetch

Any idea why this fails?

  # if directory exist remove it
  if [[ -d "/home/desktop/retroarch-src" ]]; then
    rm -rf "/home/desktop/retroarch-src"
  fi

  # clone and fetch super build (evaluating currently)
  mkdir -p /home/desktop/retroarch-src
  mkdir -p /home/desktop/retroarch-src-git
  cd /home/desktop/retroarch-src-git
  git clone https://github.com/libretro/libretro-super
  cd libretro-super/
  # fetch information
  sh libretro-fetch.sh 

  if [ $? == '0' ]; then
    echo -e "\nFetch operation successful...\n"
    sleep 1s
  else
    echo -e "\nFetch operation unsuccessful, aborting..."
    exit
  fi

Mac OS X fixes and a few other finds.

I spent some time checking the built dylibs and compared them to cores I have built by myself and found a few discrepancies, here's what I found:

bsnes: doesn't build with clang or the Apple shipped version of GCC (4.2) because it's too old. GCC 4.2 throws out this error:
cc1plus: error: unrecognized command line option "-std=gnu++0x"cc1plus: error: unrecognized command line option "-std=gnu++0x"
However it does build with a newer version of GCC if it is installed on the system.

Mednafen SNES: does not build with clang, throws out the following error:
make: *** [mednafen/snes/interface.o] Error 1
Failed to build mednafen/snes
However it does build with a newer version of GCC if it is installed on the system.

Snes9x: calls gcc and g++, the "default" Apple shipped GCC (with Xcode) won't compile this... clang will though. I passed the following arguments to make to override these "make CXX=clang++ CC=clang" and it compiled fine.

Stella: builds fine, however it builds the target "stella_libretro.dylib" rather than the referenced "libretro.dylib" that the build script is looking for to copy to the "dist" directory

Other notes:
The build script attempts to build QuickNES for Mac OS X, it doesn't compile yet for OS X. Squarepusher knows about this. More of an FYI than anything.

PCSX ReARMed is built on the PC platform and it looks like everything else as well, you might build logic into the function to eliminate building this for anything but for ARM CPUs.

MAME 0.78 is built on Mac OS X as a 32-bit dylib but won't run, it mentions within the MAME 0.78 readme that the core won't run on 64-bit machines. Most OS X machines are 64-bit these days.

Hope this helps!

Cannot build cores using Xcode 6 GM

When running libretro-build-ios.sh, I get the following error:

clang++ -o out/bsnes_libretro_ios.dylib -dynamiclib obj/libco.o obj/processor-arm.o obj/processor-gsu.o obj/processor-hg51b.o obj/processor-lr35902.o obj/processor-r65816.o obj/processor-spc700.o obj/processor-upd96050.o obj/sfc-interface.o obj/sfc-system.o obj/sfc-controller.o obj/sfc-cartridge.o obj/sfc-cheat.o obj/sfc-memory.o obj/sfc-cpu.o obj/sfc-smp.o obj/sfc-dsp.o obj/sfc-ppu.o obj/sfc-satellaviewbase.o obj/sfc-icd2.o obj/sfc-bsx.o obj/sfc-nss.o obj/sfc-event.o obj/sfc-sa1.o obj/sfc-superfx.o obj/sfc-armdsp.o obj/sfc-hitachidsp.o obj/sfc-necdsp.o obj/sfc-epsonrtc.o obj/sfc-sharprtc.o obj/sfc-spc7110.o obj/sfc-sdd1.o obj/sfc-obc1.o obj/sfc-hsu1.o obj/sfc-msu1.o obj/sfc-satellaviewcart.o obj/sfc-sufamiturbo.o obj/gb-interface.o obj/gb-system.o obj/gb-scheduler.o obj/gb-memory.o obj/gb-cartridge.o obj/gb-cpu.o obj/gb-ppu.o obj/gb-apu.o obj/gb-cheat.o obj/gb-video.o obj/libretro.o -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk -arch armv7
ld: illegal text-relocation to '_posix_memalign' in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/usr/lib/libSystem.dylib from '_co_create' in obj/libco.o for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [build] Error 1
Failed to build bsnes performance core
cp: out/bsnes_libretro_ios.dylib: No such file or directory

Has anyone been able to build using the latest Xcode?

libretro-fetch.sh fails to fetch if first pull is submodule

I removed the first couple of retroarch options as I had already cloned and built it separately. This left the submodule "assets" line as the first pull. This then causes every other core after it to not fetch.

fetch_subprojects "$REPO_BASE/libretro/retroarch-assets.git" "retroarch" "media" "assets" "libretro/retroarch-assets"
fetch_subprojects "$REPO_BASE/libretro/retroarch-joypad-autoconfig.git" "retroarch" "media" "autoconfig" "libretro/joypad-autoconfig"
fetch_project_bsnes "$REPO_BASE/libretro/bsnes-libretro.git" "libretro-bsnes" "libretro/bSNES"
fetch_project "$REPO_BASE/libretro/snes9x.git" "libretro-snes9x" "libretro/SNES9x"
fetch_project "$REPO_BASE/libretro/snes9x-next.git" "libretro-snes9x_next" "libretro/SNES9x-Next"
fetch_project "$REPO_BASE/libretro/Genesis-Plus-GX.git" "libretro-genesis_plus_gx" "libretro/Genplus GX"
...
,,,

Consistency for repo names, core rule names, Readmes, files ...

I don't know if there is some reason or maybe it is grown historically, but there are some issues with the naming of repos and files among the mednafen/beetle cores.

Example

mednafen-psx-libretro

reponame: mednafen
core rule name: mednafen_psx
readme: beetle
files: both
- https://github.com/libretro/mednafen-psx-libretro/blob/master/beetle_psx_griffin.cpp
- https://github.com/libretro/mednafen-psx-libretro/tree/master/mednafen


beetle-bsnes-libretro

reponame: beetle
core rule name: mednafen_snes
readme: madnafen


I know it is difficult to change this things, but I think it would improve the structure of the whole libretro project if the cores and the repos have reliable names.

Fail Build on ios - empty string invalid as file name

I'm trying to build the cores for iOS7, following instructions here: https://github.com/libretro/RetroArch/blob/master/apple/README.md

./libretro-fetch.sh runs nicely

./libretro-build-ios.sh fails immediatly with the following message:

zwambp:libretro-super ziad$ ./libretro-build-ios.sh 
Compiler: 
ios
Directory /Users/ziad/Dropbox/code/libretro-super/dist/ios already exists, skipping creation...
=== Building PCSX ReARMed ===
make: *** empty string invalid as file name.  Stop.
Failed to clean PCSX ReARMed
make: *** empty string invalid as file name.  Stop.
Failed to build PCSX ReARMed
cp: pcsx_rearmed_libretro_ios.dylib: No such file or directory

FWIW, clang -v gives the following:

Apple LLVM version 5.0 (clang-500.2.75) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin12.5.0
Thread model: posix

Any help is appreciated - I know how to build, but I'm not 100% sure of what I'm doing, so it might be a stupid issue.

Ability to fetch only needed targets?

I know for building cores, I can easily use sed -i -e '/build_libretro_core bsnes/d' libretro-build.sh to remove a core, and build globally with ./libretro-build.sh. With fetch, it does not seem so straigthforward. I did take a look at the core rules, which seems to be something of value, but I wanted to know if there was a way to go about this easily, rather than specify multiple lines of ./libretro-fetch.sh $target

I was unsure if this was as simple as commenting out a line such as
register_core "meteor" -ngc -ps3 -psp1 -qnx -wii

Feature Request

Great work (despite what the naysayers might argue).

Can we have a Y/n list before we start compiling so we can decide which of the cores we want? This is quicker than doing everything and, I expect, even a shade faster than manually grabbing a couple of cores (which is how I found this).

I know this is a bit ... meh ... but it would be really useful to people like me who want (maybe) five or six cores and maybe a few others but dont want to go looking for each.

Apologies for the poor typing, I smushed my keyboard settings on this USB-boot.

Unable to build Cores in XCode 5.1 (iOS Cores)

Since I have updated to the Xcode 5.1 unable to compile the iOS cores. I did update script the libretro-build-io.sh build to iPhoneOS7.1.sdk. Stupid as this may be but if I bring in the SDK 7.0 in the new Xcode it should build? Not sure? I will try in a few, need to restore my Virtual machine snapshot prior xcode update to grab the SDK7.0.

Also reference #52

NEWEST Error after changing the SDKs/iPhoneOS7.1

clang++ -std=c++11 -stdlib=libc++ -miphoneos-version-min=6.0 -std=gnu++0x -I. -O3 -fomit-frame-pointer -DPROFILE_PERFORMANCE -arch armv7 -marm -fPIC -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/ -DHAVE_POSIX_MEMALIGN=1 -w -D__LIBRETRO__ -c target-libretro/libretro.cpp -o obj/libretro.o
target-libretro/libretro.cpp:588:18: error: assigning to 'char ' from incompatible type 'char'
win_slash = '\0';
^ ~~~~
target-libretro/libretro.cpp:622:18: error: assigning to 'char *' from incompatible type 'char'
win_slash = '\0';
^ ~~~~
2 errors generated.
make: *
* [obj/libretro.o] Error 1
make: *** Waiting for unfinished jobs....
Failed to build bSNES performance core

Only profil accuracy build for bsnes

bash libretro-build.sh bsnes_mercury
=> only build the accuracy profile.

I must manually launch : make ui='target-libretro' profile='balanced' -j4

to build other build

pcsx_rearmed_libretro not building for Linux

Using libretro-build.sh, the build fails with the following error:
cp: cannot stat ‘pcsx_rearmed_libretro.so’: No such file or directory

This appears to be coming from the build_libretro_pcsx_rearmed() function in libretro-build-common.sh. It would appear that this function is building a .dll file (for Windows) despite my being on a Linux distro. I do not, however, know why this is happening as all the other cores are correctly building .so files.

libretro-install.sh not copying .so files

I removed the cores I didn't want from fetch.

Compiled all the cores with libretro-build.sh

Then when I run sudo ./libretro-install.sh (or to a directory I own) it only copies the .info files.

At the top of the output I get

Library /home/parker/build/libretro-super/dist//info not found, skipping...
Library /home/parker/build/libretro-super/dist//unix not found, skipping...

Both of these folders exist.

Cannot compile cores (stocks at mame) libretro-build-ios.sh

Hey, when i try to compile the cores, it just hangs and stops as soon it wants to create the mame core:

/mame/cpu/m68000 -Isrc/cpu/m68000 -DRETRO_PROFILE=0 -Wall -Wno-sign-compare -Wunused -Wpointer-arith -Wbad-function-cast -Wcast-align -Waggregate-return -Wshadow -Wstrict-prototypes -Wundef -Wformat-security -Wwrite-strings -Wdisabled-optimization -DNDEBUG -O3 -fomit-frame-pointer -fstrict-aliasing -fPIC -miphoneos-version-min=5.0 -Dstricmp=strcasecmp -D__LIBRETRO__ -DPI=3.1415927 -DLSB_FIRST -pedantic -DDOS -o obj/mame/cpu/m68000/m68kmake src/drawgfx.c

@echo Generating M68K source files...

obj/mame/cpu/m68000/m68kmake obj/mame/cpu/m68000 src/cpu/m68000/m68k_in.c

Failed to build MAME 0.78

Any suggestions?

yabause build

yabause repo is fetch but there is no build command in the scripts.
Any ideas why ?

iOS builds almost all broken due to filename change

cp: snes9x_next_libretro.dylib: No such file or directory

This is the lib that was built: snes9x_next_libretro_ios.dylib

Almost all of the cores are doing this now. What changed? And what should be adjusted to fix it? I hope it's not ALL of the cores' build scripts 😱

Add PCSX-Rearmed interpreter build for iOS

I'm not sure where to start with this but if you could add a build of PCSX-ReARMed core with the interpreter instead of the arm dynarec that would be great.

I only ask because the iPhone 5S is able to run all the games I tested at full speed with the interpreter, but can't run the dynarec at all due to security measures.

On the PCSX side all that would be needed would be to pass USE_DYNAREC=0 to make.

Add toc for beetle-pcfx

The real mednafen can load toc files for PC-FX games. I also don't think that ccd is valid for PC-FX, but I am not completely sure.

Add more info to .info files

dist/info/*.info files only contain a subset of the retro_system_info properties (library name and supported extensions). I was thinking of going through and adding:

  • version = "vXXX"
  • need_fullpath = "true/false"
  • block_extract = "true/false"

to all the info files. would you guys care for this pull request?

Consistency for repo names and makefile locations.

Edit: I'm not sure where this should be posted but as this repo could benefit
from these changes, it seemed the most appropriate.

In order to make build systems and management more straight forward I would
like to depend on the internal consistency of repo names and makefiles.

For example, each repo could be named after the object it builds without the
_libretro.{so,dll} prefix.

This allows us to assume what what the core's name will be based purely on the
repo name itself.

Another change would be to make the builds consistent. For example it would be
nice if we could assume that make -f Makefile.libretro would always work
regardless.

Some repos seem to contain libretro specific builds in the libretro/
directory. This is also fine, but it would be nicer if this was consistent across
all of them.

Overall these two properties would allow for a nice way to manage cores without
needing to maintain whitelists or blacklists.

Here's a simple usecase as a result of these changes:

core_directory="${XDG_DATA_HOME:-$HOME/.local/share}"/retroarch/cores

# Note: genesis_plus_gx won't work as the repo name differs. :-(
cores=(pcsx_libretro mgba nestopia genesis_plus_gx)

confirm() {
    local -l reply
    read -p "Rebuild? [Y/n] " reply
    [[ -z "$reply" || "$reply" = y?(es) ]]
}

# XXX This assumes it is run in the build directory, a proper script would
#     account for this.
for core in "${cores[@]}"; do
    if [[ ! -d "$core" ]]; then
        git clone --depth 1 git://github.com/libretro/"$core"
    fi

    pushd "$core"

    git fetch

    if [[ "$(git rev-parse HEAD)" != "$(git rev-parse @{upstream})" ]]; then
        git log --oneline --stat ..@{upstream}
        if confirm; then
            make -f Makefile.libretro
            mv -f -- "$core"_libretro.so "$core_directory"
        fi
    fi  

    popd
done

[iOS] libretro-build-common.sh Failing??

The lastest commit is failing to build the cores for iOS.
**Dec 10th, 2013 - did download the lastest, commit?

./nall/string/split.hpp:30:85: note: in instantiation of function template specialization 'nall::lstring::usplit<0, false, false>' requested here
template lstring& lstring::split(rstring key, rstring src) { return usplit<Limit, false, false>(key, src); }
^
./nall/string/wrapper.hpp:5:92: note: in instantiation of function template specialization 'nall::lstring::split<0>' requested here
template lstring string::split(rstring key) const { lstring result; result.split(key, data()); return result; }
^
./nall/string/markup/node.hpp:37:52: note: in instantiation of function template specialization 'nall::string::split<0>' requested here
lstring rules = string{query}.replace(" ", "").split(",");
^
13 warnings and 3 errors generated.
14 warnings and 3 errors generated.
make: *** [obj/processor-spc700.o] Error 1
make: *** [obj/processor-lr35902.o] Error 1
14 warnings and 3 errors generated.
make: *** [obj/processor-arm.o] Error 1

reicast core is not compiled

Hello,

the libretro-super download the Reicast source core, but does not compile it.
Is it normal?
For the moment I compile and install it manually.
Regards.

mame159 fails to build due to failing dependencies

I have Ubuntu 14.04.3 here and did a "libretro-fetch". Then I tried to "libretro-config" and "libretro-build" and 15 cores failed (I had last successfully compiled ~a year ago). I tried to build libretro-mame159 by itself using "make", but it failed due to a lot of zlib *.o files missing. I went to the 3rdparty/zlib subdirectory and did a "./configure --static", built zlib using "make" and copied the .o files to libretro-mame159/obj/sdl64/lib/zlib. I had to do more or less the same for expat.
Then I gave up on softfloat, as it does not have a MakeFile, CMakeLists.txt or different. "gcc softfloat.c" reports a missing "emu.h". Any hints?
It would be sweet if the libraries would check and report missing dependencies before compiling and failing. I had to install libsdl2-dev and libsdl2-ttf-dev while compiling mame159. Switching to CMake would make that easier, I guess...

libretro-super build fails on Mednafen core (Linux)

When following the compilation guide for Linux, the step "sh libretro-build.sh" fails to complete, displaying this message.

mednafen/trio/trio.c: In function ‘TrioOutStreamFileDescriptor’:
mednafen/trio/trio.c:3106:3: warning: implicit declaration of function ‘write’ [-Wimplicit-function-declaration]
mednafen/trio/trio.c: In function ‘TrioInStreamFileDescriptor’:
mednafen/trio/trio.c:5348:3: warning: implicit declaration of function ‘read’ [-Wimplicit-function-declaration]
"g++" -o mednafen_wswan_libretro.so libretro.o stubs.o mednafen/wswan/gfx.o mednafen/wswan/main.o mednafen/wswan/wswan-memory.o mednafen/wswan/v30mz.o mednafen/wswan/sound.o mednafen/wswan/tcache.o mednafen/wswan/interrupt.o mednafen/wswan/eeprom.o mednafen/wswan/rtc.o mednafen/mednafen.o mednafen/error.o mednafen/math_ops.o mednafen/settings.o mednafen/general.o mednafen/FileWrapper.o mednafen/FileStream.o mednafen/MemoryStream.o mednafen/Stream.o mednafen/state.o mednafen/endian.o mednafen/mempatcher.o mednafen/video/Deinterlacer.o mednafen/video/surface.o mednafen/sound/Blip_Buffer.o mednafen/sound/Stereo_Buffer.o mednafen/file.o mednafen/md5.o mednafen/trio/trio.o mednafen/trio/triostr.o -fPIC -shared -Wl,--no-undefined -Wl,--version-script=link.T
libretro-build.sh: 99: libretro-build.sh: Bad substitution

Wrong "platform" parameter passed to "make"

Wrong "platform" parameter passed to "make"

Hello,

I am using libretro-super on a Linux ARM box (odroid) to compile various cores.

I have the impression that the shell script does not pass the right parameters to "make" for building cores.

When I try to build libretro_mame for instance, the shell script issues the following command:
make -f Makefile.libretro TARGET=mame platform=unix-neon-cortexa9-hardfloat ...

But the makefile seems to expect something like:
make -f Makefile.libretro TARGET=mame platform=armv-unix-neon-cortexa9-hardfloat ...

In other words, "armv" does not appear in the "platform" string passed as an argument to "make". It is a problem because the compilation starts with standard UNIX settings, not with the ARM-specific ones.

I have the impression that the issue is due to the way the variable $FORMAT_COMPILER_TARGET is constructed in libretro-config.sh. But I don't know how to fix it properly.

Can someone propose a fix or tell me what I am doin wrong with libretro-super?

Thanks a lot.

Olivier

Normal output for building iOS core?

I see the #build_libretro_meteor is commented out, so why this error? I reviewed the script but not seeing where this- clang: error: unsupported option '-static-libgcc'
make: *** [meteor_libretro.dll] Error 1
Failed to build meteor

I don't see where this is getting called.
Xcode 5.1.1 OS X 10.9

-OUTPUT
CXX interpreter.cpp
CXX interpreter_thumb.cpp
CXX interpreter_arm.cpp
CXX io.cpp
CXX lcd.cpp
CXX keypad.cpp
CXX sound.cpp
CXX memory.cpp
CXX sram.cpp
CXX video.cpp
CXX timer.cpp
CXX audio.cpp
CXX input.cpp
CXX libretro.cpp
clang: error: unsupported option '-static-libgcc'
make: *** [meteor_libretro.dll] Error 1
Failed to build meteor
cp: meteor_libretro_ios.dylib: No such file or directory

libretro-build-android.sh on Cygwin (Windows), some cores fail

Hello,

Some cores fail to compile with g++ "Argument list too long" errors when I try to compile with libretro-build-android.sh (on Windows, using Cygwin). One example is nestopia. I have no idea why that would be, especially since most other cores (snes9x-next, mednafen, pcsx_rearmed, ...) build fine.

My sources are in a directory several levels deep:

/home/guayj/work/libretro-super/libretro-nestopia/source/core

but I wouldn't think this is uncommon, or even overly long, considering more than half comes from the project's paths themselves...

Any clues as to why I'm getting this problem would be appreciated. Thanks in advance.

IOS Build issues - Mupen64

Hi!

I am having build problems with the above core. All others work!
Is it only me?

mupen64plus-core/src/r4300/r4300.c:1017:20: error: use of undeclared identifier
'dynarec_setup_code'
dyna_start(dynarec_setup_code);
^
1 error generated.
make: *** [mupen64plus-core/src/r4300/r4300.o] Error 1
make: *** Waiting for unfinished jobs....
29 warnings generated.
Failed to build Mupen 64 (x86_64 dynamic)

What about libretro_mame ? Is this port not working for ios?

Using Latest Xcode, latest libretro-super

Thanks

Failed to build on FreeBSD

The script throws a couple of errors, see output log.

Looks like the whole build system isn't portable. Probable issues:

  • depends on GNU Make (it's gmake on FreeBSD)
  • depends on bash
  • depends on GNU extensions to Posix tools (e.g. expr)
  • doesn't catch errors (eg, it tries to copy a compiled .so file to somewhere after the 'make' call failed)

Just one example, line 50:

if [ "$(expr substr $(uname -s) 1 7)" = "MINGW32" ]; then
  • there is no command substr on FreeBSD.
  • even if it where, the call to expr doesn't do anything different like echo would do.

More portable would be:

if uname -a | grep -i Mingw32 > /dev/null 2>&1; then

If you need someone for testing, I'd be happy to help.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.