~ chicken-core (chicken-5) /defaults.make


  1# defaults.make - default settings -*- Makefile -*-
  2#
  3# Copyright (c) 2008-2022, The CHICKEN Team
  4# Copyright (c) 2007, Felix L. Winkelmann
  5# All rights reserved.
  6#
  7# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
  8# conditions are met:
  9#
 10#   Redistributions of source code must retain the above copyright notice, this list of conditions and the following
 11#     disclaimer. 
 12#   Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
 13#     disclaimer in the documentation and/or other materials provided with the distribution. 
 14#   Neither the name of the author nor the names of its contributors may be used to endorse or promote
 15#     products derived from this software without specific prior written permission. 
 16#
 17# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
 18# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
 19# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
 20# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 21# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 22# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 23# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 24# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 25# POSSIBILITY OF SUCH DAMAGE.
 26
 27
 28# basic parameters
 29
 30BINARYVERSION = 11
 31STACKDIRECTION ?= 1
 32CROSS_CHICKEN ?= 0
 33
 34# directories
 35
 36SEP ?= /
 37DESTDIR ?=
 38PREFIX ?= /usr/local
 39
 40BINDIR ?= $(PREFIX)/bin
 41LIBDIR ?= $(PREFIX)/lib
 42SHAREDIR ?= $(PREFIX)/share
 43DATADIR ?= $(SHAREDIR)/$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)
 44INCLUDEDIR ?= $(PREFIX)/include
 45MANDIR ?= $(SHAREDIR)/man
 46
 47DOCDIR ?= $(DATADIR)/doc
 48VARDIR ?= $(LIBDIR)
 49MAN1DIR ?= $(MANDIR)/man1
 50CHICKENLIBDIR ?= $(VARDIR)/$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)
 51EGGDIR ?= $(CHICKENLIBDIR)/$(BINARYVERSION)
 52CHICKENINCDIR ?= $(INCLUDEDIR)/$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)
 53
 54# For the windows shell, we must distinguish between paths built into
 55# binaries (system calls may use slash as a separator) and paths
 56# passed to shell commands when installing.  We prefix the latter with
 57# an 'I':
 58INST_DIRS=BINDIR LIBDIR SHAREDIR DATADIR MAN1DIR CHICKENINCDIR DOCDIR EGGDIR
 59$(foreach dir,$(INST_DIRS),$(eval I$(dir)=$(subst /,$(SEP),$($(dir)))))
 60
 61INSTALL_LIB_NAME = $(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)
 62RUNTIME_LINKER_PATH ?= .
 63
 64# commands
 65
 66ifdef HOSTSYSTEM
 67C_COMPILER ?= $(HOSTSYSTEM)-gcc
 68CXX_COMPILER ?= $(HOSTSYSTEM)-g++
 69LIBRARIAN ?= $(HOSTSYSTEM)-ar
 70else
 71C_COMPILER ?= gcc
 72CXX_COMPILER ?= g++
 73LIBRARIAN ?= ar
 74endif
 75ifdef WINDOWS
 76ifdef HOSTSYSTEM
 77RC_COMPILER ?= $(HOSTSYSTEM)-windres
 78else
 79RC_COMPILER ?= windres
 80endif
 81endif
 82LINKER ?= $(C_COMPILER)
 83ASSEMBLER ?= $(C_COMPILER)
 84ifdef WINDOWS_SHELL
 85REMOVE_COMMAND ?= del
 86INSTALL_PROGRAM ?= copy
 87MAKEDIR_COMMAND ?= -mkdir
 88else
 89REMOVE_COMMAND ?= rm
 90INSTALL_PROGRAM ?= install
 91MAKEDIR_COMMAND ?= $(INSTALL_PROGRAM)
 92endif
 93PREINSTALL_PROGRAM_FIXUP ?= true
 94POSTINSTALL_STATIC_LIBRARY ?= true
 95POSTINSTALL_PROGRAM ?= true
 96
 97# target variables
 98
 99ifdef TARGETSYSTEM
