Author: vedge
Date: 2008-11-01 13:26:39 -0300 (Sat, 01 Nov 2008)
New Revision: 770

Modified:
   trunk/BSDBuild/Core.pm
   trunk/BSDBuild/agar-core.pm
   trunk/BSDBuild/agar-dev.pm
   trunk/BSDBuild/agar-map.pm
   trunk/BSDBuild/agar-math.pm
   trunk/BSDBuild/agar-rg.pm
   trunk/BSDBuild/agar-vg.pm
   trunk/BSDBuild/agar.pm
   trunk/BSDBuild/edacious.pm
   trunk/BSDBuild/freesg.pm
   trunk/BSDBuild/freetype.pm
   trunk/BSDBuild/opengl.pm
   trunk/BSDBuild/pthreads.pm
   trunk/BSDBuild/sdl.pm
   trunk/build.proj.mk
   trunk/build.subdir.mk
Log:
- add catch-all cases to all EMUL operations.
- hardcode mingw32 paths when compiling project files for cb-gcc.
- handle ${PROJINCLUDES} in a cleaner way.
- add ${PROJCONFIGDIR} setting.


Modified: trunk/BSDBuild/Core.pm
===================================================================
--- trunk/BSDBuild/Core.pm      2008-11-01 15:48:18 UTC (rev 769)
+++ trunk/BSDBuild/Core.pm      2008-11-01 16:26:39 UTC (rev 770)
@@ -24,7 +24,12 @@
 # USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE..
 
 our $LUA = undef;
+our $EmulOS = undef;
+our $EmulOSRel = undef;
+our $EmulArch = undef;
+our $EmulEnv = undef;
 
+
 #
 # Bourne instructions.
 #
@@ -736,7 +741,7 @@
     $^W = 0;
 
     @ISA = qw(Exporter);
-    @EXPORT = qw($LUA %TESTS %DESCR MkExecOutput MkExecOutputUnique 
MkFileOutput Which MkFail MKSave TryCompile MkCompileC MkCompileCXX 
MkCompileAndRunC MkCompileAndRunCXX TryCompileFlagsC TryCompileFlagsCXX Log 
MkDefine MkAppend MkIf MkElif MkElse MkEndif MkSaveMK MkSaveDefine MkSaveUndef 
MkPrint MkPrintN PmComment PmDefineBool PmDefineString PmIncludePath PmLibPath 
PmBuildFlag DetectHeaderC BeginTestHeaders EndTestHeaders);
+    @EXPORT = qw($LUA $EmulOS $EmulOSRel $EmulArch $EmulEnv %TESTS %DESCR 
MkExecOutput MkExecOutputUnique MkFileOutput Which MkFail MKSave TryCompile 
MkCompileC MkCompileCXX MkCompileAndRunC MkCompileAndRunCXX TryCompileFlagsC 
TryCompileFlagsCXX Log MkDefine MkAppend MkIf MkElif MkElse MkEndif MkSaveMK 
MkSaveDefine MkSaveUndef MkPrint MkPrintN PmComment PmDefineBool PmDefineString 
PmIncludePath PmLibPath PmBuildFlag DetectHeaderC BeginTestHeaders 
EndTestHeaders);
 }
 
 ;1

Modified: trunk/BSDBuild/agar-core.pm
===================================================================
--- trunk/BSDBuild/agar-core.pm 2008-11-01 15:48:18 UTC (rev 769)
+++ trunk/BSDBuild/agar-core.pm 2008-11-01 16:26:39 UTC (rev 770)
@@ -88,23 +88,16 @@
        } elsif ($os eq 'windows') {
                MkDefine('AGAR_CORE_CFLAGS', '');
                MkDefine('AGAR_CORE_LIBS', 'ag_core');
-       } elsif ($os eq 'linux' || $os =~ /^(open|net|free)bsd$/) {
+       } else {
                MkDefine('AGAR_CORE_CFLAGS', '-I/usr/include/agar 
-I/usr/include '.
                                             '-I/usr/local/include/agar '.
                                                                 
'-I/usr/local/include ');
                MkDefine('AGAR_CORE_LIBS', '-L/usr/local/lib -lag_core 
-lpthread ');
-       } else {
-               goto UNAVAIL;
        }
        MkDefine('HAVE_AGAR_CORE', 'yes');
        MkSaveDefine('HAVE_AGAR_CORE', 'AGAR_CORE_CFLAGS', 'AGAR_CORE_LIBS');
        MkSaveMK('AGAR_CORE_CFLAGS', 'AGAR_CORE_LIBS');
        return (1);
-UNAVAIL:
-       MkDefine('HAVE_AGAR_CORE', 'no');
-       MkSaveUndef('HAVE_AGAR_CORE');
-       MkSaveMK('AGAR_CORE_CFLAGS', 'AGAR_CORE_LIBS');
-       return (1);
 }
 
 sub Link

