Code Monkey home page Code Monkey logo

psp-ports's Introduction

PSPDEV

CI CI-Docker Docker Pulls

Main PSP Repo for building the whole PSP Development environment in your local machine.

This program will automatically build and install the whole compiler and other tools used in the creation of Homebrew software for the Sony PlayStation Portable® video game system.

Table of Contents

Up and running

You can get started very quickly by grabbing the latest development pre-releases from the releases' page for your platform and extract them to the pspdev directory in your path.

Export the PSPDEV environment variable to point to the pspdev directory. For example:

export PSPDEV=~/pspdev
export PATH=$PATH:$PSPDEV/bin

What these scripts do

These scripts download (git clone) and install:

Requirements

  • Install gcc/clang, make, cmake, patch, git, texinfo, flex, bison, gettext, wget, gsl, gmp, mpfr, mpc, libusb, readline, libarchive, gpgme, bash, openssl and libtool.
  • If you don't have those. We offer a script to help you for installing dependencies:
sudo ./prepare.sh

Note

This script will automatically detect your operating system.

Installation from source

  1. Ensure that you have enough permissions for managing PSPDEV location (default to /usr/local/pspdev, but you can use a different path). PSPDEV location MUST NOT have spaces or special characters in its path! PSPDEV should be an absolute path. On Unix systems, if the command mkdir -p $PSPDEV fails for you, you can set access for the current user by running commands:

    export PSPDEV=/usr/local/pspdev
    sudo mkdir -p $PSPDEV
    sudo chown -R $USER: $PSPDEV
  2. Add this to your login script (example: ~/.bash_profile)

    export PSPDEV=/usr/local/pspdev
    export PATH=$PATH:$PSPDEV/bin

    NOTE: Ensure that you have full access to the PSPDEV path. You can change the PSPDEV path with the following requirements: Only use absolute paths, Do not use spaces., Only use Latin characters.

  3. Run build-all.sh

    ./build-all.sh

Tip

If you are upgrading from the previous version of the PSPDEV environment, it is highly recommended removing the content of the PSPDEV folder before upgrade. This is a necessary step after the major toolchain upgrade.

sudo rm -rf $PSPDEV

Docker generation

This repo also uses CI/CD to create a docker image called pspdev/pspdev:latest per change. This is useful if you're a developer that wants to create/port an application to the PSP. You can compile your project using this docker image.

Extra steps

If you want, you can JUST install the extra dependencies as psplinkusb and ebootsigner. To achieve this execute

./build-extra.sh

macOS

If you download the pre-built macOS binaries and get a security error such as "pspsh" cannot be opened because the developer cannot be verified., you can remove the quarantine attribute by running:

xattr -dr com.apple.quarantine path/to/prebuilt/pspdev

Local package builds

The toolchain (binutils, gcc), the SDK (pspsdk) and the host tools are built locally. However, the provided packages (psp-packages) are installed via psp-pacman (or a similar mechanism if not available), which fetches packages from GitHub releases. If you wish to build these packages locally, you might define the variable LOCAL_PACKAGE_BUILD which will force pacman to build the packages from source instead of downloading them:

LOCAL_PACKAGE_BUILD=1 ./build-all.sh

This is particularly useful if you are testing changes in the toolchain (i.e. gcc or binutils) and want to test your changes end to end. It can also be useful if you want a hermetic build and don't want to use any of the provided binaries.

Thanks

Special thanks to all the contributors and maintainers whose efforts and commitment drive the continuous improvement of this project.

psp-ports's People

Contributors

artart78 avatar brunorex avatar carstene1ns avatar ftpiano avatar gtzampanakis avatar iyenal avatar krystalgamer avatar libcg avatar oopo avatar samrh avatar sergiou87 avatar sharkwouter avatar spicedev 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

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

psp-ports's Issues

not all ports building

Not all ports build and install correctly. I'll start fixing them soon, if anyone could help it wouldbe appreciated.

libzzip installation adds broken links with useless names

This part can probably be removed all together:

