diff options
| author | lufia <lufia@lufia.org> | 2019-03-26 22:26:05 +0900 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2019-07-31 00:23:25 +0200 | 
| commit | 84aba180e22c1cfab41cae8074af01dcb20adb16 (patch) | |
| tree | ddef5d0e97667398df819c8e154a0892bb2bf4d9 | |
| parent | 6cd5c355092c9811acd5a4b339e5a453d23045e2 (diff) | |
plan9: add support for running on Plan 9
Closes #3701
| -rw-r--r-- | Makefile.am | 13 | ||||
| -rw-r--r-- | lib/Makefile.am | 4 | ||||
| -rw-r--r-- | lib/config-plan9.h | 217 | ||||
| -rw-r--r-- | lib/curl_setup.h | 4 | ||||
| -rw-r--r-- | plan9/BUILD.PLAN9.txt | 55 | ||||
| -rw-r--r-- | plan9/include/mkfile | 34 | ||||
| -rw-r--r-- | plan9/lib/mkfile | 39 | ||||
| -rwxr-xr-x | plan9/lib/mkfile.inc | 25 | ||||
| -rw-r--r-- | plan9/mkfile | 36 | ||||
| -rw-r--r-- | plan9/mkfile.proto | 30 | ||||
| -rw-r--r-- | plan9/src/mkfile | 45 | ||||
| -rwxr-xr-x | plan9/src/mkfile.inc | 25 | 
12 files changed, 524 insertions, 3 deletions
diff --git a/Makefile.am b/Makefile.am index ac5eca3ba..3116e1053 100644 --- a/Makefile.am +++ b/Makefile.am @@ -154,9 +154,20 @@ VC_DIST = projects/README                           \  WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat \   winbuild/MakefileBuild.vc winbuild/Makefile.vc +PLAN9_DIST = plan9/include/mkfile \ + plan9/include/mkfile             \ + plan9/mkfile.proto               \ + plan9/mkfile                     \ + plan9/BUILD.PLAN9.txt            \ + plan9/lib/mkfile.inc             \ + plan9/lib/mkfile                 \ + plan9/src/mkfile.inc             \ + plan9/src/mkfile +  EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \   RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework \ - scripts/updatemanpages.pl $(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) \ + scripts/updatemanpages.pl $(CMAKE_DIST) \ + $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) \   lib/libcurl.vers.in buildconf.bat scripts/coverage.sh scripts/completion.pl  CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ) \ diff --git a/lib/Makefile.am b/lib/Makefile.am index 7c258b3fa..b5551e413 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -23,8 +23,8 @@ AUTOMAKE_OPTIONS = foreign nostdinc  CMAKE_DIST = CMakeLists.txt curl_config.h.cmake -EXTRA_DIST = Makefile.m32 config-win32.h                            \ - config-win32ce.h config-riscos.h config-mac.h curl_config.h.in     \ +EXTRA_DIST = Makefile.m32 config-win32.h config-win32ce.h           \ + config-plan9.h config-riscos.h config-mac.h curl_config.h.in       \   makefile.dj config-dos.h libcurl.plist libcurl.rc config-amigaos.h \   makefile.amiga Makefile.netware nwlib.c nwos.c config-win32ce.h    \   config-os400.h setup-os400.h config-symbian.h Makefile.Watcom      \ diff --git a/lib/config-plan9.h b/lib/config-plan9.h new file mode 100644 index 000000000..70833a51d --- /dev/null +++ b/lib/config-plan9.h @@ -0,0 +1,217 @@ +#ifndef HEADER_CURL_CONFIG_PLAN9_H +#define HEADER_CURL_CONFIG_PLAN9_H +/*************************************************************************** + *                                  _   _ ____  _ + *  Project                     ___| | | |  _ \| | + *                             / __| | | | |_) | | + *                            | (__| |_| |  _ <| |___ + *                             \___|\___/|_| \_\_____| + * + * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. + * + * This software is licensed as described in the file COPYING, which + * you should have received as part of this distribution. The terms + * are also available at https://curl.haxx.se/docs/copyright.html. + * + * You may opt to use, copy, modify, merge, publish, distribute and/or sell + * copies of the Software, and permit persons to whom the Software is + * furnished to do so, under the terms of the COPYING file. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ***************************************************************************/ + +#define BUILDING_LIBCURL 1 +#define CURL_CA_BUNDLE "/sys/lib/tls/ca.pem" +#define CURL_CA_PATH "/sys/lib/tls" +#define CURL_STATICLIB 1 +#define ENABLE_IPV6 1 +#define CURL_DISABLE_LDAP 1 + +#define NEED_REENTRANT 1 +#define OS "plan9" +#define PACKAGE "curl" +#define PACKAGE_NAME "curl" +#define PACKAGE_BUGREPORT "a suitable mailing list: https://curl.haxx.se/mail/" +#define PACKAGE_STRING "curl -" +#define PACKAGE_TARNAME "curl" +#define PACKAGE_VERSION "-" +#define RANDOM_FILE "/dev/random" +#define VERSION "0.0.0" /* TODO */ + +#define RETSIGTYPE void + +#define STDC_HEADERS 1 + +#ifdef _BITS64 +#error not implement +#else +#define SIZEOF_INT 4 +#define SIZEOF_SHORT 2 +#define SIZEOF_LONG 4 +#define SIZEOF_OFF_T 8 +#define SIZEOF_CURL_OFF_T 4 /* curl_off_t = timediff_t = int */ +#define SIZEOF_SIZE_T 4 +#define SIZEOF_TIME_T 4 +#endif + +#define HAVE_GETNAMEINFO 1 +#define GETNAMEINFO_QUAL_ARG1 const +#define GETNAMEINFO_TYPE_ARG1 struct sockaddr * +#define GETNAMEINFO_TYPE_ARG2 int +#define GETNAMEINFO_TYPE_ARG46 long +#define GETNAMEINFO_TYPE_ARG7 int + +#define HAVE_RECV 1 +#define RECV_TYPE_ARG1 int +#define RECV_TYPE_ARG2 void * +#define RECV_TYPE_ARG3 int +#define RECV_TYPE_ARG4 int +#define RECV_TYPE_RETV int + +#define HAVE_RECVFROM 1 +#define RECVFROM_TYPE_ARG1 int +#define RECVFROM_TYPE_ARG2 void +#define RECVFROM_TYPE_ARG2_IS_VOID 1 +#define RECVFROM_TYPE_ARG3 int +#define RECVFROM_TYPE_ARG4 int +#define RECVFROM_TYPE_ARG5 void +#define RECVFROM_TYPE_ARG5_IS_VOID 1 +#define RECVFROM_TYPE_ARG6 int +#define RECVFROM_TYPE_ARG6_IS_VOID 1 +#define RECVFROM_TYPE_RETV int + +#define HAVE_SELECT 1 +#define SELECT_TYPE_ARG1 int +#define SELECT_TYPE_ARG234 fd_set * +#define SELECT_TYPE_ARG5 struct timeval * +#define SELECT_TYPE_RETV int + +#define HAVE_SEND 1 +#define SEND_TYPE_ARG1 int +#define SEND_TYPE_ARG2 void * +#define SEND_QUAL_ARG2 +#define SEND_TYPE_ARG3 int +#define SEND_TYPE_ARG4 int +#define SEND_TYPE_RETV int + +#define HAVE_ALARM 1 +#define HAVE_ARPA_INET_H 1 +#define HAVE_ASSERT_H 1 +#define HAVE_BASENAME 1 +#define HAVE_BOOL_T 1 +#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1 +#define HAVE_ENGINE_LOAD_BUILTIN_ENGINES 1 +#define HAVE_ERRNO_H 1 +#define HAVE_FCNTL 1 +#define HAVE_FCNTL_H 1 +#define HAVE_FDOPEN 1 +#define HAVE_FORK 1 +#define HAVE_FREEADDRINFO 1 +#define HAVE_FTRUNCATE 1 +#define HAVE_GETADDRINFO 1 +#define HAVE_GETEUID 1 +#define HAVE_GETHOSTBYADDR 1 +#define HAVE_GETHOSTBYNAME 1 +#define HAVE_GETHOSTNAME 1 +#define HAVE_GETPPID 1 +#define HAVE_GETPROTOBYNAME 1 +#define HAVE_GETPWUID 1 +#define HAVE_GETTIMEOFDAY 1 +#define HAVE_GMTIME_R 1 +#define HAVE_INET_ADDR 1 +#define HAVE_INET_NTOP 1 +#define HAVE_INET_PTON 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_IOCTL 1 +#define HAVE_LIBGEN_H 1 +#define HAVE_LIBSSL 1 +#define HAVE_LIBZ 1 +#define HAVE_LL 1 +#define HAVE_LOCALE_H 1 +#define HAVE_LOCALTIME_R 1 +#define HAVE_LONGLONG 1 +#define HAVE_NETDB_H 1 +#define HAVE_NETINET_IN_H 1 +#define HAVE_NETINET_TCP_H 1 +#define HAVE_PWD_H 1 +#define HAVE_SYS_SELECT_H 1 + +#define USE_OPENSSL 1 +#define HAVE_OPENSSL_CRYPTO_H 1 +#define HAVE_OPENSSL_ENGINE_H 1 +#define HAVE_OPENSSL_ERR_H 1 +#define HAVE_OPENSSL_PEM_H 1 +#define HAVE_OPENSSL_PKCS12_H 1 +#define HAVE_OPENSSL_RSA_H 1 +#define HAVE_OPENSSL_SSL_H 1 +#define HAVE_OPENSSL_X509_H 1 + +#define HAVE_PERROR 1 +#define HAVE_PIPE 1 +#define HAVE_POLL 1 +#define HAVE_POLL_FINE 1 +#define HAVE_POLL_H 1 +#define HAVE_PTHREAD_H 1 +#define HAVE_RAND_STATUS 1 +#define HAVE_SETJMP_H 1 +#define HAVE_SETLOCALE 1 + +#define HAVE_SETSOCKOPT 1 +#define HAVE_SOCK_OPTS 1 /* for /sys/include/ape/sys/socket.h */ + +#define HAVE_SIGACTION 1 +#define HAVE_SIGNAL 1 +#define HAVE_SIGNAL_H 1 +#define HAVE_SIGSETJMP 1 +#define HAVE_SIG_ATOMIC_T 1 +#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 +#define HAVE_SOCKET 1 +#define HAVE_SSL_GET_SHUTDOWN 1 +#define HAVE_STDBOOL_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDIO_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRDUP 1 +#define HAVE_STRING_H 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOK_R 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRUCT_TIMEVAL 1 +#define HAVE_SYS_IOCTL_H 1 +#define HAVE_SYS_PARAM_H 1 +#define HAVE_SYS_RESOURCE_H 1 +#define HAVE_SYS_SOCKET_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_TIME_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_UIO_H 1 +#define HAVE_SYS_UN_H 1 +#define HAVE_TERMIOS_H 1 +#define HAVE_TIME_H 1 +#define HAVE_UNAME 1 +#define HAVE_UNISTD_H 1 +#define HAVE_UTIME 1 +#define HAVE_UTIME_H 1 +#define HAVE_WRITEV 1 + +#define HAVE_ZLIB_H 1 + +#define HAVE_POSIX_STRERROR_R 1 +#define HAVE_STRERROR_R 1 +#define STRERROR_R_TYPE_ARG3 int + +#define TIME_WITH_SYS_TIME 1 +#define USE_BLOCKING_SOCKETS 1 +#define USE_MANUAL 1 + +#define __attribute__(x) + +#ifndef __cplusplus +#undef inline +#endif + +#endif /* HEADER_CURL_CONFIG_PLAN9_H */ diff --git a/lib/curl_setup.h b/lib/curl_setup.h index afd5441b0..2b3f9f2fd 100644 --- a/lib/curl_setup.h +++ b/lib/curl_setup.h @@ -96,6 +96,10 @@  #  include "config-vxworks.h"  #endif +#ifdef __PLAN9__ +#  include "config-plan9.h" +#endif +  #endif /* HAVE_CONFIG_H */  /* ================================================================ */ diff --git a/plan9/BUILD.PLAN9.txt b/plan9/BUILD.PLAN9.txt new file mode 100644 index 000000000..1d04c5e7f --- /dev/null +++ b/plan9/BUILD.PLAN9.txt @@ -0,0 +1,55 @@ +Prerequirement +============== +This document describes how to compile, build and install curl and libcurl +from sources using mk. To build it, you will require to install latest +9legacy patches into Plan 9. Also Plan 9 still have no configuration option so +both zlib and libopenssl are required too. + +The zlib that is available on Plan 9 can be downloaded from: + +  https://github.com/madler/zlib/pull/398 + +LibreSSL Portable can be downloaded from: + +  https://github.com/libressl-portable/portable/pull/510 + +Instruction +=========== +First, you should construct namespace as like described below: + +% bind -a ../lib lib +% bind -a ../src src +% bind -a ../include include +% bind -a .. . + +Then you will see as shown below (excerpt): + +  curl.git/ +   |_plan9 +   | |_BUILD.PLAN9.txt +   | |_CHANGES +   | |_CMake +   | |  : +   | |_mkfile +   | |_mkfile.proto +   | |_include +   | | |_Makefile.am +   | | |  : +   | | |_mkfile +   | |_lib +   | | |_CMakeLists.txt +   | | |  : +   | | |_mkfile +   | | |_mkfile.inc +   | |_src +   | | |_CMakeLists.txt +   | | |  : +   | | |_mkfile +   | | |_mkfile.inc +   |_lib +   |_src + +After constructing namespace, you can run mk on plan9 directory. + +% mk +% mk install diff --git a/plan9/include/mkfile b/plan9/include/mkfile new file mode 100644 index 000000000..c1ed850fa --- /dev/null +++ b/plan9/include/mkfile @@ -0,0 +1,34 @@ +#*************************************************************************** +#                                  _   _ ____  _ +#  Project                     ___| | | |  _ \| | +#                             / __| | | | |_) | | +#                            | (__| |_| |  _ <| |___ +#                             \___|\___/|_| \_\_____| +# +# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. The terms +# are also available at https://curl.haxx.se/docs/copyright.html. +# +# You may opt to use, copy, modify, merge, publish, distribute and/or sell +# copies of the Software, and permit persons to whom the Software is +# furnished to do so, under the terms of the COPYING file. +# +# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +# KIND, either express or implied. +# +########################################################################### + +DIR=/sys/include/ape/curl +HFILES=`{ls curl/*.h} + +all:V: $HFILES + +install:V: all +	mkdir -p $DIR +	cp curl/*.h $DIR/ + +clean:V: $HFILES  # do nothing + +nuke:V: clean diff --git a/plan9/lib/mkfile b/plan9/lib/mkfile new file mode 100644 index 000000000..d7a7ac5e2 --- /dev/null +++ b/plan9/lib/mkfile @@ -0,0 +1,39 @@ +#*************************************************************************** +#                                  _   _ ____  _ +#  Project                     ___| | | |  _ \| | +#                             / __| | | | |_) | | +#                            | (__| |_| |  _ <| |___ +#                             \___|\___/|_| \_\_____| +# +# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. The terms +# are also available at https://curl.haxx.se/docs/copyright.html. +# +# You may opt to use, copy, modify, merge, publish, distribute and/or sell +# copies of the Software, and permit persons to whom the Software is +# furnished to do so, under the terms of the COPYING file. +# +# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +# KIND, either express or implied. +# +########################################################################### + +<../mkfile.proto +<|mkfile.inc + +CFLAGS=$CFLAGS -I../include -I. -c + +OFILES=${CSOURCES:%.c=%.$O} +HFILES=$HHEADERS +LIB=/$objtype/lib/ape/libcurl.a + +CLEANFILES=\ +	${LIB_VAUTH_CFILES:%.c=%.$O}\ +	${LIB_VTLS_CFILES:%.c=%.$O}\ + +</sys/src/cmd/mklib + +%.$O: %.c +	$CC $CFLAGS -o $target $stem.c diff --git a/plan9/lib/mkfile.inc b/plan9/lib/mkfile.inc new file mode 100755 index 000000000..0966d773e --- /dev/null +++ b/plan9/lib/mkfile.inc @@ -0,0 +1,25 @@ +#!/bin/rc +#*************************************************************************** +#                                  _   _ ____  _ +#  Project                     ___| | | |  _ \| | +#                             / __| | | | |_) | | +#                            | (__| |_| |  _ <| |___ +#                             \___|\___/|_| \_\_____| +# +# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. The terms +# are also available at https://curl.haxx.se/docs/copyright.html. +# +# You may opt to use, copy, modify, merge, publish, distribute and/or sell +# copies of the Software, and permit persons to whom the Software is +# furnished to do so, under the terms of the COPYING file. +# +# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +# KIND, either express or implied. +# +########################################################################### + +# rename $(VAR) -> $VAR +sed 's/\$\(([A-Z_]+)\)/$\1/g' Makefile.inc diff --git a/plan9/mkfile b/plan9/mkfile new file mode 100644 index 000000000..a9b4fe6da --- /dev/null +++ b/plan9/mkfile @@ -0,0 +1,36 @@ +#*************************************************************************** +#                                  _   _ ____  _ +#  Project                     ___| | | |  _ \| | +#                             / __| | | | |_) | | +#                            | (__| |_| |  _ <| |___ +#                             \___|\___/|_| \_\_____| +# +# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. The terms +# are also available at https://curl.haxx.se/docs/copyright.html. +# +# You may opt to use, copy, modify, merge, publish, distribute and/or sell +# copies of the Software, and permit persons to whom the Software is +# furnished to do so, under the terms of the COPYING file. +# +# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +# KIND, either express or implied. +# +########################################################################### + +</sys/src/ape/config + +DIRS=\ +	lib\ +	src\ +	include\ + +default:V: all + +all install clean nuke:V: +	for(i in $DIRS) @{ +		cd $i +		mk $target +	} diff --git a/plan9/mkfile.proto b/plan9/mkfile.proto new file mode 100644 index 000000000..edb79f50d --- /dev/null +++ b/plan9/mkfile.proto @@ -0,0 +1,30 @@ +#*************************************************************************** +#                                  _   _ ____  _ +#  Project                     ___| | | |  _ \| | +#                             / __| | | | |_) | | +#                            | (__| |_| |  _ <| |___ +#                             \___|\___/|_| \_\_____| +# +# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. The terms +# are also available at https://curl.haxx.se/docs/copyright.html. +# +# You may opt to use, copy, modify, merge, publish, distribute and/or sell +# copies of the Software, and permit persons to whom the Software is +# furnished to do so, under the terms of the COPYING file. +# +# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +# KIND, either express or implied. +# +########################################################################### + +</sys/src/ape/config + +CFLAGS=\ +	-D__PLAN9__\ +	-D_POSIX_SOURCE\ +	-D_BSD_EXTENSION\ +	-D_SUSV2_SOURCE\ +	-D_REENTRANT_SOURCE\ diff --git a/plan9/src/mkfile b/plan9/src/mkfile new file mode 100644 index 000000000..889d06686 --- /dev/null +++ b/plan9/src/mkfile @@ -0,0 +1,45 @@ +#*************************************************************************** +#                                  _   _ ____  _ +#  Project                     ___| | | |  _ \| | +#                             / __| | | | |_) | | +#                            | (__| |_| |  _ <| |___ +#                             \___|\___/|_| \_\_____| +# +# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. The terms +# are also available at https://curl.haxx.se/docs/copyright.html. +# +# You may opt to use, copy, modify, merge, publish, distribute and/or sell +# copies of the Software, and permit persons to whom the Software is +# furnished to do so, under the terms of the COPYING file. +# +# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +# KIND, either express or implied. +# +########################################################################### + +<../mkfile.proto +<|mkfile.inc + +CFLAGS=$CFLAGS -I../include -I../lib -c + +OFILES=${CURL_CFILES:%.c=%.$O} +HFILES=$CURL_HFILES + +LIB=\ +	/$objtype/lib/ape/libcurl.a\ +	/$objtype/lib/ape/libssl.a\ +	/$objtype/lib/ape/libcrypto.a\ +	/$objtype/lib/ape/libz.a\ + +BIN=/$objtype/bin +TARG=curl + +CLEANFILES=tool_hugehelp.c + +</sys/src/cmd/mkone + +tool_hugehelp.c: +	echo 'void hugehelp(void) {}' >$target diff --git a/plan9/src/mkfile.inc b/plan9/src/mkfile.inc new file mode 100755 index 000000000..0966d773e --- /dev/null +++ b/plan9/src/mkfile.inc @@ -0,0 +1,25 @@ +#!/bin/rc +#*************************************************************************** +#                                  _   _ ____  _ +#  Project                     ___| | | |  _ \| | +#                             / __| | | | |_) | | +#                            | (__| |_| |  _ <| |___ +#                             \___|\___/|_| \_\_____| +# +# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. The terms +# are also available at https://curl.haxx.se/docs/copyright.html. +# +# You may opt to use, copy, modify, merge, publish, distribute and/or sell +# copies of the Software, and permit persons to whom the Software is +# furnished to do so, under the terms of the COPYING file. +# +# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +# KIND, either express or implied. +# +########################################################################### + +# rename $(VAR) -> $VAR +sed 's/\$\(([A-Z_]+)\)/$\1/g' Makefile.inc  | 
