* make lmessages scream and die on fpc older than 2.2.0 due to fpc bug
authorplugwash <plugwash@p10link.net>
Thu, 5 Feb 2009 18:38:37 +0000 (18:38 +0000)
committerplugwash <plugwash@p10link.net>
Thu, 5 Feb 2009 18:38:37 +0000 (18:38 +0000)
* add makefile option to build test app without lmessages
* fixup lcore building on various older versions of freepascal

git-svn-id: file:///svnroot/lcore/trunk@35 b1de8a11-f9be-4011-bde0-cc7ace90066a

Makefile
binipstuff.pas
lcorernd.pas
lcoretest.dpr
lmessages.pas
unixstuff.inc

index 4bf4bddf38d2720fee2b24f688bbd4b422eea58a..2d700694a6116db461347deb863ad72828a19311 100755 (executable)
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,8 @@
 all: lcoretest\r
 \r
 all: lcoretest\r
 \r
+nomessages:\r
+       fpc -Sd -gl -dipv6 -dnomessages lcoretest.dpr\r
+\r
 lcoretest: *.pas *.inc lcoretest.dpr\r
        fpc -Sd -gl -dipv6 lcoretest.dpr\r
        \r
 lcoretest: *.pas *.inc lcoretest.dpr\r
        fpc -Sd -gl -dipv6 lcoretest.dpr\r
        \r
index 70ac40121308897df5c63a32cc77094b666611be..8411cd3336a18be9e75c362478433fc525c8dbec 100755 (executable)
@@ -86,12 +86,18 @@ type
 \r
 \r
 \r
 \r
 \r
 \r
-    {$ifdef ipv6}\r
+  {$ifdef ipv6}\r
     {$ifdef ver1_0}\r
       cuint16=word;\r
       cuint32=dword;\r
       sa_family_t=word;\r
     {$ifdef ver1_0}\r
       cuint16=word;\r
       cuint32=dword;\r
       sa_family_t=word;\r
-\r
+\r      TInetSockAddr6 = packed record\r
+        sin6_family: word;\r
+        sin6_port: word;\r
+        sin6_flowinfo: uint32;\r
+        sin6_addr: tin6_addr;\r
+        sin6_scope_id: uint32;\r
+      end;\r
     {$endif}\r
   {$endif}\r
   TinetSockAddrv = packed record\r
     {$endif}\r
   {$endif}\r
   TinetSockAddrv = packed record\r
@@ -532,8 +538,11 @@ end;
 \r
 const\r
   biniplist_prefix='bipl'#0;\r
 \r
 const\r
   biniplist_prefix='bipl'#0;\r
-  biniplist_prefixlen=length(biniplist_prefix);\r
-\r
+  //fpc 1.0.x doesn't seem to like use of length function in a constant \r
+  //definition\r
+  //biniplist_prefixlen=length(biniplist_prefix);\r
+\r  biniplist_prefixlen=5;\r
+  \r
 function biniplist_new:tbiniplist;\r
 begin\r
   result := biniplist_prefix;\r
 function biniplist_new:tbiniplist;\r
 begin\r
   result := biniplist_prefix;\r
index 643de3ad3a74848409756e0f33590b02da53699c..64759e83fc95d67508cae7ac4256d587cc9f4100 100644 (file)
@@ -133,7 +133,13 @@ implementation
 {$ifndef nolcorernd}\r
 uses\r
   {$ifdef win32}windows,activex,{$endif}\r
 {$ifndef nolcorernd}\r
 uses\r
   {$ifdef win32}windows,activex,{$endif}\r
-  {$ifdef unix}baseunix,unix,unixutil,{$endif}\r
+  {$ifdef unix}\r
+    {$ifdef ver1_0}\r
+      linux,\r
+    {$else}\r
+      baseunix,unix,unixutil,\r
+    {$endif}\r
+  {$endif}\r
   fastmd5,sysutils;\r
 \r
 {$ifdef unix}{$include unixstuff.inc}{$endif}\r
   fastmd5,sysutils;\r
 \r
 {$ifdef unix}{$include unixstuff.inc}{$endif}\r
