Hacked up mesa/x86/gen_matypes.c so it no longer generates a header file, but

a file suitable for the CreateAsmStructOffsetsHeader rule. The file is then
used to generate the actual matypes.h header. This fixes issues when
cross-compiling from a 64 bit platform.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34312 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2009-11-27 14:12:32 +00:00
parent a492466dad
commit dc28a50219
2 changed files with 58 additions and 16 deletions
+23 -14
View File
@@ -41,12 +41,21 @@ UsePublicObjectHeaders gen_matypes : opengl ;
BuildPlatformMain gen_matypes :
gen_matypes.c ;
rule MkMaTypes
rule MkMaTypes header
{
MakeLocateArch $(<) ;
Depends $(<) : gen_matypes ;
MkMaTypes1 $(<) : gen_matypes ;
LocalClean clean : $(<) ;
header = [ FGristFiles $(header) ] ;
# generate the intermediate header
local intermediateHeader = $(header:S=.h.cpp) ;
MakeLocateArch $(intermediateHeader) ;
Depends $(intermediateHeader) : gen_matypes ;
MkMaTypes1 $(intermediateHeader) : gen_matypes ;
LocalClean clean : $(intermediateHeader) ;
# generate the final header
TARGET_HDRS on $(header) = [ on $(header) return $(TARGET_HDRS) ]
$(TARGET_PRIVATE_SYSTEM_HEADERS) ;
CreateAsmStructOffsetsHeader $(header) : $(intermediateHeader) ;
}
actions MkMaTypes1
@@ -78,9 +87,9 @@ actions MkMaTypes1
local arch_sources ;
if $(TARGET_ARCH) = x86 {
MkMaTypes <mesa>matypes.h ;
MkMaTypes matypes.h ;
arch_sources =
arch_sources =
common_x86.c
common_x86_asm.S
@@ -109,13 +118,13 @@ if $(TARGET_ARCH) = x86 {
x86sse.c
;
Includes [ FGristFiles $(arch_sources) ] : <mesa>matypes.h ;
Includes [ FGristFiles $(arch_sources) ] : [ FGristFiles matypes.h ] ;
SEARCH_SOURCE += [ FDirName $(SUBDIR) x86 rtasm ] ;
} else if $(TARGET_ARCH) = ppc {
arch_sources =
arch_sources =
common_ppc.c
;
@@ -123,10 +132,10 @@ if $(TARGET_ARCH) = x86 {
} else if $(TARGET_ARCH) = sparc {
arch_sources =
sparc.c
arch_sources =
sparc.c
clip.S
norm.S
norm.S
xform.S
;
@@ -135,7 +144,7 @@ if $(TARGET_ARCH) = x86 {
}
StaticLibrary libmesa.a :
StaticLibrary libmesa.a :
# main
api_arrayelt.c
@@ -273,7 +282,7 @@ StaticLibrary libmesa.a :
# swrast_setup
ss_context.c
ss_triangle.c
ss_triangle.c
# shader
arbprogparse.c
+35 -2
View File
@@ -61,7 +61,12 @@ do { \
printf( "\n" ); \
} while (0)
#if defined(__BEOS__) || defined(__HAIKU__) || defined(_LP64)
#if 1
// Haiku build system: support for cross-compilation
#define OFFSET( s, t, m ) \
printf( "#undef %s\n", s); \
printf( "DEFINE_COMPUTED_ASM_MACRO(%s, offsetof(%s, %s));\n", s, #t, #m );
#elif defined(__BEOS__) || defined(__HAIKU__) || defined(_LP64)
#define OFFSET( s, t, m ) \
printf( "#define %s\t%ld\n", s, offsetof( t, m ) );
#else
@@ -69,7 +74,12 @@ do { \
printf( "#define %s\t%d\n", s, offsetof( t, m ) );
#endif
#if defined(__BEOS__) || defined(__HAIKU__) || defined(_LP64)
#if 1
// Haiku build system: support for cross-compilation
#define SIZEOF( s, t ) \
printf( "#undef %s\n", s); \
printf( "DEFINE_COMPUTED_ASM_MACRO(%s, sizeof(%s));\n", s, #t );
#elif defined(__BEOS__) || defined(__HAIKU__) || defined(_LP64)
#define SIZEOF( s, t ) \
printf( "#define %s\t%ld\n", s, sizeof(t) );
#else
@@ -77,8 +87,16 @@ do { \
printf( "#define %s\t%d\n", s, sizeof(t) );
#endif
#if 1
// Haiku build system: support for cross-compilation
#define DEFINE( s, d ) \
printf( "#undef %s\n", s); \
printf( "#define %s\t0x%x\n", s, d ); \
printf( "DEFINE_COMPUTED_ASM_MACRO(%s, %#x);\n", s, d );
#else
#define DEFINE( s, d ) \
printf( "#define %s\t0x%x\n", s, d );
#endif
@@ -93,6 +111,16 @@ int main( int argc, char **argv )
printf( "#define __ASM_TYPES_H__\n" );
printf( "\n" );
#if 1
// Haiku build system: support for cross-compilation
printf("#include <computed_asm_macros.h>");
printf( "\n" );
printf( "#include \"main/glheader.h\"\n" );
printf( "#include \"main/mtypes.h\"\n" );
printf( "#include \"tnl/t_context.h\"" );
printf( "\n" );
printf( "void dummy() {\n" );
#endif
/* GLcontext offsets:
*/
@@ -239,6 +267,11 @@ int main( int argc, char **argv )
OFFSET( "LIGHT_MODEL_TWO_SIDE ", struct gl_lightmodel, TwoSide );
OFFSET( "LIGHT_MODEL_COLOR_CONTROL ", struct gl_lightmodel, ColorControl );
#if 1
// Haiku build system: support for cross-compilation
printf("}");
printf( "\n" );
#endif
printf( "\n" );
printf( "\n" );