~ chicken-core (chicken-5) 9171d5fea8bac02833f6c103c6b7533574f31fa6
commit 9171d5fea8bac02833f6c103c6b7533574f31fa6 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Fri Dec 8 20:27:46 2017 +0100 Commit: Peter Bex <peter@more-magic.net> CommitDate: Sun Dec 10 12:54:27 2017 +0100 Build egg-tools even when doing a static build Also, avoid building dynamic extensions in this mode when compiling eggs. Signed-off-by: Peter Bex <peter@more-magic.net> diff --git a/NEWS b/NEWS index b7d8aeec..6af7064e 100644 --- a/NEWS +++ b/NEWS @@ -113,6 +113,9 @@ environment variables. - Static compilation of eggs is now fully supported and static versions of compiled eggs are available by default. + - In a statically built chicken, the egg-tools ("chicken-install", "-status", + "-uninstall") are still available, but only support static compilation + of eggs. - Foreign function interface - The foreign type specifier "ssize_t" is now accepted, and "size_t" diff --git a/README b/README index 3920775f..dfc87c4e 100644 --- a/README +++ b/README @@ -167,13 +167,11 @@ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/_/ STATICBUILD=1 Build only static versions of the runtime library, compiler - and interpreter. `chicken-install', `chicken-uninstall' and - `chicken-status' will not be generated, as it is mostly - useless unless compiled code can be loaded. + and interpreter. - EXTRA_CHICKEN_OPTIONS=... - Additional options that should be passed to `chicken' when - building the system. + EXTRA_CHICKEN_OPTIONS=... + Additional options that should be passed to `chicken' when + building the system. C_COMPILER_OPTIMIZATION_OPTIONS=... Override built-in C compiler optimization options. Available diff --git a/defaults.make b/defaults.make index 04c070ea..24b787be 100644 --- a/defaults.make +++ b/defaults.make @@ -298,9 +298,7 @@ CHICKEN_SHARED_EXECUTABLE = $(CHICKEN_PROGRAM)-shared$(EXE) CSI_SHARED_EXECUTABLE = $(CSI_PROGRAM)-shared$(EXE) TARGETLIBS ?= lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(A) TARGETS += $(TARGETLIBS) $(CHICKEN_STATIC_EXECUTABLE) \ - $(CSI_STATIC_EXECUTABLE) $(CHICKEN_PROFILE_PROGRAM)$(EXE) \ - $(CSC_PROGRAM)$(EXE) \ - $(CHICKEN_BUG_PROGRAM)$(EXE) $(CHICKEN_DO_PROGRAM)$(EXE) $(CHICKEN_DEBUGGER_PROGRAM) + $(CSI_STATIC_EXECUTABLE) else CHICKEN_STATIC_EXECUTABLE = $(CHICKEN_PROGRAM)-static$(EXE) CSI_STATIC_EXECUTABLE = $(CSI_PROGRAM)-static$(EXE) @@ -308,12 +306,18 @@ CHICKEN_SHARED_EXECUTABLE = $(CHICKEN_PROGRAM)$(EXE) CSI_SHARED_EXECUTABLE = $(CSI_PROGRAM)$(EXE) TARGETLIBS ?= lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(A) $(LIBCHICKEN_SO_FILE) TARGETS += $(TARGETLIBS) $(CHICKEN_SHARED_EXECUTABLE) \ - $(CSI_SHARED_EXECUTABLE) $(CHICKEN_PROFILE_PROGRAM)$(EXE) \ - $(CSC_PROGRAM)$(EXE) $(CHICKEN_INSTALL_PROGRAM)$(EXE) $(CHICKEN_UNINSTALL_PROGRAM)$(EXE) \ - $(CHICKEN_STATUS_PROGRAM)$(EXE) \ - $(CHICKEN_BUG_PROGRAM)$(EXE) $(CHICKEN_DO_PROGRAM)$(EXE) $(CHICKEN_DEBUGGER_PROGRAM) \ + $(CSI_SHARED_EXECUTABLE) \ $(IMPORT_LIBRARIES:%=%.import.so) endif + +TARGETS += $(CHICKEN_INSTALL_PROGRAM)$(EXE) \ + $(CHICKEN_UNINSTALL_PROGRAM)$(EXE) \ + $(CHICKEN_STATUS_PROGRAM)$(EXE) \ + $(CHICKEN_PROFILE_PROGRAM)$(EXE) \ + $(CSC_PROGRAM)$(EXE) \ + $(CHICKEN_DO_PROGRAM)$(EXE) \ + $(CHICKEN_DEBUGGER_PROGRAM) + ifdef WINDOWS TARGETS += chicken.rc$(O) endif diff --git a/egg-compile.scm b/egg-compile.scm index a6e0f571..8b88bd8e 100644 --- a/egg-compile.scm +++ b/egg-compile.scm @@ -30,12 +30,14 @@ (define default-dynamic-program-link-options '()) (define default-static-extension-link-options '()) (define default-dynamic-extension-link-options '()) -(define default-extension-linkage '(static dynamic)) (define default-program-linkage '(dynamic)) (define default-static-compilation-options '("-O2" "-d1")) (define default-dynamic-compilation-options '("-O2" "-d1")) (define default-import-library-compilation-options '("-O2" "-d0")) +(define default-extension-linkage + (if staticbuild '(static) '(static dynamic))) + (define +unix-executable-extension+ "") (define +windows-executable-extension+ ".exe") (define +unix-object-extension+ ".o") @@ -411,7 +413,8 @@ (if (memq 'dynamic link) (list (apply install-dynamic-extension ext)) '()) - (if (uses-compiled-import-library? (get-keyword mode: ext)) + (if (and (memq 'dynamic link) + (uses-compiled-import-library? (get-keyword mode: ext))) (map (lambda (mod) (apply install-import-library mod (cdr ext))) ; override name diff --git a/rules.make b/rules.make index b44c42ec..d8fecb0a 100644 --- a/rules.make +++ b/rules.make @@ -63,12 +63,9 @@ MANPAGES = \ # care of which programs should actually be installed/uninstalled INSTALLED_PROGRAMS = \ $(CHICKEN_PROGRAM) $(CSI_PROGRAM) $(CHICKEN_PROFILE_PROGRAM) \ - $(CSC_PROGRAM) $(CHICKEN_BUG_PROGRAM) $(CHICKEN_DO_PROGRAM) - -ifndef STATICBUILD -INSTALLED_PROGRAMS += $(CHICKEN_STATUS_PROGRAM) \ + $(CSC_PROGRAM) \ + $(CHICKEN_DO_PROGRAM) $(CHICKEN_STATUS_PROGRAM) \ $(CHICKEN_INSTALL_PROGRAM) $(CHICKEN_UNINSTALL_PROGRAM) -endif # These generated files make up a bootstrapped distribution build. # They are not cleaned by the 'clean' target, but only by 'spotless'. @@ -333,11 +330,9 @@ install-bin: # Damn. What was this for, again? # # $(MAKE_WRITABLE_COMMAND) $(CHICKEN_PROGRAM)$(EXE) $(CSI_PROGRAM)$(EXE) $(CSC_PROGRAM)$(EXE) $(CHICKEN_PROFILE_PROGRAM)$(EXE) -# ifndef STATICBUILD # $(MAKE_WRITABLE_COMMAND) $(CHICKEN_INSTALL_PROGRAM)$(EXE) # $(MAKE_WRITABLE_COMMAND) $(CHICKEN_UNINSTALL_PROGRAM)$(EXE) # $(MAKE_WRITABLE_COMMAND) $(CHICKEN_STATUS_PROGRAM)$(EXE) -# endif else install-bin: $(TARGETS) install-libs install-dev $(MAKEDIR_COMMAND) $(MAKEDIR_COMMAND_OPTIONS) "$(DESTDIR)$(IBINDIR)" @@ -359,8 +354,8 @@ else $(lib).import.so "$(DESTDIR)$(IEGGDIR)" $(NL)) endif -ifndef STATICBUILD ifneq ($(POSTINSTALL_PROGRAM),true) +ifndef STATICBUILD $(foreach prog,$(INSTALLED_PROGRAMS),\ $(POSTINSTALL_PROGRAM) $(POSTINSTALL_PROGRAM_FLAGS) \ "$(DESTDIR)$(IBINDIR)$(SEP)$(prog)" $(NL)) @@ -369,6 +364,7 @@ ifneq ($(POSTINSTALL_PROGRAM),true) $(POSTINSTALL_PROGRAM) $(POSTINSTALL_PROGRAM_FLAGS) \ "$(DESTDIR)$(IEGGDIR)$(SEP)$(import-lib).import.so" $(NL)) endif +endif ifeq ($(CROSS_CHICKEN)$(DESTDIR),0) -$(IBINDIR)$(SEP)$(CHICKEN_INSTALL_PROGRAM) -update-db else @@ -380,7 +376,6 @@ endif ifdef WINDOWS_SHELL $(INSTALL_PROGRAM) $(INSTALL_PROGRAM_EXECUTABLE_OPTIONS) $(SRCDIR)csibatch.bat "$(DESTDIR)$(IBINDIR)" endif -endif install-other-files: $(MAKEDIR_COMMAND) $(MAKEDIR_COMMAND_OPTIONS) "$(DESTDIR)$(IMAN1DIR)" @@ -913,7 +908,7 @@ clean: $(CHICKEN_INSTALL_PROGRAM)$(EXE) \ $(CHICKEN_UNINSTALL_PROGRAM)$(EXE) \ $(CHICKEN_STATUS_PROGRAM)$(EXE) \ - $(CHICKEN_BUG_PROGRAM)$(EXE) *$(O) \ + *$(O) \ $(CHICKEN_DO_PROGRAM)$(EXE) \ $(CHICKEN_DEBUGGER_PROGRAM) \ $(LIBCHICKEN_SO_FILE) \Trap