100TARGET_C_COMPILER ?= $(TARGETSYSTEM)-$(C_COMPILER)
101TARGET_CXX_COMPILER ?= $(TARGETSYSTEM)-$(CXX_COMPILER)
102TARGET_RC_COMPILER ?= $(TARGETSYSTEM)-$(RC_COMPILER)
103TARGET_LIBRARIAN ?= $(TARGETSYSTEM)-$(LIBRARIAN)
104else
105TARGET_C_COMPILER ?= $(C_COMPILER)
106TARGET_CXX_COMPILER ?= $(CXX_COMPILER)
107TARGET_RC_COMPILER ?= $(RC_COMPILER)
108TARGET_LIBRARIAN ?= $(LIBRARIAN)
109endif
110
111TARGET_C_COMPILER_OPTIONS ?= $(C_COMPILER_OPTIONS)
112TARGET_C_COMPILER_OPTIMIZATION_OPTIONS ?= $(C_COMPILER_OPTIMIZATION_OPTIONS)
113TARGET_LIBRARIAN_OPTIONS ?= $(LIBRARIAN_OPTIONS)
114TARGET_PREFIX ?= $(PREFIX)
115TARGET_RUN_PREFIX ?= $(TARGET_PREFIX)
116TARGET_LIBRARIES ?= $(LIBRARIES)
117TARGET_LINKER_OPTIONS ?= $(LINKER_OPTIONS)
118TARGET_LINKER_OPTIMIZATION_OPTIONS ?= $(LINKER_OPTIMIZATION_OPTIONS)
119TARGET_FEATURES ?=
120TARGET_LIB_NAME ?= chicken
121
122ifneq ($(TARGET_C_COMPILER),$(C_COMPILER))
123CROSS_CHICKEN = 1
124else
125CROSS_CHICKEN = 0
126endif
127
128
129# options
130
131INCLUDES ?= -I. -I$(SRCDIR)
132C_COMPILER_COMPILE_OPTION ?= -c
133C_COMPILER_OUTPUT_OPTION ?= -o
134C_COMPILER_OUTPUT ?= $(C_COMPILER_OUTPUT_OPTION) $@
135
136ifndef NOPTABLES
137C_COMPILER_OPTIONS += -DC_ENABLE_PTABLES
138endif
139
140ifdef DEBUGBUILD
141ifeq ($(C_COMPILER),gcc)
142C_COMPILER_OPTIMIZATION_OPTIONS ?= -g -Wall -Wno-unused
143endif
144endif
145C_COMPILER_BUILD_RUNTIME_OPTIONS ?= -DC_BUILDING_LIBCHICKEN
146C_COMPILER_SHARED_OPTIONS ?= -fPIC -DPIC
147LINKER_EXECUTABLE_OPTIONS ?= -L.
148LINKER_STATIC_OPTIONS ?= $(LINKER_EXECUTABLE_OPTIONS)
149LINKER_OUTPUT_OPTION ?= -o
150LINKER_OUTPUT ?= $(LINKER_OUTPUT_OPTION) $@
151LINKER_LIBRARY_OPTION ?= -l
152ifdef STATICBUILD
153LINKER_LIBRARY_PREFIX ?= lib
154LINKER_LIBRARY_SUFFIX ?= .a
155else
156LINKER_LIBRARY_PREFIX ?= -l
157LINKER_LIBRARY_SUFFIX ?= 
158endif
159LINKER_LINK_SHARED_LIBRARY_OPTIONS ?= -shared
160LINKER_LINK_SHARED_DLOADABLE_OPTIONS ?= -shared -L.
161LIBRARIAN_OPTIONS ?= cru
162LIBRARIAN_OUTPUT_OPTION ?=
163LIBRARIAN_OUTPUT ?= $(LIBRARIAN_OUTPUT_OPTION) $@
164LIBRARIES ?= -lm
165ifdef WINDOWS_SHELL
166REMOVE_COMMAND_OPTIONS ?= /f /q
167REMOVE_COMMAND_RECURSIVE_OPTIONS ?= /f /s /q
168MAKE_WRITABLE_COMMAND ?= rem
169INSTALL_PROGRAM_SHARED_LIBRARY_OPTIONS ?= /Y
170INSTALL_PROGRAM_STATIC_LIBRARY_OPTIONS ?= /Y
171INSTALL_PROGRAM_EXECUTABLE_OPTIONS ?= /Y
172INSTALL_PROGRAM_FILE_OPTIONS ?= /Y
173else
174REMOVE_COMMAND_OPTIONS ?= -f
175REMOVE_COMMAND_RECURSIVE_OPTIONS ?= -fr
176MAKE_WRITABLE_COMMAND ?= chmod 0755
177INSTALL_PROGRAM_SHARED_LIBRARY_OPTIONS ?= -m 755
178INSTALL_PROGRAM_STATIC_LIBRARY_OPTIONS ?= -m 644
179INSTALL_PROGRAM_EXECUTABLE_OPTIONS ?= -m 755
180INSTALL_PROGRAM_FILE_OPTIONS ?= -m 644
181MAKEDIR_COMMAND_OPTIONS ?= -d -m 755
182endif
183ASSEMBLER_OPTIONS ?= $(C_COMPILER_OPTIONS)
184ASSEMBLER_OUTPUT_OPTION ?= -o
185ASSEMBLER_OUTPUT ?= $(ASSEMBLER_OUTPUT_OPTION) $@
186ASSEMBLER_COMPILE_OPTION ?= -c
187ifdef STATICBUILD
188PRIMARY_LIBCHICKEN ?= lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(A)
189else
190ifeq ($(PLATFORM),cygwin)
191PRIMARY_LIBCHICKEN = cyg$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)-0.dll
192LIBCHICKEN_SO_FILE = cyg$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)-0.dll
193else
194PRIMARY_LIBCHICKEN ?= lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(SO)
195LIBCHICKEN_SO_FILE ?= lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(SO)
196endif
197endif
198LIBCHICKEN_SO_LIBRARIES ?= $(LIBRARIES)
199
200# other settings
201
202ifdef WINDOWS_SHELL
203BUILD_TIME ?= $(shell date /t)
204SCRIPT_EXT = .bat
205COPY_COMMAND = copy /Y
206HOSTNAME ?= $(shell hostname)
207UNAME_SYS ?= Windows
208# This is a poor man's version of $(file ...) in GNU Make 4.0
209# We should consider replacing it when it becomes so widespread
210# that systems (Debian, OS X, Haiku, Mingw, Cygwin) are shipping it
211echo = echo $(3)$(1)$(2)
212else
213SCRIPT_EXT =
214COPY_COMMAND = cp
215echo = echo '$(subst ','\'',$(3))'$(1)$(2)
216#' fix Emacs syntax highlighting
217endif
218WISH ?= "$$wish"
219GENERATE_DEBUGGER ?= cat $< >$@; echo 'exec $(WISH) "$(DATADIR)/feathers.tcl" -- "$$@"' >>$@
220
221
222# file extensions
223
224O ?= .o
225A ?= .a
226# EXE ?=
227SO ?= .so
228ASM ?= .S
229MAN ?= .mdoc
230
231# special files
232
233POSIXFILE ?= posixunix
234CHICKEN_CONFIG_H = chicken-config.h
235
236# bootstrapping compiler
237
238CHICKEN ?= chicken$(EXE)
239
240# interpreter for scripts
241
242CSI ?= csi$(EXE)
243
244# Scheme compiler flags
245
246CHICKEN_OPTIONS = -optimize-level 2 -include-path . -include-path $(SRCDIR) -inline -ignore-repository -feature chicken-bootstrap
247ifdef DEBUGBUILD
248CHICKEN_OPTIONS += -feature debugbuild -verbose
249else
250CHICKEN_OPTIONS += -no-warnings
251endif
252ifndef BUILDING_CHICKEN_BOOT
253CHICKEN_OPTIONS += -specialize -consult-types-file $(SRCDIR)types.db
254endif
255CHICKEN_OPTIONS += $(EXTRA_CHICKEN_OPTIONS)
256CHICKEN_LIBRARY_OPTIONS = $(CHICKEN_OPTIONS) -explicit-use -no-trace
257CHICKEN_PROGRAM_OPTIONS = $(CHICKEN_OPTIONS) -no-lambda-info
258CHICKEN_DYNAMIC_OPTIONS = $(CHICKEN_OPTIONS) -feature chicken-compile-shared -dynamic
259CHICKEN_IMPORT_LIBRARY_OPTIONS = $(CHICKEN_DYNAMIC_OPTIONS) -no-trace
260
261ifndef DEBUGBUILD
262CHICKEN_PROGRAM_OPTIONS += -no-trace
263endif
264
265CHICKEN_PROGRAM_OPTIONS += $(if $(PROFILE_OBJECTS),-profile)
266
267# import libraries
268
269PRIMITIVE_IMPORT_LIBRARIES = chicken.base chicken.condition \
270	chicken.csi chicken.foreign chicken.syntax chicken.time
271DYNAMIC_IMPORT_LIBRARIES = srfi-4
272DYNAMIC_CHICKEN_IMPORT_LIBRARIES = bitwise blob errno file.posix	\
273	fixnum flonum format gc io keyword load locative memory		\
274	memory.representation platform plist pretty-print		\
275	process process.signal process-context process-context.posix	\
276	random sort string time.posix
277DYNAMIC_CHICKEN_COMPILER_IMPORT_LIBRARIES = user-pass
278DYNAMIC_CHICKEN_UNIT_IMPORT_LIBRARIES = continuation eval file \
279	internal irregex pathname port read-syntax repl tcp
280
281# targets
282
283CHICKEN_PROGRAM = $(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)
284CSC_PROGRAM = $(PROGRAM_PREFIX)csc$(PROGRAM_SUFFIX)
285CSI_PROGRAM = $(PROGRAM_PREFIX)csi$(PROGRAM_SUFFIX)
286CHICKEN_PROFILE_PROGRAM = $(PROGRAM_PREFIX)chicken-profile$(PROGRAM_SUFFIX)
287CHICKEN_INSTALL_PROGRAM = $(PROGRAM_PREFIX)chicken-install$(PROGRAM_SUFFIX)
288CHICKEN_UNINSTALL_PROGRAM = $(PROGRAM_PREFIX)chicken-uninstall$(PROGRAM_SUFFIX)
289CHICKEN_STATUS_PROGRAM = $(PROGRAM_PREFIX)chicken-status$(PROGRAM_SUFFIX)
290CHICKEN_DO_PROGRAM = $(PROGRAM_PREFIX)chicken-do$(PROGRAM_SUFFIX)
291CHICKEN_DEBUGGER_PROGRAM ?= $(PROGRAM_PREFIX)feathers$(PROGRAM_SUFFIX)$(SCRIPT_EXT)
292IMPORT_LIBRARIES = $(DYNAMIC_IMPORT_LIBRARIES) \
293		   $(PRIMITIVE_IMPORT_LIBRARIES) \
294		   $(foreach lib,$(DYNAMIC_CHICKEN_IMPORT_LIBRARIES),chicken.$(lib)) \
295		   $(foreach lib,$(DYNAMIC_CHICKEN_UNIT_IMPORT_LIBRARIES),chicken.$(lib)) \
296		   $(foreach lib,$(DYNAMIC_CHICKEN_COMPILER_IMPORT_LIBRARIES),chicken.compiler.$(lib))
297
298ifdef STATICBUILD
299CHICKEN_STATIC_EXECUTABLE = $(CHICKEN_PROGRAM)$(EXE)
300CSI_STATIC_EXECUTABLE = $(CSI_PROGRAM)$(EXE)
301CHICKEN_SHARED_EXECUTABLE = $(CHICKEN_PROGRAM)-shared$(EXE)
302CSI_SHARED_EXECUTABLE = $(CSI_PROGRAM)-shared$(EXE)
303TARGETLIBS ?= lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(A)
304TARGETS += $(TARGETLIBS) $(CHICKEN_STATIC_EXECUTABLE) \
305	$(CSI_STATIC_EXECUTABLE)
306else
307CHICKEN_STATIC_EXECUTABLE = $(CHICKEN_PROGRAM)-static$(EXE)
308CSI_STATIC_EXECUTABLE = $(CSI_PROGRAM)-static$(EXE)
309CHICKEN_SHARED_EXECUTABLE = $(CHICKEN_PROGRAM)$(EXE)
310CSI_SHARED_EXECUTABLE = $(CSI_PROGRAM)$(EXE)
311TARGETLIBS ?= lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(A) $(LIBCHICKEN_SO_FILE)
312TARGETS += $(TARGETLIBS) $(CHICKEN_SHARED_EXECUTABLE) \
313	$(CSI_SHARED_EXECUTABLE) \
314	$(IMPORT_LIBRARIES:%=%.import.so)
315endif
316
317TARGETS += $(CHICKEN_INSTALL_PROGRAM)$(EXE) \
318	$(CHICKEN_UNINSTALL_PROGRAM)$(EXE) \
319	$(CHICKEN_STATUS_PROGRAM)$(EXE) \
320	$(CHICKEN_PROFILE_PROGRAM)$(EXE) \
321	$(CSC_PROGRAM)$(EXE) \
322	$(CHICKEN_DO_PROGRAM)$(EXE) \
323	$(CHICKEN_DEBUGGER_PROGRAM)
324
325ifdef WINDOWS
326TARGETS += chicken.rc$(O)
327endif
328
329
330# main rule
331
332.PHONY: all
333
334all: $(TARGETS)
335
336# generic part of chicken-config.h
337
338chicken-defaults.h:
339ifdef OPTIMIZE_FOR_SPEED
340	$(call echo, >,$@.tmp, /* (this build was optimized for speed) */)
341endif
342ifdef DEBUGBUILD
343	$(call echo, >>, $@.tmp,#define DEBUGBUILD 1)
344endif
345ifdef STATICBUILD
346	$(call echo, >>, $@.tmp,#define STATICBUILD 1)
347endif
348	$(call echo, >>, $@.tmp,#define C_CHICKEN_PROGRAM "$(CHICKEN_PROGRAM)$(EXE)")
349	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_CC)
350	$(call echo, >>, $@.tmp,# define C_INSTALL_CC "$(C_COMPILER)")
351	$(call echo, >>, $@.tmp,#endif)
352	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_CXX)
353	$(call echo, >>, $@.tmp,# define C_INSTALL_CXX "$(CXX_COMPILER)")
354	$(call echo, >>, $@.tmp,#endif)
355	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_POSTINSTALL_PROGRAM)
356	$(call echo, >>, $@.tmp,# define C_INSTALL_POSTINSTALL_PROGRAM "$(POSTINSTALL_PROGRAM)")
357	$(call echo, >>, $@.tmp,#endif)
358	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_RC_COMPILER)
359	$(call echo, >>, $@.tmp,# define C_INSTALL_RC_COMPILER "$(RC_COMPILER)")
360	$(call echo, >>, $@.tmp,#endif)
361	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_CFLAGS)
362	$(call echo, >>, $@.tmp,# define C_INSTALL_CFLAGS "$(C_COMPILER_OPTIONS) $(C_COMPILER_OPTIMIZATION_OPTIONS)")
363	$(call echo, >>, $@.tmp,#endif)
364	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_LDFLAGS)
365	$(call echo, >>, $@.tmp,# define C_INSTALL_LDFLAGS "$(LINKER_OPTIONS) $(LINKER_OPTIMIZATION_OPTIONS)")
366	$(call echo, >>, $@.tmp,#endif)
367	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_PREFIX)
368	$(call echo, >>, $@.tmp,# define C_INSTALL_PREFIX "$(PREFIX)")
369	$(call echo, >>, $@.tmp,#endif)
370	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_SHARE_HOME)
371	$(call echo, >>, $@.tmp,# define C_INSTALL_SHARE_HOME "$(DATADIR)")
372	$(call echo, >>, $@.tmp,#endif)
373	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_BIN_HOME)
374	$(call echo, >>, $@.tmp,# define C_INSTALL_BIN_HOME "$(BINDIR)")
375	$(call echo, >>, $@.tmp,#endif)
376	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_EGG_HOME)
377	$(call echo, >>, $@.tmp,# define C_INSTALL_EGG_HOME "$(EGGDIR)")
378	$(call echo, >>, $@.tmp,#endif)
379	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_LIB_HOME)
380	$(call echo, >>, $@.tmp,# define C_INSTALL_LIB_HOME "$(LIBDIR)")
381	$(call echo, >>, $@.tmp,#endif)
382	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_LIB_NAME)
383	$(call echo, >>, $@.tmp,# define C_INSTALL_LIB_NAME "$(INSTALL_LIB_NAME)")
384	$(call echo, >>, $@.tmp,#endif)
385	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_STATIC_LIB_HOME)
386	$(call echo, >>, $@.tmp,# define C_INSTALL_STATIC_LIB_HOME "$(LIBDIR)")
387	$(call echo, >>, $@.tmp,#endif)
388	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_INCLUDE_HOME)
389	$(call echo, >>, $@.tmp,# define C_INSTALL_INCLUDE_HOME "$(CHICKENINCDIR)")
390	$(call echo, >>, $@.tmp,#endif)
391	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_MORE_LIBS)
392	$(call echo, >>, $@.tmp,# define C_INSTALL_MORE_LIBS "$(LIBRARIES)")
393	$(call echo, >>, $@.tmp,#endif)
394	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_MORE_STATIC_LIBS)
395	$(call echo, >>, $@.tmp,# define C_INSTALL_MORE_STATIC_LIBS "$(LIBRARIES)")
396	$(call echo, >>, $@.tmp,#endif)
397	$(call echo, >>, $@.tmp,#ifndef C_STACK_GROWS_DOWNWARD)
398	$(call echo, >>, $@.tmp,# define C_STACK_GROWS_DOWNWARD $(STACKDIRECTION))
399	$(call echo, >>, $@.tmp,#endif)
400	$(call echo, >>, $@.tmp,#ifndef C_TARGET_MORE_LIBS)
401	$(call echo, >>, $@.tmp,# define C_TARGET_MORE_LIBS "$(TARGET_LIBRARIES)")
402	$(call echo, >>, $@.tmp,#endif)
403	$(call echo, >>, $@.tmp,#ifndef C_TARGET_MORE_STATIC_LIBS)
404	$(call echo, >>, $@.tmp,# define C_TARGET_MORE_STATIC_LIBS "$(TARGET_LIBRARIES)")
405	$(call echo, >>, $@.tmp,#endif)
406	$(call echo, >>, $@.tmp,#ifndef C_TARGET_CC)
407	$(call echo, >>, $@.tmp,# define C_TARGET_CC "$(TARGET_C_COMPILER)")
408	$(call echo, >>, $@.tmp,#endif)
409	$(call echo, >>, $@.tmp,#ifndef C_TARGET_CXX)
410	$(call echo, >>, $@.tmp,# define C_TARGET_CXX "$(TARGET_CXX_COMPILER)")
411	$(call echo, >>, $@.tmp,#endif)
412	$(call echo, >>, $@.tmp,#ifndef C_TARGET_RC_COMPILER)
413	$(call echo, >>, $@.tmp,# define C_TARGET_RC_COMPILER "$(TARGET_RC_COMPILER)")
414	$(call echo, >>, $@.tmp,#endif)
415	$(call echo, >>, $@.tmp,#ifndef C_TARGET_LIBRARIAN)
416	$(call echo, >>, $@.tmp,# define C_TARGET_LIBRARIAN "$(TARGET_LIBRARIAN)")
417	$(call echo, >>, $@.tmp,#endif)
418	$(call echo, >>, $@.tmp,#ifndef C_TARGET_INSTALL_PROGRAM)
419	$(call echo, >>, $@.tmp,# define C_TARGET_INSTALL_PROGRAM "$(INSTALL_PROGRAM)")
420	$(call echo, >>, $@.tmp,#endif)
421	$(call echo, >>, $@.tmp,#ifndef C_TARGET_CFLAGS)
422	$(call echo, >>, $@.tmp,# define C_TARGET_CFLAGS "$(TARGET_C_COMPILER_OPTIONS) $(TARGET_C_COMPILER_OPTIMIZATION_OPTIONS)")
423	$(call echo, >>, $@.tmp,#endif)
424	$(call echo, >>, $@.tmp,#ifndef C_TARGET_LIBRARIAN_FLAGS)
425	$(call echo, >>, $@.tmp,# define C_TARGET_LIBRARIAN_FLAGS "$(TARGET_LIBRARIAN_OPTIONS)")
426	$(call echo, >>, $@.tmp,#endif)
427	$(call echo, >>, $@.tmp,#ifndef C_TARGET_LDFLAGS)
428	$(call echo, >>, $@.tmp,# define C_TARGET_LDFLAGS "$(TARGET_LINKER_OPTIONS) $(TARGET_LINKER_OPTIMIZATION_OPTIONS)")
429	$(call echo, >>, $@.tmp,#endif)
430	$(call echo, >>, $@.tmp,#ifndef C_TARGET_INSTALL_PROGRAM_EXECUTABLE_OPTIONS)
431	$(call echo, >>, $@.tmp,# define C_TARGET_INSTALL_PROGRAM_EXECUTABLE_OPTIONS "$(INSTALL_PROGRAM_EXECUTABLE_OPTIONS)")
432	$(call echo, >>, $@.tmp,#endif)
433	$(call echo, >>, $@.tmp,#ifndef C_TARGET_INSTALL_PROGRAM_FILE_OPTIONS)
434	$(call echo, >>, $@.tmp,# define C_TARGET_INSTALL_PROGRAM_FILE_OPTIONS "$(INSTALL_PROGRAM_FILE_OPTIONS)")
435	$(call echo, >>, $@.tmp,#endif)
436	$(call echo, >>, $@.tmp,#ifndef C_TARGET_FEATURES)
437	$(call echo, >>, $@.tmp,# define C_TARGET_FEATURES "$(TARGET_FEATURES)")
438	$(call echo, >>, $@.tmp,#endif)
439	$(call echo, >>, $@.tmp,#ifndef C_CROSS_CHICKEN)
440	$(call echo, >>, $@.tmp,# define C_CROSS_CHICKEN $(CROSS_CHICKEN))
441	$(call echo, >>, $@.tmp,#endif)
442	$(call echo, >>, $@.tmp,#ifndef C_TARGET_PREFIX)
443	$(call echo, >>, $@.tmp,# define C_TARGET_PREFIX "$(TARGET_PREFIX)")
444	$(call echo, >>, $@.tmp,#endif)
445	$(call echo, >>, $@.tmp,#ifndef C_TARGET_BIN_HOME)
446	$(call echo, >>, $@.tmp,# define C_TARGET_BIN_HOME "$(TARGET_PREFIX)/bin")
447	$(call echo, >>, $@.tmp,#endif)
448	$(call echo, >>, $@.tmp,#ifndef C_TARGET_LIB_HOME)
449	$(call echo, >>, $@.tmp,# define C_TARGET_LIB_HOME "$(TARGET_PREFIX)/lib")
450	$(call echo, >>, $@.tmp,#endif)
451	$(call echo, >>, $@.tmp,#ifndef C_TARGET_LIB_NAME)
452	$(call echo, >>, $@.tmp,# define C_TARGET_LIB_NAME "$(TARGET_LIB_NAME)")
453	$(call echo, >>, $@.tmp,#endif)
454	$(call echo, >>, $@.tmp,#ifndef C_TARGET_RUN_LIB_HOME)
455ifdef DLLSINPATH
456	$(call echo, >>, $@.tmp,# define C_TARGET_RUN_LIB_HOME "$(TARGET_RUN_PREFIX)/bin")
457else
458	$(call echo, >>, $@.tmp,# define C_TARGET_RUN_LIB_HOME "$(TARGET_RUN_PREFIX)/lib")
459endif
460	$(call echo, >>, $@.tmp,#endif)
461	$(call echo, >>, $@.tmp,#ifndef C_TARGET_SHARE_HOME)
462	$(call echo, >>, $@.tmp,# define C_TARGET_SHARE_HOME "$(TARGET_PREFIX)/share/chicken")
463	$(call echo, >>, $@.tmp,#endif)
464	$(call echo, >>, $@.tmp,#ifndef C_TARGET_INCLUDE_HOME)
465	$(call echo, >>, $@.tmp,# define C_TARGET_INCLUDE_HOME "$(TARGET_PREFIX)/include/chicken")
466	$(call echo, >>, $@.tmp,#endif)
467	$(call echo, >>, $@.tmp,#ifndef C_TARGET_STATIC_LIB_HOME)
468	$(call echo, >>, $@.tmp,# define C_TARGET_STATIC_LIB_HOME "$(TARGET_PREFIX)/lib")
469	$(call echo, >>, $@.tmp,#endif)
470	$(call echo, >>, $@.tmp,#ifndef C_CHICKEN_PROGRAM)
471	$(call echo, >>, $@.tmp,# define C_CHICKEN_PROGRAM "$(CHICKEN_PROGRAM)")
472	$(call echo, >>, $@.tmp,#endif)
473	$(call echo, >>, $@.tmp,#ifndef C_CSC_PROGRAM)
474	$(call echo, >>, $@.tmp,# define C_CSC_PROGRAM "$(CSC_PROGRAM)")
475	$(call echo, >>, $@.tmp,#endif)
476	$(call echo, >>, $@.tmp,#ifndef C_CSI_PROGRAM)
477	$(call echo, >>, $@.tmp,# define C_CSI_PROGRAM "$(CSI_PROGRAM)")
478	$(call echo, >>, $@.tmp,#endif)
479	$(call echo, >>, $@.tmp,#ifndef C_CHICKEN_DO_PROGRAM)
480	$(call echo, >>, $@.tmp,# define C_CHICKEN_DO_PROGRAM "$(CHICKEN_DO_PROGRAM)")
481	$(call echo, >>, $@.tmp,#endif)
482	$(call echo, >>, $@.tmp,#ifndef C_CHICKEN_INSTALL_PROGRAM)
483	$(call echo, >>, $@.tmp,# define C_CHICKEN_INSTALL_PROGRAM "$(CHICKEN_INSTALL_PROGRAM)")
484	$(call echo, >>, $@.tmp,#endif)
485	$(call echo, >>, $@.tmp,#ifndef C_CHICKEN_UNINSTALL_PROGRAM)
486	$(call echo, >>, $@.tmp,# define C_CHICKEN_UNINSTALL_PROGRAM "$(CHICKEN_UNINSTALL_PROGRAM)")
487	$(call echo, >>, $@.tmp,#endif)
488	$(call echo, >>, $@.tmp,#ifndef C_CHICKEN_STATUS_PROGRAM)
489	$(call echo, >>, $@.tmp,# define C_CHICKEN_STATUS_PROGRAM "$(CHICKEN_STATUS_PROGRAM)")
490	$(call echo, >>, $@.tmp,#endif)
491	$(call echo, >>, $@.tmp,#ifndef C_WINDOWS_SHELL)
492ifdef WINDOWS_SHELL
493	$(call echo, >>, $@.tmp,# define C_WINDOWS_SHELL 1)
494else
495	$(call echo, >>, $@.tmp,# define C_WINDOWS_SHELL 0)
496endif
497	$(call echo, >>, $@.tmp,#endif)
498	$(call echo, >>, $@.tmp,#ifndef C_BINARY_VERSION)
499	$(call echo, >>, $@.tmp,# define C_BINARY_VERSION $(BINARYVERSION))
500	$(call echo, >>, $@.tmp,#endif)
501	$(call echo, >>, $@.tmp,#ifndef C_USES_SONAME)
502ifdef USES_SONAME
503	$(call echo, >>, $@.tmp,# define C_USES_SONAME 1)
504else
505	$(call echo, >>, $@.tmp,# define C_USES_SONAME 0)
506endif
507	$(call echo, >>, $@.tmp,#endif)
508	$(call echo, >>, $@.tmp,/* END OF FILE */)
509	mv $@.tmp $@
510
511chicken-install.rc:
512	$(call echo, >, $@.tmp,/* GENERATED */)
513	$(call echo, >>, $@.tmp,1 24 MOVEABLE PURE)
514	$(call echo, >>, $@.tmp,BEGIN)
515	$(call echo, >>, $@.tmp,  "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>\r\n")
516	$(call echo, >>, $@.tmp,  "<assembly xmlns=""urn:schemas-microsoft-com:asm.v1"" manifestVersion=""1.0"">\r\n")
517	$(call echo, >>, $@.tmp,  "  <assemblyIdentity version=""1.0.0.0"" processorArchitecture=""*"" name=""$(PROGRAM_PREFIX)chicken-install$(PROGRAM_SUFFIX)"" type=""win32""/>\r\n")
518	$(call echo, >>, $@.tmp,  "  <ms_asmv2:trustInfo xmlns:ms_asmv2=""urn:schemas-microsoft-com:asm.v2"">\r\n")
519	$(call echo, >>, $@.tmp,  "    <ms_asmv2:security>\r\n")
520	$(call echo, >>, $@.tmp,  "      <ms_asmv2:requestedPrivileges>\r\n")
521	$(call echo, >>, $@.tmp,  "        <ms_asmv2:requestedExecutionLevel level=""asInvoker"" uiAccess=""false""/>\r\n")
522	$(call echo, >>, $@.tmp,  "      </ms_asmv2:requestedPrivileges>\r\n")
523	$(call echo, >>, $@.tmp,  "    </ms_asmv2:security>\r\n")
524	$(call echo, >>, $@.tmp,  "  </ms_asmv2:trustInfo>\r\n")
525	$(call echo, >>, $@.tmp,  "</assembly>\r\n")
526	$(call echo, >>, $@.tmp,END)
527	$(call echo, >>, $@.tmp,/* END OF FILE */)
528	mv $@.tmp $@
529
530chicken-uninstall.rc:
531	$(call echo, >, $@.tmp,/* GENERATED */)
532	$(call echo, >>, $@.tmp,1 24 MOVEABLE PURE)
533	$(call echo, >>, $@.tmp,BEGIN)
534	$(call echo, >>, $@.tmp,  "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>\r\n")
535	$(call echo, >>, $@.tmp,  "<assembly xmlns=""urn:schemas-microsoft-com:asm.v1"" manifestVersion=""1.0"">\r\n")
536	$(call echo, >>, $@.tmp,  "  <assemblyIdentity version=""1.0.0.0"" processorArchitecture=""*"" name=""$(PROGRAM_PREFIX)chicken-uninstall$(PROGRAM_SUFFIX)"" type=""win32""/>\r\n")
537	$(call echo, >>, $@.tmp,  "  <ms_asmv2:trustInfo xmlns:ms_asmv2=""urn:schemas-microsoft-com:asm.v2"">\r\n")
538	$(call echo, >>, $@.tmp,  "    <ms_asmv2:security>\r\n")
539	$(call echo, >>, $@.tmp,  "      <ms_asmv2:requestedPrivileges>\r\n")
540	$(call echo, >>, $@.tmp,  "        <ms_asmv2:requestedExecutionLevel level=""asInvoker"" uiAccess=""false""/>\r\n")
541	$(call echo, >>, $@.tmp,  "      </ms_asmv2:requestedPrivileges>\r\n")
542	$(call echo, >>, $@.tmp,  "    </ms_asmv2:security>\r\n")
543	$(call echo, >>, $@.tmp,  "  </ms_asmv2:trustInfo>\r\n")
544	$(call echo, >>, $@.tmp,  "</assembly>\r\n")
545	$(call echo, >>, $@.tmp,END)
546	$(call echo, >>, $@.tmp,/* END OF FILE */)
547	mv $@.tmp $@
Trap