Implement some missings todo, and add libpsprtc as standard library

Remove -lm from examples because is also part of standard libraries
This commit is contained in:
Francisco Javier Trujillo Mata
2021-11-16 11:24:36 +01:00
parent c0f526059a
commit 77ab536474
29 changed files with 97 additions and 55 deletions

View File

@@ -13,10 +13,11 @@ RUN cd /src && \
make -j $(getconf _NPROCESSORS_ONLN) && \
make -j $(getconf _NPROCESSORS_ONLN) install
## gcc needs to include libcglue libpsputility libpspnet_inet libpspnet_resolver libpspuser libpspkernel
## gcc needs to include libcglue libpsputility libpsprtc libpspnet_inet libpspnet_resolver libpspuser libpspkernel
## from pspsdk to be able to build executables, because they are part of the standard libraries
RUN ln -sf "$PSPDEV/psp/sdk/lib/libcglue.a" "$PSPDEV/psp/lib/libcglue.a" || { exit 1; }
RUN ln -sf "$PSPDEV/psp/sdk/lib/libpsputility.a" "$PSPDEV/psp/lib/libpsputility.a" || { exit 1; }
RUN ln -sf "$PSPDEV/psp/sdk/lib/libpsprtc.a" "$PSPDEV/psp/lib/libpsprtc.a" || { exit 1; }
RUN ln -sf "$PSPDEV/psp/sdk/lib/libpspnet_inet.a" "$PSPDEV/psp/lib/libpspnet_inet.a" || { exit 1; }
RUN ln -sf "$PSPDEV/psp/sdk/lib/libpspnet_resolver.a" "$PSPDEV/psp/lib/libpspnet_resolver.a" || { exit 1; }
RUN ln -sf "$PSPDEV/psp/sdk/lib/libpspuser.a" "$PSPDEV/psp/lib/libpspuser.a" || { exit 1; }

View File

@@ -8,9 +8,11 @@ RANLIB = @PSP_RANLIB@
CPPFLAGS = -I$(top_srcdir)/src/base \
-I$(top_srcdir)/src/debug \
-I$(top_srcdir)/src/sdk \
-I$(top_srcdir)/src/kernel \
-I$(top_srcdir)/src/net \
-I$(top_srcdir)/src/sdk \
-I$(top_srcdir)/src/user \
-I$(top_srcdir)/src/rtc \
-I$(top_srcdir)/src/user \
-I$(top_srcdir)/src/utility
CFLAGS = @PSPSDK_CFLAGS@
@@ -25,7 +27,7 @@ FDMAN_OBJS = __descriptor_data_pool.o __descriptormap.o __fdman_init.o __fdman_g
GLUE_OBJS = __fill_stat.o __psp_heap_blockid.o __psp_free_heap.o _fork.o _wait.o _open.o _close.o _read.o _write.o _fstat.o \
_stat.o lstat.o access.o _fcntl.o _lseek.o chdir.o mkdir.o rmdir.o getdents.o _seekdir.o _link.o _unlink.o \
_rename.o getcwd.o _getpid.o _kill.o _sbrk.o _gettimeofday.o _times.o _internal_malloc_lock.o _internal_malloc_unlock.o \
_rename.o _getpid.o _kill.o _sbrk.o _gettimeofday.o _times.o _internal_malloc_lock.o _internal_malloc_unlock.o \
_isatty.o symlink.o truncate.o chmod.o fchmod.o fchmodat.o pathconf.o readlink.o utime.o fchown.o getentropy.o

View File

