Patches apply and build on OS X 10.9. Applied. I forgot to sign off beforehand.
Jim On Jan 28, 2014, at 5:31 AM, Felix Winkelmann <felix.winkelm...@bevuta.com> wrote: > Hello! > > > The attached patches try to fix a few problems with building CHICKEN > on Mac OS X. > > First, the build-tools are not automatically in the PATH, and are > located somewhere deep in the Xcode.cpp application directory. I've > added some variables that point to the default locations and which the > user can override when invoking make(1). > > Second, I added a variable to chicken-config.h that gives the full > path to the "postinstall" program, which is used on some platforms to > fix up the runtime linker path for locating libchicken. On Mac this is > "install_name_tool". "csc" needs to call this on freshly linked > executables, so it needs to be in chicken-config.h. > > And third, the stupid "max-install-name" thing, which causes the > invocation of the postinstall program to fail sometimes, depending on > the installation path length. "csc" needs to do some special magic > here to and pass "-headerpad_max_install_names" to gcc(1) when > linking. Jim noted that this might not be supported on older Macs, but > I vote for using this anyway. It is supported by at least 2 > generations of Xcode, AFAIK, and is the official option provided by > gcc itself on Darwin. We should support the current generation of the > official toolchain, I'd say, and in the end the options can be adapted > manually, in case someone desperately needs to get things running on > an ancient Mac. > > > felix > From ac788e1fb3ae60c3d0cadfe3864a4251b98c6ef7 Mon Sep 17 00:00:00 2001 > From: felix <fe...@call-with-current-continuation.org> > Date: Tue, 28 Jan 2014 10:16:09 +0100 > Subject: [PATCH 1/2] Use additional variables in MacOSX makefile to specify > location of C compiler and build tools. Setting > -isysroot doesn't seem to be necessary in this case, > the default being to compile for Mac OS, apparently. > > --- > Makefile.macosx | 6 +++++- > README | 11 ++++++++++- > 2 files changed, 15 insertions(+), 2 deletions(-) > > diff --git a/Makefile.macosx b/Makefile.macosx > index 39f395a..fea3ef9 100644 > --- a/Makefile.macosx > +++ b/Makefile.macosx > @@ -33,11 +33,14 @@ SRCDIR = ./ > > # platform configuration > > +XCODE_DEVELOPER ?= /Applications/Xcode.app/Contents/Developer > +XCODE_TOOL_PATH ?= > $(XCODE_DEVELOPER)/Toolchains/XcodeDefault.xctoolchain/usr/bin > +C_COMPILER ?= $(XCODE_DEVELOPER)/usr/bin/gcc > ARCH ?= $(shell sh $(SRCDIR)/config-arch.sh) > > # commands > > -POSTINSTALL_PROGRAM = install_name_tool > +POSTINSTALL_PROGRAM = $(XCODE_TOOL_PATH)/install_name_tool > > # options > > @@ -51,6 +54,7 @@ else > C_COMPILER_OPTIMIZATION_OPTIONS ?= -Os -fomit-frame-pointer > endif > endif > +LIBRARIAN ?= $(XCODE_TOOL_PATH)/ar > LINKER_LINK_SHARED_LIBRARY_OPTIONS = -dynamiclib -compatibility_version 1 > -current_version 1.0 -install_name $@ > POSTINSTALL_PROGRAM_FLAGS = -change > lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(SO) > $(LIBDIR)/lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(SO) > LIBRARIAN_OPTIONS = scru > diff --git a/README b/README > index bb3a106..059718a 100644 > --- a/README > +++ b/README > @@ -442,7 +442,16 @@ > > Mac OS X: > > - - On 10.6 and 10.7, Chicken may incorrectly select a 32-bit build > + - The build currently assumes the Xcode application path is > + "/Applications/Xcode.app/", with the C compiler and build > + tools being located in the "Contents/Developer/usr/bin" > + and > + "Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin" > + subdirectories, respectively. To override these locations, > + set XCODE_DEVELOPER and XCODE_TOOL_PATH on the make(3) > + command line. > + > + - On 10.6 and 10.7, CHICKEN may incorrectly select a 32-bit build > environment when it should be building 64-bit, resulting in a > build error. This occurs when you have a 32-bit kernel and a > 64-bit gcc (that is, on Core 2 Duo systems running 10.6 Desktop). > -- > 1.7.12.4 (Apple Git-37) > > From 1fb9dadeb5f0fdf0994de25c3dfc63244e2c50e7 Mon Sep 17 00:00:00 2001 > From: felix <fe...@call-with-current-continuation.org> > Date: Tue, 28 Jan 2014 10:17:18 +0100 > Subject: [PATCH 2/2] Store name of the post-install program in > chicken-config, so that csc can pick up the path to > "install_program_name" on Mac OS. Also pass > "-headerpad_max_install_names" to the linker when > building dynamically loadable .so's. > > --- > Makefile.cygwin | 3 +++ > Makefile.mingw | 3 +++ > csc.scm | 5 +++-- > defaults.make | 3 +++ > 4 files changed, 12 insertions(+), 2 deletions(-) > > diff --git a/Makefile.cygwin b/Makefile.cygwin > index 8594882..6989ab8 100644 > --- a/Makefile.cygwin > +++ b/Makefile.cygwin > @@ -136,6 +136,9 @@ chicken-defaults.h: > echo "#ifndef C_INSTALL_CXX" >>$@ > echo "# define C_INSTALL_CXX \"$(CXX_COMPILER)\"" >>$@ > echo "#endif" >>$@ > + echo "#ifndef C_INSTALL_POSTINSTALL_PROGRAM" >>$@ > + echo "# define C_INSTALL_POSTINSTALL_PROGRAM > \"$(POSTINSTALL_PROGRAM)\"" >>$@ > + echo "#endif" >>$@ > echo "#ifndef C_INSTALL_CFLAGS" >>$@ > echo "# define C_INSTALL_CFLAGS \"$(C_COMPILER_OPTIONS) > $(C_COMPILER_OPTIMIZATION_OPTIONS)\"" >>$@ > echo "#endif" >>$@ > diff --git a/Makefile.mingw b/Makefile.mingw > index 74e9aff..4027171 100644 > --- a/Makefile.mingw > +++ b/Makefile.mingw > @@ -134,6 +134,9 @@ endif > echo #ifndef C_INSTALL_CXX >>$@ > echo # define C_INSTALL_CXX "$(CXX_COMPILER)" >>$@ > echo #endif >>$@ > + echo #ifndef C_INSTALL_POSTINSTALL_PROGRAM >>$@ > + echo # define C_INSTALL_POSTINSTALL_PROGRAM "$(POSTINSTALL_PROGRAM)" > >>$@ > + echo #endif" >>$@ > echo #ifndef C_INSTALL_RC_COMPILER >>$@ > echo # define C_INSTALL_RC_COMPILER "$(RC_COMPILER)" >>$@ > echo #endif >>$@ > diff --git a/csc.scm b/csc.scm > index 935687f..0d34178 100644 > --- a/csc.scm > +++ b/csc.scm > @@ -61,6 +61,7 @@ > (define-foreign-variable CSC_PROGRAM c-string "C_CSC_PROGRAM") > (define-foreign-variable WINDOWS_SHELL bool "C_WINDOWS_SHELL") > (define-foreign-variable BINARY_VERSION int "C_BINARY_VERSION") > +(define-foreign-variable POSTINSTALL_PROGRAM c-string > "C_INSTALL_POSTINSTALL_PROGRAM") > > > ;;; Parameters: > @@ -522,7 +523,7 @@ EOF > (set! compile-options (append pic-options '("-DC_SHARED") > compile-options)) > (set! link-options > (cons (cond > - (osx (if lib "-dynamiclib" "-bundle")) > + (osx (if lib "-dynamiclib" "-bundle > -headerpad_max_install_names")) > (else "-shared")) link-options)) > (set! shared #t) ) > > @@ -936,7 +937,7 @@ EOF > (when (and osx (or (not cross-chicken) host-mode)) > (command > (string-append > - "install_name_tool -change " libchicken ".dylib " > + POSTINSTALL_PROGRAM " -change " libchicken ".dylib " > (quotewrap > (let ((lib (string-append libchicken ".dylib"))) > (if deployed > diff --git a/defaults.make b/defaults.make > index 4a0f238..943dc88 100644 > --- a/defaults.make > +++ b/defaults.make > @@ -358,6 +358,9 @@ endif > echo "#ifndef C_INSTALL_RC_COMPILER" >>$@ > echo "# define C_INSTALL_RC_COMPILER \"$(RC_COMPILER)\"" >>$@ > echo "#endif" >>$@ > + echo "#ifndef C_INSTALL_POSTINSTALL_PROGRAM" >>$@ > + echo "# define C_INSTALL_POSTINSTALL_PROGRAM > \"$(POSTINSTALL_PROGRAM)\"" >>$@ > + echo "#endif" >>$@ > echo "#ifndef C_INSTALL_CFLAGS" >>$@ > echo "# define C_INSTALL_CFLAGS \"$(C_COMPILER_OPTIONS) > $(C_COMPILER_OPTIMIZATION_OPTIONS)\"" >>$@ > echo "#endif" >>$@ > -- > 1.7.12.4 (Apple Git-37) > > _______________________________________________ > Chicken-hackers mailing list > Chicken-hackers@nongnu.org > https://lists.nongnu.org/mailman/listinfo/chicken-hackers _______________________________________________ Chicken-hackers mailing list Chicken-hackers@nongnu.org https://lists.nongnu.org/mailman/listinfo/chicken-hackers