Comments (8)
Try now
from quake3e.
Still trying.
from quake3e.
Progress so far: everything builds except for
code/qcommon/net_ip.c
code/unix/unix_main.c
code/unix/unix_shared.c
The PS3 build, if it comes to life, will have to have some properties due to how GameOS works:
- not use dlopen
- use static dependencies everywhere
from quake3e.
Dang no dlopen? Guess your work can't be brought over to https://github.com/etfdevs/ETe 😔
from quake3e.
@ensiform Maybe hope isn't lost. There is dlopen in the toolchain, but I don't know if it works.
from quake3e.
@grepwood please post recent compilation log somewhere
from quake3e.
Working with commit 5f5bdc9f8a5315dd37a60731c2478b68f0406fc3
of github.com/ec-/Quake3e master branch.
Source files with compilation errors:
- code/qcommon/net_ip.c
- code/unix/unix_main.c
- code/unix/unix_shared.c
Compilation of code/qcommon/net_ip.c, take 1:
DED_CC code/qcommon/net_ip.c
In file included from code/qcommon/../qcommon/q_shared.h:143:0,
from code/qcommon/net_ip.c:23:
code/qcommon/../qcommon/q_platform.h:185:2: error: #error "Operating system not supported"
#error "Operating system not supported"
^~~~~
code/qcommon/../qcommon/q_platform.h:189:2: error: #error "Architecture not supported"
#error "Architecture not supported"
^~~~~
code/qcommon/../qcommon/q_platform.h:193:2: error: #error "ID_INLINE not defined"
#error "ID_INLINE not defined"
^~~~~
code/qcommon/../qcommon/q_platform.h:238:2: error: #error "Endianness not defined"
#error "Endianness not defined"
^~~~~
In file included from code/qcommon/net_ip.c:23:0:
code/qcommon/../qcommon/q_shared.h:535:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int'
static ID_INLINE int VectorCompare( const vec3_t v1, const vec3_t v2 ) {
^~~
code/qcommon/../qcommon/q_shared.h:542:8: error: unknown type name 'ID_INLINE'
static ID_INLINE vec_t VectorLength( const vec3_t v ) {
^~~~~~~~~
code/qcommon/../qcommon/q_shared.h:542:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'VectorLength'
static ID_INLINE vec_t VectorLength( const vec3_t v ) {
^~~~~~~~~~~~
code/qcommon/../qcommon/q_shared.h:546:8: error: unknown type name 'ID_INLINE'
static ID_INLINE vec_t VectorLengthSquared( const vec3_t v ) {
^~~~~~~~~
code/qcommon/../qcommon/q_shared.h:546:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'VectorLengthSquared'
static ID_INLINE vec_t VectorLengthSquared( const vec3_t v ) {
^~~~~~~~~~~~~~~~~~~
code/qcommon/../qcommon/q_shared.h:550:8: error: unknown type name 'ID_INLINE'
static ID_INLINE vec_t Distance( const vec3_t p1, const vec3_t p2 ) {
^~~~~~~~~
code/qcommon/../qcommon/q_shared.h:550:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Distance'
static ID_INLINE vec_t Distance( const vec3_t p1, const vec3_t p2 ) {
^~~~~~~~
code/qcommon/../qcommon/q_shared.h:557:8: error: unknown type name 'ID_INLINE'
static ID_INLINE vec_t DistanceSquared( const vec3_t p1, const vec3_t p2 ) {
^~~~~~~~~
code/qcommon/../qcommon/q_shared.h:557:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'DistanceSquared'
static ID_INLINE vec_t DistanceSquared( const vec3_t p1, const vec3_t p2 ) {
^~~~~~~~~~~~~~~
code/qcommon/../qcommon/q_shared.h:566:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
static ID_INLINE void VectorNormalizeFast( vec3_t v )
^~~~
code/qcommon/../qcommon/q_shared.h:577:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
static ID_INLINE void VectorInverse( vec3_t v ){
^~~~
code/qcommon/../qcommon/q_shared.h:583:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
static ID_INLINE void CrossProduct( const vec3_t v1, const vec3_t v2, vec3_t cross ) {
^~~~
In file included from code/qcommon/net_ip.c:24:0:
code/qcommon/../qcommon/qcommon.h:410:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'float'
static ID_INLINE float _vmf(intptr_t x)
^~~~~
code/qcommon/../qcommon/qcommon.h:957:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'unsigned'
static ID_INLINE unsigned int log2pad( unsigned int v, int roundup )
^~~~~~~~
code/qcommon/net_ip.c:83:11: fatal error: net/if.h: No such file or directory
# include <net/if.h>
^~~~~~~~~~
compilation terminated.
make[2]: *** [Makefile:1106: build/release-psl1ght-ppc64/ded/net_ip.o] Błąd 1
make[2]: Opuszczenie katalogu '/home/mdec/git/Quake3e'
make[1]: *** [Makefile:562: targets] Błąd 2
make[1]: Opuszczenie katalogu '/home/mdec/git/Quake3e'
make: *** [Makefile.ps3:680: release] Błąd 2
Conclusion from take 1 - PS3 is not identified as any existing platform, so its support should be defined in code/qcommon/q_platform.h.
Take 2
git diff:
--- a/code/qcommon/q_platform.h
+++ b/code/qcommon/q_platform.h
@@ -149,6 +149,20 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#endif // __FreeBSD__ || __NetBSD__ || __OpenBSD__
+// ================================ PS3 ====================================
+
+#if defined(PS3)
+# define __BSD__
+# include <sys/types.h>
+# include <machine/endian.h>
+# define OS_STRING "GameOS"
+# define ID_INLINE inline
+# define PATH_SEP '/'
+# define ARCH_STRING "ppc64"
+# define Q3_BIG_ENDIAN
+# define DLL_EXT ".so"
+#endif
+
// ================================ Q3VM ===================================
#ifdef Q3_VM
Compilation error in take 2:
DED_CC code/qcommon/net_ip.c
code/qcommon/net_ip.c:83:11: fatal error: net/if.h: No such file or directory
# include <net/if.h>
Conclusion from take 2:
- net/if.h does not exist in https://github.com/ps3dev/PSL1GHT
find /usr/local/ps3dev -type d -name net
yielded/usr/local/ps3dev/ppu/include/net
which contains net.h netctl.h netdb.h poll.h select.h socket.h
Take 3: systematically comment out missing headers from code/qcommon/net_ip.c to establish an absolute list of missing headers, to get a better idea of missing functionality in the toolchain
Result of take 3:
Missing headers:
- net/if.h
- sys/ioctl.h
- ifaddrs.h
Compilation error in take 3:
code/qcommon/net_ip.c:158:26: error: field 'addr' has incomplete type
struct sockaddr_storage addr;
^~~~
code/qcommon/net_ip.c:159:26: error: field 'netmask' has incomplete type
struct sockaddr_storage netmask;
^~~~~~~
code/qcommon/net_ip.c: In function 'NetadrToSockadr':
code/qcommon/net_ip.c:249:30: error: dereferencing pointer to incomplete type 'struct sockaddr_in6'
((struct sockaddr_in6 *)s)->sin6_family = AF_INET6;
^~
code/qcommon/net_ip.c:250:44: error: dereferencing pointer to incomplete type 'struct in6_addr'
((struct sockaddr_in6 *)s)->sin6_addr = * ((struct in6_addr *) &a->ipv._6);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
code/qcommon/net_ip.c:256:52: error: invalid use of undefined type 'struct ipv6_mreq'
((struct sockaddr_in6 *)s)->sin6_addr = curgroup.ipv6mr_multiaddr;
^
code/qcommon/net_ip.c: In function 'SockadrToNetadr':
code/qcommon/net_ip.c:270:7: error: dereferencing pointer to incomplete type 'const struct sockaddr_storage'
if (s->ss_family == AF_INET) {
^~
code/qcommon/net_ip.c: In function 'gai_error_str':
code/qcommon/net_ip.c:314:8: error: 'EAI_NONAME' undeclared (first use in this function); did you mean 'AI_CANONNAME'?
case EAI_NONAME:
^~~~~~~~~~
AI_CANONNAME
code/qcommon/net_ip.c:314:8: note: each undeclared identifier is reported only once for each function it appears in
code/qcommon/net_ip.c:317:11: warning: implicit declaration of function 'gai_strerror'; did you mean 'strerror'? [-Wimplicit-function-declaration]
return gai_strerror( ecode );
^~~~~~~~~~~~
strerror
code/qcommon/net_ip.c:317:11: warning: return makes pointer from integer without a cast [-Wint-conversion]
return gai_strerror( ecode );
^~~~~~~~~~~~~~~~~~~~~
code/qcommon/net_ip.c: In function 'Sys_StringToSockaddr':
code/qcommon/net_ip.c:342:11: warning: implicit declaration of function 'getaddrinfo' [-Wimplicit-function-declaration]
retval = getaddrinfo(s, NULL, hintsp, &res);
^~~~~~~~~~~
code/qcommon/net_ip.c:378:4: warning: implicit declaration of function 'freeaddrinfo'; did you mean 'readlink'? [-Wimplicit-function-declaration]
freeaddrinfo( res );
^~~~~~~~~~~~
readlink
code/qcommon/net_ip.c: In function 'Sys_SockaddrToString':
code/qcommon/net_ip.c:406:21: error: invalid application of 'sizeof' to incomplete type 'struct sockaddr_in6'
inputlen = sizeof(struct sockaddr_in6);
^~~~~~
code/qcommon/net_ip.c:411:7: warning: implicit declaration of function 'getnameinfo' [-Wimplicit-function-declaration]
if ( getnameinfo( (const struct sockaddr *)input, inputlen, dest, destlen, NULL, 0, NI_NUMERICHOST ) && destlen > 0 )
^~~~~~~~~~~
code/qcommon/net_ip.c: In function 'Sys_StringToAdr':
code/qcommon/net_ip.c:422:26: error: storage size of 'sadr' isn't known
struct sockaddr_storage sadr;
^~~~
code/qcommon/net_ip.c:422:26: warning: unused variable 'sadr' [-Wunused-variable]
code/qcommon/net_ip.c: In function 'NET_AdrToString':
code/qcommon/net_ip.c:539:27: error: storage size of 'sadr' isn't known
struct sockaddr_storage sadr;
^~~~
code/qcommon/net_ip.c:539:27: warning: unused variable 'sadr' [-Wunused-variable]
code/qcommon/net_ip.c: In function 'NET_GetPacket':
code/qcommon/net_ip.c:605:26: error: storage size of 'from' isn't known
struct sockaddr_storage from;
^~~~
code/qcommon/net_ip.c:605:26: warning: unused variable 'from' [-Wunused-variable]
code/qcommon/net_ip.c: In function 'Sys_SendPacket':
code/qcommon/net_ip.c:726:26: error: storage size of 'addr' isn't known
struct sockaddr_storage addr;
^~~~
code/qcommon/net_ip.c:773:81: error: invalid application of 'sizeof' to incomplete type 'struct sockaddr_in6'
ret = sendto( ip6_socket, data, length, 0, (struct sockaddr *) &addr, sizeof(struct sockaddr_in6) );
^~~~~~
code/qcommon/net_ip.c:726:26: warning: unused variable 'addr' [-Wunused-variable]
struct sockaddr_storage addr;
^~~~
code/qcommon/net_ip.c: In function 'NET_IPSocket':
code/qcommon/net_ip.c:100:24: warning: implicit declaration of function 'ioctl'; did you mean 'iscntrl'? [-Wimplicit-function-declaration]
# define ioctlsocket ioctl
^
code/qcommon/net_ip.c:938:6: note: in expansion of macro 'ioctlsocket'
if( ioctlsocket( newsocket, FIONBIO, &_true ) == SOCKET_ERROR ) {
^~~~~~~~~~~
code/qcommon/net_ip.c:938:30: error: 'FIONBIO' undeclared (first use in this function); did you mean 'SO_NBIO'?
if( ioctlsocket( newsocket, FIONBIO, &_true ) == SOCKET_ERROR ) {
^~~~~~~
SO_NBIO
code/qcommon/net_ip.c: In function 'NET_IP6Socket':
code/qcommon/net_ip.c:989:22: error: storage size of 'address' isn't known
struct sockaddr_in6 address;
^~~~~~~
code/qcommon/net_ip.c:1012:30: error: 'FIONBIO' undeclared (first use in this function); did you mean 'SO_NBIO'?
if( ioctlsocket( newsocket, FIONBIO, &_true ) == SOCKET_ERROR ) {
^~~~~~~
SO_NBIO
code/qcommon/net_ip.c:1034:23: error: 'in6addr_any' undeclared (first use in this function); did you mean 'in_addr_t'?
address.sin6_addr = in6addr_any;
^~~~~~~~~~~
in_addr_t
code/qcommon/net_ip.c:989:22: warning: unused variable 'address' [-Wunused-variable]
struct sockaddr_in6 address;
^~~~~~~
code/qcommon/net_ip.c: In function 'NET_SetMulticast6':
code/qcommon/net_ip.c:1074:22: error: storage size of 'addr' isn't known
struct sockaddr_in6 addr;
^~~~
code/qcommon/net_ip.c:1086:18: error: invalid use of undefined type 'struct ipv6_mreq'
memcpy(&curgroup.ipv6mr_multiaddr, &addr.sin6_addr, sizeof(curgroup.ipv6mr_multiaddr));
^
code/qcommon/net_ip.c:1086:69: error: invalid use of undefined type 'struct ipv6_mreq'
memcpy(&curgroup.ipv6mr_multiaddr, &addr.sin6_addr, sizeof(curgroup.ipv6mr_multiaddr));
^
code/qcommon/net_ip.c:1093:11: error: invalid use of undefined type 'struct ipv6_mreq'
curgroup.ipv6mr_interface = if_nametoindex(net_mcast6iface->string);
^
code/qcommon/net_ip.c:1093:31: warning: implicit declaration of function 'if_nametoindex' [-Wimplicit-function-declaration]
curgroup.ipv6mr_interface = if_nametoindex(net_mcast6iface->string);
^~~~~~~~~~~~~~
code/qcommon/net_ip.c:1097:11: error: invalid use of undefined type 'struct ipv6_mreq'
curgroup.ipv6mr_interface = 0;
^
code/qcommon/net_ip.c:1074:22: warning: unused variable 'addr' [-Wunused-variable]
struct sockaddr_in6 addr;
^~~~
code/qcommon/net_ip.c: In function 'NET_JoinMulticast6':
code/qcommon/net_ip.c:1114:5: warning: implicit declaration of function 'IN6_IS_ADDR_MULTICAST'; did you mean 'IN_MULTICAST'? [-Wimplicit-function-declaration]
if(IN6_IS_ADDR_MULTICAST(&boundto.sin6_addr) || IN6_IS_ADDR_UNSPECIFIED(&boundto.sin6_addr))
^~~~~~~~~~~~~~~~~~~~~
IN_MULTICAST
code/qcommon/net_ip.c:1114:35: error: invalid use of undefined type 'struct sockaddr_in6'
if(IN6_IS_ADDR_MULTICAST(&boundto.sin6_addr) || IN6_IS_ADDR_UNSPECIFIED(&boundto.sin6_addr))
^
code/qcommon/net_ip.c:1114:50: warning: implicit declaration of function 'IN6_IS_ADDR_UNSPECIFIED' [-Wimplicit-function-declaration]
if(IN6_IS_ADDR_MULTICAST(&boundto.sin6_addr) || IN6_IS_ADDR_UNSPECIFIED(&boundto.sin6_addr))
^~~~~~~~~~~~~~~~~~~~~~~
code/qcommon/net_ip.c:1114:82: error: invalid use of undefined type 'struct sockaddr_in6'
if(IN6_IS_ADDR_MULTICAST(&boundto.sin6_addr) || IN6_IS_ADDR_UNSPECIFIED(&boundto.sin6_addr))
^
In file included from /usr/local/ps3dev/ppu/include/netinet/in.h:92:0,
from code/qcommon/net_ip.c:81:
code/qcommon/net_ip.c:1121:78: error: invalid use of undefined type 'struct sockaddr_in6'
if((multicast6_socket = NET_IP6Socket(net_mcast6addr->string, ntohs(boundto.sin6_port), NULL, &err)) == INVALID_SOCKET)
^
/usr/local/ps3dev/ppu/include/arpa/inet.h:10:26: note: in definition of macro 'ntohs'
#define ntohs(netshort) (netshort)
^~~~~~~~
code/qcommon/net_ip.c:1128:13: error: invalid use of undefined type 'struct ipv6_mreq'
if(curgroup.ipv6mr_interface)
^
code/qcommon/net_ip.c:1130:37: error: 'IPPROTO_IPV6' undeclared (first use in this function); did you mean 'IPPROTO_IP'?
if (setsockopt(multicast6_socket, IPPROTO_IPV6, IPV6_MULTICAST_IF,
^~~~~~~~~~~~
IPPROTO_IP
code/qcommon/net_ip.c:1130:51: error: 'IPV6_MULTICAST_IF' undeclared (first use in this function); did you mean 'IP_MULTICAST_IF'?
if (setsockopt(multicast6_socket, IPPROTO_IPV6, IPV6_MULTICAST_IF,
^~~~~~~~~~~~~~~~~
IP_MULTICAST_IF
code/qcommon/net_ip.c:1131:24: error: invalid use of undefined type 'struct ipv6_mreq'
(char *) &curgroup.ipv6mr_interface, sizeof(curgroup.ipv6mr_interface)) < 0)
^
code/qcommon/net_ip.c:1131:58: error: invalid use of undefined type 'struct ipv6_mreq'
(char *) &curgroup.ipv6mr_interface, sizeof(curgroup.ipv6mr_interface)) < 0)
^
code/qcommon/net_ip.c:1144:50: error: 'IPV6_JOIN_GROUP' undeclared (first use in this function)
if (setsockopt(multicast6_socket, IPPROTO_IPV6, IPV6_JOIN_GROUP, (char *) &curgroup, sizeof(curgroup)))
^~~~~~~~~~~~~~~
code/qcommon/net_ip.c:1144:93: error: invalid application of 'sizeof' to incomplete type 'struct ipv6_mreq'
if (setsockopt(multicast6_socket, IPPROTO_IPV6, IPV6_JOIN_GROUP, (char *) &curgroup, sizeof(curgroup)))
^
code/qcommon/net_ip.c: In function 'NET_LeaveMulticast6':
code/qcommon/net_ip.c:1165:34: error: 'IPPROTO_IPV6' undeclared (first use in this function); did you mean 'IPPROTO_IP'?
setsockopt(multicast6_socket, IPPROTO_IPV6, IPV6_LEAVE_GROUP, (char *) &curgroup, sizeof(curgroup));
^~~~~~~~~~~~
IPPROTO_IP
code/qcommon/net_ip.c:1165:48: error: 'IPV6_LEAVE_GROUP' undeclared (first use in this function)
setsockopt(multicast6_socket, IPPROTO_IPV6, IPV6_LEAVE_GROUP, (char *) &curgroup, sizeof(curgroup));
^~~~~~~~~~~~~~~~
code/qcommon/net_ip.c:1165:92: error: invalid application of 'sizeof' to incomplete type 'struct ipv6_mreq'
setsockopt(multicast6_socket, IPPROTO_IPV6, IPV6_LEAVE_GROUP, (char *) &curgroup, sizeof(curgroup));
^
code/qcommon/net_ip.c: In function 'NET_AddLocalAddress':
code/qcommon/net_ip.c:1366:21: error: invalid application of 'sizeof' to incomplete type 'struct sockaddr_in6'
addrlen = sizeof(struct sockaddr_in6);
^~~~~~
code/qcommon/net_ip.c: In function 'NET_GetLocalAddress':
code/qcommon/net_ip.c:1391:7: warning: implicit declaration of function 'gethostname'; did you mean 'gethostbyname'? [-Wimplicit-function-declaration]
if ( gethostname( hostname, sizeof( hostname ) ) )
^~~~~~~~~~~
gethostbyname
code/qcommon/net_ip.c:1398:7: warning: implicit declaration of function 'getifaddrs'; did you mean 'getitimer'? [-Wimplicit-function-declaration]
if ( getifaddrs( &ifap ) )
^~~~~~~~~~
getitimer
code/qcommon/net_ip.c:1402:46: error: dereferencing pointer to incomplete type 'struct ifaddrs'
for( search = ifap; search; search = search->ifa_next )
^~
code/qcommon/net_ip.c:1405:27: error: 'IFF_UP' undeclared (first use in this function)
if ( ifap->ifa_flags & IFF_UP )
^~~~~~
code/qcommon/net_ip.c:1409:3: warning: implicit declaration of function 'freeifaddrs' [-Wimplicit-function-declaration]
freeifaddrs( ifap );
^~~~~~~~~~~
code/qcommon/net_ip.c: In function 'NET_Sleep':
code/qcommon/net_ip.c:1853:11: warning: implicit declaration of function 'select'; did you mean 'sleep'? [-Wimplicit-function-declaration]
retval = select( highestfd + 1, &fdr, NULL, NULL, &tv );
^~~~~~
sleep
code/qcommon/net_ip.c: At top level:
code/qcommon/net_ip.c:137:25: error: storage size of 'curgroup' isn't known
static struct ipv6_mreq curgroup;
^~~~~~~~
code/qcommon/net_ip.c:139:28: error: storage size of 'boundto' isn't known
static struct sockaddr_in6 boundto;
^~~~~~~
select
from net_ip.c line 1853 is defined in net/select.h
, but there are still many problems.
Moving on to code/unix/unix_main.c.
Take 1, compilation, results include previous differences:
code/unix/unix_main.c:32:10: fatal error: sys/ipc.h: No such file or directory
#include <sys/ipc.h>
There is no ipc.h in ps3dev.
Take 2: remove nonexistent headers until a list of missing headers is complete
Result:
- sys/ipc.h
- sys/shm.h
- sys/mman.h (available in SPU part of the toolchain)
- dlfcn.h
- termios.h (broken header in ps3dev, should include machine/termios.h instead of sys/termios.h, this is not Quake's problem)
Take 3: compile code/unix/unix_main.c with all the missing headers gone
Result:
code/unix/unix_main.c: In function 'tty_FlushIn':
code/unix/unix_main.c:163:2: warning: implicit declaration of function 'tcflush'; did you mean 'fflush'? [-Wimplicit-function-declaration]
tcflush( STDIN_FILENO, TCIFLUSH );
^~~~~~~
fflush
code/unix/unix_main.c:163:25: error: 'TCIFLUSH' undeclared (first use in this function)
tcflush( STDIN_FILENO, TCIFLUSH );
^~~~~~~~
code/unix/unix_main.c:163:25: note: each undeclared identifier is reported only once for each function it appears in
code/unix/unix_main.c: In function 'Sys_ConsoleInputShutdown':
code/unix/unix_main.c:238:3: warning: implicit declaration of function 'tcsetattr'; did you mean 'tcsetpgrp'? [-Wimplicit-function-declaration]
tcsetattr( STDIN_FILENO, TCSADRAIN, &tty_tc );
^~~~~~~~~
tcsetpgrp
code/unix/unix_main.c:238:28: error: 'TCSADRAIN' undeclared (first use in this function)
tcsetattr( STDIN_FILENO, TCSADRAIN, &tty_tc );
^~~~~~~~~
code/unix/unix_main.c: In function 'CON_SigTStp':
code/unix/unix_main.c:282:2: warning: implicit declaration of function 'kill'; did you mean 'ceill'? [-Wimplicit-function-declaration]
kill( getpid(), SIGTSTP );
^~~~
ceill
code/unix/unix_main.c: In function 'Sys_ConsoleInputInit':
code/unix/unix_main.c:375:17: error: storage size of 'tc' isn't known
struct termios tc;
^~
code/unix/unix_main.c:419:2: warning: implicit declaration of function 'tcgetattr'; did you mean 'tcgetpgrp'? [-Wimplicit-function-declaration]
tcgetattr( STDIN_FILENO, &tty_tc );
^~~~~~~~~
tcgetpgrp
code/unix/unix_main.c:420:20: error: invalid use of undefined type 'struct termios'
tty_erase = tty_tc.c_cc[ VERASE ];
^
code/unix/unix_main.c:420:27: error: 'VERASE' undeclared (first use in this function); did you mean 'ERANGE'?
tty_erase = tty_tc.c_cc[ VERASE ];
^~~~~~
ERANGE
code/unix/unix_main.c:421:18: error: invalid use of undefined type 'struct termios'
tty_eof = tty_tc.c_cc[ VEOF ];
^
code/unix/unix_main.c:421:25: error: 'VEOF' undeclared (first use in this function); did you mean 'EOF'?
tty_eof = tty_tc.c_cc[ VEOF ];
^~~~
EOF
code/unix/unix_main.c:432:18: error: 'ECHO' undeclared (first use in this function); did you mean 'EIO'?
tc.c_lflag &= ~(ECHO | ICANON);
^~~~
EIO
code/unix/unix_main.c:432:25: error: 'ICANON' undeclared (first use in this function); did you mean 'TC_NONE'?
tc.c_lflag &= ~(ECHO | ICANON);
^~~~~~
TC_NONE
code/unix/unix_main.c:437:18: error: 'ISTRIP' undeclared (first use in this function); did you mean 'STRING'?
tc.c_iflag &= ~(ISTRIP | INPCK);
^~~~~~
STRING
code/unix/unix_main.c:437:27: error: 'INPCK' undeclared (first use in this function); did you mean 'ENOLCK'?
tc.c_iflag &= ~(ISTRIP | INPCK);
^~~~~
ENOLCK
code/unix/unix_main.c:438:10: error: 'VMIN' undeclared (first use in this function); did you mean 'MIN'?
tc.c_cc[VMIN] = 1;
^~~~
MIN
code/unix/unix_main.c:439:10: error: 'VTIME' undeclared (first use in this function); did you mean 'ETIME'?
tc.c_cc[VTIME] = 0;
^~~~~
ETIME
code/unix/unix_main.c:440:27: error: 'TCSADRAIN' undeclared (first use in this function)
tcsetattr( STDIN_FILENO, TCSADRAIN, &tc );
^~~~~~~~~
code/unix/unix_main.c:375:17: warning: unused variable 'tc' [-Wunused-variable]
struct termios tc;
^~
code/unix/unix_main.c: In function 'Sys_ConsoleInput':
code/unix/unix_main.c:584:8: warning: implicit declaration of function 'select'; did you mean 'setenv'? [-Wimplicit-function-declaration]
if ( select( STDIN_FILENO + 1, &fdset, NULL, NULL, &timeout) == -1 || !FD_ISSET( STDIN_FILENO, &fdset ) )
^~~~~~
setenv
code/unix/unix_main.c: In function 'Sys_BinName':
code/unix/unix_main.c:833:21: error: 'PATH_MAX' undeclared (first use in this function); did you mean 'INT8_MAX'?
static char dst[ PATH_MAX ];
^~~~~~~~
INT8_MAX
code/unix/unix_main.c:833:16: warning: unused variable 'dst' [-Wunused-variable]
static char dst[ PATH_MAX ];
^~~
code/unix/unix_main.c: At top level:
code/unix/unix_main.c:100:23: error: storage size of 'tty_tc' isn't known
static struct termios tty_tc;
^~~~~~
code/unix/unix_main.c: In function 'Sys_BinName':
code/unix/unix_main.c:854:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
Conclusions:
- tcflush function is really missing
- TCIFLUSH, TCSADRAIN, VERASE, VEOF, ECHO, ICANON, ISTRIP, INPCK, VMIN and VTIME undeclared
- tcsetattr function is really missing
- a lot of tc stuff is really undeclared
- kill function is undeclared, but it is defined as an external function
- PATH_MAX is undeclared but it is declared in limits.h and sys/syslimits.h although with different values (1k vs 4k)
- our friend select is back, undeclared again
Next file: code/unix/unix_shared.c
Take 1: compilation
Result:
code/unix/unix_shared.c:30:10: fatal error: sys/mman.h: No such file or directory
#include <sys/mman.h>
Take 2: remove nonexistent headers until code errors remain
Result:
- sys/mman.h
- dlfcn.h
Take 3: compilation without headers
Result:
code/unix/unix_shared.c: In function 'Sys_LoadLibrary':
code/unix/unix_shared.c:497:11: warning: implicit declaration of function 'dlopen'; did you mean 'popen'? [-Wimplicit-function-declaration]
handle = dlopen( name, RTLD_NOW );
^~~~~~
popen
code/unix/unix_shared.c:497:25: error: 'RTLD_NOW' undeclared (first use in this function); did you mean 'EXEC_NOW'?
handle = dlopen( name, RTLD_NOW );
^~~~~~~~
EXEC_NOW
code/unix/unix_shared.c:497:25: note: each undeclared identifier is reported only once for each function it appears in
code/unix/unix_shared.c: In function 'Sys_UnloadLibrary':
code/unix/unix_shared.c:510:3: warning: implicit declaration of function 'dlclose'; did you mean 'close'? [-Wimplicit-function-declaration]
dlclose( handle );
^~~~~~~
close
code/unix/unix_shared.c: In function 'Sys_LoadFunction':
code/unix/unix_shared.c:532:2: warning: implicit declaration of function 'dlerror'; did you mean 'perror'? [-Wimplicit-function-declaration]
dlerror(); /* clear old error state */
^~~~~~~
perror
code/unix/unix_shared.c:533:11: warning: implicit declaration of function 'dlsym' [-Wimplicit-function-declaration]
symbol = dlsym( handle, name );
^~~~~
code/unix/unix_shared.c:533:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
symbol = dlsym( handle, name );
^
code/unix/unix_shared.c:534:8: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
error = dlerror();
^
code/unix/unix_shared.c:543:10: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
symbol = dlsym( handle, buf );
^
code/unix/unix_shared.c: In function 'Sys_SetAffinityMask':
code/unix/unix_shared.c:575:9: error: unknown type name 'cpu_set_t'
static cpu_set_t old_set;
^~~~~~~~~
code/unix/unix_shared.c:576:2: error: unknown type name 'cpu_set_t'; did you mean 'cplane_t'?
cpu_set_t set;
^~~~~~~~~
cplane_t
code/unix/unix_shared.c:581:8: warning: implicit declaration of function 'sched_getaffinity' [-Wimplicit-function-declaration]
if ( sched_getaffinity( getpid(), sizeof( old_set ), &old_set ) == 0 )
^~~~~~~~~~~~~~~~~
code/unix/unix_shared.c:596:9: warning: implicit declaration of function 'CPU_ISSET'; did you mean 'CPU_SSE'? [-Wimplicit-function-declaration]
if ( CPU_ISSET( cpu, &set ) )
^~~~~~~~~
CPU_SSE
code/unix/unix_shared.c:602:3: warning: implicit declaration of function 'CPU_ZERO'; did you mean 'FP_ZERO'? [-Wimplicit-function-declaration]
CPU_ZERO( &set );
^~~~~~~~
FP_ZERO
code/unix/unix_shared.c:606:5: warning: implicit declaration of function 'CPU_SET'; did you mean 'CPU_SSE'? [-Wimplicit-function-declaration]
CPU_SET( cpu, &set );
^~~~~~~
CPU_SSE
code/unix/unix_shared.c:610:7: warning: implicit declaration of function 'sched_setaffinity' [-Wimplicit-function-declaration]
if ( sched_setaffinity( getpid(), sizeof( set ), &set ) == 0 ) {
^~~~~~~~~~~~~~~~~
Summary:
- missing cpu_set_t datatype and RTLD_NOW macro
from quake3e.
If anyone is still wondering what is going on with this:
- thank you @ec- for going a step in the right direction with this, because it appears SPRX does not support IPv6 at all ps3dev/ps3toolchain#78 (comment) so this will be needed in the unforeseeable future
- hopefully normal support for IPv4 will come with PSL1GHT v3 ps3dev/PSL1GHT#67
- until then there is little point in compiling Quake with v2 other than to just check if everything except 3 source files still compile correctly
from quake3e.
Related Issues (20)
- Clarification needed: Why fs_homepath is write protected? HOT 6
- I love this engine. Question about MDR models HOT 2
- Enable Win32 DPI awareness HOT 1
- Building quake3e.app and running on Sonoma doens't open app
- Build: building with Cygwin on Win 8.1 x64 fails (cURL). HOT 12
- Linux: abnormally high GPU usage on Vulkan with r_fbo 1 HOT 5
- more of a question than an issue, but is it possible to use this engine to boot games that run on the quake 3 engine? HOT 1
- Arm64 version doesnt work. HOT 3
- fs_basegame behavior with mods errors with Couldn't load default.cfg HOT 8
- Greyscale Functionality Question HOT 3
- Server map rotation fails after a while HOT 8
- Anisotropic filter broken in Latest Build Oct 29, 2023 HOT 3
- [build] `LDFLAGS` in `./Makefile` should be additive HOT 2
- WASAPI: unsupported channel count 6 HOT 1
- Increase max sv_dlRate HOT 2
- Quake 3 enhanced has weird annoying noisy sound when running *WORKAROUND AVAILABLE* HOT 7
- New Cbuf_Add function doesn't play nice with wait command HOT 6
- Shader Scripts Not Ordering Properly Across .shader Files HOT 12
- R_TEXTUREMODE is not behaving persistently through sessions with the Vulkan renderer HOT 3
- All bot models replaced by player selected model HOT 10
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from quake3e.