~ chicken-core (master) /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 = 12
 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 ?= -static.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)-static$(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
218
219
220# file extensions
221
222O ?= .o
223A ?= .a
224# EXE ?=
225SO ?= .so
226ASM ?= .S
227MAN ?= .mdoc
228
229# special files
230
231POSIXFILE ?= posixunix
232CHICKEN_CONFIG_H = chicken-config.h
233
234# bootstrapping compiler
235
236CHICKEN ?= chicken$(EXE)
237
238# interpreter for scripts
239
240CSI ?= csi$(EXE)
241
242# Scheme compiler flags
243
244CHICKEN_OPTIONS = -optimize-level 2 -include-path . -include-path $(SRCDIR) -inline -ignore-repository -feature chicken-bootstrap
245ifdef DEBUGBUILD
246CHICKEN_OPTIONS += -feature debugbuild -verbose
247else
248CHICKEN_OPTIONS += -no-warnings
249endif
250ifndef BUILDING_CHICKEN_BOOT
251CHICKEN_OPTIONS += -specialize -consult-types-file $(SRCDIR)types.db
252endif
253CHICKEN_OPTIONS += $(EXTRA_CHICKEN_OPTIONS)
254CHICKEN_LIBRARY_OPTIONS = $(CHICKEN_OPTIONS) -explicit-use -no-trace
255CHICKEN_PROGRAM_OPTIONS = $(CHICKEN_OPTIONS) -no-lambda-info
256CHICKEN_DYNAMIC_OPTIONS = $(CHICKEN_OPTIONS) -feature chicken-compile-shared -dynamic
257CHICKEN_IMPORT_LIBRARY_OPTIONS = $(CHICKEN_DYNAMIC_OPTIONS) -no-trace
258
259ifndef DEBUGBUILD
260CHICKEN_PROGRAM_OPTIONS += -no-trace
261endif
262
263CHICKEN_PROGRAM_OPTIONS += $(if $(PROFILE_OBJECTS),-profile)
264
265# import libraries
266
267PRIMITIVE_IMPORT_LIBRARIES = chicken.base chicken.condition \
268	chicken.csi chicken.foreign chicken.syntax chicken.time scheme.write \
269	scheme.time scheme.file scheme.process-context
270DYNAMIC_IMPORT_LIBRARIES = srfi-4
271DYNAMIC_CHICKEN_IMPORT_LIBRARIES = bitwise bytevector errno file.posix	\
272	fixnum flonum format gc io keyword load locative memory		\
273	memory.representation platform plist pretty-print		\
274	process process.signal process-context process-context.posix	\
275	random sort string time.posix number-vector
276DYNAMIC_CHICKEN_COMPILER_IMPORT_LIBRARIES = user-pass
277DYNAMIC_CHICKEN_UNIT_IMPORT_LIBRARIES = continuation eval file \
278	internal irregex pathname port read-syntax repl tcp
279
280# targets
281
282CHICKEN_PROGRAM = $(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)
283CSC_PROGRAM = $(PROGRAM_PREFIX)csc$(PROGRAM_SUFFIX)
284CSI_PROGRAM = $(PROGRAM_PREFIX)csi$(PROGRAM_SUFFIX)
285CHICKEN_PROFILE_PROGRAM = $(PROGRAM_PREFIX)chicken-profile$(PROGRAM_SUFFIX)
286CHICKEN_INSTALL_PROGRAM = $(PROGRAM_PREFIX)chicken-install$(PROGRAM_SUFFIX)
287CHICKEN_UNINSTALL_PROGRAM = $(PROGRAM_PREFIX)chicken-uninstall$(PROGRAM_SUFFIX)
288CHICKEN_STATUS_PROGRAM = $(PROGRAM_PREFIX)chicken-status$(PROGRAM_SUFFIX)
289CHICKEN_DO_PROGRAM = $(PROGRAM_PREFIX)chicken-do$(PROGRAM_SUFFIX)
290IMPORT_LIBRARIES = $(DYNAMIC_IMPORT_LIBRARIES) \
291		   $(PRIMITIVE_IMPORT_LIBRARIES) \
292		   $(foreach lib,$(DYNAMIC_CHICKEN_IMPORT_LIBRARIES),chicken.$(lib)) \
293		   $(foreach lib,$(DYNAMIC_CHICKEN_UNIT_IMPORT_LIBRARIES),chicken.$(lib)) \
294		   $(foreach lib,$(DYNAMIC_CHICKEN_COMPILER_IMPORT_LIBRARIES),chicken.compiler.$(lib))
295
296ifdef STATICBUILD
297CHICKEN_STATIC_EXECUTABLE = $(CHICKEN_PROGRAM)$(EXE)
298CSI_STATIC_EXECUTABLE = $(CSI_PROGRAM)$(EXE)
299CHICKEN_SHARED_EXECUTABLE = $(CHICKEN_PROGRAM)-shared$(EXE)
300CSI_SHARED_EXECUTABLE = $(CSI_PROGRAM)-shared$(EXE)
301TARGETLIBS ?= lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)-static$(A)
302TARGETS += $(TARGETLIBS) $(CHICKEN_STATIC_EXECUTABLE) \
303	$(CSI_STATIC_EXECUTABLE)
304else
305CHICKEN_STATIC_EXECUTABLE = $(CHICKEN_PROGRAM)-static$(EXE)
306CSI_STATIC_EXECUTABLE = $(CSI_PROGRAM)-static$(EXE)
307CHICKEN_SHARED_EXECUTABLE = $(CHICKEN_PROGRAM)$(EXE)
308CSI_SHARED_EXECUTABLE = $(CSI_PROGRAM)$(EXE)
309TARGETLIBS ?= lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)-static$(A) $(LIBCHICKEN_SO_FILE)
310TARGETS += $(TARGETLIBS) $(CHICKEN_SHARED_EXECUTABLE) \
311	$(CSI_SHARED_EXECUTABLE) \
312	$(IMPORT_LIBRARIES:%=%.import.so)
313endif
314
315TARGETS += $(CHICKEN_INSTALL_PROGRAM)$(EXE) \
316	$(CHICKEN_UNINSTALL_PROGRAM)$(EXE) \
317	$(CHICKEN_STATUS_PROGRAM)$(EXE) \
318	$(CHICKEN_PROFILE_PROGRAM)$(EXE) \
319	$(CSC_PROGRAM)$(EXE) \
320	$(CHICKEN_DO_PROGRAM)$(EXE) \
321	$(CHICKEN_DEBUGGER_PROGRAM)
322
323ifdef WINDOWS
324TARGETS += chicken.rc$(O)
325endif
326
327
328# main rule
329
330.PHONY: all
331
332all: $(TARGETS)
333
334# generic part of chicken-config.h
335
336chicken-defaults.h: config.make
337ifdef OPTIMIZE_FOR_SPEED
338	$(call echo, >,$@.tmp, /* (this build was optimized for speed) */)
339endif
340ifdef DEBUGBUILD
341	$(call echo, >>, $@.tmp,#define DEBUGBUILD 1)
342endif
343ifdef STATICBUILD
344	$(call echo, >>, $@.tmp,#define STATICBUILD 1)
345endif
346	$(call echo, >>, $@.tmp,#define C_CHICKEN_PROGRAM "$(CHICKEN_PROGRAM)$(EXE)")
347	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_CC)
348	$(call echo, >>, $@.tmp,# define C_INSTALL_CC "$(C_COMPILER)")
349	$(call echo, >>, $@.tmp,#endif)
350	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_CXX)
351	$(call echo, >>, $@.tmp,# define C_INSTALL_CXX "$(CXX_COMPILER)")
352	$(call echo, >>, $@.tmp,#endif)
353	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_POSTINSTALL_PROGRAM)
354	$(call echo, >>, $@.tmp,# define C_INSTALL_POSTINSTALL_PROGRAM "$(POSTINSTALL_PROGRAM)")
355	$(call echo, >>, $@.tmp,#endif)
356	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_RC_COMPILER)
357	$(call echo, >>, $@.tmp,# define C_INSTALL_RC_COMPILER "$(RC_COMPILER)")
358	$(call echo, >>, $@.tmp,#endif)
359	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_CFLAGS)
360	$(call echo, >>, $@.tmp,# define C_INSTALL_CFLAGS "$(C_COMPILER_OPTIONS) $(C_COMPILER_OPTIMIZATION_OPTIONS)")
361	$(call echo, >>, $@.tmp,#endif)
362	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_LDFLAGS)
363	$(call echo, >>, $@.tmp,# define C_INSTALL_LDFLAGS "$(LINKER_OPTIONS) $(LINKER_OPTIMIZATION_OPTIONS)")
364	$(call echo, >>, $@.tmp,#endif)
365	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_PREFIX)
366	$(call echo, >>, $@.tmp,# define C_INSTALL_PREFIX "$(PREFIX)")
367	$(call echo, >>, $@.tmp,#endif)
368	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_SHARE_HOME)
369	$(call echo, >>, $@.tmp,# define C_INSTALL_SHARE_HOME "$(DATADIR)")
370	$(call echo, >>, $@.tmp,#endif)
371	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_BIN_HOME)
372	$(call echo, >>, $@.tmp,# define C_INSTALL_BIN_HOME "$(BINDIR)")
373	$(call echo, >>, $@.tmp,#endif)
374	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_EGG_HOME)
375	$(call echo, >>, $@.tmp,# define C_INSTALL_EGG_HOME "$(EGGDIR)")
376	$(call echo, >>, $@.tmp,#endif)
377	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_LIB_HOME)
378	$(call echo, >>, $@.tmp,# define C_INSTALL_LIB_HOME "$(LIBDIR)")
379	$(call echo, >>, $@.tmp,#endif)
380	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_LIB_NAME)
381	$(call echo, >>, $@.tmp,# define C_INSTALL_LIB_NAME "$(INSTALL_LIB_NAME)")
382	$(call echo, >>, $@.tmp,#endif)
383	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_STATIC_LIB_HOME)
384	$(call echo, >>, $@.tmp,# define C_INSTALL_STATIC_LIB_HOME "$(LIBDIR)")
385	$(call echo, >>, $@.tmp,#endif)
386	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_INCLUDE_HOME)
387	$(call echo, >>, $@.tmp,# define C_INSTALL_INCLUDE_HOME "$(CHICKENINCDIR)")
388	$(call echo, >>, $@.tmp,#endif)
389	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_MORE_LIBS)
390	$(call echo, >>, $@.tmp,# define C_INSTALL_MORE_LIBS "$(LIBRARIES)")
391	$(call echo, >>, $@.tmp,#endif)
392	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_MORE_STATIC_LIBS)
393	$(call echo, >>, $@.tmp,# define C_INSTALL_MORE_STATIC_LIBS "$(LIBRARIES)")
394	$(call echo, >>, $@.tmp,#endif)
395	$(call echo, >>, $@.tmp,#ifndef C_STACK_GROWS_DOWNWARD)
396	$(call echo, >>, $@.tmp,# define C_STACK_GROWS_DOWNWARD $(STACKDIRECTION))
397	$(call echo, >>, $@.tmp,#endif)
398	$(call echo, >>, $@.tmp,#ifndef C_TARGET_MORE_LIBS)
399	$(call echo, >>, $@.tmp,# define C_TARGET_MORE_LIBS "$(TARGET_LIBRARIES)")
400	$(call echo, >>, $@.tmp,#endif)
401	$(call echo, >>, $@.tmp,#ifndef C_TARGET_MORE_STATIC_LIBS)
402	$(call echo, >>, $@.tmp,# define C_TARGET_MORE_STATIC_LIBS "$(TARGET_LIBRARIES)")
403	$(call echo, >>, $@.tmp,#endif)
404	$(call echo, >>, $@.tmp,#ifndef C_TARGET_CC)
405	$(call echo, >>, $@.tmp,# define C_TARGET_CC "$(TARGET_C_COMPILER)")
406	$(call echo, >>, $@.tmp,#endif)
407	$(call echo, >>, $@.tmp,#ifndef C_TARGET_CXX)
408	$(call echo, >>, $@.tmp,# define C_TARGET_CXX "$(TARGET_CXX_COMPILER)")
409	$(call echo, >>, $@.tmp,#endif)
410	$(call echo, >>, $@.tmp,#ifndef C_TARGET_RC_COMPILER)
411	$(call echo, >>, $@.tmp,# define C_TARGET_RC_COMPILER "$(TARGET_RC_COMPILER)")
412	$(call echo, >>, $@.tmp,#endif)
413	$(call echo, >>, $@.tmp,#ifndef C_TARGET_LIBRARIAN)
414	$(call echo, >>, $@.tmp,# define C_TARGET_LIBRARIAN "$(TARGET_LIBRARIAN)")
415	$(call echo, >>, $@.tmp,#endif)
416	$(call echo, >>, $@.tmp,#ifndef C_TARGET_INSTALL_PROGRAM)
417	$(call echo, >>, $@.tmp,# define C_TARGET_INSTALL_PROGRAM "$(INSTALL_PROGRAM)")
418	$(call echo, >>, $@.tmp,#endif)
419	$(call echo, >>, $@.tmp,#ifndef C_TARGET_CFLAGS)
420	$(call echo, >>, $@.tmp,# define C_TARGET_CFLAGS "$(TARGET_C_COMPILER_OPTIONS) $(TARGET_C_COMPILER_OPTIMIZATION_OPTIONS)")
421	$(call echo, >>, $@.tmp,#endif)
422	$(call echo, >>, $@.tmp,#ifndef C_TARGET_LIBRARIAN_FLAGS)
423	$(call echo, >>, $@.tmp,# define C_TARGET_LIBRARIAN_FLAGS "$(TARGET_LIBRARIAN_OPTIONS)")
424	$(call echo, >>, $@.tmp,#endif)
425	$(call echo, >>, $@.tmp,#ifndef C_TARGET_LDFLAGS)
426	$(call echo, >>, $@.tmp,# define C_TARGET_LDFLAGS "$(TARGET_LINKER_OPTIONS) $(TARGET_LINKER_OPTIMIZATION_OPTIONS)")
427	$(call echo, >>, $@.tmp,#endif)
428	$(call echo, >>, $@.tmp,#ifndef C_TARGET_INSTALL_PROGRAM_EXECUTABLE_OPTIONS)
429	$(call echo, >>, $@.tmp,# define C_TARGET_INSTALL_PROGRAM_EXECUTABLE_OPTIONS "$(INSTALL_PROGRAM_EXECUTABLE_OPTIONS)")
430	$(call echo, >>, $@.tmp,#endif)
431	$(call echo, >>, $@.tmp,#ifndef C_TARGET_INSTALL_PROGRAM_FILE_OPTIONS)
432	$(call echo, >>, $@.tmp,# define C_TARGET_INSTALL_PROGRAM_FILE_OPTIONS "$(INSTALL_PROGRAM_FILE_OPTIONS)")
433	$(call echo, >>, $@.tmp,#endif)
434	$(call echo, >>, $@.tmp,#ifndef C_TARGET_FEATURES)
435	$(call echo, >>, $@.tmp,# define C_TARGET_FEATURES "$(TARGET_FEATURES)")
436	$(call echo, >>, $@.tmp,#endif)
437	$(call echo, >>, $@.tmp,#ifndef C_CROSS_CHICKEN)
438	$(call echo, >>, $@.tmp,# define C_CROSS_CHICKEN $(CROSS_CHICKEN))
439	$(call echo, >>, $@.tmp,#endif)
440	$(call echo, >>, $@.tmp,#ifndef C_TARGET_PREFIX)
441	$(call echo, >>, $@.tmp,# define C_TARGET_PREFIX "$(TARGET_PREFIX)")
442	$(call echo, >>, $@.tmp,#endif)
443	$(call echo, >>, $@.tmp,#ifndef C_TARGET_BIN_HOME)
444	$(call echo, >>, $@.tmp,# define C_TARGET_BIN_HOME "$(TARGET_PREFIX)/bin")
445	$(call echo, >>, $@.tmp,#endif)
446	$(call echo, >>, $@.tmp,#ifndef C_TARGET_LIB_HOME)
447	$(call echo, >>, $@.tmp,# define C_TARGET_LIB_HOME "$(TARGET_PREFIX)/lib")
448	$(call echo, >>, $@.tmp,#endif)
449	$(call echo, >>, $@.tmp,#ifndef C_TARGET_LIB_NAME)
450	$(call echo, >>, $@.tmp,# define C_TARGET_LIB_NAME "$(TARGET_LIB_NAME)")
451	$(call echo, >>, $@.tmp,#endif)
452	$(call echo, >>, $@.tmp,#ifndef C_TARGET_RUN_LIB_HOME)
453ifdef DLLSINPATH
454	$(call echo, >>, $@.tmp,# define C_TARGET_RUN_LIB_HOME "$(TARGET_RUN_PREFIX)/bin")
455else
456	$(call echo, >>, $@.tmp,# define C_TARGET_RUN_LIB_HOME "$(TARGET_RUN_PREFIX)/lib")
457endif
458	$(call echo, >>, $@.tmp,#endif)
459	$(call echo, >>, $@.tmp,#ifndef C_TARGET_SHARE_HOME)
460	$(call echo, >>, $@.tmp,# define C_TARGET_SHARE_HOME "$(TARGET_PREFIX)/share/chicken")
461	$(call echo, >>, $@.tmp,#endif)
462	$(call echo, >>, $@.tmp,#ifndef C_TARGET_INCLUDE_HOME)
463	$(call echo, >>, $@.tmp,# define C_TARGET_INCLUDE_HOME "$(TARGET_PREFIX)/include/chicken")
464	$(call echo, >>, $@.tmp,#endif)
465	$(call echo, >>, $@.tmp,#ifndef C_TARGET_STATIC_LIB_HOME)
466	$(call echo, >>, $@.tmp,# define C_TARGET_STATIC_LIB_HOME "$(TARGET_PREFIX)/lib")
467	$(call echo, >>, $@.tmp,#endif)
468	$(call echo, >>, $@.tmp,#ifndef C_CHICKEN_PROGRAM)
469	$(call echo, >>, $@.tmp,# define C_CHICKEN_PROGRAM "$(CHICKEN_PROGRAM)")
470	$(call echo, >>, $@.tmp,#endif)
471	$(call echo, >>, $@.tmp,#ifndef C_CSC_PROGRAM)
472	$(call echo, >>, $@.tmp,# define C_CSC_PROGRAM "$(CSC_PROGRAM)")
473	$(call echo, >>, $@.tmp,#endif)
474	$(call echo, >>, $@.tmp,#ifndef C_CSI_PROGRAM)
475	$(call echo, >>, $@.tmp,# define C_CSI_PROGRAM "$(CSI_PROGRAM)")
476	$(call echo, >>, $@.tmp,#endif)
477	$(call echo, >>, $@.tmp,#ifndef C_CHICKEN_DO_PROGRAM)
478	$(call echo, >>, $@.tmp,# define C_CHICKEN_DO_PROGRAM "$(CHICKEN_DO_PROGRAM)")
479	$(call echo, >>, $@.tmp,#endif)
480	$(call echo, >>, $@.tmp,#ifndef C_CHICKEN_INSTALL_PROGRAM)
481	$(call echo, >>, $@.tmp,# define C_CHICKEN_INSTALL_PROGRAM "$(CHICKEN_INSTALL_PROGRAM)")
482	$(call echo, >>, $@.tmp,#endif)
483	$(call echo, >>, $@.tmp,#ifndef C_CHICKEN_UNINSTALL_PROGRAM)
484	$(call echo, >>, $@.tmp,# define C_CHICKEN_UNINSTALL_PROGRAM "$(CHICKEN_UNINSTALL_PROGRAM)")
485	$(call echo, >>, $@.tmp,#endif)
486	$(call echo, >>, $@.tmp,#ifndef C_CHICKEN_STATUS_PROGRAM)
487	$(call echo, >>, $@.tmp,# define C_CHICKEN_STATUS_PROGRAM "$(CHICKEN_STATUS_PROGRAM)")
488	$(call echo, >>, $@.tmp,#endif)
489	$(call echo, >>, $@.tmp,#ifndef C_WINDOWS_SHELL)
490ifdef WINDOWS_SHELL
491	$(call echo, >>, $@.tmp,# define C_WINDOWS_SHELL 1)
492else
493	$(call echo, >>, $@.tmp,# define C_WINDOWS_SHELL 0)
494endif
495	$(call echo, >>, $@.tmp,#endif)
496	$(call echo, >>, $@.tmp,#ifndef C_BINARY_VERSION)
497	$(call echo, >>, $@.tmp,# define C_BINARY_VERSION $(BINARYVERSION))
498	$(call echo, >>, $@.tmp,#endif)
499	$(call echo, >>, $@.tmp,#ifndef C_USES_SONAME)
500ifdef USES_SONAME
501	$(call echo, >>, $@.tmp,# define C_USES_SONAME 1)
502else
503	$(call echo, >>, $@.tmp,# define C_USES_SONAME 0)
504endif
505	$(call echo, >>, $@.tmp,#endif)
506	$(call echo, >>, $@.tmp,/* END OF FILE */)
507	mv $@.tmp $@
508
509chicken-install.rc:
510	$(call echo, >, $@.tmp,/* GENERATED */)
511	$(call echo, >>, $@.tmp,1 24 MOVEABLE PURE)
512	$(call echo, >>, $@.tmp,BEGIN)
513	$(call echo, >>, $@.tmp,  "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>\r\n")
514	$(call echo, >>, $@.tmp,  "<assembly xmlns=""urn:schemas-microsoft-com:asm.v1"" manifestVersion=""1.0"">\r\n")
515	$(call echo, >>, $@.tmp,  "  <assemblyIdentity version=""1.0.0.0"" processorArchitecture=""*"" name=""$(PROGRAM_PREFIX)chicken-install$(PROGRAM_SUFFIX)"" type=""win32""/>\r\n")
516	$(call echo, >>, $@.tmp,  "  <ms_asmv2:trustInfo xmlns:ms_asmv2=""urn:schemas-microsoft-com:asm.v2"">\r\n")
517	$(call echo, >>, $@.tmp,  "    <ms_asmv2:security>\r\n")
518	$(call echo, >>, $@.tmp,  "      <ms_asmv2:requestedPrivileges>\r\n")
519	$(call echo, >>, $@.tmp,  "        <ms_asmv2:requestedExecutionLevel level=""asInvoker"" uiAccess=""false""/>\r\n")
520	$(call echo, >>, $@.tmp,  "      </ms_asmv2:requestedPrivileges>\r\n")
521	$(call echo, >>, $@.tmp,  "    </ms_asmv2:security>\r\n")
522	$(call echo, >>, $@.tmp,  "  </ms_asmv2:trustInfo>\r\n")
523	$(call echo, >>, $@.tmp,  "</assembly>\r\n")
524	$(call echo, >>, $@.tmp,END)
525	$(call echo, >>, $@.tmp,/* END OF FILE */)
526	mv $@.tmp $@
527
528chicken-uninstall.rc:
529	$(call echo, >, $@.tmp,/* GENERATED */)
530	$(call echo, >>, $@.tmp,1 24 MOVEABLE PURE)
531	$(call echo, >>, $@.tmp,BEGIN)
532	$(call echo, >>, $@.tmp,  "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>\r\n")
533	$(call echo, >>, $@.tmp,  "<assembly xmlns=""urn:schemas-microsoft-com:asm.v1"" manifestVersion=""1.0"">\r\n")
534	$(call echo, >>, $@.tmp,  "  <assemblyIdentity version=""1.0.0.0"" processorArchitecture=""*"" name=""$(PROGRAM_PREFIX)chicken-uninstall$(PROGRAM_SUFFIX)"" type=""win32""/>\r\n")
535	$(call echo, >>, $@.tmp,  "  <ms_asmv2:trustInfo xmlns:ms_asmv2=""urn:schemas-microsoft-com:asm.v2"">\r\n")
536	$(call echo, >>, $@.tmp,  "    <ms_asmv2:security>\r\n")
537	$(call echo, >>, $@.tmp,  "      <ms_asmv2:requestedPrivileges>\r\n")
538	$(call echo, >>, $@.tmp,  "        <ms_asmv2:requestedExecutionLevel level=""asInvoker"" uiAccess=""false""/>\r\n")
539	$(call echo, >>, $@.tmp,  "      </ms_asmv2:requestedPrivileges>\r\n")
540	$(call echo, >>, $@.tmp,  "    </ms_asmv2:security>\r\n")
541	$(call echo, >>, $@.tmp,  "  </ms_asmv2:trustInfo>\r\n")
542	$(call echo, >>, $@.tmp,  "</assembly>\r\n")
543	$(call echo, >>, $@.tmp,END)
544	$(call echo, >>, $@.tmp,/* END OF FILE */)
545	mv $@.tmp $@
Trap