@@ -36,6 +36,7 @@
#include <pspthreadman.h>
#include <psputils.h>
#include <pspsdk.h>
#include <psprtc.h>
#include "fdman.h"
@@ -617,13 +618,6 @@ int _rename(const char *old, const char *new)
}
#endif
#ifdef F_getcwd
char *getcwd(char *buf, size_t len) {
strncpy(buf, __cwd, len);
return buf;
}
#endif
#ifdef F__getpid
pid_t _getpid(void)
{
@@ -642,7 +636,7 @@ int _kill(pid_t pid, int sig)
pid_t _fork(void)
{
errno = ENOSYS;
return (pid_t) -1;
return (pid_t) -1; /* not supported */
}
#endif
@@ -650,7 +644,7 @@ pid_t _fork(void)
pid_t _wait(int *unused)
{
errno = ENOSYS;
return (pid_t) -1;
return (pid_t) -1; /* not supported */
}
#endif
@@ -786,45 +780,62 @@ int truncate(const char *path, off_t length)
int _isatty(int fd)
{
errno = ENOTTY;
return 0;
return -1; /* not supported */
}
#endif
#ifdef F_chmod
int chmod(const char *pathname, mode_t mode)
{
// TODO: Implement proper functionality
return 0;
SceIoStat psp_stat;
char dest[MAXNAMLEN + 1];
int ret;
if(__path_absolute(pathname, dest, MAXNAMLEN) < 0) {
errno = ENAMETOOLONG;
return -1;
}
ret = sceIoGetstat(dest, &psp_stat);
if (ret < 0) {
return __set_errno(ret);
}
psp_stat.st_mode = (SceMode)mode;
ret = sceIoChstat(dest, &psp_stat, 0x0001);
if (ret < 0) {
return __set_errno(ret);
}
return 0;
}
#endif
#ifdef F_fchmod
int fchmod(int filedes, mode_t mode)
int fchmod(int fd, mode_t mode)
{
// TODO: Implement proper functionality
return 0;
return chmod(__descriptormap[fd]->filename, mode);
}
#endif
#ifdef F_fchmodat
int fchmodat(int fd, const char *path, mode_t mode, int flag)
{
// TODO: Implement proper functionality
return 0;
return chmod(path, mode);
}
#endif
#ifdef F_pathconf
long int pathconf(const char *path, int name) {
// TODO: Implement proper functionality
return 0;
errno = ENOSYS;
return -1; /* not supported */
}
#endif
#ifdef F_readlink
ssize_t readlink(const char *path, char *buf, size_t bufsiz) {
// TODO: Implement proper functionality
return 0;
errno = ENOSYS;
return -1; /* not supported */
}
#endif
@@ -834,18 +845,46 @@ struct utimbuf {
time_t modtime; /* Modification time */
};
int utime(const char *path, const struct utimbuf *times)
int utime(const char *pathname, const struct utimbuf *times)
{
// TODO: Implement proper functionality
return 0;
SceIoStat psp_stat;
char dest[MAXNAMLEN + 1];
int ret;
if(__path_absolute(pathname, dest, MAXNAMLEN) < 0) {
errno = ENAMETOOLONG;
return -1;
}
ret = sceIoGetstat(dest, &psp_stat);
if (ret < 0) {
return __set_errno(ret);
}
ret = sceRtcSetTime_t((pspTime *)&psp_stat.sce_st_atime, times->actime);
if (ret < 0) {
return __set_errno(ret);
}
ret = sceRtcSetTime_t((pspTime *)&psp_stat.sce_st_mtime, times->modtime);
if (ret < 0) {
return __set_errno(ret);
}
ret = sceIoChstat(dest, &psp_stat, 0x0030);
if (ret < 0) {
return __set_errno(ret);
}
return 0;
}
#endif
#ifdef F_fchown
int fchown(int fd, uid_t owner, gid_t group)
{
// TODO: Implement proper functionality
return 0;
errno = ENOSYS;
return -1; /* not supported */
}
#endif

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS = -lpspaudiolib -lpspaudio -lm
LIBS = -lpspaudiolib -lpspaudio
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Audiolib Wave Generator

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lm
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = BeginObject Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lpsprtc
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Blit Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lm
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Celshading Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lm
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Cube Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lm
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Environment Mapping Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lm
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Integer Drawing Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lm
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Lights Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgu -lm
LIBS= -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Logic Sample

View File

@@ -9,7 +9,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS = -lpspgum -lpspgu -lm
LIBS = -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = MIP Mapping Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lm
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Morph Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS = -lpspgum -lpspgu -lm
LIBS = -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Simultaneous Morphing and Skinning Sample

View File

@@ -9,7 +9,7 @@ CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
LIBDIR =
LIBS = -lpspgum -lpspgu -lm
LIBS = -lpspgum -lpspgu
LDFLAGS =
EXTRA_TARGETS = EBOOT.PBP

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lm
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Reflection Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS = -lpspgum -lpspgu -lm
LIBS = -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Render-To-Texture Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS = -lpspgum -lpspgu -lm
LIBS = -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Shadow Projection Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lm
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Signals Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS = -lpspgum -lpspgu -lm
LIBS = -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Matrix Skinning Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lpsprtc
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Memory Speed Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lm
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = convlogo EBOOT.PBP
PSP_EBOOT_TITLE = adresd - spharm v1.0

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lm
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Spline Surface Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lm
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Sprite Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lm
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = GUFont Sample by McZonk

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS = -lpspgum -lpspgu -lm
LIBS = -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Timing Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lm -lpsprtc
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Vertex Speed Sample

View File

@@ -8,7 +8,7 @@ ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lm
LIBS= -lpspgum -lpspgu
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Depth Buffer Fog Sample