~ chicken-core (chicken-5) afc06e05cbca79e351bdcd47b29368c20b4af5ab
commit afc06e05cbca79e351bdcd47b29368c20b4af5ab Author: Christian Kellermann <ckeen@pestilenz.org> AuthorDate: Thu Oct 24 10:21:54 2013 +0200 Commit: Peter Bex <peter.bex@xs4all.nl> CommitDate: Fri Nov 8 15:41:21 2013 +0100 Make The Hurd a first class target This patch adds a Makefile which is currently a clone of the linux one. The Hurd also uses ELF binaries so it gets added to the list for csc. Also define PATH_MAX for now (1024). Signed-off-by: Peter Bex <peter.bex@xs4all.nl> diff --git a/Makefile.hurd b/Makefile.hurd new file mode 100644 index 00000000..74c8c007 --- /dev/null +++ b/Makefile.hurd @@ -0,0 +1,110 @@ +# Makefile.hurd - configuration for Hurd -*- Makefile -*- +# +# Copyright (c) 2008-2013, The Chicken Team +# Copyright (c) 2007, Felix L. Winkelmann +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following +# conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this list of conditions and the following +# disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided with the distribution. +# Neither the name of the author nor the names of its contributors may be used to endorse or promote +# products derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + + +ifneq ($(CONFIG),) +include $(CONFIG) +endif + +SRCDIR ?= ./ + +# platform configuration + +ARCH ?= $(shell sh $(SRCDIR)/config-arch.sh) + +# options + +C_COMPILER_OPTIONS ?= -fno-strict-aliasing -fwrapv -DHAVE_CHICKEN_CONFIG_H +ifdef DEBUGBUILD +C_COMPILER_OPTIMIZATION_OPTIONS ?= -g -Wall -Wno-unused +else +ifdef OPTIMIZE_FOR_SPEED +C_COMPILER_OPTIMIZATION_OPTIONS ?= -O3 -fomit-frame-pointer +else +C_COMPILER_OPTIMIZATION_OPTIONS ?= -Os -fomit-frame-pointer +endif +endif +LINKER_LINK_SHARED_LIBRARY_OPTIONS = -shared +LINKER_LINK_SHARED_DLOADABLE_OPTIONS = -L. -shared -Wl,-R"$(RUNTIME_LINKER_PATH)" +LINKER_LINK_SHARED_PROGRAM_OPTIONS = -Wl,-R"$(RUNTIME_LINKER_PATH)" +LIBCHICKEN_SO_LINKER_OPTIONS = -Wl,-soname,lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX).so.$(BINARYVERSION) +LIBRARIES = -lm -ldl +NEEDS_RELINKING = yes +USES_SONAME = yes + +# special files + +CHICKEN_CONFIG_H = chicken-config.h + +# select default and internal settings + +include $(SRCDIR)/defaults.make + +chicken-config.h: chicken-defaults.h + echo "/* GENERATED */" >$@ + echo "#define HAVE_DIRENT_H 1" >>$@ + echo "#define HAVE_DLFCN_H 1" >>$@ + echo "#define HAVE_INTTYPES_H 1" >>$@ + echo "#define HAVE_LIMITS_H 1" >>$@ + echo "#define HAVE_LONG_LONG 1" >>$@ + echo "#define HAVE_MEMMOVE 1" >>$@ + echo "#define HAVE_MEMORY_H 1" >>$@ + echo "#define HAVE_POSIX_POLL 1" >>$@ + echo "#define HAVE_SIGACTION 1" >>$@ + echo "#define HAVE_SIGSETJMP 1" >>$@ + echo "#define HAVE_SIGPROCMASK 1" >>$@ + echo "#define HAVE_STDINT_H 1" >>$@ + echo "#define HAVE_STDLIB_H 1" >>$@ + echo "#define HAVE_STRERROR 1" >>$@ + echo "#define HAVE_STRINGS_H 1" >>$@ + echo "#define HAVE_STRING_H 1" >>$@ + echo "#define HAVE_STRTOLL 1" >>$@ + echo "#define HAVE_STRTOQ 1" >>$@ + echo "#define HAVE_SYS_STAT_H 1" >>$@ + echo "#define HAVE_SYS_TYPES_H 1" >>$@ + echo "#define HAVE_UNISTD_H 1" >>$@ + echo "#define HAVE_UNSIGNED_LONG_LONG 1" >>$@ + echo "#define STDC_HEADERS 1" >>$@ + echo "#define HAVE_ALLOCA 1" >>$@ + echo "#define HAVE_ALLOCA_H 1" >>$@ + echo "#define HAVE_GRP_H 1" >>$@ + echo "#define HAVE_ERRNO_H 1" >>$@ + echo "#define HAVE_GCVT 1" >>$@ + echo "#define HAVE_SYSEXITS_H 1" >>$@ + echo "#define HAVE_MEMMOVE 1" >>$@ + echo "#define C_STACK_GROWS_DOWNWARD 1" >>$@ +ifdef GCHOOKS + echo "#define C_GC_HOOKS" >>$@ +endif +ifdef SYMBOLGC + echo "#define C_COLLECT_ALL_SYMBOLS" >>$@ +endif +ifneq ($(HACKED_APPLY),) + echo "#define C_HACKED_APPLY" >>$@ +endif + cat chicken-defaults.h >>$@ + +include $(SRCDIR)/rules.make diff --git a/NEWS b/NEWS index 2137e335..e91d57aa 100644 --- a/NEWS +++ b/NEWS @@ -15,6 +15,7 @@ - Platform support - CHICKEN can now be built on AIX (contributed by Erik Falor) + - CHICKEN can now be built on GNU Hurd (contributed by Christian Kellermann) 4.8.2 diff --git a/chicken.h b/chicken.h index 89b8cc44..0ef4cc13 100644 --- a/chicken.h +++ b/chicken.h @@ -725,6 +725,10 @@ static inline int isinf_ld (long double x) # endif #elif defined(_AIX) # define C_SOFTWARE_VERSION "aix" +#elif defined(__GNU__) +# define C_SOFTWARE_VERSION "hurd" +/* This is as silly as the other limits, there is no PATH_MAX in The Hurd */ +# define PATH_MAX 1024 #else # define C_SOFTWARE_VERSION "unknown" #endif diff --git a/csc.scm b/csc.scm index 1582e2de..bf76b60d 100644 --- a/csc.scm +++ b/csc.scm @@ -73,7 +73,7 @@ (define aix (eq? (build-platform) 'aix)) (define elf - (memq (software-version) '(linux netbsd freebsd solaris openbsd))) + (memq (software-version) '(linux netbsd freebsd solaris openbsd hurd))) (define (stop msg . args) (fprintf (current-error-port) "~a: ~?~%" CSC_PROGRAM msg args) diff --git a/distribution/manifest b/distribution/manifest index 32da5357..11c0aab3 100644 --- a/distribution/manifest +++ b/distribution/manifest @@ -226,6 +226,7 @@ Makefile.solaris Makefile.bsd Makefile.cygwin Makefile.haiku +Makefile.hurd Makefile.cross-linux-mingw GNUmakefile config.makeTrap