Modified: trunk/BSDBuild/agar-dev.pm
===================================================================
--- trunk/BSDBuild/agar-dev.pm  2008-11-01 15:48:18 UTC (rev 769)
+++ trunk/BSDBuild/agar-dev.pm  2008-11-01 16:26:39 UTC (rev 770)
@@ -74,23 +74,15 @@
        if ($os eq 'windows') {
                MkDefine('AGAR_DEV_CFLAGS', '');
                MkDefine('AGAR_DEV_LIBS', 'ag_dev');
-       } elsif ($os eq 'linux' || $os eq 'darwin' ||
-                $os =~ /^(open|net|free)bsd$/) {
+       } else {
                MkDefine('AGAR_DEV_CFLAGS', '-I/usr/local/include/agar '.
                                            '-I/usr/include/agar');
                MkDefine('AGAR_DEV_LIBS', '-L/usr/local/lib -lag_dev');
-       } else {
-               goto UNAVAIL;
        }
        MkDefine('HAVE_AGAR_DEV', 'yes');
        MkSaveDefine('HAVE_AGAR_DEV', 'AGAR_DEV_CFLAGS', 'AGAR_DEV_LIBS');
        MkSaveMK('AGAR_DEV_CFLAGS', 'AGAR_DEV_LIBS');
        return (1);
-UNAVAIL:
-       MkDefine('HAVE_AGAR_DEV', 'no');
-       MkSaveUndef('HAVE_AGAR_DEV');
-       MkSaveMK('AGAR_DEV_CFLAGS', 'AGAR_DEV_LIBS');
-       return (1);
 }
 
 sub Link

Modified: trunk/BSDBuild/agar-map.pm
===================================================================
--- trunk/BSDBuild/agar-map.pm  2008-11-01 15:48:18 UTC (rev 769)
+++ trunk/BSDBuild/agar-map.pm  2008-11-01 16:26:39 UTC (rev 770)
@@ -70,23 +70,15 @@
        if ($os eq 'windows') {
                MkDefine('AGAR_MAP_CFLAGS', '');
                MkDefine('AGAR_MAP_LIBS', 'ag_map');
-       } elsif ($os eq 'linux' || $os eq 'darwin' ||
-                $os =~ /^(open|net|free)bsd$/) {
+       } else {
                MkDefine('AGAR_MAP_CFLAGS', '-I/usr/local/include/agar '.
                                            '-I/usr/include/agar');
                MkDefine('AGAR_MAP_LIBS', '-L/usr/local/lib -lag_map');
-       } else {
-               goto UNAVAIL;
        }
        MkDefine('HAVE_AGAR_MAP', 'yes');
        MkSaveDefine('HAVE_AGAR_MAP', 'AGAR_MAP_CFLAGS', 'AGAR_MAP_LIBS');
        MkSaveMK('AGAR_MAP_CFLAGS', 'AGAR_MAP_LIBS');
        return (1);
-UNAVAIL:
-       MkDefine('HAVE_AGAR_MAP', 'no');
-       MkSaveUndef('HAVE_AGAR_MAP');
-       MkSaveMK('AGAR_MAP_CFLAGS', 'AGAR_MAP_LIBS');
-       return (1);
 }
 
 sub Link

Modified: trunk/BSDBuild/agar-math.pm
===================================================================
--- trunk/BSDBuild/agar-math.pm 2008-11-01 15:48:18 UTC (rev 769)
+++ trunk/BSDBuild/agar-math.pm 2008-11-01 16:26:39 UTC (rev 770)
@@ -79,23 +79,16 @@
        } elsif ($os eq 'windows') {
                MkDefine('AGAR_MATH_CFLAGS', '');
                MkDefine('AGAR_MATH_LIBS', 'ag_math');
-       } elsif ($os eq 'linux' || $os =~ /^(open|net|free)bsd$/) {
+       } else {
                MkDefine('AGAR_MATH_CFLAGS', '-I/usr/include/agar 
-I/usr/include '.
                                             '-I/usr/local/include/agar '.
                                                                 
'-I/usr/local/include ');
                MkDefine('AGAR_MATH_LIBS', '-L/usr/local/lib -lag_math');
-       } else {
-               goto UNAVAIL;
        }
        MkDefine('HAVE_AGAR_MATH', 'yes');
        MkSaveDefine('HAVE_AGAR_MATH', 'AGAR_MATH_CFLAGS', 'AGAR_MATH_LIBS');
        MkSaveMK('AGAR_MATH_CFLAGS', 'AGAR_MATH_LIBS');
        return (1);
-UNAVAIL:
-       MkDefine('HAVE_AGAR_MATH', 'no');
-       MkSaveUndef('HAVE_AGAR_MATH');
-       MkSaveMK('AGAR_MATH_CFLAGS', 'AGAR_MATH_LIBS');
-       return (1);
 }
 
 sub Link

Modified: trunk/BSDBuild/agar-rg.pm
===================================================================
--- trunk/BSDBuild/agar-rg.pm   2008-11-01 15:48:18 UTC (rev 769)
+++ trunk/BSDBuild/agar-rg.pm   2008-11-01 16:26:39 UTC (rev 770)
@@ -72,23 +72,15 @@
        if ($os eq 'windows') {
                MkDefine('AGAR_RG_CFLAGS', '');
                MkDefine('AGAR_RG_LIBS', 'ag_rg');
-       } elsif ($os eq 'linux' || $os eq 'darwin' ||
-                $os =~ /^(open|net|free)bsd$/) {
+       } else {
                MkDefine('AGAR_RG_CFLAGS', '-I/usr/local/include/agar '.
                                           '-I/usr/include/agar');
                MkDefine('AGAR_RG_LIBS', '-L/usr/local/lib -lag_rg');
-       } else {
-               goto UNAVAIL;
        }
        MkDefine('HAVE_AGAR_RG', 'yes');
        MkSaveDefine('HAVE_AGAR_RG', 'AGAR_RG_CFLAGS', 'AGAR_RG_LIBS');
        MkSaveMK('AGAR_RG_CFLAGS', 'AGAR_RG_LIBS');
        return (1);
