Changeset 689

Show
Ignore:
Timestamp:
10/29/08 09:44:17 (2 months ago)
Author:
weyrick
Message:

compatibility fixes concerning bigloo 3.0c and 3.1b. also allow for
system gc library, rather than bigloo bundled. addresses #3610, maybe others.
there are still known failures on 3.1b, however it now compiles.
thanks to igli for the original patch, which this is based on.

Location:
trunk/pcc
Files:
9 modified

Legend:

Unmodified
Added
Removed
  • trunk/pcc/Makefile.config.in

    r461 r689  
    55BIGLOOVERSION = @BIGLOO_VERSION@ 
    66BIGLOO_LIB_PATH = @BIGLOO_LIB_PATH@ 
    7 STATIC_SUFFIX =  
     7BIGLOO_GC_LIB = @BIGLOO_GC_LIB@ 
     8STATIC_SUFFIX = 
    89BIGLOO_PIC = -copt -fPIC 
    910C_PIC = -fPIC 
     11 
     12# GC_LIB can be gc or bigloogc 
     13ifeq ($(BIGLOO_GC_LIB),bigloogc) 
     14 BIGLOO_GC_LIB = bigloogc-$(BIGLOOVERSION) 
     15endif 
    1016 
    1117# build .so libraries 
     
    107113 
    108114#these are pretty bad 
    109 #LINK_APACHE_MODULE = $(APXS) -I$(BGL_DEFAULT_LIB_DIR) -c mod_pcc.c $(MOD_OBJS) -o mod_pcc_s.so -I/usr/local/include/libxml2  -s  -lcrypt     -L../../libs -L. -L$(BGL_DEFAULT_LIB_DIR) -lprofiler_$(SU)  -lphp-runtime_$(SU) -lphpeval_$(SU) -lwebconnect_$(SU)  -lbigloo_$(SU)-$(BIGLOO_VERSION) -lbigloogc-$(BIGLOO_VERSION) $(OS_LIBS) -lm 
     115#LINK_APACHE_MODULE = $(APXS) -I$(BGL_DEFAULT_LIB_DIR) -c mod_pcc.c $(MOD_OBJS) -o mod_pcc_s.so -I/usr/local/include/libxml2  -s  -lcrypt     -L../../libs -L. -L$(BGL_DEFAULT_LIB_DIR) -lprofiler_$(SU)  -lphp-runtime_$(SU) -lphpeval_$(SU) -lwebconnect_$(SU)  -lbigloo_$(SU)-$(BIGLOO_VERSION) -l$(BIGLOO_GC_LIB) $(OS_LIBS) -lm -lc 
    110116 
    111 #LINK_APACHE_MODULE_UNSAFE = $(APXS) -I$(BGL_DEFAULT_LIB_DIR) -c mod_pcc.c -o mod_pcc_u.so $(MOD_OBJS) -I/usr/local/include/libxml2  -s  -lcrypt     -L../../libs -L. -L$(BGL_DEFAULT_LIB_DIR) -lprofiler_u  -lphp-runtime_u -lphpeval_u -lwebconnect_u  -lbigloo_u-$(BIGLOO_VERSION) -lbigloogc-$(BIGLOO_VERSION) $(OS_LIBS) -lm 
    112117 
    113 #LINK_APACHE2_MODULE = $(APXS2) -I$(BGL_DEFAULT_LIB_DIR) -c mod_pcc2.c $(MOD2_OBJS) -export-dynamic -I/usr/local/include/libxml2  -s $(APR_LINK) -lcrypt     -L../../libs -L. -L$(BGL_DEFAULT_LIB_DIR) -lprofiler_$(SU)  -lphp-runtime_$(SU) -lphpeval_$(SU) -lwebconnect_$(SU)  -lbigloo_$(SU)-$(BIGLOO_VERSION) -lbigloogc-$(BIGLOO_VERSION) $(OS_LIBS) -lm 
     118#LINK_APACHE_MODULE_UNSAFE = $(APXS) -I$(BGL_DEFAULT_LIB_DIR) -c mod_pcc.c -o mod_pcc_u.so $(MOD_OBJS) -I/usr/local/include/libxml2  -s  -lcrypt     -L../../libs -L. -L$(BGL_DEFAULT_LIB_DIR) -lprofiler_u  -lphp-runtime_u -lphpeval_u -lwebconnect_u  -lbigloo_u-$(BIGLOO_VERSION) -l$(BIGLOO_GC_LIB) $(OS_LIBS) -lm -lc 
    114119 
    115 #LINK_APACHE2_MODULE_UNSAFE = $(APXS2) -I$(BGL_DEFAULT_LIB_DIR) -c mod_pcc2.c $(MOD2_OBJS) -I/usr/local/include/libxml2  -s $(APR_LINK) -lcrypt     -L../../libs -L. -L$(BGL_DEFAULT_LIB_DIR) -lprofiler_u  -lphp-runtime_u -lphpeval_u -lwebconnect_u  -lbigloo_u-$(BIGLOO_VERSION) -lbigloogc-$(BIGLOO_VERSION) $(OS_LIBS) -lm 
    116120 
     121#LINK_APACHE2_MODULE = $(APXS2) -I$(BGL_DEFAULT_LIB_DIR) -c mod_pcc2.c $(MOD2_OBJS) -export-dynamic -I/usr/local/include/libxml2  -s $(APR_LINK) -lcrypt     -L../../libs -L. -L$(BGL_DEFAULT_LIB_DIR) -lprofiler_$(SU)  -lphp-runtime_$(SU) -lphpeval_$(SU) -lwebconnect_$(SU)  -lbigloo_$(SU)-$(BIGLOO_VERSION) -l$(BIGLOO_GC_LIB) $(OS_LIBS) -lm -lc 
     122 
     123#LINK_APACHE2_MODULE_UNSAFE = $(APXS2) -I$(BGL_DEFAULT_LIB_DIR) -c mod_pcc2.c $(MOD2_OBJS) -I/usr/local/include/libxml2  -s $(APR_LINK) -lcrypt     -L../../libs -L. -L$(BGL_DEFAULT_LIB_DIR) -lprofiler_u  -lphp-runtime_u -lphpeval_u -lwebconnect_u  -lbigloo_u-$(BIGLOO_VERSION) -l$(BIGLOO_GC_LIB) $(OS_LIBS) -lm -lc 
     124 
  • trunk/pcc/Makefile.mingw

    r63 r689  
    1818 
    1919#on windows, the DLLs cannot have unresolved symbols 
    20 RUNTIME_DLL_LIBS = -L$(BGL_DEFAULT_LIB_DIR) -lbigloo_$(SU)-$(BIGLOOVERSION) -lbigloogc-$(BIGLOOVERSION) -lws2_32 -liberty 
    21 COMPILER_DLL_LIBS = -L../libs/ -lphp-runtime_$(SU)-$(BIGLOOVERSION) -lprofiler_$(SU)-$(BIGLOOVERSION) -L$(BGL_DEFAULT_LIB_DIR) -lwebconnect_$(SU)-$(BIGLOOVERSION) -lbigloo_$(SU)-$(BIGLOOVERSION) -lbigloogc-$(BIGLOOVERSION)  -lws2_32  
    22 WEBCONNECT_DLL_LIBS = -L../libs/ -lphp-runtime_$(SU)-$(BIGLOOVERSION) -L$(BGL_DEFAULT_LIB_DIR) -lprofiler_$(SU)-$(BIGLOOVERSION) -lbigloo_$(SU)-$(BIGLOOVERSION) -lbigloogc-$(BIGLOOVERSION)  -lws2_32  
    23 FASTCGI_DLL_LIBS = -L../../libs/ -lphp-runtime_$(SU)-$(BIGLOOVERSION) -L$(BGL_DEFAULT_LIB_DIR) -lwebconnect_$(SU)-$(BIGLOOVERSION) -lphpeval_$(SU)-$(BIGLOOVERSION) -lprofiler_$(SU)-$(BIGLOOVERSION) -lbigloo_$(SU)-$(BIGLOOVERSION) -lbigloogc-$(BIGLOOVERSION) -lws2_32 -L/usr/local/lib -lfcgi 
    24 CGI_DLL_LIBS = -L../../libs/ -lphp-runtime_$(SU)-$(BIGLOOVERSION) -L$(BGL_DEFAULT_LIB_DIR) -lwebconnect_$(SU)-$(BIGLOOVERSION) -lphpeval_$(SU)-$(BIGLOOVERSION) -lprofiler_$(SU)-$(BIGLOOVERSION) -lbigloo_$(SU)-$(BIGLOOVERSION) -lbigloogc-$(BIGLOOVERSION)  -lws2_32  
    25 MHTTPD_DLL_LIBS = -L../../libs/ -lphp-runtime_$(SU)-$(BIGLOOVERSION) -L$(BGL_DEFAULT_LIB_DIR) -L/usr/local/lib -lprofiler_$(SU)-$(BIGLOOVERSION) -lbigloo_$(SU)-$(BIGLOOVERSION) -lbigloogc-$(BIGLOOVERSION) -lwebconnect_$(SU)-$(BIGLOOVERSION) -lphpeval_$(SU)-$(BIGLOOVERSION) -lws2_32 -lwebserver -lws2_32 
    26 EXTENSION_DLL_LIBS = -L$(LIB)  -lphpeval_$(SU)-$(BIGLOOVERSION) -lphp-runtime_$(SU)-$(BIGLOOVERSION) -L$(BGL_DEFAULT_LIB_DIR) -lprofiler_$(SU)-$(BIGLOOVERSION) -lbigloo_$(SU)-$(BIGLOOVERSION) -lbigloogc-$(BIGLOOVERSION) -lws2_32 -lm 
     20RUNTIME_DLL_LIBS = -L$(BGL_DEFAULT_LIB_DIR) -lbigloo_$(SU)-$(BIGLOOVERSION) -lws2_32 -liberty 
     21COMPILER_DLL_LIBS = -L../libs/ -lphp-runtime_$(SU)-$(BIGLOOVERSION) -lprofiler_$(SU)-$(BIGLOOVERSION) -L$(BGL_DEFAULT_LIB_DIR) -lwebconnect_$(SU)-$(BIGLOOVERSION) -lbigloo_$(SU)-$(BIGLOOVERSION)  -lws2_32 
     22WEBCONNECT_DLL_LIBS = -L../libs/ -lphp-runtime_$(SU)-$(BIGLOOVERSION) -L$(BGL_DEFAULT_LIB_DIR) -lprofiler_$(SU)-$(BIGLOOVERSION) -lbigloo_$(SU)-$(BIGLOOVERSION) -l$(BIGLOO_GC_LIB) -lws2_32 
     23FASTCGI_DLL_LIBS = -L../../libs/ -lphp-runtime_$(SU)-$(BIGLOOVERSION) -L$(BGL_DEFAULT_LIB_DIR) -lwebconnect_$(SU)-$(BIGLOOVERSION) -lphpeval_$(SU)-$(BIGLOOVERSION) -lprofiler_$(SU)-$(BIGLOOVERSION) -lbigloo_$(SU)-$(BIGLOOVERSION) -l$(BIGLOO_GC_LIB) -lws2_32 -L/usr/local/lib -lfcgi 
     24CGI_DLL_LIBS = -L../../libs/ -lphp-runtime_$(SU)-$(BIGLOOVERSION) -L$(BGL_DEFAULT_LIB_DIR) -lwebconnect_$(SU)-$(BIGLOOVERSION) -lphpeval_$(SU)-$(BIGLOOVERSION) -lprofiler_$(SU)-$(BIGLOOVERSION) -lbigloo_$(SU)-$(BIGLOOVERSION)  -lws2_32 
     25MHTTPD_DLL_LIBS = -L../../libs/ -lphp-runtime_$(SU)-$(BIGLOOVERSION) -L$(BGL_DEFAULT_LIB_DIR) -L/usr/local/lib -lprofiler_$(SU)-$(BIGLOOVERSION) -lbigloo_$(SU)-$(BIGLOOVERSION) -lwebconnect_$(SU)-$(BIGLOOVERSION) -lphpeval_$(SU)-$(BIGLOOVERSION) -l$(BIGLOO_GC_LIB) -lws2_32 -lwebserver -lws2_32 
     26EXTENSION_DLL_LIBS = -L$(LIB)  -lphpeval_$(SU)-$(BIGLOOVERSION) -lphp-runtime_$(SU)-$(BIGLOOVERSION) -L$(BGL_DEFAULT_LIB_DIR) -lprofiler_$(SU)-$(BIGLOOVERSION) -lbigloo_$(SU)-$(BIGLOOVERSION) -l$(BIGLOO_GC_LIB) -lws2_32 -lm 
    2727PROFILER_DLL_LIBS = $(BIGLOO_LIBS) -L/usr/local/lib -lgw32c -lole32 -luuid 
    2828DOTEST_LIBS = -L /usr/local/lib -lgw32c -lws2_32  
  • trunk/pcc/bigloo-rules.mk

    r399 r689  
    4141CPPUNSAFEFLAGS  = $(CUNSAFEFLAGS) 
    4242 
    43 BIGLOO_LIBS     = -L$(BGL_DEFAULT_LIB_DIR) -lbigloo_$(SU)-$(BIGLOOVERSION) -lbigloogc-$(BIGLOOVERSION) 
     43BIGLOO_LIBS     = -L$(BGL_DEFAULT_LIB_DIR) -lbigloo_$(SU)-$(BIGLOOVERSION) -l$(BIGLOO_GC_LIB) 
    4444 
    4545# we could put non-pic code in the static libraries without too much 
  • trunk/pcc/compiler/target.scm

    r653 r689  
    604604   `',*bigloo-version*) 
    605605 
     606(define-macro (bigloo-gc-lib) 
     607   `',*gc-lib*) 
     608 
    606609(define (res-out-file-name file) 
    607610   (string-append (prefix file) "-res.o")) 
     
    791794                (scheme-libraries-and-includes)) 
    792795      (pushf (string-append "-l" "bigloo" (safety-ext) "-" (bigloo-version)) libs) 
    793       (pushf (string-append "-l" "bigloogc" "-" (bigloo-version)) libs) 
     796      (pushf (if (eqv? (bigloo-gc-lib) 'bigloogc) 
     797                        (string-append "-lbigloogc-" (bigloo-version)) 
     798                        (string-append "-l" (symbol->string (bigloo-gc-lib))) 
     799                        ) libs) 
    794800 
    795801      ; verbose if we're really debugging 
  • trunk/pcc/configure

    r632 r689  
    726726PDO_DRIVER_LIST 
    727727PDO_DRIVER_ARRAY 
     728BIGLOO_GC_LIB 
    728729srcdir 
    729730LIBOBJS 
     
    31223123# can't figure out how to get this into AC_CHECK_PROG_VER below? 
    31233124# have to change it there too 
    3124 want_bigloo="3.0c, 3.0d, 3.1a, 3.1b" 
     3125want_bigloo="3.0c, 3.1a, 3.1b" 
    31253126want_curl=7.15.1 
    31263127 
     
    31923193  case $ac_prog_version in 
    31933194    '') ac_prog_version_m="v. ?.??, bad"; ac_verc_fail=yes;; 
    3194     3.0c | 3.0d | 3.1a | 3.1b) 
     3195    3.0c | 3.1a | 3.1b) 
    31953196       ac_prog_version_m="$ac_prog_version, ok"; ac_verc_fail=no;; 
    31963197    *) ac_prog_version_m="$ac_prog_version, bad"; ac_verc_fail=yes;; 
     
    32123213 
    32133214BIGLOO_LIB_PATH=`bigloo -eval "(display *default-lib-dir*)(exit 0)"` 
     3215BIGLOO_GC_LIB=`bigloo -eval "(display *gc-lib*)(exit 0)"` 
    32143216 
    32153217# XXX for now we require PCC_HOME variable 
     
    55765578 
    55775579PCC_LIBS=$PCC_LIBS 
     5580 
     5581BIGLOO_GC_LIB=$BIGLOO_GC_LIB 
    55785582 
    55795583 
     
    63886392PDO_DRIVER_LIST!$PDO_DRIVER_LIST$ac_delim 
    63896393PDO_DRIVER_ARRAY!$PDO_DRIVER_ARRAY$ac_delim 
     6394BIGLOO_GC_LIB!$BIGLOO_GC_LIB$ac_delim 
    63906395srcdir!$srcdir$ac_delim 
    63916396LIBOBJS!$LIBOBJS$ac_delim 
     
    63936398_ACEOF 
    63946399 
    6395   if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 17; then 
     6400  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 18; then 
    63966401    break 
    63976402  elif $ac_last_try; then 
     
    68376842        bigloo version:           ${BIGLOO_VERSION} 
    68386843        bigloo libs:              ${BIGLOO_LIB_PATH} 
     6844        bigloo gc:                ${BIGLOO_GC_LIB} 
    68396845        readline:                 ${with_readline} 
    68406846 
  • trunk/pcc/configure.in

    r632 r689  
    2727# can't figure out how to get this into AC_CHECK_PROG_VER below? 
    2828# have to change it there too 
    29 want_bigloo="3.0c, 3.0d, 3.1a, 3.1b" 
     29want_bigloo="3.0c, 3.1a, 3.1b" 
    3030want_curl=7.15.1 
    3131 
     
    5050                  -revision, 
    5151                  [\([2-9].[0-9][a-z]\)], 
    52                   [3.0c | 3.0d | 3.1a | 3.1b], 
     52                  [3.0c | 3.1a | 3.1b], 
    5353                  AC_MSG_FAILURE([Bigloo version $want_bigloo required in the system path])) 
    5454 
     
    5656 
    5757BIGLOO_LIB_PATH=`bigloo -eval "(display *default-lib-dir*)(exit 0)"` 
     58BIGLOO_GC_LIB=`bigloo -eval "(display *gc-lib*)(exit 0)"` 
    5859 
    5960# XXX for now we require PCC_HOME variable 
     
    412413AC_SUBST(CONF_HOME, $CONF_HOME) 
    413414AC_SUBST(PCC_LIBS, $PCC_LIBS) 
     415AC_SUBST(BIGLOO_GC_LIB, $BIGLOO_GC_LIB) 
    414416 
    415417AC_SUBST(prefix, $prefix) 
     
    451453        bigloo version:           ${BIGLOO_VERSION} 
    452454        bigloo libs:              ${BIGLOO_LIB_PATH} 
     455        bigloo gc:                ${BIGLOO_GC_LIB} 
    453456        readline:                 ${with_readline} 
    454457 
  • trunk/pcc/runtime/c-runtime.c

    r439 r689  
    295295} 
    296296 
    297 /* this is a workaround for a bigloo problem. manuel has been notified, get 
    298    rid of this when we require the next release with a fix (3.0d?) */ 
     297 
     298/* this is a workaround for a bigloo problem in 3.0c */ 
     299BGL_RUNTIME_DEF obj_t 
     300bgl_output_flush( obj_t port, char *str, size_t slen ); 
     301 
    299302BGL_RUNTIME_DEF 
    300303obj_t 
    301304strport_bin_flush( obj_t port ) { 
     305 
     306#ifdef BGL_3_0c 
    302307   obj_t res; 
    303308 
     
    313318      return string_to_bstring( "" ); 
    314319   } 
    315 } 
    316  
    317  
     320#else 
     321 
     322   // bigloo >3.0c 
     323   FLUSH_OUTPUT_PORT(port); 
     324 
     325#endif 
     326 
     327} 
     328 
     329 
  • trunk/pcc/runtime/ext/sockets/php-sockets.scm

    r449 r689  
    174174                            #f) 
    175175                         (begin 
    176                             (php-socket-bsocket-set! sock (make-client-socket (mkstr address) 
    177                                                                               (mkfixnum cport) 
    178                                                                               :buffer #f)) 
     176                            (cond-expand 
     177                               (bigloo3.0c 
     178                                (php-socket-bsocket-set! sock (make-client-socket (mkstr address) 
     179                                                                                  (mkfixnum cport) 
     180                                                                                  :buffer #f))) 
     181                               (else 
     182                                (php-socket-bsocket-set! sock (make-client-socket (mkstr address) 
     183                                                                                  (mkfixnum cport) 
     184                                                                                  :inbuf #f :outbuf #f)))) 
    179185                            (php-socket-connected?-set! sock #t) 
    180186                            #t))) 
  • trunk/pcc/runtime/utils.scm

    r439 r689  
    2929    (php-types "php-types.scm")) 
    3030   (extern 
    31     ;; bigloo's flush-output-port is not binary safe on string ports, 
     31    ;; in 3.0c, bigloo's flush-output-port is not binary safe on string ports, 
    3232    ;; and in recent versions it no longer resets the position to 0 
    3333    (flush-string-port/bin::bstring (::output-port) "strport_bin_flush") 
     
    7676    (pcc-file-separator) 
    7777    (force-trailing-/ p))) 
     78 
    7879 
    7980; a version of php's str_replace