]> granicus.if.org Git - php/commitdiff
Add support for building C++ sources.
authorSascha Schumann <sas@php.net>
Sun, 9 Jul 2000 20:39:18 +0000 (20:39 +0000)
committerSascha Schumann <sas@php.net>
Sun, 9 Jul 2000 20:39:18 +0000 (20:39 +0000)
In your extension's config.m4, you need to use the m4 macro

    PHP_REQUIRE_CXX

This shall be called only, if your extension is enabled.

C++ source files shall not be put into the LTLIBRARY_SOURCES macro.
Instead, the filename of the object shall be put into
LTLIBRARY_OBJECTS_X. I.e. if your extension foo consists of foo.cxx, use

    LTLIBRARY_OBJECTS_X = foo.lo

acinclude.m4
build/library.mk
build/rules.mk
configure.in
dynlib.m4

index 0daebf6dfa86c834b11d25cacb7086b61e235851..b2e702e53e999a2c88e32d21d21b883add912c3b 100644 (file)
@@ -420,6 +420,14 @@ AC_DEFUN(PHP_BUILD_THREAD_SAFE,[
   fi
 ])
 
+AC_DEFUN(PHP_REQUIRE_CXX,[
+  if test -z "$php_cxx_done"; then
+    AC_PROG_CXX
+    AC_PROG_CXXCPP
+    php_cxx_done=yes
+  fi
+])
+
 dnl
 dnl PHP_BUILD_SHARED
 dnl
index 8950e944b2ea28f802bcb1d5baa686b59cdf5435..3726c538cf222c6256ab8043c39e55e47e89691e 100644 (file)
@@ -24,7 +24,7 @@
 # $Id$ 
 #
 
-LTLIBRARY_OBJECTS = $(LTLIBRARY_SOURCES:.c=.lo)
+LTLIBRARY_OBJECTS = $(LTLIBRARY_SOURCES:.c=.lo) $(LTLIBRARY_OBJECTS_X)
 
 $(LTLIBRARY_NAME): $(LTLIBRARY_OBJECTS) $(LTLIBRARY_DEPENDENCIES)
        $(LINK) $(LTLIBRARY_LDFLAGS) $(LTLIBRARY_OBJECTS) $(LTLIBRARY_LIBADD)
index f55cff86475ecd4d90292198c3b962e4e8af9cbc..3097da5076c548d19a7aa8bf41b6a27d8ec51d75 100644 (file)
 
 include $(top_builddir)/config_vars.mk
 
-COMPILE = $(CC) $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS)  $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --mode=link $(CCLD) $(CFLAGS) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@
+COMMON_FLAGS = $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS)
+COMPILE      = $(CC)  $(COMMON_FLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
+CXX_COMPILE  = $(CXX) $(COMMON_FLAGS) $(CXXFLAGS) $(EXTRA_CXXFLAGS)
+
+SHARED_COMPILE = $(SHARED_LIBTOOL) --mode=compile $(COMPILE) -c $< && touch $@
+CXX_SHARED_COMPILE = $(SHARED_LIBTOOL) --mode=compile $(CXX_COMPILE) -c $< && touch $@
+
+LINK = $(LIBTOOL) --mode=link $(COMPILE) $(LDFLAGS) -o $@
+
 mkinstalldirs = $(top_srcdir)/build/shtool mkdir -p
 INSTALL = $(top_srcdir)/build/shtool install -c
 INSTALL_DATA = $(INSTALL) -m 644
-SHARED_COMPILE = $(SHARED_LIBTOOL) --mode=compile $(CC) $(DEFS)   $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) -c $< && touch $@
+
 DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I$(top_builddir) -I$(top_builddir)/main
 
 moduledir    = $(EXTENSION_DIR)
 
 .SUFFIXES:
-.SUFFIXES: .slo .c .lo .o .s .y .l
+.SUFFIXES: .slo .c .cxx .lo .o .s .y .l
 
 .c.o:
        $(COMPILE) -c $<
 
+.cxx.o:
+       $(CXX_COMPILE) -c $<
+
 .s.o:
        $(COMPILE) -c $<
 
 .c.lo:
        $(PHP_COMPILE)
 
+.cxx.lo:
+       $(CXX_PHP_COMPILE)
+
 .s.lo:
        $(PHP_COMPILE)
 
 .c.slo:
        $(SHARED_COMPILE)
 
+.cxx.slo:
+       $(CXX_SHARED_COMPILE)
+
 .y.c:
        $(YACC) $(YFLAGS) $< && mv y.tab.c $*.c
        if test -f y.tab.h; then \
