diff --git a/configure.ac b/configure.ac index 5fa62726..be489a9e 100644 --- a/configure.ac +++ b/configure.ac @@ -33,6 +33,8 @@ AC_CHECK_LIB([z], [compress]) AC_C_CONST AC_C_BIGENDIAN +AC_ARG_WITH(pthread, [ --with-pthread build with pthread support], [], [with_pthread=yes]) + # Checks for library functions. AC_FUNC_MEMCMP AC_CHECK_FUNCS([getcwd strchr]) @@ -72,6 +74,10 @@ AC_SUBST(PSPSDK_LIBDIR) # CFLAGS and CXXFLAGS used to build pspsdk libraries. PSPSDK_CFLAGS="$CFLAGS -mno-gpopt -Wall" PSPSDK_CXXFLAGS="$PSPSDK_CFLAGS -fno-exceptions -fno-rtti" +if test "$with_pthread" = no ; then + PSPSDK_CFLAGS="$PSPSDK_CFLAGS -DPSP_WITHOUT_PTHREAD" +fi + AC_SUBST(PSPSDK_CFLAGS) AC_SUBST(PSPSDK_CXXFLAGS) diff --git a/src/libcglue/init.c b/src/libcglue/init.c index d78ac6a3..0a8f810f 100644 --- a/src/libcglue/init.c +++ b/src/libcglue/init.c @@ -29,7 +29,7 @@ void __deinit_mutex(); extern int sce_newlib_nocreate_thread_in_start __attribute__((weak)); -#ifdef F___libpthreadglue_init +#if defined(F___libpthreadglue_init) && !defined(PSP_WITHOUT_PTHREAD) /* Note: This function is being called from __libcglue_init. * It is a weak function because can be override by user program */ @@ -38,6 +38,8 @@ void __libpthreadglue_init() { pthread_init(); } +#elif defined(PSP_WITHOUT_PTHREAD) +#define __libpthreadglue_init() do{}while(0) #else void __libpthreadglue_init(); #endif @@ -113,4 +115,4 @@ void exit(int retval) { _exit(retval); } -#endif \ No newline at end of file +#endif diff --git a/src/libpthreadglue/osal.c b/src/libpthreadglue/osal.c index f7128d5b..33b33fe4 100644 --- a/src/libpthreadglue/osal.c +++ b/src/libpthreadglue/osal.c @@ -9,6 +9,7 @@ * */ +#ifndef PSP_WITHOUT_PTHREAD #include #include #include @@ -786,3 +787,5 @@ int pte_osAtomicIncrement(int *pdest) return val; } #endif + +#endif /* PSP_WITHOUT_PTHREAD */ diff --git a/src/libpthreadglue/tls-helper.c b/src/libpthreadglue/tls-helper.c index 797f6d51..84563c92 100644 --- a/src/libpthreadglue/tls-helper.c +++ b/src/libpthreadglue/tls-helper.c @@ -9,6 +9,7 @@ * */ +#ifndef PSP_WITHOUT_PTHREAD #include #include @@ -251,4 +252,6 @@ pte_osResult pte_osTlsFree(unsigned int index) { return pteTlsFree(index); } -#endif \ No newline at end of file +#endif + +#endif /* PSP_WITHOUT_PTHREAD */