>From 82bff6132a9b4e61fd70e0f76596601d715866ec Mon Sep 17 00:00:00 2001 From: Christian Kellermann Date: Thu, 24 Oct 2013 10:21:54 +0200 Subject: [PATCH 2/2] 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). --- Makefile.hurd | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ chicken.h | 4 +++ csc.scm | 2 +- 3 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 Makefile.hurd diff --git a/Makefile.hurd b/Makefile.hurd new file mode 100644 index 0000000..74c8c00 --- /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/chicken.h b/chicken.h index 89b8cc4..0ef4cc1 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 1582e2d..bf76b60 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) -- 1.7.10.4