]> granicus.if.org Git - apache/commitdiff
Switch to using aplibtool for building under OS/2 & add support for building
authorBrian Havard <bjh@apache.org>
Mon, 2 Apr 2001 15:20:45 +0000 (15:20 +0000)
committerBrian Havard <bjh@apache.org>
Mon, 2 Apr 2001 15:20:45 +0000 (15:20 +0000)
loadable modules as OS/2 DLLs.
PR:
Obtained from:
Submitted by:
Reviewed by:

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@88645 13f79535-47bb-0310-9956-ffa450edef68

Makefile.in
acinclude.m4
build/rules.mk
configure.in
os/os2/config.m4
os/os2/core.mk [new file with mode: 0644]
os/os2/core_header.def [new file with mode: 0644]
server/Makefile.in

index 33e6822b1d1cbe68382f0504ee0a35cb7f637a5a..693b463b7ffd41d95ab7b3cfa56758efdbbd7563 100644 (file)
@@ -1,5 +1,5 @@
 
-SUBDIRS = srclib modules os server support
+SUBDIRS = srclib os server modules support
 
 PROGRAM_NAME         = $(progname)
 PROGRAM_SOURCES      = modules.c
@@ -126,3 +126,5 @@ install-suexec:
 
 suexec:
        cd support && make suexec
