Hi, I'm trying to build enigmail-1.8.2 on OS/2. The problems are that OS/2 only 
supports 8.3 naming with DLLs and needs a def file.
With this patch (ignore the changes to configure) the build dies here.
...
make[1]: Leaving directory `K:/usr/local/src/enigmail-1.8.2/lang'
./util/genxpi enigmail-1.8-os2-x86-gcc3.xpi 1.8 OS2 x86-gcc3 ./build/dist . 
enigmail .dll  yes
genxpi: Generating enigmail-1.8-os2-x86-gcc3.xpi in ./build/dist
Creating enigmail-1.8-os2-x86-gcc3.xpi file
        zip warning: name not matched: subproc.dll
zip I/O error: No such file or directory
zip error: File not found or no read permission (subproc.dll)
make: *** [xpi] Error 18
...

>From 918f990fc70873b98ec9e0271ea30251869840d1 Mon Sep 17 00:00:00 2001
From: Dave Yeo <dave.r....@gmail.com>
Date: Sun, 4 Oct 2015 21:58:44 -0700
Subject: [PATCH] Compile on OS/2

OS/2 needs a def file and 8.3 naming to produce a working DLL
---
 config/getOsTarget.pl  |  3 +++
 configure              | 64 +++++++++++++++++++++++++++++++++++++++++++++-----
 ipc/src/Makefile       | 12 +++++++++-
 ipc/src/subprocess.def |  8 +++++++
 util/genxpi            |  6 +++++
 5 files changed, 86 insertions(+), 7 deletions(-)
 create mode 100644 ipc/src/subprocess.def

diff --git a/config/getOsTarget.pl b/config/getOsTarget.pl
index d6205e9..9dfc717 100755
--- a/config/getOsTarget.pl
+++ b/config/getOsTarget.pl
@@ -138,6 +138,9 @@ elsif ($targetOs eq "Darwin") {
   $dllPrefix = "lib";
   $dllSuffix = ".dylib";
 }
+elsif ($targetOs eq "OS2") {
+  $dllSuffix = ".dll";
+}
 else {
   $dllPrefix = "lib";
   $dllSuffix = ".so";
diff --git a/configure b/configure
index d459eae..0cb4de6 100755
--- a/configure
+++ b/configure
@@ -74,8 +74,8 @@ fi
 # The user is always right.
 if test "${PATH_SEPARATOR+set}" != set; then
   PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+  (PATH='/bin;/bin;/@unixroot/usr/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 
&& {
+    (PATH='/bin:/bin:/@unixroot/usr/bin'; FPATH=$PATH; sh -c :) >/dev/null 
2>&1 ||
       PATH_SEPARATOR=';'
   }
 fi
@@ -1109,7 +1109,7 @@ do
   esac
   # Be sure to have absolute directory names.
   case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
+    [\\/$]* | ?:[\\/]* | ?: )  continue;;
     NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
   esac
   as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
@@ -1689,6 +1689,58 @@ See \`config.log' for more details" "$LINENO" 5; }
   fi
 done
 
+# Backslashes into forward slashes:
+# The following OS/2 specific code is performed AFTER config.site
+# has been loaded to allow users to change their environment there.
+# This strange code is necessary to deal with handling of backslashes by ksh.
+
+if test "$ac_emxsupport" != "no" -a "$ac_emxsupport" != "NO"; then
+  ac_save_IFS="$IFS"
+  IFS="\\"
+  ac_TEMP_PATH=
+  for ac_dir in $PATH; do
+    IFS=$ac_save_IFS
+    if test -z "$ac_TEMP_PATH"; then
+      ac_TEMP_PATH="$ac_dir"
+    else
+      ac_TEMP_PATH="$ac_TEMP_PATH/$ac_dir"
+    fi
+  done
+  export PATH="$ac_TEMP_PATH"
+  unset ac_TEMP_PATH
+
+  # Also, make sure that unix-like entries in PATH contain /@unixroot instead 
of
+  # hardcoded absolute paths to avoid these hardcoded paths in generated files.
+  if test -n "$UNIXROOT"; then
+    ac_save_IFS="$IFS"
+    ac_TEMP_UNIXROOT=`echo "$UNIXROOT" | tr [:upper:] [:lower:]`
+    IFS="$PATH_SEPARATOR"
+    ac_TEMP_PATH=
+    for ac_dir in `echo "$PATH" | tr [:upper:] [:lower:]`; do
+      IFS=$ac_save_IFS
+      case "$ac_dir" in
+        $ac_TEMP_UNIXROOT/usr/*) 
ac_dir="/@unixroot${ac_dir#$ac_TEMP_UNIXROOT}" ;;
+      esac
+      if test -z "$ac_TEMP_PATH"; then
+        ac_TEMP_PATH="$ac_dir"
+      else
+        ac_TEMP_PATH="$ac_TEMP_PATH$PATH_SEPARATOR$ac_dir"
+      fi
+    done
+    unset ac_TEMP_UNIXROOT
+    export PATH="$ac_TEMP_PATH"
+    unset ac_TEMP_PATH
+  fi
+fi
+
+# set ac_executable_extensions!
+if test "$ac_executable_extensions" = ""; then
+  if (sh -c : && sh.exe -c :) >/dev/null 2>/dev/null; then
+    ac_executable_extensions=".exe"
+    export ac_executable_extensions
+  fi
+fi
+
 if test -r "$cache_file"; then
   # Some versions of bash will fail to source /dev/null (special files
   # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
@@ -2533,7 +2585,7 @@ else
   ac_save_c_werror_flag=$ac_c_werror_flag
    ac_c_werror_flag=yes
    ac_cv_prog_cc_g=no
-   CFLAGS="-g"
+            CFLAGS="$CFLAGS -g"
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -3153,8 +3205,8 @@ fi
 # The user is always right.
 if test "${PATH_SEPARATOR+set}" != set; then
   PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+  (PATH='/bin;/bin;/@unixroot/usr/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 
&& {
+    (PATH='/bin:/bin:/@unixroot/usr/bin'; FPATH=$PATH; sh -c :) >/dev/null 
2>&1 ||
       PATH_SEPARATOR=';'
   }
 fi
diff --git a/ipc/src/Makefile b/ipc/src/Makefile
index b1f0731..df30422 100644
--- a/ipc/src/Makefile
+++ b/ipc/src/Makefile
@@ -59,9 +59,19 @@ ifeq ($(OS_TARGET),WINNT)
 OBJ_SUFF = obj
 endif
 
+ifeq ($(OS_TARGET),OS2)
+LDFLAGS += -Zomf -Zdll
+endif
+
 source = subprocess.c
 objfiles = subprocess.$(OBJ_SUFF)
+deffile  =
+ifneq ($(OS_TARGET),OS2)
 libname = $(DLL_PREFIX)subprocess-$(CPU_ARCH)$(DLL_SUFFIX)
+else
+libname = subproc$(DLL_SUFFIX)
+deffile = subprocess.def
+endif
 
 all: install
 
@@ -69,7 +79,7 @@ all: install
 $(objfiles): $(source)
        $(CC) $(CFLAGS) -Wno-return-type-c-linkage -c -o $(objfiles) $^
 
-$(libname): $(objfiles)
+$(libname): $(objfiles) $(deffile)
        $(CC) $(LDFLAGS) -o $(libname) $(objfiles)
 
 install: $(libname)
diff --git a/ipc/src/subprocess.def b/ipc/src/subprocess.def
new file mode 100644
index 0000000..866143a
--- /dev/null
+++ b/ipc/src/subprocess.def
@@ -0,0 +1,8 @@
+LIBRARY subproc INITINSTANCE TERMINSTANCE
+CODE PRELOAD MOVEABLE DISCARDABLE
+DATA PRELOAD MOVEABLE MULTIPLE NONSHARED
+EXPORTS
+  ; segment TEXT32
+  "_closeOtherFds"                                                      ; 
magicseg='TEXT32' len=14
+  "_launchProcess"                                                      ; 
magicseg='TEXT32' len=14
+
diff --git a/util/genxpi b/util/genxpi
index 3f9d365..0d82cb7 100755
--- a/util/genxpi
+++ b/util/genxpi
@@ -78,6 +78,12 @@ if [ ${osArch} = "WINNT" ]; then
   spDllFile=
 fi
 
+if [ ${osArch} = "OS2" ]; then
+  # OS/2 has a 8.3 name limitation for DLLs
+  subprocessDLL=subproc.dll
+  spDllFile=subproc.dll
+fi
+
 # Prepare chrome.manifest
 cat  ${srcDir}/package/chrome.manifest \
 > ${targetDir}/chrome.manifest
-- 
2.0.0


Dave

_______________________________________________
enigmail-users mailing list
enigmail-users@enigmail.net
To unsubscribe or make changes to your subscription click here:
https://admin.hostpoint.ch/mailman/listinfo/enigmail-users_enigmail.net

Reply via email to