-UNAVAIL:
-       MkDefine('HAVE_AGAR_RG', 'no');
-       MkSaveUndef('HAVE_AGAR_RG');
-       MkSaveMK('AGAR_RG_CFLAGS', 'AGAR_RG_LIBS');
-       return (1);
 }
 
 sub Link

Modified: trunk/BSDBuild/agar-vg.pm
===================================================================
--- trunk/BSDBuild/agar-vg.pm   2008-11-01 15:48:18 UTC (rev 769)
+++ trunk/BSDBuild/agar-vg.pm   2008-11-01 16:26:39 UTC (rev 770)
@@ -69,23 +69,15 @@
        if ($os eq 'windows') {
                MkDefine('AGAR_VG_CFLAGS', '');
                MkDefine('AGAR_VG_LIBS', 'ag_vg');
-       } elsif ($os eq 'linux' || $os eq 'darwin' ||
-                $os =~ /^(open|net|free)bsd$/) {
+       } else {
                MkDefine('AGAR_VG_CFLAGS', '-I/usr/local/include/agar '.
                                            '-I/usr/include/agar');
                MkDefine('AGAR_VG_LIBS', '-L/usr/local/lib -lag_vg');
-       } else {
-               goto UNAVAIL;
        }
        MkDefine('HAVE_AGAR_VG', 'yes');
        MkSaveDefine('HAVE_AGAR_VG', 'AGAR_VG_CFLAGS', 'AGAR_VG_LIBS');
        MkSaveMK('AGAR_VG_CFLAGS', 'AGAR_VG_LIBS');
        return (1);
-UNAVAIL:
-       MkDefine('HAVE_AGAR_VG', 'no');
-       MkSaveUndef('HAVE_AGAR_VG');
-       MkSaveMK('AGAR_VG_CFLAGS', 'AGAR_VG_LIBS');
-       return (1);
 }
 
 sub Link

Modified: trunk/BSDBuild/agar.pm
===================================================================
--- trunk/BSDBuild/agar.pm      2008-11-01 15:48:18 UTC (rev 769)
+++ trunk/BSDBuild/agar.pm      2008-11-01 16:26:39 UTC (rev 770)
@@ -77,25 +77,18 @@
        } elsif ($os eq 'windows') {
                MkDefine('AGAR_CFLAGS', '');
                MkDefine('AGAR_LIBS', 'ag_core ag_gui');
-       } elsif ($os eq 'linux' || $os =~ /^(open|net|free)bsd$/) {
+       } else {
                MkDefine('AGAR_CFLAGS', '-I/usr/include/agar -I/usr/include '.
                                        '-I/usr/local/include/agar '.
                                                            
'-I/usr/local/include ');
                MkDefine('AGAR_LIBS', '-L/usr/local/lib -lag_gui -lag_core 
-lSDL '.
                                      '-lpthread -lfreetype -lz 
-L/usr/X11R6/lib '.
                                                          '-lGL -lm');
-       } else {
-               goto UNAVAIL;
        }
        MkDefine('HAVE_AGAR', 'yes');
        MkSaveDefine('HAVE_AGAR', 'AGAR_CFLAGS', 'AGAR_LIBS');
        MkSaveMK('AGAR_CFLAGS', 'AGAR_LIBS');
        return (1);
-UNAVAIL:
-       MkDefine('HAVE_AGAR', 'no');
-       MkSaveUndef('HAVE_AGAR');
-       MkSaveMK('AGAR_CFLAGS', 'AGAR_LIBS');
-       return (1);
 }
 
 sub Link

Modified: trunk/BSDBuild/edacious.pm
===================================================================
--- trunk/BSDBuild/edacious.pm  2008-11-01 15:48:18 UTC (rev 769)
+++ trunk/BSDBuild/edacious.pm  2008-11-01 16:26:39 UTC (rev 770)
@@ -68,13 +68,43 @@
        return (0);
 }
 
