|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2006-11-15 07:35 UTC] phoemix at harmless dot hu
Description:
------------
(the php version is irrelevant, i just couldn't pick that for the "compile failure" type. i had it on 4.x and on 5.x both"
create a new extensions, have a C++ source file, and include some php headers. it will fail on two points.
1) C++ doesn't support "long long". lot's of architectures has stdint.h (i think it's C99). that should be used instead of "long long"-ing manually.
2) C++ prohobits havint a trailing coma at the end of an enum's last member.
i have created a patch for the FreeBSD ports system. the errors are in snprintf.h and in php_stream_filter_api.h/.
--- patch follows ---
diff -ur php-5.2.0-orig/main/snprintf.h php-5.2.0/main/snprintf.h
--- php-5.2.0-orig/main/snprintf.h Sun Jan 1 13:50:17 2006
+++ php-5.2.0/main/snprintf.h Tue Nov 14 14:23:31 2006
@@ -120,8 +120,14 @@
#else
# define WIDE_INT long
#endif
+#ifdef __FreeBSD__
+#include <stdint.h>
+typedef int64_t wide_int;
+typedef uint64_t u_wide_int;
+#else
typedef WIDE_INT wide_int;
typedef unsigned WIDE_INT u_wide_int;
+#endif
typedef int bool_int;
diff -ur php-5.2.0-orig/main/streams/php_stream_filter_api.h php-5.2.0/main/streams/php_stream_filter_api.h
--- php-5.2.0-orig/main/streams/php_stream_filter_api.h Sun Jan 1 13:50:18 2006
+++ php-5.2.0/main/streams/php_stream_filter_api.h Tue Nov 14 14:24:33 2006
@@ -62,7 +62,7 @@
typedef enum {
PSFS_ERR_FATAL, /* error in data stream */
PSFS_FEED_ME, /* filter needs more data; stop processing chain until more is available */
- PSFS_PASS_ON, /* filter generated output buckets; pass them on to next in chain */
+ PSFS_PASS_ON /* filter generated output buckets; pass them on to next in chain */
} php_stream_filter_status_t;
/* Buckets API. */
Reproduce code:
---------------
create a new extensions, have a C++ source file, and include some php headers. it will fail on two points.
Expected result:
----------------
a clean compilation.
Actual result:
--------------
i don't have the error output yet, since my local version is fixed manually.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Dec 22 21:00:01 2025 UTC |
i have this in my header file: extern "C" { #include "php.h" #include "php_ini.h" #include "SAPI.h" #include "ext/standard/info.h" #include "ext/standard/head.h" } and when i compile it i have these errors: g++ -c -O2 -march=pentium4 -ggdb -W -Wall -pedantic -pipe -I/usr/local/include -fpic -DCOMPILE_DL_POLYLOOK=1 -Idbapi/ -Iinclude/ `/var/jails/httpdtest/usr/local/bin/php-config --includes` -o phpext/obj/phpfuncs.o phpext/phpfuncs.cc In file included from /usr/local/include/php/main/php.h:242, from phpext/phpfuncs.cc:7: /usr/local/include/php/main/snprintf.h:138: error: expected `,' or `...' before "num" /usr/local/include/php/main/snprintf.h:139: error: ISO C++ forbids declaration of `wide_int' with no type /usr/local/include/php/main/snprintf.h:144: error: expected `,' or `...' before "num" /usr/local/include/php/main/snprintf.h:145: error: ISO C++ forbids declaration of `u_wide_int' with no type gmake: *** [phpext/obj/phpfuncs.o] Error 1 and: g++ -c -O2 -march=pentium4 -ggdb -W -Wall -pedantic -pipe -I/usr/local/include -fpic -DCOMPILE_DL_POLYLOOK=1 -Idbapi/ -Iinclude/ `/var/jails/httpdtest/usr/local/bin/php-config --includes` -o phpext/obj/phpfuncs.o phpext/phpfuncs.cc In file included from /usr/local/include/php/main/php_streams.h:104, from /usr/local/include/php/main/php.h:408, from phpext/phpfuncs.cc:7: /usr/local/include/php/main/streams/php_stream_filter_api.h:66: error: comma at end of enumerator list gmake: *** [phpext/obj/phpfuncs.o] Error 1.. and it's apparently missing extern "C" { } block. No bug -> bogus.it _do_ has the extern "C". read my previous post please. i have pasted the way i include it, it's in an extern "C" block. let me quote my previous post: [2006-11-15 09:53:25] phoemix at harmless dot hu --- chop with axe here --- i have this in my header file: extern "C" { #include "php.h" #include "php_ini.h" #include "SAPI.h" #include "ext/standard/info.h" #include "ext/standard/head.h" } --- chop with axe here --- now, where is the extern "C" missing? i see it there. please double-check my previous postyes, it was a typo. it's a source file. as i have corrected myself, and as it seems from the g++ command line, the way it is being ran. yes, you do know what is in my .cc file, as i had posted it. for your sake it is here again: <beginning of _SOURCE_ file> extern "C" { #include "php.h" #include "php_ini.h" #include "SAPI.h" #include "ext/standard/info.h" #include "ext/standard/head.h" } #include <stdio.h> #include <stdarg.h> #include <time.h> #include "debug.hh" #include "logger.hh" #include "phpfuncs.hh" #include "skin.hh" #include "phpdb.hh" #include <string> #include <set> <end of header includes> namespace phpfuncs { this much shoud be enough. i only show the relevant lines. i'm here to report a bug, and not to ask questions. so, please don't make this bug reporting place a support center, because it's simply not that. thanks.