RE: [PATCH/RFC] Port to HP NonStop

2012-09-18 Thread Joachim Schmitz
Signed-off-by: Joachim Schmitz j...@schmitz-digital.de
---
This needs the 4 compat-poll patches posted earlier.
Needs a different link order in Makefile: libintl before libiconv.
This may affect other platforms, so needs some checking.
Also I'm not really sure how to best #ifdef the #include strings.h 
and the typedef (u)intptr_t. 
Furthermore the -DHAVE_STRING_H=1, needed for
compat/fnmatch/fnmatch.c doesn't look quite right to me?

 Makefile  | 54 +-
 git-compat-util.h | 10 +-
 2 files changed, 58 insertions(+), 6 deletions(-)

diff --git a/Makefile b/Makefile
index 3d40860..b1d4ef5 100644
--- a/Makefile
+++ b/Makefile
@@ -1324,6 +1324,52 @@ ifeq ($(uname_S),Minix)
NO_CURL =
NO_EXPAT =
 endif
+ifeq ($(uname_S),NONSTOP_KERNEL)
+   CC = cc -c99 # needs some C99 features, inline is just one of them
+   # INLINE='' would just replace one set of warnings with another and
+   # still not compile in c89 mode, for non-const array initializations
+   CFLAGS = -g -O0 # disable all optimization, seems to result in bad code,
+   # with -O1 or -O0 /usr/local/libexec/git-core/git-pack-objects
+   # abends on git push
+   prefix = /usr/local
+   # our's are in ${prefix}/bin
+   PERL_PATH = ${prefix}/bin/perl
+   PYTHON_PATH = ${prefix}/bin/python
+
+   # as detected by './configure'
+   #NO_CURL = YesPlease # missdetected, disabled, see below
+   NEEDS_SSL_WITH_CURL = YesPlease # added manually, see above
+   HAVE_LIBCHARSET_H=YesPlease
+   NEEDS_LIBICONV = YesPlease # needs libiconv first, changed further down
+   NO_SYS_SELECT_H=UnfortunatelyYes
+   NO_D_TYPE_IN_DIRENT = YesPlease
+   NO_HSTRERROR=YesPlease
+   NO_STRCASESTR=YesPlease
+   NO_FNMATCH_CASEFOLD = YesPlease
+   NO_MEMMEM = YesPlease
+   NO_STRLCPY = YesPlease
+   NO_SETENV = YesPlease
+   NO_UNSETENV = YesPlease
+   NO_MKDTEMP = YesPlease
+   NO_MKSTEMPS = YesPlease
+   OLD_ICONV=UnfortunatelyYes # currently libiconv-1.9.1
+   NO_REGEX=YesPlease # Why? ToDo?
+   NO_PTHREADS=UnfortunatelyYes # ToDo? Using PUT, maybe?
+   #CFLAGS += -put # not suffient? Seems the wrong fnmatch.h gets included?
+   #CFLAGS += -DFNM_CASEFOLD=16 # (1  4), to get dir.c compiled!?!
+   #CFLAGS += -Icompat/fnmatch # this doesn't help
+
+   # not detected (nor checked for) by './configure'
+   COMPAT_CFLAGS += -DSA_RESTART=0 # we don't have SA_RESTART on NonStop
+   COMPAT_CFLAGS += -DHAVE_STRING_H=1 # needed in compat/fnmatch/fnmatch.c
+   NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
+   NO_NSEC = YesPlease
+   NO_PREAD = YesPlease
+   NO_MMAP = YesPlease
+   NO_POLL = YesPlease
+   MKDIR_WO_TRAILING_SLASH = YesPlease
+   NO_SETITIMER = UnfortunatelyYes
+endif
 ifneq (,$(findstring MINGW,$(uname_S)))
pathsep = ;
NO_PREAD = YesPlease
@@ -1555,6 +1599,11 @@ else
LIB_4_CRYPTO = $(OPENSSL_LINK) -lcrypto
 endif
 endif
+ifndef NO_GETTEXT
+ifndef LIBC_CONTAINS_LIBINTL
+   EXTLIBS += -lintl
+endif
+endif
 ifdef NEEDS_LIBICONV
ifdef ICONVDIR
BASIC_CFLAGS += -I$(ICONVDIR)/include
@@ -1567,11 +1616,6 @@ endif
 ifdef NEEDS_LIBGEN
EXTLIBS += -lgen
 endif
-ifndef NO_GETTEXT
-ifndef LIBC_CONTAINS_LIBINTL
-   EXTLIBS += -lintl
-endif
-endif
 ifdef NEEDS_SOCKET
EXTLIBS += -lsocket
 endif
diff --git a/git-compat-util.h b/git-compat-util.h
index 24b5432..7e70361 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -74,7 +74,8 @@
 # define _XOPEN_SOURCE 500
 # endif
 #elif !defined(__APPLE__)  !defined(__FreeBSD__)  !defined(__USLC__)  \