index 3c4277d2cc062b19a1e8ebe503692270a2ce0f86..150b488988437d146784d7184c9f210b02be8469 100755 (executable)
@@ -16,7 +16,9 @@ uses
   //include it to check if it compiles ok ;)\r
   {$ifndef win32}\r
     ,\r
   //include it to check if it compiles ok ;)\r
   {$ifndef win32}\r
     ,\r
-    lmessages,\r
+    {$ifndef nomessages}\r
+      lmessages,\r
+    {$endif}\r
     unitfork\r
   {$endif}\r
   ;\r
     unitfork\r
   {$endif}\r
   ;\r
index 1302e298afb5f3a5ed649bdc9f8a6f4f91ba8215..1b7db62b6380bc046dc64b41b2c85a68cad90f86 100755 (executable)
@@ -14,6 +14,11 @@ interface
 \r
 uses pgtypes,sysutils,bsearchtree,strings,syncobjs;\r
 \r
 \r
 uses pgtypes,sysutils,bsearchtree,strings,syncobjs;\r
 \r
+\r
+{$if (fpc_version < 2) or ((fpc_version=2) and ((fpc_release < 2) or ((fpc_release = 2) and (fpc_patch < 2)) ))}\r
+  {$error this code is only supported under fpc 2.2.2 and above due to bugs in the eventobject code in older versions}\r
+{$endif}\r
+\r
 type\r
   lparam=taddrint;\r
   wparam=taddrint;\r
 type\r
   lparam=taddrint;\r
   wparam=taddrint;\r
index f8c73967a7cd99f946929d96833632a7104afc6c..89c96f2ce84c6615939eb2b4e6779d9668d581e1 100755 (executable)
@@ -8,6 +8,21 @@
       linux.dup(original,result);\r
     end;\r
     {$define gettimeofdaysec := gettimeofday}\r
       linux.dup(original,result);\r
     end;\r
     {$define gettimeofdaysec := gettimeofday}\r
+    const\r
+      IPPROTO_UDP=17;\r
+      IPPROTO_ICMP=1;\r
+    function ntohs(invalue:word):word;inline;\r
+    var\r
+      invaluebytes : array[0..1] of byte absolute invalue;\r
+      resultbytes : array[0..1] of byte absolute result;\r
+    begin\r
+      {$ifdef endian_little}\r
+       resultbytes[0] := invaluebytes[1];\r
+       resultbytes[1] := invaluebytes[0];\r
+      {$else}\r
+       result := invalue;\r
+      {$endif}\r
+    end;  \r
   {$else}\r
     \r
     {$define sigprocmask := fpsigprocmask}\r
   {$else}\r
     \r
     {$define sigprocmask := fpsigprocmask}\r
        end;\r
       {$endif}\r
     {$endif}\r
        end;\r
       {$endif}\r
     {$endif}\r
+    {$ifdef ver2_0}\r
+      const\r
+        IPPROTO_UDP=17;\r
+        IPPROTO_ICMP=1;\r
+    {$endif}\r
+    {$ifdef ver1_9}\r
+      const\r
+        IPPROTO_UDP=17;\r
+        IPPROTO_ICMP=1;\r
+      function ntohs(invalue:word):word;inline;\r
+      var\r
+        invaluebytes : array[0..1] of byte absolute invalue;\r
+       resultbytes : array[0..1] of byte absolute result;\r
+      begin\r
+        {$ifdef endian_little}\r
+         resultbytes[0] := invaluebytes[1];\r
+         resultbytes[1] := invaluebytes[0];\r
+       {$else}\r
+         result := invalue;\r
+       {$endif}\r
+      end;\r
+    {$endif}\r
     procedure gettimeofday(var tv:ttimeval);inline;\r
     begin\r
       fpgettimeofday(@tv,nil);    \r
     procedure gettimeofday(var tv:ttimeval);inline;\r
     begin\r
       fpgettimeofday(@tv,nil);    \r