+
+include $(top_srcdir)/os/os2/core.mk
index ecb2b35080c512a3d338321cd366fad7a8231eac..352605f4581293c78e0bc8e6c9dce3dc9a96e097 100644 (file)
@@ -86,6 +86,10 @@ AC_DEFUN(APACHE_GEN_CONFIG_VARS,[
   APACHE_SUBST(PORT)
   APACHE_SUBST(NOTEST_CFLAGS)
   APACHE_SUBST(NOTEST_LDFLAGS)
+  APACHE_SUBST(CORE_IMPLIB_FILE)
+  APACHE_SUBST(CORE_IMPLIB)
+  APACHE_SUBST(SH_LIBTOOL)
+  APACHE_SUBST(MK_IMPLIB)
 
   abs_srcdir="`(cd $srcdir && pwd)`"
 
index 9d05a727e7e8da5d8e9ce9872bce39642afffa6d..5c909180bed90b89a9a1201f2c5d6e107075834d 100644 (file)
@@ -71,14 +71,13 @@ LT_CXX_COMPILE = $(LIBTOOL) --mode=compile $(CXX_COMPILE) -c $< && touch $@
 # Link-related commands
 
 LINK     = $(LIBTOOL) --mode=link $(COMPILE) $(LTFLAGS) $(LDFLAGS) $(NOTEST_LDFLAGS) -o $@
-SH_LINK  = $(SH_LIBTOOL) --mode=link $(COMPILE) $(LTFLAGS) $(LDFLAGS) $(NOTEST_LDFLAGS) -o $@
+SH_LINK  = $(SH_LIBTOOL) --mode=link $(COMPILE) $(LTFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(NOTEST_LDFLAGS) $(CORE_IMPLIB) -o $@
 MOD_LINK = $(LIBTOOL) --mode=link $(COMPILE) -module $(LTFLAGS) $(LDFLAGS) $(NOTEST_LDFLAGS) -o $@
 
 # Cross compile commands
 
 # Helper programs
 
-SH_LIBTOOL = $(SHELL) $(top_builddir)/shlibtool --silent
 MKINSTALLDIRS = $(abs_srcdir)/build/mkdir.sh
 INSTALL = $(abs_srcdir)/build/install.sh -c
 INSTALL_DATA = $(INSTALL) -m 644
@@ -92,7 +91,7 @@ CXX_SUFFIX = cpp
 SHLIB_SUFFIX = so
 
 .SUFFIXES:
-.SUFFIXES: .S .c .$(CXX_SUFFIX) .lo .o .s .y .l .slo
+.SUFFIXES: .S .c .$(CXX_SUFFIX) .lo .o .s .y .l .slo .def .la
 
 .c.o:
        $(COMPILE) -c $<
@@ -128,6 +127,12 @@ SHLIB_SUFFIX = so
 all: all-recursive
 install: install-recursive
 
+
+# Makes an import library from a def file
+.def.la:
+       $(LIBTOOL) --mode=compile $(MK_IMPLIB) -o $@ $<
+
+
 # if we are doing a distclean, we actually want to hit every 
 # directory that has ever been configured.  To do this, we just do a quick
 # find for all the leftover Makefiles, and then run make distclean in those
@@ -184,7 +189,7 @@ depend: depend-recursive
 clean: clean-recursive clean-x
 
 clean-x:
-       rm -f $(targets) *.slo *.lo *.la *.o $(CLEAN_TARGETS)
+       rm -f $(targets) *.slo *.lo *.la *.o *.obj $(CLEAN_TARGETS)
        rm -rf .libs
 
 distclean: distclean-recursive clean-x
index acab1b43958145f456773708f2f00b5f3e4f8e47..0f71a88191ff6f23d0733d177d9c14ed3776f734 100644 (file)
@@ -41,6 +41,23 @@ fi
 
 AC_CANONICAL_SYSTEM
 
+case "$host_alias" in
+  *os2*)
+      # Use a custom made libtool replacement
+      echo "using aplibtool"
+      LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool"
+      SH_LIBTOOL="$LIBTOOL --shared --export-all"
+      CORE_IMPLIB_FILE="ApacheCoreOS2.la"
+      CORE_IMPLIB="$abs_srcdir/server/$CORE_IMPLIB_FILE"
+      MK_IMPLIB="emximp"
+      SHMOD_EXPORT_EXT="def"
+      other_targets="$other_targets os2core"
+      ;;
+  *)
+      SH_LIBTOOL='$(SHELL) $(top_builddir)/shlibtool --silent'
+      ;;
+esac
+
 dnl
 dnl ## Preload our OS configuration
 APR_PRELOAD
@@ -158,8 +175,10 @@ APACHE_SUBST(OS_DIR)
 APACHE_SUBST(BUILTIN_LIBS)
 
 AM_DISABLE_SHARED
-AM_PROG_LIBTOOL
-APACHE_LIBTOOL_SILENT
+if test -z "$LIBTOOL"; then
+  AM_PROG_LIBTOOL
+  APACHE_LIBTOOL_SILENT
+fi
 
 if test "$apache_need_shared" = "yes"; then
   $SHELL $ac_aux_dir/ltconfig --output=shlibtool --disable-static --srcdir=$ac_aux_dir --cache-file=./config.cache $ac_aux_dir/ltmain.sh
index d6bab02dd4e42802c26765bffd418c3d967c4427..81a6811a3ca66d9931c4c204b7a3a59bfc1cad11 100644 (file)
@@ -1,4 +1,3 @@
 if test "$OS" = "os2" ; then
   CFLAGS="$CFLAGS -DOS2 -O2"
-  LDFLAGS="$LDFLAGS -Zexe"
 fi
diff --git a/os/os2/core.mk b/os/os2/core.mk
new file mode 100644 (file)
index 0000000..aac4356
--- /dev/null
@@ -0,0 +1,7 @@
+# Some rules for making a shared core dll on OS/2
+
+os2core: httpd.dll $(CORE_IMPLIB)
+       $(LIBTOOL) --mode=link gcc $(EXTRA_LDFLAGS) -o httpd $(CORE_IMPLIB)
+
+httpd.dll: $(PROGRAM_DEPENDENCIES) $(CORE_IMPLIB)
+       $(LINK) -Zdll $(EXTRA_LDFLAGS) -s -o $@ server/exports.lo modules.lo $(PROGRAM_DEPENDENCIES) $(EXTRA_LIBS) server/ApacheCoreOS2.def
diff --git a/os/os2/core_header.def b/os/os2/core_header.def
new file mode 100644 (file)
index 0000000..85e02fb
--- /dev/null
@@ -0,0 +1,11 @@
+LIBRARY httpd INITINSTANCE
+DESCRIPTION "Apache Server Core"
+EXPORTS
+  "main"
+  "ap_my_generation"
+  "ap_restart_time"
+  "ap_extended_status"
+  "ap_scoreboard_image"
+  "ap_conftree"
+  "ap_server_root"
+  "ap_top_module"
index 945fdbbfab1b765432d5b06bdbfe3fd5a0bea0b2..fd7af84383616d5b975cfb464e9f1a391fcc8bf3 100644 (file)
@@ -1,7 +1,7 @@
 
 TARGET_EXPORTS    = apache.exports
 CLEAN_TARGETS = gen_test_char gen_uri_delims test_char.h uri_delims.h \
-       $(TARGET_EXPORTS)
+       $(TARGET_EXPORTS) ApacheCoreOS2.def
 
 SUBDIRS = mpm
 
@@ -15,7 +15,7 @@ LTLIBRARY_SOURCES = \
        util_filter.c exports.c buildmark.c scoreboard.c \
        error_bucket.c protocol.c core.c request.c
 
-targets = delete-exports $(LTLIBRARY_NAME)
+targets = delete-exports $(LTLIBRARY_NAME) $(CORE_IMPLIB_FILE)
 
 include $(top_srcdir)/build/rules.mk
 include $(top_srcdir)/build/library.mk
@@ -59,3 +59,8 @@ exports.c: $(EXPORT_FILES)
 
 # wtf does this have to be explicit????
 exports.lo: exports.c
+
+# Rule to make def file for OS/2 core dll
+ApacheCoreOS2.def: exports.c $(top_srcdir)/os/$(OS_DIR)/core_header.def
+       cat $(top_srcdir)/os/$(OS_DIR)/core_header.def > $@
+       $(CPP) $< $(COMMON_FLAGS) | grep "ap_hack_" | sed -e 's/^.*[)]\(.*\);$$/  "\1"/' >> $@