+sub Emul
+{
+       my ($os, $osrel, $machine) = @_;
+
+       if ($os eq 'darwin') {
+               MkDefine('EDACIOUS_CFLAGS', '-I/opt/local/include/edacious '.
+                                           '-I/opt/local/include '.
+                                           '-I/usr/local/include/edacious '.
+                                                               
'-I/usr/local/include '.
+                                           '-I/usr/include/edacious 
-I/usr/include '.
+                                           '-D_THREAD_SAFE');
+               MkDefine('EDACIOUS_LIBS', '-L/usr/lib -L/opt/local/lib '.
+                                         '-L/usr/local/lib '.
+                                         '-L/usr/X11R6/lib '.
+                                         '-les_core');
+       } elsif ($os eq 'windows') {
+               MkDefine('EDACIOUS_CFLAGS', '');
+               MkDefine('EDACIOUS_LIBS', 'es_core');
+       } else {
+               MkDefine('EDACIOUS_CFLAGS', '-I/usr/include/edacious 
-I/usr/include '.
+                                         '-I/usr/local/include/edacious '.
+                                                             
'-I/usr/local/include ');
+               MkDefine('EDACIOUS_LIBS', '-L/usr/local/lib -les_core');
+       }
+       MkDefine('HAVE_EDACIOUS', 'yes');
+       MkSaveDefine('HAVE_EDACIOUS', 'EDACIOUS_CFLAGS', 'EDACIOUS_LIBS');
+       MkSaveMK('EDACIOUS_CFLAGS', 'EDACIOUS_LIBS');
+       return (1);
+}
+
 sub Link
 {
        my $var = shift;
 
-       if ($var eq 'edacious') {
+       if ($var eq 'edacious' || $var eq 'es_core') {
                print << 'EOF';
-tinsert(package.links, { "edacious" })
+tinsert(package.links, { "es_core" })
 EOF
                return (1);
        }
@@ -86,6 +116,7 @@
        $TESTS{'edacious'} = \&Test;
        $DESCR{'edacious'} = 'Edacious (http://edacious.hypertriton.com/)';
        $DEPS{'edacious'} = 'cc,agar,agar-vg,agar-math';
+       $EMUL{'edacious'} = \&Emul;
        $LINK{'edacious'} = \&Link;
 }
 

Modified: trunk/BSDBuild/freesg.pm
===================================================================
--- trunk/BSDBuild/freesg.pm    2008-11-01 15:48:18 UTC (rev 769)
+++ trunk/BSDBuild/freesg.pm    2008-11-01 16:26:39 UTC (rev 770)
@@ -79,23 +79,16 @@
        } elsif ($os eq 'windows') {
                MkDefine('FREESG_CFLAGS', '');
                MkDefine('FREESG_LIBS', 'freesg_pe freesg glu');
-       } elsif ($os eq 'linux' || $os =~ /^(open|net|free)bsd$/) {
+       } else {
                MkDefine('FREESG_CFLAGS', '-I/usr/include/freesg -I/usr/include 
'.
                                          '-I/usr/local/include/freesg '.
                                                              
'-I/usr/local/include ');
                MkDefine('FREESG_LIBS', '-L/usr/local/lib -lfreesg_pe -lfreesg 
-lGLU');
-       } else {
-               goto UNAVAIL;
        }
        MkDefine('HAVE_FREESG', 'yes');
        MkSaveDefine('HAVE_FREESG', 'FREESG_CFLAGS', 'FREESG_LIBS');
        MkSaveMK('FREESG_CFLAGS', 'FREESG_LIBS');
        return (1);
-UNAVAIL:
-       MkDefine('HAVE_FREESG', 'no');
-       MkSaveUndef('HAVE_FREESG');
-       MkSaveMK('FREESG_CFLAGS', 'FREESG_LIBS');
-       return (1);
 }
 
 sub Link

