]> git.rm.cloudns.org Git - xonotic/netradiant.git/commitdiff
Working NetRadiant and q3map2 on MSYS2 (both x86, x86_64), fixed problems with out...
authorAleksandr Palamar <void995@gmail.com>
Thu, 24 Mar 2016 18:29:16 +0000 (20:29 +0200)
committerAleksandr Palamar <void995@gmail.com>
Thu, 24 Mar 2016 18:29:16 +0000 (20:29 +0200)
14 files changed:
Makefile
install-dlls-msys2-mingw32.sh [new file with mode: 0644]
install-dlls-msys2-mingw64.sh [new file with mode: 0644]
libs/os/file.h
tools/quake2/common/inout.c
tools/quake2/q2map/qbsp.c
tools/quake2/qdata_heretic2/common/inout.c
tools/quake3/common/inout.c
tools/quake3/common/vfs.h
tools/quake3/q3map2/bsp.c
tools/quake3/q3map2/light_bounce.c
tools/quake3/q3map2/light_ydnar.c
tools/quake3/q3map2/q3map2.h
tools/quake3/q3map2/surface_meta.c

index a68f3c61410274c1ff28c2ca7aa39b63908f5946..1005c0269c89c90d5582dd206ecf347ad569ed7f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -109,11 +109,11 @@ ifeq ($(OS),Windows_NT)
        OS = Win32
 endif
 
-CFLAGS_COMMON = -MMD -W -Wall -Wcast-align -Wcast-qual -Wno-unused-parameter -fno-strict-aliasing
+CFLAGS_COMMON = -MMD -W -Wall -Wcast-align -Wno-cast-qual -Wno-unused-parameter -Wno-unknown-pragmas -Wno-empty-body -Wno-maybe-uninitialized -Wno-write-strings -fno-strict-aliasing
 CPPFLAGS_COMMON =
 LDFLAGS_COMMON =
 LIBS_COMMON =
-CXXFLAGS_COMMON = -Wno-non-virtual-dtor -Wreorder -fno-exceptions -fno-rtti
+CXXFLAGS_COMMON = -Wno-non-virtual-dtor -Wno-reorder -Wno-unknown-pragmas -Wno-empty-body -Wno-maybe-uninitialized -Wno-write-strings -fno-exceptions -fno-rtti
 
 ifeq ($(BUILD),debug)
 ifeq ($(findstring $(CFLAGS),-g),)
@@ -240,6 +240,28 @@ endif
 endif
 endif
 
+# MSYS2
+UNAME_S := $(shell uname -s)
+UNAME_O := $(shell uname -o)
+
+ifneq "$(filter MINGW32_NT%,$(UNAME_S))" ""
+       OS = Win32
+       ifeq ($(UNAME_O),Msys)
+               DLLINSTALL = install-dlls-msys2-mingw32.sh
+               CFLAGS_COMMON += -O0
+               CPPFLAGS_COMMON += -O0
+       endif
+endif
+
+ifneq "$(filter MINGW64_NT%,$(UNAME_S))" ""
+       OS = Win32
+       ifeq ($(UNAME_O),Msys)
+               DLLINSTALL = install-dlls-msys2-mingw64.sh
+               CFLAGS_COMMON += -O0
+               CPPFLAGS_COMMON += -O0
+       endif
+endif
+
 # VERSION!
 RADIANT_VERSION_NUMBER = 1.5.0
 RADIANT_VERSION = $(RADIANT_VERSION_NUMBER)n