-  !defined(_M_UNIX)  !defined(__sgi)  !defined(__DragonFly__)
+  !defined(_M_UNIX)  !defined(__sgi)  !defined(__DragonFly__)  \
+  !defined(__TANDEM)
 #define _XOPEN_SOURCE 600 /* glibc2 and AIX 5.3L need 500, OpenBSD needs 600 
for S_ISLNK() */
 #define _XOPEN_SOURCE_EXTENDED 1 /* AIX 5.3L needs this */
 #endif
@@ -98,6 +99,9 @@
 #include stdlib.h
 #include stdarg.h
 #include string.h
+#ifdef __TANDEM /* or HAVE_STRINGS_H or !NO_STRINGS_H? */
+#include strings.h /* for strcasecmp() */
+#endif
 #include errno.h
 #include limits.h
 #include sys/param.h
@@ -141,6 +145,10 @@
 #else
 #include stdint.h
 #endif
+#ifdef __TANDEM /* or NO_INTPTR_T resp. NO_UINTPTR_T? */
+typedef int intptr_t;
+typedef unsigned int uintptr_t;
+#endif
 #if defined(__CYGWIN__)
 #undef _XOPEN_SOURCE
 #include grp.h
-- 
1.7.12


--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH/RFC] Port to HP NonStop

2012-09-18 Thread Junio C Hamano
Joachim Schmitz j...@schmitz-digital.de writes:

 From: Junio C Hamano [mailto:gits...@pobox.com]
 Sent: Tuesday, September 18, 2012 9:57 AM
 To: Joachim Schmitz
 Cc: git@vger.kernel.org
 Subject: Re: [PATCH/RFC] Port to HP NonStop
 
 Joachim Schmitz j...@schmitz-digital.de writes:
 
  Needs a different link order in Makefile: libintl before libiconv.
  This may affect other platforms, so needs some checking.
 
 It will, and it needs customization, not checking.

 How?

By not moving things around to affect other people, but having them
in the order you want only for your platform (and other future ports
that need similar treatment)?

For example, if you need libintl before libiconv, a quick and dirty
way may be

diff --git i/Makefile w/Makefile
index a49d1db..9b2cfd6 100644
--- i/Makefile
+++ w/Makefile
@@ -1552,6 +1552,9 @@ ifdef NEEDS_LIBICONV
else
ICONV_LINK =
endif
+   ifdef NEEDS_LIBINTL_BEFORE_LIBICONV
+   ICONV_LINK += -lintl
+   endif
EXTLIBS += $(ICONV_LINK) -liconv
 endif
 ifdef NEEDS_LIBGEN

and your linker command line may have -lintl -liconv -lintl but
that wouldn't be an error, and you know you won't be affecting
other platforms that do not use NEEDS_LIBINTL_BEFORE_LIBICONV, no?
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH/RFC] Port to HP NonStop

2012-09-18 Thread Joachim Schmitz
 From: Junio C Hamano [mailto:gits...@pobox.com]
 Sent: Tuesday, September 18, 2012 7:03 PM
 To: Joachim Schmitz
 Cc: git@vger.kernel.org
 Subject: Re: [PATCH/RFC] Port to HP NonStop
 
 Joachim Schmitz j...@schmitz-digital.de writes:
 
  From: Junio C Hamano [mailto:gits...@pobox.com]
  Sent: Tuesday, September 18, 2012 9:57 AM
  To: Joachim Schmitz
  Cc: git@vger.kernel.org
  Subject: Re: [PATCH/RFC] Port to HP NonStop
 
  Joachim Schmitz j...@schmitz-digital.de writes:
 
   Needs a different link order in Makefile: libintl before libiconv.
   This may affect other platforms, so needs some checking.
 
  It will, and it needs customization, not checking.
 
  How?
 
 By not moving things around to affect other people, but having them
 in the order you want only for your platform (and other future ports
 that need similar treatment)?
 
 For example, if you need libintl before libiconv, a quick and dirty
 way may be
 
 diff --git i/Makefile w/Makefile
 index a49d1db..9b2cfd6 100644
 --- i/Makefile
 +++ w/Makefile
 @@ -1552,6 +1552,9 @@ ifdef NEEDS_LIBICONV
   else
   ICONV_LINK =
   endif
 + ifdef NEEDS_LIBINTL_BEFORE_LIBICONV
 + ICONV_LINK += -lintl
 + endif
   EXTLIBS += $(ICONV_LINK) -liconv
  endif
  ifdef NEEDS_LIBGEN
 
 and your linker command line may have -lintl -liconv -lintl but
 that wouldn't be an error, and you know you won't be affecting
 other platforms that do not use NEEDS_LIBINTL_BEFORE_LIBICONV, no?

OK, sounds good, I'll try that and submit an updated patch if it works that way 
(and I'm pretty sure it does).

Anything else I should change in my patch?

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html