Modified: trunk/BSDBuild/freetype.pm
===================================================================
--- trunk/BSDBuild/freetype.pm  2008-11-01 15:48:18 UTC (rev 769)
+++ trunk/BSDBuild/freetype.pm  2008-11-01 16:26:39 UTC (rev 770)
@@ -72,13 +72,36 @@
 sub Link
 {
        my $lib = shift;
+       my @inclpaths = ();
+       my @libpaths = ();
 
        if ($lib eq 'freetype') {
-                       print << 'EOF';
-if (hdefs["HAVE_FREETYPE"] ~= nil) then
-       table.insert(package.links, { "freetype" })
-end
-EOF
+               print 'if (hdefs["HAVE_FREETYPE"] ~= nil) then'."\n";
+               print 'table.insert(package.links, { "freetype" })'."\n";
+
+               if ($EmulEnv =~ /^cb-(gcc|ow)$/) {
+                       if ($EmulOS eq 'windows') {
+                               @inclpaths = 
('C:\\\\MinGW\\\\include\\\\freetype',
+                                             'C:\\\\MinGW\\\\include',
+                                             'C:\\\\Program 
Files\\\\freetype\\\\include');
+                               @libpaths = ('C:\\\\MinGW\\\\lib\\\\freetype',
+                                            'C:\\\\MinGW\\\\lib',
+                                            'C:\\\\Program 
Files\\\\freetype\\\\lib');
+                       } else {
+                               @inclpaths = ('/usr/include/freetype',
+                                             '/usr/local/include/freetype',
+                                                     
'/usr/X11R6/include/freetype');
+                               @libpaths = ('/usr/local/lib', 
'/usr/X11R6/lib', '/usr/lib');
+                       }
+                       foreach my $path (@inclpaths) {
+                               print 
"table.insert(package.includepaths,{\"$path\"})\n";
+                       }
+                       foreach my $path (@libpaths) {
+                               print 
"table.insert(package.libpaths,{\"$path\"})\n";
+                       }
+               }
+
+               print "end\n";
                return (1);
        }
        return (0);
@@ -95,7 +118,7 @@
        } elsif ($os eq 'windows') {
                MkDefine('FREETYPE_CFLAGS', '');
                MkDefine('FREETYPE_LIBS', 'freetype6');
-       } elsif ($os eq 'linux' || $os =~ /^(open|net|free)bsd$/) {
+       } else {
                MkDefine('FREETYPE_CFLAGS', '-I/usr/include/freetype2 '.
                                            '-I/usr/local/include/freetype2 '.
                                                                        
'-I/usr/local/include '.
@@ -106,18 +129,11 @@
                                          '-L/usr/X11R6/lib '.
                                          '-Wl,--rpath --Wl,/usr/X11R6/lib ' .
                                          '-lfreetype -lz');
-       } else {
-               goto UNAVAIL;
        }
        MkDefine('HAVE_FREETYPE', 'yes');
        MkSaveDefine('HAVE_FREETYPE', 'FREETYPE_CFLAGS', 'FREETYPE_LIBS');
        MkSaveMK('FREETYPE_CFLAGS', 'FREETYPE_LIBS');
        return (1);
-UNAVAIL:
-       MkDefine('HAVE_FREETYPE', 'no');
-       MkSaveUndef('HAVE_FREETYPE');
-       MkSaveMK('FREETYPE_CFLAGS', 'FREETYPE_LIBS');
-       return (1);
 }
 
 BEGIN

Modified: trunk/BSDBuild/opengl.pm
===================================================================
--- trunk/BSDBuild/opengl.pm    2008-11-01 15:48:18 UTC (rev 769)
+++ trunk/BSDBuild/opengl.pm    2008-11-01 16:26:39 UTC (rev 770)
@@ -111,20 +111,31 @@
 sub Link
 {
        my $lib = shift;
+       my @paths = ();
 
-       if ($lib eq 'opengl') {
-                       print << 'EOF';
-if (hdefs["HAVE_OPENGL"] ~= nil) then
-       if (windows) then
-               tinsert(package.links, { "opengl32" })
-       else
-               tinsert(package.links, { "GL" })
-       end
-end
-EOF
-               return (1);
+       if ($lib ne 'opengl') {
+               return (0);
        }
-       return (0);
+
+       if ($EmulEnv =~ /^cb-(gcc|ow)$/) {
+               @paths = ('C:\\\\MinGW\\\\include');
+       } else {
+               @paths = ('/usr/include',
+                         '/usr/local/include',
+                         '/usr/X11R6/include');
+       }
+
+       print 'if (hdefs["HAVE_OPENGL"] ~= nil) then'."\n";
+       if ($EmulOS eq 'windows') {
+               print 'table.insert(package.links, {"opengl32"})'."\n";
+       } else {
+               print 'table.insert(package.links, {"GL"})'."\n";
+       }
+       foreach my $path (@paths) {
+               print "table.insert(package.includepaths,{\"$path\"})\n";
+       }
+       print "end\n";
+       return (1);
 }
 
 sub Emul
@@ -137,21 +148,14 @@
        } elsif ($os eq 'windows') {
                MkDefine('OPENGL_CFLAGS', '');
                MkDefine('OPENGL_LIBS', 'opengl32');
-       } elsif ($os eq 'linux' || $os =~ /^(open|net|free)bsd$/) {
+       } else {
                MkDefine('OPENGL_CFLAGS', '-I/usr/X11R6/include');
                MkDefine('OPENGL_LIBS', '-lGL');
-       } else {
-               goto UNAVAIL;
        }
        MkDefine('HAVE_OPENGL', 'yes');
        MkSaveDefine('HAVE_OPENGL', 'OPENGL_CFLAGS', 'OPENGL_LIBS');
        MkSaveMK('OPENGL_CFLAGS', 'OPENGL_LIBS');
        return (1);
-UNAVAIL:
-       MkDefine('HAVE_OPENGL', 'no');
-       MkSaveUndef('HAVE_OPENGL');
-       MkSaveMK('OPENGL_CFLAGS', 'OPENGL_LIBS');
-       return (1);
 }
 
 BEGIN

Modified: trunk/BSDBuild/pthreads.pm
===================================================================
--- trunk/BSDBuild/pthreads.pm  2008-11-01 15:48:18 UTC (rev 769)
+++ trunk/BSDBuild/pthreads.pm  2008-11-01 16:26:39 UTC (rev 770)
@@ -271,9 +271,7 @@
 
                MkSaveUndef('HAVE_PTHREAD_MUTEX_RECURSIVE');
                MkSaveUndef('HAVE_PTHREAD_MUTEX_RECURSIVE_NP');
-               return (1);
-       }
-       if ($os eq 'darwin') {
+       } elsif ($os eq 'darwin') {
                MkDefine('HAVE_PTHREADS', 'yes');
                MkDefine('HAVE_PTHREADS_XOPEN', 'yes');
                MkDefine('HAVE_PTHREAD_MUTEX_RECURSIVE', 'yes');
@@ -288,9 +286,7 @@
                             'PTHREADS_LIBS', 'HAVE_PTHREAD_MUTEX_RECURSIVE');
 
                MkSaveUndef('HAVE_PTHREAD_MUTEX_RECURSIVE_NP');
-               return (1);
-       }
-       if ($os eq 'windows') {
+       } elsif ($os eq 'windows') {
                MkDefine('HAVE_PTHREADS', 'yes');
                MkDefine('HAVE_PTHREADS_XOPEN', 'yes');
                MkDefine('HAVE_PTHREAD_MUTEX_RECURSIVE', 'yes');
@@ -305,40 +301,35 @@
                             'PTHREADS_LIBS', 'HAVE_PTHREAD_MUTEX_RECURSIVE');
 
                MkSaveUndef('HAVE_PTHREAD_MUTEX_RECURSIVE_NP');
