Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:51716 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 63634 invoked from network); 16 Mar 2011 19:01:06 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 16 Mar 2011 19:01:06 -0000 Authentication-Results: pb1.pair.com header.from=keisial@gmail.com; sender-id=pass; domainkeys=bad Authentication-Results: pb1.pair.com smtp.mail=keisial@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.161.42 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: keisial@gmail.com X-Host-Fingerprint: 209.85.161.42 mail-fx0-f42.google.com Received: from [209.85.161.42] ([209.85.161.42:45225] helo=mail-fx0-f42.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id BC/C0-58282-0D8018D4 for ; Wed, 16 Mar 2011 14:01:04 -0500 Received: by fxm1 with SMTP id 1so1954596fxm.29 for ; Wed, 16 Mar 2011 12:00:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:message-id:date:from:user-agent:mime-version:to :cc:subject:references:in-reply-to:content-type :content-transfer-encoding; bh=RZHxng+Cy1asBQ0rv8DYfgpfhxeHH4b3rmQOagBdCC4=; b=aaNpqZlYzuIS1JIMQtW5CKUd2wFtsJ5wWaLeFgSGjjaskjaT7ha6y3z3ZG5xa24Z4/ ImlKAszz+8AooFuW4BlhANUGuQOwSYyncxXYCBwOFSZ16FhO/PHDTrK0mQg1MPW9UYcT bet9PGvRfGeqWa7CpJQk9o9fOpUhZO4HnsV3k= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; b=GoFkkxaNfHq46Xm43aJYES7JUd+lzs27e5xpykXWKajXH+2mD+nEH/V4ydmGGOx4za 8zwWbA1U1PZgDSNfv8vnkyA/Wno+cwYE/tswEEfRzHru69UiIAZptCHfbH67K9SpdA2o +JRtxP+GsKdbAqLVP+PnxgqOpD1+Y+8Vsx/DE= Received: by 10.223.77.19 with SMTP id e19mr410184fak.36.1300302025966; Wed, 16 Mar 2011 12:00:25 -0700 (PDT) Received: from [192.168.1.26] (68.Red-83-42-240.dynamicIP.rima-tde.net [83.42.240.68]) by mx.google.com with ESMTPS id n7sm592756fam.35.2011.03.16.12.00.24 (version=SSLv3 cipher=OTHER); Wed, 16 Mar 2011 12:00:24 -0700 (PDT) Message-ID: <4D8109CF.9040008@gmail.com> Date: Wed, 16 Mar 2011 20:04:47 +0100 User-Agent: Thunderbird MIME-Version: 1.0 To: Alec CC: PHP Developers Mailing List References: <50863.5626b73e.1300221859.nsm@avilys.eik.lt> <06.04.19768.955008D4@pb1.pair.com> In-Reply-To: <06.04.19768.955008D4@pb1.pair.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] Package php binaries + php script into one singleexecutable file From: keisial@gmail.com ("=?ISO-8859-1?Q?=C1ngel_Gonz=E1lez?=") Alec wrote: > I actually wrote that. I never imagined someone would actually find > that useful! > > If you don't mind having a few external dlls, you can use dl (ick!) to > load the extensions. > > I gave up supporting that because compiling the custom lightweight > stubs took more work than I cared for. I am considering reviving the > project and this time not writing in PHP (PHP should really not be > used for GUIs IMO). I have given a look at http://winbinder.org/forum/viewtopic.php?f=10&t=1178 Your usage of php.exe and php5ts.dll in the stub folder confused me, but I guess that it is there just for being able to debug with that stub, and actually never used. Your current approach for a stub (set of php + libraries) seems to be: * Configure php with the chosen extensions as static * Add a static target to Makefile * Compile * Link library with embedder (a bit inefficiently by using the GUI) I think that could be done faster if instead you built all extensions as shared and modified the Makefile to convert all those dll to static libraries. Then you would build php once, and get the different stubs just by linking with different objects. You would need to change zend_API.h's ZEND_GET_MODULE to define a constructor function which autoloaded the module. That approach should work for most extensions.