diff --git a/install-dlls-msys2-mingw32.sh b/install-dlls-msys2-mingw32.sh
new file mode 100644 (file)
index 0000000..aa02331
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+MINGWDIR='/mingw64'
+INSTALLDIR=$(pwd)/install
+
+function dependencies {
+    local EXECUATABLEDIR=$1
+    local EXECUATABLE=$2
+    local MINGWDIRBIN=$3
+    
+    local DEPENDENCY="| grep 'DLL Name' | sed -r 's/\s+DLL\s+Name\:\s+//' | xargs -i{} which {} | grep $MINGWDIRBIN"
+
+    local DEPENDENCIES="$DEPENDENCY"
+
+    for I in `seq 1 3`;
+    do
+        local COMMAND="objdump -x $EXECUATABLE $DEPENDENCIES | xargs -i{} cp -v {} $EXECUATABLEDIR"
+        eval "$COMMAND"
+
+        local DEPENDENCIES="$DEPENDENCIES | xargs -i{} objdump -x {} $DEPENDENCY"
+    done 
+}
+
+dependencies './install' './install/q2map.exe' "$MINGWDIR/bin"
+dependencies './install' './install/q3data.exe' "$MINGWDIR/bin"
+dependencies './install' './install/q3map2.exe' "$MINGWDIR/bin"
+dependencies './install' './install/qdata3.exe' "$MINGWDIR/bin"
+dependencies './install' './install/radiant.exe' "$MINGWDIR/bin"
+
+cd $MINGWDIR
+
+for EXTRAPATH in \
+    './lib/gtk-2.0/2.10.0/engines/*.dll' \
+    './lib/gtk-2.0/modules/*.dll' \
+    './share/themes' \
+; do
+    cp --parent -v `find $EXTRAPATH -type f` "$INSTALLDIR"
+done
diff --git a/install-dlls-msys2-mingw64.sh b/install-dlls-msys2-mingw64.sh
new file mode 100644 (file)
index 0000000..aa02331
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+MINGWDIR='/mingw64'
+INSTALLDIR=$(pwd)/install
+
+function dependencies {
+    local EXECUATABLEDIR=$1
+    local EXECUATABLE=$2
+    local MINGWDIRBIN=$3
+    
+    local DEPENDENCY="| grep 'DLL Name' | sed -r 's/\s+DLL\s+Name\:\s+//' | xargs -i{} which {} | grep $MINGWDIRBIN"
+
+    local DEPENDENCIES="$DEPENDENCY"
+
+    for I in `seq 1 3`;
+    do
+        local COMMAND="objdump -x $EXECUATABLE $DEPENDENCIES | xargs -i{} cp -v {} $EXECUATABLEDIR"
+        eval "$COMMAND"
+
+        local DEPENDENCIES="$DEPENDENCIES | xargs -i{} objdump -x {} $DEPENDENCY"
+    done 
+}
+
+dependencies './install' './install/q2map.exe' "$MINGWDIR/bin"
+dependencies './install' './install/q3data.exe' "$MINGWDIR/bin"
+dependencies './install' './install/q3map2.exe' "$MINGWDIR/bin"
+dependencies './install' './install/qdata3.exe' "$MINGWDIR/bin"
+dependencies './install' './install/radiant.exe' "$MINGWDIR/bin"
+
+cd $MINGWDIR
+
+for EXTRAPATH in \
+    './lib/gtk-2.0/2.10.0/engines/*.dll' \
+    './lib/gtk-2.0/modules/*.dll' \
+    './share/themes' \
+; do
+    cp --parent -v `find $EXTRAPATH -type f` "$INSTALLDIR"
+done
index 43381c63ab9ef9b14935e5e0c362c436345c8929..41c20c1550798bb95628087075350231f0d21ac9 100644 (file)
 #if defined( WIN32 )
 #define S_ISDIR( mode ) ( mode & _S_IFDIR )
 #include <io.h> // _access()
+
+#ifndef F_OK
 #define F_OK 0x00
+#endif
+
+#ifndef W_OK
 #define W_OK 0x02
+#endif
+
+#ifndef R_OK
 #define R_OK 0x04
+#endif
+
 #define access( path, mode ) _access( path, mode )
 #else
 #include <unistd.h> // access()