-               return (1);
-       }
-       if ($os =~ /^(net|open)bsd$/) {
+       } elsif ($os eq 'freebsd') {
                MkDefine('HAVE_PTHREADS', 'yes');
                MkDefine('HAVE_PTHREADS_XOPEN', 'yes');
                MkDefine('HAVE_PTHREAD_MUTEX_RECURSIVE', 'yes');
 
                MkDefine('PTHREADS_CFLAGS', '');
                MkDefine('PTHREADS_LIBS', '-lpthread');
-               MkDefine('PTHREADS_XOPEN_CFLAGS', '-U_XOPEN_SOURCE '.
-                                                 '-D_XOPEN_SOURCE=600');
+               MkDefine('PTHREADS_XOPEN_CFLAGS', '');
                MkDefine('PTHREADS_XOPEN_LIBS', '-lpthread');
 
                MkSaveDefine('HAVE_PTHREADS', 'HAVE_PTHREADS_XOPEN', 
'PTHREADS_CFLAGS',
                             'PTHREADS_LIBS', 'HAVE_PTHREAD_MUTEX_RECURSIVE');
 
                MkSaveUndef('HAVE_PTHREAD_MUTEX_RECURSIVE_NP');
-               return (1);
-       }
-       if ($os eq 'freebsd') {
+       } else {
                MkDefine('HAVE_PTHREADS', 'yes');
                MkDefine('HAVE_PTHREADS_XOPEN', 'yes');
                MkDefine('HAVE_PTHREAD_MUTEX_RECURSIVE', 'yes');
 
                MkDefine('PTHREADS_CFLAGS', '');
                MkDefine('PTHREADS_LIBS', '-lpthread');
-               MkDefine('PTHREADS_XOPEN_CFLAGS', '');
+               MkDefine('PTHREADS_XOPEN_CFLAGS', '-U_XOPEN_SOURCE '.
+                                                 '-D_XOPEN_SOURCE=600');
                MkDefine('PTHREADS_XOPEN_LIBS', '-lpthread');
 
                MkSaveDefine('HAVE_PTHREADS', 'HAVE_PTHREADS_XOPEN', 
'PTHREADS_CFLAGS',
                             'PTHREADS_LIBS', 'HAVE_PTHREAD_MUTEX_RECURSIVE');
 
                MkSaveUndef('HAVE_PTHREAD_MUTEX_RECURSIVE_NP');
-               return (1);
        }
        return (1);
 }
