Index: defaults.make =================================================================== --- defaults.make (revision 6591) +++ defaults.make (working copy) @@ -97,6 +97,7 @@ TARGET_C_COMPILER_OPTIMIZATION_OPTIONS ?= $(C_COMPILER_OPTIMIZATION_OPTIONS) TARGET_PREFIX ?= $(PREFIX) TARGET_LIBRARIES ?= $(LIBRARIES) +TARGET_LINKER_OPTIONS ?= $(LINKER_OPTIONS) ifneq ($(TARGET_C_COMPILER),$(HOST_C_COMPILER)) CROSS_CHICKEN = 1 @@ -121,7 +122,7 @@ C_COMPILER_BUILD_UNSAFE_RUNTIME_OPTIONS ?= $(C_COMPILER_BUILD_RUNTIME_OPTIONS) -DNDEBUG -DC_UNSAFE_RUNTIME C_COMPILER_PCRE_OPTIONS ?= -DPCRE_STATIC C_COMPILER_SHARED_OPTIONS ?= -fPIC -DPIC -LINKER_OPTIONS ?= -L. +LINKER_EXECUTABLE_OPTIONS ?= -L. LINKER_STATIC_OPTIONS ?= $(LINKERFLAGS) LINKER_OUTPUT_OPTION ?= -o LINKER_LIBRARY_OPTION ?= -l @@ -242,6 +243,9 @@ echo "#ifndef C_INSTALL_CFLAGS" >>$@ echo "# define C_INSTALL_CFLAGS \"$(C_COMPILER_OPTIONS) $(C_COMPILER_OPTIMIZATION_OPTIONS)\"" >>$@ echo "#endif" >>$@ + echo "#ifndef C_INSTALL_LDFLAGS" >>$@ + echo "# define C_INSTALL_LDFLAGS \"$(LINKER_OPTIONS) $(LINKER_OPTIMIZATION_OPTIONS)\"" >>$@ + echo "#endif" >>$@ echo "#ifndef C_INSTALL_SHARE_HOME" >>$@ echo "# define C_INSTALL_SHARE_HOME \"$(DATADIR)\"" >>$@ echo "#endif" >>$@ @@ -287,6 +291,9 @@ echo "#ifndef C_TARGET_CFLAGS" >>$@ echo "# define C_TARGET_CFLAGS \"$(TARGET_C_COMPILER_OPTIONS) $(TARGET_C_COMPILER_OPTIMIZATION_OPTIONS)\"" >>$@ echo "#endif" >>$@ + echo "#ifndef C_TARGET_LDFLAGS" >>$@ + echo "# define C_TARGET_LDFLAGS \"$(TARGET_LINKER_OPTIONS) $(TARGET_LINKER_OPTIMIZATION_OPTIONS)\"" >>$@ + echo "#endif" >>$@ echo "#ifndef C_CROSS_CHICKEN" >>$@ echo "# define C_CROSS_CHICKEN $(CROSS_CHICKEN)" >>$@ echo "#endif" >>$@ Index: csc.scm =================================================================== --- csc.scm (revision 6591) +++ csc.scm (working copy) @@ -50,6 +50,10 @@ # define C_TARGET_CFLAGS C_INSTALL_CFLAGS #endif +#ifndef C_TARGET_LDFLAGS +# define C_TARGET_LDFLAGS C_INSTALL_LDFLAGS +#endif + #ifndef C_TARGET_BIN_HOME # define C_TARGET_BIN_HOME C_INSTALL_BIN_HOME #endif @@ -86,6 +90,8 @@ (define-foreign-variable TARGET_CXX c-string "C_TARGET_CXX") (define-foreign-variable TARGET_CFLAGS c-string "C_TARGET_CFLAGS") (define-foreign-variable INSTALL_CFLAGS c-string "C_INSTALL_CFLAGS") +(define-foreign-variable TARGET_LDFLAGS c-string "C_TARGET_LDFLAGS") +(define-foreign-variable INSTALL_LDFLAGS c-string "C_INSTALL_LDFLAGS") (define-foreign-variable INSTALL_MORE_LIBS c-string "C_INSTALL_MORE_LIBS") (define-foreign-variable INSTALL_MORE_STATIC_LIBS c-string "C_INSTALL_MORE_STATIC_LIBS") (define-foreign-variable INSTALL_SHARE_HOME c-string "C_INSTALL_SHARE_HOME") @@ -160,8 +166,8 @@ (lambda (s) s))) (define default-compilation-optimization-options (string-split (if host-mode INSTALL_CFLAGS TARGET_CFLAGS))) (define best-compilation-optimization-options default-compilation-optimization-options) -(define default-linking-optimization-options '()) -(define best-linking-optimization-options '()) +(define default-linking-optimization-options (string-split (if host-mode INSTALL_LDFLAGS TARGET_LDFLAGS))) +(define best-linking-optimization-options default-linking-optimization-options) (define-constant simple-options '(-explicit-use -no-trace -no-warnings -no-usual-integrations -optimize-leaf-routines -unsafe Index: rules.make =================================================================== --- rules.make (revision 6591) +++ rules.make (working copy) @@ -663,15 +663,15 @@ # libchicken libchicken$(SO): $(LIBCHICKEN_SHARED_OBJECTS) $(PCRE_SHARED_OBJECTS) $(APPLY_HACK_OBJECT) - $(LINKER) $(LINKER_LINK_SHARED_LIBRARY_OPTIONS) $(LIBCHICKEN_SO_LINKER_OPTIONS) \ + $(LINKER) $(LINKER_OPTIONS) $(LINKER_LINK_SHARED_LIBRARY_OPTIONS) $(LIBCHICKEN_SO_LINKER_OPTIONS) \ $(LINKER_OUTPUT_OPTION) $@ $^ $(LIBCHICKEN_SO_LIBRARIES) libuchicken$(SO): $(LIBUCHICKEN_SHARED_OBJECTS) $(PCRE_SHARED_OBJECTS) $(APPLY_HACK_OBJECT) - $(LINKER) $(LINKER_LINK_SHARED_LIBRARY_OPTIONS) $(LIBUCHICKEN_SO_LINKER_OPTIONS) \ + $(LINKER) $(LINKER_OPTIONS) $(LINKER_LINK_SHARED_LIBRARY_OPTIONS) $(LIBUCHICKEN_SO_LINKER_OPTIONS) \ $(LINKER_OUTPUT_OPTION) $@ $^ $(LIBUCHICKEN_SO_LIBRARIES) libchickengui$(SO): $(LIBCHICKENGUI_SHARED_OBJECTS) $(PCRE_SHARED_OBJECTS) $(APPLY_HACK_OBJECT) - $(LINKER) $(LINKER_LINK_SHARED_LIBRARY_OPTIONS) $(LIBCHICKENGUI_SO_LINKER_OPTIONS) \ + $(LINKER) $(LINKER_OPTIONS) $(LINKER_LINK_SHARED_LIBRARY_OPTIONS) $(LIBCHICKENGUI_SO_LINKER_OPTIONS) \ $(LINKER_OUTPUT_OPTION) $@ $^ $(LIBCHICKENGUI_SO_LIBRARIES) libchicken$(A): $(LIBCHICKEN_STATIC_OBJECTS) $(PCRE_STATIC_OBJECTS) $(APPLY_HACK_OBJECT) @@ -686,34 +686,36 @@ # executables $(CHICKEN_SHARED_EXECUTABLE): $(COMPILER_OBJECTS) $(PRIMARY_LIBCHICKEN) - $(LINKER) $(LINKER_OPTIONS) $(COMPILER_OBJECTS) $(LINKER_OUTPUT_OPTION) $@ \ + $(LINKER) $(LINKER_OPTIONS) $(LINKER_EXECUTABLE_OPTIONS) $(COMPILER_OBJECTS) $(LINKER_OUTPUT_OPTION) $@ \ $(LINKER_LIBRARY_OPTION)chicken $(LINKER_LINK_SHARED_PROGRAM_OPTIONS) $(LIBRARIES) $(CSI_SHARED_EXECUTABLE): csi$(O) $(PRIMARY_LIBCHICKEN) - $(LINKER) $(LINKER_OPTIONS) $< $(LINKER_OUTPUT_OPTION) $@ $(LINKER_LIBRARY_OPTION)chicken \ - $(LINKER_LINK_SHARED_PROGRAM_OPTIONS) $(LIBRARIES) + $(LINKER) $(LINKER_OPTIONS) $(LINKER_EXECUTABLE_OPTIONS) $< $(LINKER_OUTPUT_OPTION) $@ \ + $(LINKER_LIBRARY_OPTION)chicken $(LINKER_LINK_SHARED_PROGRAM_OPTIONS) $(LIBRARIES) $(CHICKEN_SETUP_PROGRAM)$(EXE): chicken-setup$(O) $(PRIMARY_LIBCHICKEN) - $(LINKER) $(LINKER_OPTIONS) $< $(LINKER_OUTPUT_OPTION) $@ $(LINKER_LIBRARY_OPTION)chicken \ - $(LINKER_LINK_SHARED_PROGRAM_OPTIONS) $(LIBRARIES) + $(LINKER) $(LINKER_OPTIONS) $(LINKER_EXECUTABLE_OPTIONS) $< $(LINKER_OUTPUT_OPTION) $@ \ + $(LINKER_LIBRARY_OPTION)chicken $(LINKER_LINK_SHARED_PROGRAM_OPTIONS) $(LIBRARIES) $(CHICKEN_PROFILE_PROGRAM)$(EXE): chicken-profile$(O) $(PRIMARY_LIBCHICKEN) - $(LINKER) $(LINKER_OPTIONS) $< $(LINKER_OUTPUT_OPTION) $@ $(LINKER_LIBRARY_OPTION)chicken \ - $(LINKER_LINK_SHARED_PROGRAM_OPTIONS) $(LIBRARIES) + $(LINKER) $(LINKER_OPTIONS) $(LINKER_EXECUTABLE_OPTIONS) $< $(LINKER_OUTPUT_OPTION) $@ \ + $(LINKER_LIBRARY_OPTION)chicken $(LINKER_LINK_SHARED_PROGRAM_OPTIONS) $(LIBRARIES) $(CSC_PROGRAM)$(EXE): csc$(O) $(PRIMARY_LIBCHICKEN) - $(LINKER) $(LINKER_OPTIONS) $< $(LINKER_OUTPUT_OPTION) $@ $(LINKER_LIBRARY_OPTION)chicken \ - $(LINKER_LINK_SHARED_PROGRAM_OPTIONS) $(LIBRARIES) + $(LINKER) $(LINKER_OPTIONS) $(LINKER_EXECUTABLE_OPTIONS) $< $(LINKER_OUTPUT_OPTION) $@ \ + $(LINKER_LIBRARY_OPTION)chicken $(LINKER_LINK_SHARED_PROGRAM_OPTIONS) $(LIBRARIES) # static executables $(CHICKEN_STATIC_EXECUTABLE): $(COMPILER_STATIC_OBJECTS) libchicken$(A) - $(LINKER) $(LINKER_LINK_STATIC_OPTION) $(COMPILER_STATIC_OBJECTS) $(LINKER_OUTPUT_OPTION) $@ \ - libchicken$(A) $(LIBRARIES) + $(LINKER) $(LINKER_OPTIONS) $(LINKER_LINK_STATIC_OPTION) $(COMPILER_STATIC_OBJECTS) \ + $(LINKER_OUTPUT_OPTION) $@ libchicken$(A) $(LIBRARIES) $(CSI_STATIC_EXECUTABLE): csi$(O) - $(LINKER) $(LINKER_LINK_STATIC_OPTION) $< $(LINKER_OUTPUT_OPTION) $@ libchicken$(A) $(LIBRARIES) + $(LINKER) $(LINKER_OPTIONS) $(LINKER_LINK_STATIC_OPTION) $< $(LINKER_OUTPUT_OPTION) \ + $@ libchicken$(A) $(LIBRARIES) $(CHICKEN_BUG_PROGRAM)$(EXE): chicken-bug$(O) $(PRIMARY_LIBCHICKEN) - $(LINKER) $(LINKER_LINK_STATIC_OPTION) $< $(LINKER_OUTPUT_OPTION) $@ libchicken$(A) $(LIBRARIES) + $(LINKER) $(LINKER_OPTIONS) $(LINKER_LINK_STATIC_OPTION) $< $(LINKER_OUTPUT_OPTION) \ + $@ libchicken$(A) $(LIBRARIES) # info documentation Index: Makefile.macosx =================================================================== --- Makefile.macosx (revision 6591) +++ Makefile.macosx (working copy) @@ -53,6 +53,11 @@ LINKER_LINK_SHARED_LIBRARY_OPTIONS = -dynamiclib -compatibility_version 1 -current_version 1.0 POSTINSTALL_PROGRAM_FLAGS = -change libchicken$(SO) $(LIBDIR)/libchicken$(SO) +ifeq ($(ARCH),x86-64) +C_COMPILER_OPTIONS += -m64 +LINKER_OPTIONS += -m64 +endif + # file extensions SO = .dylib