index 30ae39df7ee9026ae3cae5d94afff7083691c9de..67be39e4b8ce3e72eb033f9d470d63d6f327d115 100644 (file)
@@ -67,7 +67,7 @@ xmlNodePtr xml_NodeForVec( vec3_t v ){
 
        sprintf( buf, "%f %f %f", v[0], v[1], v[2] );
        ret = xmlNewNode( NULL, "point" );
-       xmlNodeSetContent( ret, buf );
+       xmlNodeAddContent( ret, buf );
        return ret;
 }
 
@@ -145,14 +145,14 @@ void xml_Select( char *msg, int entitynum, int brushnum, qboolean bError ){
        // now build a proper "select" XML node
        sprintf( buf, "Entity %i, Brush %i: %s", entitynum, brushnum, msg );
        node = xmlNewNode( NULL, "select" );
-       xmlNodeSetContent( node, buf );
+       xmlNodeAddContent( node, buf );
        level[0] = (int)'0' + ( bError ? SYS_ERR : SYS_WRN )  ;
        level[1] = 0;
        xmlSetProp( node, "level", (char *)&level );
        // a 'select' information
        sprintf( buf, "%i %i", entitynum, brushnum );
        select = xmlNewNode( NULL, "brush" );
-       xmlNodeSetContent( select, buf );
+       xmlNodeAddContent( select, buf );
        xmlAddChild( node, select );
        xml_SendNode( node );
 
@@ -172,14 +172,14 @@ void xml_Point( char *msg, vec3_t pt ){
        char level[2];
 
        node = xmlNewNode( NULL, "pointmsg" );
-       xmlNodeSetContent( node, msg );
+       xmlNodeAddContent( node, msg );
        level[0] = (int)'0' + SYS_ERR;
        level[1] = 0;
        xmlSetProp( node, "level", (char *)&level );
        // a 'point' node
        sprintf( buf, "%g %g %g", pt[0], pt[1], pt[2] );
        point = xmlNewNode( NULL, "point" );
-       xmlNodeSetContent( point, buf );
+       xmlNodeAddContent( point, buf );
        xmlAddChild( node, point );
        xml_SendNode( node );
 
@@ -196,7 +196,7 @@ void xml_Winding( char *msg, vec3_t p[], int numpoints, qboolean die ){
        int i;
 
        node = xmlNewNode( NULL, "windingmsg" );
-       xmlNodeSetContent( node, msg );
+       xmlNodeAddContent( node, msg );
        level[0] = (int)'0' + SYS_ERR;
        level[1] = 0;
        xmlSetProp( node, "level", (char *)&level );
@@ -213,7 +213,7 @@ void xml_Winding( char *msg, vec3_t p[], int numpoints, qboolean die ){
        }
 
        winding = xmlNewNode( NULL, "winding" );
-       xmlNodeSetContent( winding, buf );
+       xmlNodeAddContent( winding, buf );
        xmlAddChild( node, winding );
        xml_SendNode( node );
 
@@ -282,7 +282,7 @@ void FPrintf( int flag, char *buf ){
                bGotXML = true;
        }
        node = xmlNewNode( NULL, "message" );
-       xmlNodeSetContent( node, buf );
+       xmlNodeAddContent( node, buf );
        level[0] = (int)'0' + flag;
        level[1] = 0;
        xmlSetProp( node, "level", (char *)&level );
index 128fb7ab1576f74871102144dce0d151c8018cbc..e5486bceea47c966d77a1da109def33d51084e1b 100644 (file)
@@ -242,7 +242,7 @@ void ProcessWorldModel( void ){
                        Sys_FPrintf( SYS_NOXML, "**********************\n" );
                        polyline = LeakFile( tree );
                        leaknode = xmlNewNode( NULL, "message" );
-                       xmlNodeSetContent( leaknode, "MAP LEAKED\n" );
+                       xmlNodeAddContent( leaknode, "MAP LEAKED\n" );
                        xmlAddChild( leaknode, polyline );
                        level[0] = (int) '0' + SYS_ERR;
                        level[1] = 0;
index 30ae39df7ee9026ae3cae5d94afff7083691c9de..67be39e4b8ce3e72eb033f9d470d63d6f327d115 100644 (file)
@@ -67,7 +67,7 @@ xmlNodePtr xml_NodeForVec( vec3_t v ){
 
        sprintf( buf, "%f %f %f", v[0], v[1], v[2] );
        ret = xmlNewNode( NULL, "point" );
-       xmlNodeSetContent( ret, buf );
+       xmlNodeAddContent( ret, buf );
        return ret;
 }
 
@@ -145,14 +145,14 @@ void xml_Select( char *msg, int entitynum, int brushnum, qboolean bError ){
        // now build a proper "select" XML node
        sprintf( buf, "Entity %i, Brush %i: %s", entitynum, brushnum, msg );
        node = xmlNewNode( NULL, "select" );
-       xmlNodeSetContent( node, buf );
+       xmlNodeAddContent( node, buf );
        level[0] = (int)'0' + ( bError ? SYS_ERR : SYS_WRN )  ;
        level[1] = 0;
        xmlSetProp( node, "level", (char *)&level );
        // a 'select' information
        sprintf( buf, "%i %i", entitynum, brushnum );
        select = xmlNewNode( NULL, "brush" );
-       xmlNodeSetContent( select, buf );
+       xmlNodeAddContent( select, buf );
        xmlAddChild( node, select );
        xml_SendNode( node );
 
@@ -172,14 +172,14 @@ void xml_Point( char *msg, vec3_t pt ){
        char level[2];
 
        node = xmlNewNode( NULL, "pointmsg" );
-       xmlNodeSetContent( node, msg );
+       xmlNodeAddContent( node, msg );
        level[0] = (int)'0' + SYS_ERR;
        level[1] = 0;
        xmlSetProp( node, "level", (char *)&level );
        // a 'point' node
        sprintf( buf, "%g %g %g", pt[0], pt[1], pt[2] );
        point = xmlNewNode( NULL, "point" );
-       xmlNodeSetContent( point, buf );
+       xmlNodeAddContent( point, buf );
        xmlAddChild( node, point );
        xml_SendNode( node );
 
@@ -196,7 +196,7 @@ void xml_Winding( char *msg, vec3_t p[], int numpoints, qboolean die ){
        int i;
 
        node = xmlNewNode( NULL, "windingmsg" );
-       xmlNodeSetContent( node, msg );
+       xmlNodeAddContent( node, msg );
        level[0] = (int)'0' + SYS_ERR;
        level[1] = 0;
        xmlSetProp( node, "level", (char *)&level );
@@ -213,7 +213,7 @@ void xml_Winding( char *msg, vec3_t p[], int numpoints, qboolean die ){
        }
 
        winding = xmlNewNode( NULL, "winding" );
-       xmlNodeSetContent( winding, buf );
+       xmlNodeAddContent( winding, buf );
        xmlAddChild( node, winding );
        xml_SendNode( node );
 
@@ -282,7 +282,7 @@ void FPrintf( int flag, char *buf ){
                bGotXML = true;
        }
        node = xmlNewNode( NULL, "message" );
-       xmlNodeSetContent( node, buf );
+       xmlNodeAddContent( node, buf );
        level[0] = (int)'0' + flag;
        level[1] = 0;
        xmlSetProp( node, "level", (char *)&level );
index 14e9eaafe5ffff974579c5bdd946a7a6ef46d755..827bdceb3b84e8d982f83aa82c604b277e21291b 100644 (file)
@@ -70,7 +70,7 @@ xmlNodePtr xml_NodeForVec( vec3_t v ){
 
        sprintf( buf, "%f %f %f", v[0], v[1], v[2] );
        ret = xmlNewNode( NULL, (xmlChar*)"point" );
-       xmlNodeSetContent( ret, (xmlChar*)buf );
+       xmlNodeAddContent( ret, (xmlChar*)buf );
        return ret;
 }
 
@@ -148,14 +148,14 @@ void xml_Select( char *msg, int entitynum, int brushnum, qboolean bError ){
        // now build a proper "select" XML node
        sprintf( buf, "Entity %i, Brush %i: %s", entitynum, brushnum, msg );
        node = xmlNewNode( NULL, (xmlChar*)"select" );
-       xmlNodeSetContent( node, (xmlChar*)buf );
+       xmlNodeAddContent( node, (xmlChar*)buf );
        level[0] = (int)'0' + ( bError ? SYS_ERR : SYS_WRN )  ;
        level[1] = 0;
        xmlSetProp( node, (xmlChar*)"level", (xmlChar *)&level );
        // a 'select' information
        sprintf( buf, "%i %i", entitynum, brushnum );
        select = xmlNewNode( NULL, (xmlChar*)"brush" );
-       xmlNodeSetContent( select, (xmlChar*)buf );
+       xmlNodeAddContent( select, (xmlChar*)buf );
        xmlAddChild( node, select );
        xml_SendNode( node );
 
@@ -175,14 +175,14 @@ void xml_Point( char *msg, vec3_t pt ){
        char level[2];
 
        node = xmlNewNode( NULL, (xmlChar*)"pointmsg" );
-       xmlNodeSetContent( node, (xmlChar*)msg );
+       xmlNodeAddContent( node, (xmlChar*)msg );
        level[0] = (int)'0' + SYS_ERR;
        level[1] = 0;
        xmlSetProp( node, (xmlChar*)"level", (xmlChar *)&level );
        // a 'point' node
        sprintf( buf, "%g %g %g", pt[0], pt[1], pt[2] );
        point = xmlNewNode( NULL, (xmlChar*)"point" );
-       xmlNodeSetContent( point, (xmlChar*)buf );
+       xmlNodeAddContent( point, (xmlChar*)buf );
        xmlAddChild( node, point );
        xml_SendNode( node );
 
@@ -199,7 +199,7 @@ void xml_Winding( char *msg, vec3_t p[], int numpoints, qboolean die ){
        int i;
 
        node = xmlNewNode( NULL, (xmlChar*)"windingmsg" );
-       xmlNodeSetContent( node, (xmlChar*)msg );
+       xmlNodeAddContent( node, (xmlChar*)msg );
        level[0] = (int)'0' + SYS_ERR;
        level[1] = 0;
        xmlSetProp( node, (xmlChar*)"level", (xmlChar *)&level );
@@ -216,7 +216,7 @@ void xml_Winding( char *msg, vec3_t p[], int numpoints, qboolean die ){
        }
 
        winding = xmlNewNode( NULL, (xmlChar*)"winding" );
-       xmlNodeSetContent( winding, (xmlChar*)buf );
+       xmlNodeAddContent( winding, (xmlChar*)buf );
        xmlAddChild( node, winding );
        xml_SendNode( node );
 
@@ -287,7 +287,7 @@ void FPrintf( int flag, char *buf ){
        node = xmlNewNode( NULL, (xmlChar*)"message" );
        {
                gchar* utf8 = g_locale_to_utf8( buf, -1, NULL, NULL, NULL );
-               xmlNodeSetContent( node, (xmlChar*)utf8 );
+               xmlNodeAddContent( node, (xmlChar*)utf8 );
                g_free( utf8 );
        }
        level[0] = (int)'0' + flag;
index 51ac6dddcfce11f6d2984f16333667479912f297..8efab146bb29e0504df90ae705f06f179ffdcccd 100644 (file)
@@ -39,7 +39,9 @@
 #else
 #include <wtypes.h>
 #include <io.h>
+#ifndef R_OK
 #define R_OK 04
+#endif
 #define S_ISDIR( mode ) ( mode & _S_IFDIR )
 #define PATH_MAX 260
 #endif
index da7374605d32fa698044fbeae938d254628d045e..8327b2284513eab3f5ab46d97a0ffc553966e307 100644 (file)
@@ -345,7 +345,7 @@ void ProcessWorldModel( void ){
                Sys_FPrintf( SYS_NOXML, "**********************\n" );
                polyline = LeakFile( tree );
                leaknode = xmlNewNode( NULL, (xmlChar*)"message" );
-               xmlNodeSetContent( leaknode, (xmlChar*)"MAP LEAKED\n" );
+               xmlNodeAddContent( leaknode, (xmlChar*)"MAP LEAKED\n" );
                xmlAddChild( leaknode, polyline );
                level[0] = (int) '0' + SYS_ERR;
                level[1] = 0;
index 37d8c4e57ca4f6ed141cc37f2f8e24dd01a47d6a..ac00431b986027a42df1f8dfac3ab7d0eeff7873 100644 (file)
@@ -288,7 +288,7 @@ static void RadSample( int lightmapNum, bspDrawSurface_t *ds, rawLightmap_t *lm,
                        /* multiply by texture color */
                        if ( !RadSampleImage( si->lightImage->pixels, si->lightImage->width, si->lightImage->height, rw->verts[ samples ].st, textureColor ) ) {
                                VectorCopy( si->averageColor, textureColor );
-                               textureColor[ 4 ] = 255.0f;
+                               textureColor[ 3 ] = 255.0f;
                        }
                        for ( i = 0; i < 3; i++ )
                                color[ i ] = ( textureColor[ i ] / 255 ) * ( rw->verts[ samples ].color[ lightmapNum ][ i ] / 255.0f );
@@ -372,7 +372,7 @@ static void RadSample( int lightmapNum, bspDrawSurface_t *ds, rawLightmap_t *lm,
                                                /* multiply by texture color */
                                                if ( !RadSampleImage( si->lightImage->pixels, si->lightImage->width, si->lightImage->height, st, textureColor ) ) {
                                                        VectorCopy( si->averageColor, textureColor );
-                                                       textureColor[ 4 ] = 255;
+                                                       textureColor[ 3 ] = 255;
                                                }
                                                for ( i = 0; i < 3; i++ )
                                                        color[ i ] = ( textureColor[ i ] / 255 ) * ( radLuxel[ i ] / 255 );
index 91f5e047b9562a90b7edab6dbf33709e38e861ea..3bfa9ca740a0b8141b44ca4922b1906cea91fa81 100644 (file)
@@ -1806,7 +1806,7 @@ static void SubsampleRawLuxel_r( rawLightmap_t *lm, trace_t *trace, vec3_t sampl
        int b, samples, mapped, lighted;
        int cluster[ 4 ];
        vec4_t luxel[ 4 ];
-       vec3_t deluxel[ 3 ];
+       vec3_t deluxel[ 4 ];
        vec3_t origin[ 4 ], normal[ 4 ];
        float biasDirs[ 4 ][ 2 ] = { { -1.0f, -1.0f }, { 1.0f, -1.0f }, { -1.0f, 1.0f }, { 1.0f, 1.0f } };
        vec3_t color, direction = { 0, 0, 0 }, total;
index 705f35170297457fa31d168b0f23845fcdb21084..1499a37e539819793ab2f014d6948f21256d1b41 100644 (file)
@@ -788,7 +788,7 @@ typedef struct shaderInfo_s
        sun_t               *sun;                           /* ydnar */
 
        vec3_t color;                                       /* normalized color */
-       vec3_t averageColor;
+       vec4_t averageColor;
        byte lightStyle;
 
        /* vortex: per-surface floodlight */
index 8d4f3c36ffdc009bdab45be92fa8b5600bbfbe49..453b7531af5b277ea740c657cf9e15aae6dfb766 100644 (file)
@@ -952,7 +952,8 @@ void MakeEntityMetaTriangles( entity_t *e ){
 
 typedef struct edge_s
 {
-       vec3_t origin, edge;
+       vec3_t origin;
+       vec4_t edge;
        vec_t length, kingpinLength;
        int kingpin;
        vec4_t plane;