install-exec-local:
@ for i in . $(DESTDIR)$(libdir)/libzzip*.so.13 \
; do test -d $$i && continue ; lib=`basename "$$i" .so.13` \
; echo "$(DESTDIR)$(libdir): ln -s $$lib.so.13 $$lib.so.10" \
; (cd $(DESTDIR)$(libdir) && ln -s $$lib.so.13 $$lib.so.10) \
; echo "$(DESTDIR)$(libdir): ln -s $$lib.so.13 $$lib.so.11" \
; (cd $(DESTDIR)$(libdir) && ln -s $$lib.so.13 $$lib.so.11) \
; echo "$(DESTDIR)$(libdir): ln -s $$lib.so.13 $$lib.so.12" \
; (cd $(DESTDIR)$(libdir) && ln -s $$lib.so.13 $$lib.so.12) \
; done ; true

Here is a picture of the result:
Screenshot from 2020-05-01 22-21-39

I can make a pull request, but it would be untested.

freetype in PR #17 was not configured correctly

Ah ha, here is the "someone" in PR #17 :-p. Unfortunately, this commit really gives me some trouble on Mac OS X:

  • Executable names like "psp-gcc.exe" & "psp-ar.exe" will not work in non-emulated POSIX environments, e.g., OS X in my case, due to the ".exe" suffix. However, this may not be a big deal, they could be easily detected & fixed.

  • There is no target named "install" in the make system, which means...well, breaks the outer build script in psplibraries/script/freetype.sh. Even a quick fix like this will not work:

    --- a/scripts/freetype.sh
    +++ b/scripts/freetype.sh
    @@ -1,3 +1,2 @@
    get_pspports freetype
    -run_autogen_build
    -
    +run_make -j `num_cpus`

    As a result, the library could not install itself properly. There will be no header files nor library files in usual places such as "/usr/local/pspdev/psp/include" & "/usr/local/pspdev/psp/lib", not even a "freetype-config" script to figure out where the files resides in, and what options & flags should be passed to compiler, this is really awkward...especially when composing Makefiles.

So...@gtzampanakis could you please fix these issues and make the library fit into the whole collection gracefully? Thanks in advance.

zziplib doesn't build

I just recompiled my entire SDK but zziplib doesn't build.

/bin/sh ../libtool --silent --mode=link --tag=CC psp-gcc -O2 -D_USE_MMAP -fomit-frame-pointer -Wall -Wstrict-prototypes -Wpointer-arith -Wsign-compare -Wmissing-declarations -L/usr/local/pspdev/psp/sdk/lib -lc -lpspuser -o zzipwrap --export-dynamic zzipwrap.o libzzipwrap.la -lc -lpspuser psp-gcc: error: unrecognized option '--export-dynamic'

It seems to be caused by the new version of GCC : http://gcc.gnu.org/gcc-4.6/changes.html
I'm trying to fix that ASAP.

OpenAL doesn't build

Getting some really strange errors here…

Building C object CMakeFiles/openal.dir/OpenAL32/alBuffer.obj
In file included from /tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/alBuffer.c:28:0:
/tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/Include/alMain.h:111:1: error: unknown type name ‘pthread_mutex_t’
In file included from /tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/alEffect.c:28:0:
/tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/Include/alMain.h:111:1: error: unknown type name ‘pthread_mutex_t’
In file included from /tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/Include/alMain.h:345:0,
                 from /tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/alEffect.c:28:
/tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/Include/alu.h: In function ‘RestoreFPUMode’:
/tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/Include/alu.h:250:41: warning: unused parameter ‘state’ [-Wunused-parameter]
In file included from /tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/Include/alMain.h:345:0,
                 from /tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/alBuffer.c:28:
/tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/Include/alu.h: In function ‘RestoreFPUMode’:
/tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/Include/alu.h:250:41: warning: unused parameter ‘state’ [-Wunused-parameter]
In file included from /tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/alAuxEffectSlot.c:28:0:
/tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/Include/alMain.h:111:1: error: unknown type name ‘pthread_mutex_t’
In file included from /tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/Include/alMain.h:345:0,
                 from /tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/alAuxEffectSlot.c:28:
/tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/Include/alu.h: In function ‘RestoreFPUMode’:
/tmp/psptoolchain/build/psplibraries/build/openal-soft-1.14/OpenAL32/Include/alu.h:250:41: warning: unused parameter ‘state’ [-Wunused-parameter]
make[2]: *** [CMakeFiles/openal.dir/OpenAL32/alAuxEffectSlot.obj] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [CMakeFiles/openal.dir/OpenAL32/alEffect.obj] Error 1
make[2]: *** [CMakeFiles/openal.dir/OpenAL32/alBuffer.obj] Error 1
make[1]: *** [CMakeFiles/openal.dir/all] Error 2

Any idea what's going on? I'm building on a Ubuntu 12.04 machine (that image was conveniently available…), this looks like there's an include missing somewhere.

sdl_mixer and libmikmod fail linking against pspsdk's libc

Here's what I get when I add -lSDL_mixer and -lmikmod to LIBS in my project's Makefile :

/usr/local/pspdev/lib/gcc/psp/4.6.3/../../../../psp/lib/libSDL_mixer.a(music_cmd.o): In function `MusicCMD_Start':
/home/geecko/psplibraries/build/SDL_mixer-1.2.11/music_cmd.c:166: undefined reference to `sigprocmask'
/home/geecko/psplibraries/build/SDL_mixer-1.2.11/music_cmd.c:173: undefined reference to `execvp'
/usr/local/pspdev/lib/gcc/psp/4.6.3/../../../../psp/lib/libSDL_mixer.a(music_cmd.o): In function `MusicCMD_Stop':
/home/geecko/psplibraries/build/SDL_mixer-1.2.11/music_cmd.c:198: undefined reference to `waitpid'
/usr/local/pspdev/lib/gcc/psp/4.6.3/../../../../psp/lib/libSDL_mixer.a(music_cmd.o): In function `MusicCMD_Active':
/home/geecko/psplibraries/build/SDL_mixer-1.2.11/music_cmd.c:234: undefined reference to `waitpid'
/usr/local/pspdev/lib/gcc/psp/4.6.3/../../../../psp/lib/libmikmod.a(mdriver.o): In function `MD_Access':
/home/geecko/psplibraries/build/libmikmod-3.2.0-beta2/libmikmod/../playercode/mdriver.c:913: undefined reference to `getuid'
/home/geecko/psplibraries/build/libmikmod-3.2.0-beta2/libmikmod/../playercode/mdriver.c:915: undefined reference to `getgid'
/usr/local/pspdev/lib/gcc/psp/4.6.3/../../../../psp/lib/libmikmod.a(mdriver.o): In function `MD_DropPrivileges':
/home/geecko/psplibraries/build/libmikmod-3.2.0-beta2/libmikmod/../playercode/mdriver.c:927: undefined reference to `geteuid'
/home/geecko/psplibraries/build/libmikmod-3.2.0-beta2/libmikmod/../playercode/mdriver.c:928: undefined reference to `getuid'
/home/geecko/psplibraries/build/libmikmod-3.2.0-beta2/libmikmod/../playercode/mdriver.c:936: undefined reference to `getpwnam'
/home/geecko/psplibraries/build/libmikmod-3.2.0-beta2/libmikmod/../playercode/mdriver.c:940: undefined reference to `setuid'
/home/geecko/psplibraries/build/libmikmod-3.2.0-beta2/libmikmod/../playercode/mdriver.c:930: undefined reference to `getuid'
/home/geecko/psplibraries/build/libmikmod-3.2.0-beta2/libmikmod/../playercode/mdriver.c:930: undefined reference to `setuid'

These functions are unavailable on the PSP.

libmad doesn't build - fix proposal

Uncommenting exit in libmad.sh it says:
psp-ar: ../lib/libmad.a: No such file or directory

This can be fixed by creating 'lib' folder inside psp-ports/libmad

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.