For anybody that is working on getting PHP extensions built using freepascal,
I have some gotchas you may want to know about.
The with strategy of avoiding porting the PHP header files into pascal, I am building a .SO library
for linux so that my PHP binaries can link to it by using a quick and dirty C wrapper to
get access to the pascal library.
One of my extensions that I am building in freepascal also uses the {$L } linker command to include some c based object files into the free pascal
shared library.
The trick to compiling the c based object files is to make sure that you build
a special compile script that will include the -fPIC compile option when building the object
files.
Normally, I can just run make on whatever c project and build the object files,
but to link those object files into a freepascal library, you must also make the object
files get position independent code or the linker inside Lazarus/freepascal goes bonkers.
Just an FYI for anybody who comes across this post in history.
md
Show quoted text 64 lines
Ok:
After a night of dwelling on the problem, the easiest solution is to
create
your linux dynamic libraries as a standalone separate lib.so library
in free pascal
and then use C to create the php extension and link it to the
freepascal library.
Trying to keep up with all of the PHP headers is a real pain in the
ass so just
use the extension environment to wrap the Pascal library is the best way.
This is identical to the mysqli interface where the extension links in
the libmysqlclient.so.xx library
into the php binary.
Hope this helps anyone doing this sort of thing.
md
On 6/1/2013 6:45 PM, wrote:
> Anybody have an opinion about writing dynamic extensions for PHP in
> free pascal?
>
> The samples and discussion at:
>
>
http://community.freepascal.org/bboards/message?message_id=342130&forum_id=24082
>
>
> Indicates PHPToolkit, but all of the definitions inside these file
> are way out of date.
>
> My current PHP version is 5.4.10 and the compiler directives deal
> with 5.2.x at the highest.
>
> And the API version is 2001xxxx while the current is 20100525 and
> higher.
>
> So either I have to inspect the header files in PHP to see what
> changes have been made
> and then do a bunch of testing on struct sizes so I have the header
> files ported correctly.
>
> And it also does not seem to handle 64 bit linux that well since
> there are a lot of records with
> Word sizes (16 bit) but I need unsigned long int values. (Cardinal)
>
> So if anybody has done anything recent with this on a more recent
> version of PHP, pass along
> a shout out.
>
> Thanks for any answer,
>
> md
> _______________________________________________
> fpc-pascal maillist -
>
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
>
_______________________________________________
fpc-pascal maillist -
http://lists.freepascal.org/mailman/listinfo/fpc-pascal