@@ -346,20 +337,44 @@
 sub Link
 {
        my $lib = shift;
+       my @inclpaths = ();
+       my @libpaths = ();
 
-       if ($lib eq 'pthreads') {
-                       print << 'EOF';
-if (hdefs["HAVE_PTHREADS"] ~= nil) then
-       if (windows) then
-               table.insert(package.links, { "pthreadVC2" })
-       else
-               table.insert(package.links, { "pthread" })
-       end
-end
-EOF
-               return (1);
+       if ($lib ne 'pthreads') {
+               return (0);
        }
-       return (0);
+
+       if ($EmulEnv =~ /^cb-(gcc|ow)$/) {
+               if ($EmulOS eq 'windows') {
+                       @inclpaths = ('C:\\\\MinGW\\\\include\\\\Pthreads',
+                                 'C:\\\\MinGW\\\\include\\\\Pthread',
+                                     'C:\\\\MinGW\\\\include',
+                                     'C:\\\\Program 
Files\\\\Pthreads\\\\include');
+                       @libpaths = ('C:\\\\MinGW\\\\lib\\\\Pthreads',
+                                    'C:\\\\MinGW\\\\lib',
+                                    'C:\\\\Program Files\\\\Pthreads\\\\lib');
+               } else {
+                       @inclpaths = ('/usr/local/include',
+                                             '/usr/local/include/pthreads',
+                                     '/usr/include');
+                       @libpaths = ('/usr/local/lib', '/usr/lib');
+               }
+       }
+
+       print 'if (hdefs["HAVE_PTHREADS"] ~= nil) then'."\n";
+       if ($EmulOS eq 'windows') {
+               print 'table.insert(package.links, { "pthreadVC2" })'."\n";
+       } else {
+               print 'table.insert(package.links, { "pthread" })'."\n";
+       }
+       foreach my $path (@inclpaths) {
+               print "table.insert(package.includepaths,{\"$path\"})\n";
+       }
+       foreach my $path (@libpaths) {
+               print "table.insert(package.libpaths,{\"$path\"})\n";
+       }
+       print "end\n";
+       return (1);
 }
 
 BEGIN

Modified: trunk/BSDBuild/sdl.pm
===================================================================
--- trunk/BSDBuild/sdl.pm       2008-11-01 15:48:18 UTC (rev 769)
+++ trunk/BSDBuild/sdl.pm       2008-11-01 16:26:39 UTC (rev 770)
@@ -24,6 +24,8 @@
 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
 # USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE..
 
+use BSDBuild::Core;
+
 sub Test
 {
        my ($ver) = @_;
@@ -92,16 +94,40 @@
 sub Link
 {
        my $lib = shift;
+       my @inclpaths = ();
+       my @libpaths = ();
 
-       if ($lib eq 'SDL' || $lib eq 'SDLmain') {
-                       print << 'EOF';
-if (hdefs["HAVE_SDL"] ~= nil) then
-       tinsert(package.links, { "SDL", "SDLmain" })
-end
-EOF
-               return (1);
+       if ($lib ne 'SDL' && $lib ne 'SDLmain') {
+               return (0);
        }
-       return (0);
+
+       if ($EmulEnv =~ /^cb-(gcc|ow)$/) {
+               if ($EmulOS eq 'windows') {
+                       @inclpaths = ('C:\\\\MinGW\\\\include\\\\SDL',
+                                     'C:\\\\MinGW\\\\include',
+                                     'C:\\\\Program Files\\\\SDL\\\\include');
+                       @libpaths = ('C:\\\\MinGW\\\\lib\\\\SDL',
+                                    'C:\\\\MinGW\\\\lib',
+                                    'C:\\\\Program Files\\\\SDL\\\\lib');
+               } else {
+                       @inclpaths = ('/usr/local/include/SDL',
+                                     '/usr/include/SDL',
+                                                 '/usr/local/include',
+                                     '/usr/include');
+                       @libpaths = ('/usr/local/lib', '/usr/lib');
+               }
+       }
+
+       print 'if (hdefs["HAVE_SDL"] ~= nil) then'."\n";
+       print 'table.insert(package.links, { "SDL", "SDLmain" })'."\n";
+       foreach my $path (@inclpaths) {
+               print "table.insert(package.includepaths,{\"$path\"})\n";
+       }
+       foreach my $path (@libpaths) {
+               print "table.insert(package.libpaths,{\"$path\"})\n";
+       }
+       print "end\n";
+       return (1);
 }
 
 sub Emul

Modified: trunk/build.proj.mk
===================================================================
--- trunk/build.proj.mk 2008-11-01 15:48:18 UTC (rev 769)
+++ trunk/build.proj.mk 2008-11-01 16:26:39 UTC (rev 770)
@@ -37,43 +37,59 @@
 PROJECT?=
 PROJDIR?=      ProjectFiles
 PROJFILESEXTRA?=
-PROJINCLUDES?=${TOP}/configure.lua
 PROJFILELIST=  .projfiles2.out
 PROJPREPKG?=
 PROJPOSTPKG?=
+PROJCONFIGDIR?=
 
-PROJFILES?=    windows:i386:cb-gcc:: \
+PROJFILES?=    bsd:i386:cb-gcc:: \
+               linux:i386:cb-gcc:: \
+               macosx:i386:cb-gcc:: \
+               windows:i386:cb-gcc:: \
+               windows:i386:cb-ow:: \
                windows:i386:vs6:: \
                windows:i386:vs2002:: \
                windows:i386:vs2003:: \
-               windows:i386:vs2005::
+               windows:i386:vs2005:: \
+               windows:i386:vs2008::
 
-CLEANFILES+=   premake.lua configure.lua
+CLEANFILES+=   ${PREMAKEOUT} ${PROJINCLUDES}
 
+proj-package:
+       @if [ "${PROJECT}" = "" ]; then \
+           echo "cat Makefile | ${MKPROJFILES} > ${PREMAKEOUT}"; \
+           cat Makefile | \
+               env PROJTARGET="${PROJTARGET}" PROJOS="${PROJOS}" \
+               PROJARCH="${PROJARCH}" PROJFLAVOR="" \
+               PROJINCLUDES="${PROJINCLUDES}" \
+               ${MKPROJFILES} > ${PREMAKEOUT}; \
+       fi
+
 proj:
-       @if [ "${PROJECT}" = "" ]; then \
-           echo "${MKPROJFILES}  ${PROJINCLUDES} > ${PREMAKEOUT}"; \
-           cat Makefile | ${MKPROJFILES} "" ${PROJINCLUDES} > ${PREMAKEOUT}; \
-       else \
-           if [ ! -d "${PROJDIR}" ]; then \
-               echo "mkdir -p ${PROJDIR}"; \
-               mkdir -p ${PROJDIR}; \
-           fi; \
-           for TGT in ${PROJFILES}; do \
-               _tgtos=`echo $$TGT |awk -F: '{print $$1}' `; \
-               _tgtarch=`echo $$TGT |awk -F: '{print $$2}' `; \
-               _tgtproj=`echo $$TGT |awk -F: '{print $$3}' `; \
-               _tgtflav=`echo $$TGT |awk -F: '{print $$4}' `; \
-               _tgtopts=`echo $$TGT |awk -F: '{print $$5}'|sed 's/,/ /g'`; \
+       @if [ ! -d "${PROJDIR}" ]; then \
+               echo "mkdir -p ${PROJDIR}"; \
+               mkdir -p ${PROJDIR}; \
+       fi
+       @for TGT in ${PROJFILES}; do \
+               _tgtos=`echo $$TGT |awk -F: '{print $$1}' `; \
+               _tgtarch=`echo $$TGT |awk -F: '{print $$2}' `; \
+               _tgtproj=`echo $$TGT |awk -F: '{print $$3}' `; \
+               _tgtflav=`echo $$TGT |awk -F: '{print $$4}' `; \
+               _tgtopts=`echo $$TGT |awk -F: '{print $$5}'|sed 's/,/ /g'`; \
                echo "*"; \
                echo "* Target: $$_tgtos ($$_tgtproj)"; \
                echo "* Target flavor: $$_tgtflav"; \
                echo "* Target options: $$_tgtopts"; \
                echo "*"; \
+               \
                if [ -e "config" ]; then \
                        echo "rm -fR config"; \
                        rm -fR config; \
                fi; \
+               if [ -e "include" ]; then \
+                       echo "rm -fR include"; \
+                       rm -fR include; \
+               fi; \
                echo "mkconfigure --emul-env=$$_tgtproj --emul-os=$$_tgtos \
                    --emul-arch=$$_tgtarch > configure.tmp"; \
                cat configure.in | \
@@ -81,7 +97,7 @@
                    --emul-arch=$$_tgtarch > configure.tmp; \
                if [ $$? != 0 ]; then \
                        echo "mkconfigure failed"; \
-                       rm -fR configure.tmp configure.lua; \
+                       rm -fR configure.tmp ${PROJINCLUDES}; \
                        exit 1; \
                fi; \
                echo "./configure.tmp $$_tgtopts --with-proj-generation"; \
@@ -91,23 +107,28 @@
                        echo > Makefile.config; \
                        exit 1; \
                fi; \
-               echo "${MAKE} proj-subdir"; \
-               ${MAKE} proj-subdir; \
+               echo "${MAKE} proj-package-subdir"; \
+               env PROJTARGET="$$_tgtproj" PROJOS="$$_tgtos" \
+                   PROJARCH="$$_tgtarch" \
+                   ${MAKE} proj-package-subdir; \
                \
-               echo "rm -fR include/agar/config"; \
-               rm -fR include/agar/config; \
-               echo "cp -fR config include/agar/config"; \
-               cp -fR config include/agar/config; \
+               if [ "${PROJCONFIGDIR}" != "" ]; then \
+                       echo "rm -fR ${PROJCONFIGDIR}"; \
+                       rm -fR ${PROJCONFIGDIR}; \
+                       echo "cp -fR config ${PROJCONFIGDIR}"; \
+                       cp -fR config ${PROJCONFIGDIR}; \
+               fi; \
                echo "rm -f configure.tmp config.log"; \
                rm -f configure.tmp config.log; \
                echo >Makefile.config; \
                \
-               echo "* Begin file snapshot"; \
                perl ${TOP}/mk/cmpfiles.pl; \
-               echo "cat Makefile | ${MKPROJFILES} "$$_tgtflav" \
-                   ${PROJINCLUDES} > ${PREMAKEOUT}";\
-               cat Makefile | ${MKPROJFILES} "$$_tgtflav" \
-                   ${PROJINCLUDES} > ${PREMAKEOUT};\
+               echo "cat Makefile | ${MKPROJFILES} > ${PREMAKEOUT}"; \
+               cat Makefile | \
+                   env PROJFLAVOR="$$_tgtflav" \
+                   PROJOS="$$_tgtos" \
+                   PROJINCLUDES="${PROJINCLUDES}" \
+                   ${MKPROJFILES} > ${PREMAKEOUT}; \
                echo "${PREMAKE} ${PREMAKEFLAGS} --file ${PREMAKEOUT} \
                    --os $$_tgtos --target $$_tgtproj"; \
                ${PREMAKE} ${PREMAKEFLAGS} --file ${PREMAKEOUT} \
@@ -116,7 +137,6 @@
                        echo "premake failed"; \
                        exit 1; \
                fi; \
-               echo "* End snapshot:"; \
                perl ${TOP}/mk/cmpfiles.pl added > .projfiles.out; \
                echo "* Generated files: "; \
                cat .projfiles.out; \
@@ -150,15 +170,13 @@
                echo "* Cleaning up"; \
                cat .projfiles.out | perl ${TOP}/mk/cleanfiles.pl; \
                rm -fR include config ${PROJFILELIST}; \
-               rm -f configure.lua .projfiles.out; \
-               echo "${MAKE} proj-clean"; \
-               ${MAKE} proj-clean; \
-               echo "* Done"; \
-           done; \
-       fi
+               rm -f .projfiles.out ${PROJINCLUDES}; \
+       done
+       ${MAKE} proj-clean
+       @echo "* Done"
 
 proj-clean: proj-clean-subdir
-       @echo "rm -f premake.lua"
-       @rm -f premake.lua
+       @echo "rm -f ${PREMAKEOUT}"
+       @rm -f ${PREMAKEOUT}
 
 .PHONY: proj

Modified: trunk/build.subdir.mk
===================================================================
--- trunk/build.subdir.mk       2008-11-01 15:48:18 UTC (rev 769)
+++ trunk/build.subdir.mk       2008-11-01 16:26:39 UTC (rev 770)
@@ -267,7 +267,7 @@
                done; \
        fi)
 
-proj-subdir:
+proj-package-subdir:
        @(if [ "${SUBDIR}" = "" ]; then \
            SUBDIR="NONE"; \
        else \
@@ -276,7 +276,7 @@
        if [ "$$SUBDIR" != "" -a "$$SUBDIR" != "NONE" ]; then \
                for F in $$SUBDIR; do \
                    echo "==> ${REL}$$F"; \
-                   (cd $$F && ${MAKE} REL=${REL}$$F/ proj); \
+                   (cd $$F && ${MAKE} REL=${REL}$$F/ proj-package); \
                    if [ $$? != 0 ]; then \
                        exit 1; \
                    fi; \
@@ -304,4 +304,4 @@
 .PHONY:        all-subdir-ifexists clean-subdir-ifexists 
cleandir-subdir-ifexists
 .PHONY: install-subdir-ifexists deinstall-subdir-ifexists
 .PHONY: depend-subdir-ifexists regress-subdir-ifexists
-.PHONY: proj-subdir proj-clean-subdir
+.PHONY: proj-package-subdir proj-clean-subdir

_______________________________________________
BSDBuild-Commits mailing list
[email protected]
http://mail231.csoft.net/mailman/listinfo/bsdbuild-commits

Reply via email to