index 1953c769f39c1597c29d86613dbee596428b9d8c..9d9a5123b5cc7aadcaf440a2aff60eec0ed13231 100644 (file)
@@ -694,6 +694,7 @@ PHP_SUBST(CONFIGURE_COMMAND)
 PHP_SUBST(CPP)
 PHP_SUBST(CPPFLAGS)
 PHP_SUBST(CXX)
+PHP_SUBST(CXXFLAGS)
 PHP_SUBST(DEBUG_CFLAGS)
 PHP_SUBST(DEFS)
 PHP_SUBST(EXTENSION_DIR)
@@ -751,6 +752,7 @@ if test "$enable_debug" != "yes"; then
 fi
 
 PHP_COMPILE='$(LIBTOOL) --mode=compile $(COMPILE) -c $<'
+CXX_PHP_COMPILE='$(LIBTOOL) --mode=compile $(CXX_COMPILE) -c $<'
 
 if test "$enable_shared" = "yes"; then
   SHARED_LIBTOOL='$(LIBTOOL)'
@@ -761,6 +763,7 @@ else
     SHARED_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool'
   else
     PHP_COMPILE='$(COMPILE) -c $< && touch $@'
+    CXX_PHP_COMPILE='$(CXX_COMPILE) -c $< && touch $@'
   fi
 fi
 
index 77c607c25cb489f6b7c0666044bebf8e676e5e4f..5917b187f02ada43c251ffb7b95f0052c8d388d3 100644 (file)
--- a/dynlib.m4
+++ b/dynlib.m4
@@ -5,7 +5,7 @@ AC_DEFUN(LIB_SHARED_CONVENIENCE,[
   lib_target="\$(LTLIBRARY_NAME)"
   cat >>$1<<EOF
 \$(LTLIBRARY_NAME): \$(LTLIBRARY_SHARED_OBJECTS) \$(LTLIBRARY_DEPENDENCIES)
-       \$(SHARED_LIBTOOL) --mode=link \$(CCLD) \$(CFLAGS) \$(EXTRA_CFLAGS) \$(LDFLAGS) -o \[$]@ \$(LTLIBRARY_LDFLAGS) \$(LTLIBRARY_OBJECTS) \$(LTLIBRARY_SHARED_LIBADD)
+       \$(SHARED_LIBTOOL) --mode=link \$(COMPILE) \$(LDFLAGS) -o \[$]@ \$(LTLIBRARY_LDFLAGS) \$(LTLIBRARY_OBJECTS) \$(LTLIBRARY_SHARED_LIBADD)
 
 EOF
 ])
@@ -14,7 +14,7 @@ AC_DEFUN(LIB_SHARED_MODULE,[
   lib_target="\$(LTLIBRARY_SHARED_NAME)"
   cat >>$1<<EOF
 \$(LTLIBRARY_SHARED_NAME): \$(LTLIBRARY_SHARED_OBJECTS) \$(LTLIBRARY_DEPENDENCIES)
-       \$(SHARED_LIBTOOL) --mode=link \$(CCLD) \$(CFLAGS) \$(EXTRA_CFLAGS) \$(LDFLAGS) -o \[$]@ -avoid-version -module -rpath \$(phplibdir) \$(LTLIBRARY_LDFLAGS) \$(LTLIBRARY_OBJECTS) \$(LTLIBRARY_SHARED_LIBADD)
+       \$(SHARED_LIBTOOL) --mode=link \$(COMPILE) \$(LDFLAGS) -o \[$]@ -avoid-version -module -rpath \$(phplibdir) \$(LTLIBRARY_LDFLAGS) \$(LTLIBRARY_OBJECTS) \$(LTLIBRARY_SHARED_LIBADD)
        \$(SHARED_LIBTOOL) --mode=install cp \[$]@ \$(phplibdir)
 
 EOF
@@ -37,7 +37,7 @@ AC_DEFUN(LIB_BUILD,[
   
   $php_shtool mkdir -p $1
   cat >$lib_makefile<<EOF
-LTLIBRARY_OBJECTS = \$(LTLIBRARY_SOURCES:.c=.lo)
+LTLIBRARY_OBJECTS = \$(LTLIBRARY_SOURCES:.c=.lo) \$(LTLIBRARY_OBJECTS_X)
 LTLIBRARY_SHARED_OBJECTS = \$(LTLIBRARY_OBJECTS:.lo=.slo)
 EOF