~ 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)
 84REMOVE_COMMAND ?= rm
 85INSTALL_PROGRAM ?= install
 86MAKEDIR_COMMAND ?= $(INSTALL_PROGRAM)
 87PREINSTALL_PROGRAM_FIXUP ?= true
 88POSTINSTALL_STATIC_LIBRARY ?= true
 89POSTINSTALL_PROGRAM ?= true
 90
 91# target variables
 92
 93ifdef TARGETSYSTEM
 94TARGET_C_COMPILER ?= $(TARGETSYSTEM)-$(C_COMPILER)
 95TARGET_CXX_COMPILER ?= $(TARGETSYSTEM)-$(CXX_COMPILER)
 96TARGET_RC_COMPILER ?= $(TARGETSYSTEM)-$(RC_COMPILER)
 97TARGET_LIBRARIAN ?= $(TARGETSYSTEM)-$(LIBRARIAN)
 98else
 99TARGET_C_COMPILER ?= $(C_COMPILER)
100TARGET_CXX_COMPILER ?= $(CXX_COMPILER)
101TARGET_RC_COMPILER ?= $(RC_COMPILER)
102TARGET_LIBRARIAN ?= $(LIBRARIAN)
103endif
104
105TARGET_C_COMPILER_OPTIONS ?= $(C_COMPILER_OPTIONS)
106TARGET_C_COMPILER_OPTIMIZATION_OPTIONS ?= $(C_COMPILER_OPTIMIZATION_OPTIONS)
107TARGET_LIBRARIAN_OPTIONS ?= $(LIBRARIAN_OPTIONS)
108TARGET_PREFIX ?= $(PREFIX)
109TARGET_RUN_PREFIX ?= $(TARGET_PREFIX)
110TARGET_LIBRARIES ?= $(LIBRARIES)
111TARGET_LINKER_OPTIONS ?= $(LINKER_OPTIONS)
112TARGET_LINKER_OPTIMIZATION_OPTIONS ?= $(LINKER_OPTIMIZATION_OPTIONS)
113TARGET_FEATURES ?=
114TARGET_LIB_NAME ?= chicken
115
116ifneq ($(TARGET_C_COMPILER),$(C_COMPILER))
117CROSS_CHICKEN = 1
118else
119CROSS_CHICKEN = 0
120endif
121
122
123# options
124
125INCLUDES ?= -I. -I$(SRCDIR)
126C_COMPILER_COMPILE_OPTION ?= -c
127C_COMPILER_OUTPUT_OPTION ?= -o
128C_COMPILER_OUTPUT ?= $(C_COMPILER_OUTPUT_OPTION) $@
129
130ifndef NOPTABLES
131C_COMPILER_OPTIONS += -DC_ENABLE_PTABLES
132endif
133
134ifdef DEBUGBUILD
135C_COMPILER_OPTIMIZATION_OPTIONS ?= -g -Wall -Wno-unused
136RUNTIME_OPTIMIZATION_OPTIONS ?= -g -Wall -Wno-unused
137endif
138RUNTIME_OPTIMIZATION_OPTIONS ?= -O2
139C_COMPILER_BUILD_RUNTIME_OPTIONS ?= -DC_BUILDING_LIBCHICKEN
140C_COMPILER_SHARED_OPTIONS ?= -fPIC -DPIC
141LINKER_EXECUTABLE_OPTIONS ?= -L.
142LINKER_STATIC_OPTIONS ?= $(LINKER_EXECUTABLE_OPTIONS)
143LINKER_OUTPUT_OPTION ?= -o
144LINKER_OUTPUT ?= $(LINKER_OUTPUT_OPTION) $@
145LINKER_LIBRARY_OPTION ?= -l
146ifdef STATICBUILD
147LINKER_LIBRARY_PREFIX ?= lib
148LINKER_LIBRARY_SUFFIX ?= -static.a
149else
150LINKER_LIBRARY_PREFIX ?= -l
151LINKER_LIBRARY_SUFFIX ?= 
152endif
153LINKER_LINK_SHARED_LIBRARY_OPTIONS ?= -shared
154LINKER_LINK_SHARED_DLOADABLE_OPTIONS ?= -shared -L.
155LIBRARIAN_OPTIONS ?= cru
156LIBRARIAN_OUTPUT_OPTION ?=
157LIBRARIAN_OUTPUT ?= $(LIBRARIAN_OUTPUT_OPTION) $@
158LIBRARIES ?= -lm
159REMOVE_COMMAND_OPTIONS ?= -f
160REMOVE_COMMAND_RECURSIVE_OPTIONS ?= -fr
161MAKE_READABLE_COMMAND ?= chmod 0644
162MAKE_WRITABLE_COMMAND ?= chmod 0755
163INSTALL_PROGRAM_SHARED_LIBRARY_OPTIONS ?= -m 755
164INSTALL_PROGRAM_STATIC_LIBRARY_OPTIONS ?= -m 644
165INSTALL_PROGRAM_EXECUTABLE_OPTIONS ?= -m 755
166INSTALL_PROGRAM_FILE_OPTIONS ?= -m 644
167MAKEDIR_COMMAND_OPTIONS ?= -d -m 755
168ASSEMBLER_OPTIONS ?= $(C_COMPILER_OPTIONS)
169ASSEMBLER_OUTPUT_OPTION ?= -o
170ASSEMBLER_OUTPUT ?= $(ASSEMBLER_OUTPUT_OPTION) $@
171ASSEMBLER_COMPILE_OPTION ?= -c
172ifdef STATICBUILD
173PRIMARY_LIBCHICKEN ?= lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)-static$(A)
174else
175ifeq ($(PLATFORM),cygwin)
176PRIMARY_LIBCHICKEN = cyg$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)-0.dll
177LIBCHICKEN_SO_FILE = cyg$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)-0.dll
178else
179PRIMARY_LIBCHICKEN ?= lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(SO)
180LIBCHICKEN_SO_FILE ?= lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(SO)
181endif
182endif
183LIBCHICKEN_SO_LIBRARIES ?= $(LIBRARIES)
184
185# other settings
186
187COPY_COMMAND = cp
188echo = echo '$(subst ','\'',$(3))'$(1)$(2)
189#' fix Emacs syntax highlighting
190
191
192# file extensions
193
194O ?= .o
195A ?= .a
196# EXE ?=
197SO ?= .so
198MAN ?= .mdoc
199
200# special files
201
202POSIXFILE ?= posixunix
203CHICKEN_CONFIG_H = chicken-config.h
204
205# bootstrapping compiler
206
207CHICKEN ?= chicken$(EXE)
208
209# interpreter for scripts
210
211CSI ?= csi$(EXE)
212
213# Scheme compiler flags
214
215CHICKEN_OPTIONS = -optimize-level 2 -include-path . -include-path $(SRCDIR) -inline -ignore-repository -feature chicken-bootstrap
216ifdef DEBUGBUILD
217CHICKEN_OPTIONS += -feature debugbuild -verbose
218else
219CHICKEN_OPTIONS += -no-warnings
220endif
221ifndef BUILDING_CHICKEN_BOOT
222CHICKEN_OPTIONS += -specialize -consult-types-file $(SRCDIR)types.db
223endif
224CHICKEN_OPTIONS += $(EXTRA_CHICKEN_OPTIONS)
225CHICKEN_LIBRARY_OPTIONS = $(CHICKEN_OPTIONS) -explicit-use -no-trace
226CHICKEN_PROGRAM_OPTIONS = $(CHICKEN_OPTIONS) -no-lambda-info
227CHICKEN_DYNAMIC_OPTIONS = $(CHICKEN_OPTIONS) -feature chicken-compile-shared -dynamic
228CHICKEN_IMPORT_LIBRARY_OPTIONS = $(CHICKEN_DYNAMIC_OPTIONS) -no-trace
229
230ifndef DEBUGBUILD
231CHICKEN_PROGRAM_OPTIONS += -no-trace
232endif
233
234CHICKEN_PROGRAM_OPTIONS += $(if $(PROFILE_OBJECTS),-profile)
235
236# import libraries
237
238PRIMITIVE_IMPORT_LIBRARIES = chicken.base chicken.condition \
239	chicken.csi chicken.foreign chicken.syntax chicken.time scheme.write \
240	scheme.time scheme.file scheme.process-context
241DYNAMIC_IMPORT_LIBRARIES = srfi-4
242DYNAMIC_CHICKEN_IMPORT_LIBRARIES = bitwise bytevector errno file.posix	\
243	fixnum flonum format gc io keyword load locative memory		\
244	memory.representation platform plist pretty-print version		\
245	process process.signal process-context process-context.posix	\
246	random sort string time.posix number-vector
247DYNAMIC_CHICKEN_COMPILER_IMPORT_LIBRARIES = user-pass
248DYNAMIC_CHICKEN_UNIT_IMPORT_LIBRARIES = continuation eval file \
249	internal irregex pathname port read-syntax repl tcp
250
251# targets
252
253CHICKEN_PROGRAM = $(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)
254CSC_PROGRAM = $(PROGRAM_PREFIX)csc$(PROGRAM_SUFFIX)
255CSI_PROGRAM = $(PROGRAM_PREFIX)csi$(PROGRAM_SUFFIX)
256CHICKEN_PROFILE_PROGRAM = $(PROGRAM_PREFIX)chicken-profile$(PROGRAM_SUFFIX)
257CHICKEN_INSTALL_PROGRAM = $(PROGRAM_PREFIX)chicken-install$(PROGRAM_SUFFIX)
258CHICKEN_UNINSTALL_PROGRAM = $(PROGRAM_PREFIX)chicken-uninstall$(PROGRAM_SUFFIX)
259CHICKEN_STATUS_PROGRAM = $(PROGRAM_PREFIX)chicken-status$(PROGRAM_SUFFIX)
260CHICKEN_DO_PROGRAM = $(PROGRAM_PREFIX)chicken-do$(PROGRAM_SUFFIX)
261IMPORT_LIBRARIES = $(DYNAMIC_IMPORT_LIBRARIES) \
262		   $(PRIMITIVE_IMPORT_LIBRARIES) \
263		   $(foreach lib,$(DYNAMIC_CHICKEN_IMPORT_LIBRARIES),chicken.$(lib)) \
264		   $(foreach lib,$(DYNAMIC_CHICKEN_UNIT_IMPORT_LIBRARIES),chicken.$(lib)) \
265		   $(foreach lib,$(DYNAMIC_CHICKEN_COMPILER_IMPORT_LIBRARIES),chicken.compiler.$(lib))
266
267ifdef STATICBUILD
268CHICKEN_STATIC_EXECUTABLE = $(CHICKEN_PROGRAM)$(EXE)
269CSI_STATIC_EXECUTABLE = $(CSI_PROGRAM)$(EXE)
270CHICKEN_SHARED_EXECUTABLE = $(CHICKEN_PROGRAM)-shared$(EXE)
271CSI_SHARED_EXECUTABLE = $(CSI_PROGRAM)-shared$(EXE)
272TARGETLIBS ?= lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)-static$(A)
273TARGETS += $(TARGETLIBS) $(CHICKEN_STATIC_EXECUTABLE) \
274	$(CSI_STATIC_EXECUTABLE)
275else
276CHICKEN_STATIC_EXECUTABLE = $(CHICKEN_PROGRAM)-static$(EXE)
277CSI_STATIC_EXECUTABLE = $(CSI_PROGRAM)-static$(EXE)
278CHICKEN_SHARED_EXECUTABLE = $(CHICKEN_PROGRAM)$(EXE)
279CSI_SHARED_EXECUTABLE = $(CSI_PROGRAM)$(EXE)
280TARGETLIBS ?= lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)-static$(A) $(LIBCHICKEN_SO_FILE)
281TARGETS += $(TARGETLIBS) $(CHICKEN_SHARED_EXECUTABLE) \
282	$(CSI_SHARED_EXECUTABLE) \
283	$(IMPORT_LIBRARIES:%=%.import.so)
284endif
285
286TARGETS += $(CHICKEN_INSTALL_PROGRAM)$(EXE) \
287	$(CHICKEN_UNINSTALL_PROGRAM)$(EXE) \
288	$(CHICKEN_STATUS_PROGRAM)$(EXE) \
289	$(CHICKEN_PROFILE_PROGRAM)$(EXE) \
290	$(CSC_PROGRAM)$(EXE) \
291	$(CHICKEN_DO_PROGRAM)$(EXE)
292
293ifdef WINDOWS
294TARGETS += chicken.rc$(O)
295endif
296
297
298# main rule
299
300.PHONY: all
301
302all: $(TARGETS)
303
304# generic part of chicken-config.h
305
306chicken-defaults.h: config.make
307ifdef OPTIMIZE_FOR_SPEED
308	$(call echo, >,$@.tmp, /* (this build was optimized for speed) */)
309endif
310ifdef DEBUGBUILD
311	$(call echo, >>, $@.tmp,#define DEBUGBUILD 1)
312endif
313ifdef STATICBUILD
314	$(call echo, >>, $@.tmp,#define STATICBUILD 1)
315endif
316	$(call echo, >>, $@.tmp,#define C_CHICKEN_PROGRAM "$(CHICKEN_PROGRAM)$(EXE)")
317	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_CC)
318	$(call echo, >>, $@.tmp,# define C_INSTALL_CC "$(C_COMPILER)")
319	$(call echo, >>, $@.tmp,#endif)
320	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_CXX)
321	$(call echo, >>, $@.tmp,# define C_INSTALL_CXX "$(CXX_COMPILER)")
322	$(call echo, >>, $@.tmp,#endif)
323	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_POSTINSTALL_PROGRAM)
324	$(call echo, >>, $@.tmp,# define C_INSTALL_POSTINSTALL_PROGRAM "$(POSTINSTALL_PROGRAM)")
325	$(call echo, >>, $@.tmp,#endif)
326	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_RC_COMPILER)
327	$(call echo, >>, $@.tmp,# define C_INSTALL_RC_COMPILER "$(RC_COMPILER)")
328	$(call echo, >>, $@.tmp,#endif)
329	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_CFLAGS)
330	$(call echo, >>, $@.tmp,# define C_INSTALL_CFLAGS "$(C_COMPILER_OPTIONS) $(C_COMPILER_OPTIMIZATION_OPTIONS)")
331	$(call echo, >>, $@.tmp,#endif)
332	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_LDFLAGS)
333	$(call echo, >>, $@.tmp,# define C_INSTALL_LDFLAGS "$(LINKER_OPTIONS) $(LINKER_OPTIMIZATION_OPTIONS)")
334	$(call echo, >>, $@.tmp,#endif)
335	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_PREFIX)
336	$(call echo, >>, $@.tmp,# define C_INSTALL_PREFIX "$(PREFIX)")
337	$(call echo, >>, $@.tmp,#endif)
338	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_SHARE_HOME)
339	$(call echo, >>, $@.tmp,# define C_INSTALL_SHARE_HOME "$(DATADIR)")
340	$(call echo, >>, $@.tmp,#endif)
341	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_BIN_HOME)
342	$(call echo, >>, $@.tmp,# define C_INSTALL_BIN_HOME "$(BINDIR)")
343	$(call echo, >>, $@.tmp,#endif)
344	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_EGG_HOME)
345	$(call echo, >>, $@.tmp,# define C_INSTALL_EGG_HOME "$(EGGDIR)")
346	$(call echo, >>, $@.tmp,#endif)
347	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_LIB_HOME)
348	$(call echo, >>, $@.tmp,# define C_INSTALL_LIB_HOME "$(LIBDIR)")
349	$(call echo, >>, $@.tmp,#endif)
350	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_LIB_NAME)
351	$(call echo, >>, $@.tmp,# define C_INSTALL_LIB_NAME "$(INSTALL_LIB_NAME)")
352	$(call echo, >>, $@.tmp,#endif)
353	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_STATIC_LIB_HOME)
354	$(call echo, >>, $@.tmp,# define C_INSTALL_STATIC_LIB_HOME "$(LIBDIR)")
355	$(call echo, >>, $@.tmp,#endif)
356	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_INCLUDE_HOME)
357	$(call echo, >>, $@.tmp,# define C_INSTALL_INCLUDE_HOME "$(CHICKENINCDIR)")
358	$(call echo, >>, $@.tmp,#endif)
359	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_MORE_LIBS)
360	$(call echo, >>, $@.tmp,# define C_INSTALL_MORE_LIBS "$(LIBRARIES)")
361	$(call echo, >>, $@.tmp,#endif)
362	$(call echo, >>, $@.tmp,#ifndef C_INSTALL_MORE_STATIC_LIBS)
363	$(call echo, >>, $@.tmp,# define C_INSTALL_MORE_STATIC_LIBS "$(LIBRARIES)")
364	$(call echo, >>, $@.tmp,#endif)
365	$(call echo, >>, $@.tmp,#ifndef C_STACK_GROWS_DOWNWARD)
366	$(call echo, >>, $@.tmp,# define C_STACK_GROWS_DOWNWARD $(STACKDIRECTION))
367	$(call echo, >>, $@.tmp,#endif)
368	$(call echo, >>, $@.tmp,#ifndef C_TARGET_MORE_LIBS)
369	$(call echo, >>, $@.tmp,# define C_TARGET_MORE_LIBS "$(TARGET_LIBRARIES)")
370	$(call echo, >>, $@.tmp,#endif)
371	$(call echo, >>, $@.tmp,#ifndef C_TARGET_MORE_STATIC_LIBS)
372	$(call echo, >>, $@.tmp,# define C_TARGET_MORE_STATIC_LIBS "$(TARGET_LIBRARIES)")
373	$(call echo, >>, $@.tmp,#endif)
374	$(call echo, >>, $@.tmp,#ifndef C_TARGET_CC)
375	$(call echo, >>, $@.tmp,# define C_TARGET_CC "$(TARGET_C_COMPILER)")
376	$(call echo, >>, $@.tmp,#endif)
377	$(call echo, >>, $@.tmp,#ifndef C_TARGET_CXX)
378	$(call echo, >>, $@.tmp,# define C_TARGET_CXX "$(TARGET_CXX_COMPILER)")
379	$(call echo, >>, $@.tmp,#endif)
380	$(call echo, >>, $@.tmp,#ifndef C_TARGET_RC_COMPILER)
381	$(call echo, >>, $@.tmp,# define C_TARGET_RC_COMPILER "$(TARGET_RC_COMPILER)")
382	$(call echo, >>, $@.tmp,#endif)
383	$(call echo, >>, $@.tmp,#ifndef C_TARGET_LIBRARIAN)
384	$(call echo, >>, $@.tmp,# define C_TARGET_LIBRARIAN "$(TARGET_LIBRARIAN)")
385	$(call echo, >>, $@.tmp,#endif)
386	$(call echo, >>, $@.tmp,#ifndef C_TARGET_INSTALL_PROGRAM)
387	$(call echo, >>, $@.tmp,# define C_TARGET_INSTALL_PROGRAM "$(INSTALL_PROGRAM)")
388	$(call echo, >>, $@.tmp,#endif)
389	$(call echo, >>, $@.tmp,#ifndef C_TARGET_CFLAGS)
390	$(call echo, >>, $@.tmp,# define C_TARGET_CFLAGS "$(TARGET_C_COMPILER_OPTIONS) $(TARGET_C_COMPILER_OPTIMIZATION_OPTIONS)")
391	$(call echo, >>, $@.tmp,#endif)
392	$(call echo, >>, $@.tmp,#ifndef C_TARGET_LIBRARIAN_FLAGS)
393	$(call echo, >>, $@.tmp,# define C_TARGET_LIBRARIAN_FLAGS "$(TARGET_LIBRARIAN_OPTIONS)")
394	$(call echo, >>, $@.tmp,#endif)
395	$(call echo, >>, $@.tmp,#ifndef C_TARGET_LDFLAGS)
396	$(call echo, >>, $@.tmp,# define C_TARGET_LDFLAGS "$(TARGET_LINKER_OPTIONS) $(TARGET_LINKER_OPTIMIZATION_OPTIONS)")
397	$(call echo, >>, $@.tmp,#endif)
398	$(call echo, >>, $@.tmp,#ifndef C_TARGET_INSTALL_PROGRAM_EXECUTABLE_OPTIONS)
399	$(call echo, >>, $@.tmp,# define C_TARGET_INSTALL_PROGRAM_EXECUTABLE_OPTIONS "$(INSTALL_PROGRAM_EXECUTABLE_OPTIONS)")
400	$(call echo, >>, $@.tmp,#endif)
401	$(call echo, >>, $@.tmp,#ifndef C_TARGET_INSTALL_PROGRAM_FILE_OPTIONS)
402	$(call echo, >>, $@.tmp,# define C_TARGET_INSTALL_PROGRAM_FILE_OPTIONS "$(INSTALL_PROGRAM_FILE_OPTIONS)")
403	$(call echo, >>, $@.tmp,#endif)
404	$(call echo, >>, $@.tmp,#ifndef C_TARGET_FEATURES)
405	$(call echo, >>, $@.tmp,# define C_TARGET_FEATURES "$(TARGET_FEATURES)")
406	$(call echo, >>, $@.tmp,#endif)
407	$(call echo, >>, $@.tmp,#ifndef C_CROSS_CHICKEN)
408	$(call echo, >>, $@.tmp,# define C_CROSS_CHICKEN $(CROSS_CHICKEN))
409	$(call echo, >>, $@.tmp,#endif)
410	$(call echo, >>, $@.tmp,#ifndef C_TARGET_PREFIX)
411	$(call echo, >>, $@.tmp,# define C_TARGET_PREFIX "$(TARGET_PREFIX)")
412	$(call echo, >>, $@.tmp,#endif)
413	$(call echo, >>, $@.tmp,#ifndef C_TARGET_BIN_HOME)
414	$(call echo, >>, $@.tmp,# define C_TARGET_BIN_HOME "$(TARGET_PREFIX)/bin")
415	$(call echo, >>, $@.tmp,#endif)
416	$(call echo, >>, $@.tmp,#ifndef C_TARGET_LIB_HOME)
417	$(call echo, >>, $@.tmp,# define C_TARGET_LIB_HOME "$(TARGET_PREFIX)/lib")
418	$(call echo, >>, $@.tmp,#endif)
419	$(call echo, >>, $@.tmp,#ifndef C_TARGET_LIB_NAME)
420	$(call echo, >>, $@.tmp,# define C_TARGET_LIB_NAME "$(TARGET_LIB_NAME)")
421	$(call echo, >>, $@.tmp,#endif)
422	$(call echo, >>, $@.tmp,#ifndef C_TARGET_RUN_LIB_HOME)
423ifdef DLLSINPATH
424	$(call echo, >>, $@.tmp,# define C_TARGET_RUN_LIB_HOME "$(TARGET_RUN_PREFIX)/bin")
425else
426	$(call echo, >>, $@.tmp,# define C_TARGET_RUN_LIB_HOME "$(TARGET_RUN_PREFIX)/lib")
427endif
428	$(call echo, >>, $@.tmp,#endif)
429	$(call echo, >>, $@.tmp,#ifndef C_TARGET_SHARE_HOME)
430	$(call echo, >>, $@.tmp,# define C_TARGET_SHARE_HOME "$(TARGET_PREFIX)/share/chicken")
431	$(call echo, >>, $@.tmp,#endif)
432	$(call echo, >>, $@.tmp,#ifndef C_TARGET_INCLUDE_HOME)
433	$(call echo, >>, $@.tmp,# define C_TARGET_INCLUDE_HOME "$(TARGET_PREFIX)/include/chicken")
434	$(call echo, >>, $@.tmp,#endif)
435	$(call echo, >>, $@.tmp,#ifndef C_TARGET_STATIC_LIB_HOME)
436	$(call echo, >>, $@.tmp,# define C_TARGET_STATIC_LIB_HOME "$(TARGET_PREFIX)/lib")
437	$(call echo, >>, $@.tmp,#endif)
438	$(call echo, >>, $@.tmp,#ifndef C_CHICKEN_PROGRAM)
439	$(call echo, >>, $@.tmp,# define C_CHICKEN_PROGRAM "$(CHICKEN_PROGRAM)")
440	$(call echo, >>, $@.tmp,#endif)
441	$(call echo, >>, $@.tmp,#ifndef C_CSC_PROGRAM)
442	$(call echo, >>, $@.tmp,# define C_CSC_PROGRAM "$(CSC_PROGRAM)")
443	$(call echo, >>, $@.tmp,#endif)
444	$(call echo, >>, $@.tmp,#ifndef C_CSI_PROGRAM)
445	$(call echo, >>, $@.tmp,# define C_CSI_PROGRAM "$(CSI_PROGRAM)")
446	$(call echo, >>, $@.tmp,#endif)
447	$(call echo, >>, $@.tmp,#ifndef C_CHICKEN_DO_PROGRAM)
448	$(call echo, >>, $@.tmp,# define C_CHICKEN_DO_PROGRAM "$(CHICKEN_DO_PROGRAM)")
449	$(call echo, >>, $@.tmp,#endif)
450	$(call echo, >>, $@.tmp,#ifndef C_CHICKEN_INSTALL_PROGRAM)
451	$(call echo, >>, $@.tmp,# define C_CHICKEN_INSTALL_PROGRAM "$(CHICKEN_INSTALL_PROGRAM)")
452	$(call echo, >>, $@.tmp,#endif)
453	$(call echo, >>, $@.tmp,#ifndef C_CHICKEN_UNINSTALL_PROGRAM)
454	$(call echo, >>, $@.tmp,# define C_CHICKEN_UNINSTALL_PROGRAM "$(CHICKEN_UNINSTALL_PROGRAM)")
455	$(call echo, >>, $@.tmp,#endif)
456	$(call echo, >>, $@.tmp,#ifndef C_CHICKEN_STATUS_PROGRAM)
457	$(call echo, >>, $@.tmp,# define C_CHICKEN_STATUS_PROGRAM "$(CHICKEN_STATUS_PROGRAM)")
458	$(call echo, >>, $@.tmp,#endif)
459	$(call echo, >>, $@.tmp,#ifndef C_WINDOWS_SHELL)
460ifdef WINDOWS_SHELL
461	$(call echo, >>, $@.tmp,# define C_WINDOWS_SHELL 1)
462else
463	$(call echo, >>, $@.tmp,# define C_WINDOWS_SHELL 0)
464endif
465	$(call echo, >>, $@.tmp,#endif)
466	$(call echo, >>, $@.tmp,#ifndef C_BINARY_VERSION)
467	$(call echo, >>, $@.tmp,# define C_BINARY_VERSION $(BINARYVERSION))
468	$(call echo, >>, $@.tmp,#endif)
469	$(call echo, >>, $@.tmp,#ifndef C_USES_SONAME)
470ifdef USES_SONAME
471	$(call echo, >>, $@.tmp,# define C_USES_SONAME 1)
472else
473	$(call echo, >>, $@.tmp,# define C_USES_SONAME 0)
474endif
475	$(call echo, >>, $@.tmp,#endif)
476	$(call echo, >>, $@.tmp,/* END OF FILE */)
477	mv $@.tmp $@
478
479chicken-install.rc:
480	$(call echo, >, $@.tmp,/* GENERATED */)
481	$(call echo, >>, $@.tmp,1 24 MOVEABLE PURE)
482	$(call echo, >>, $@.tmp,BEGIN)
483	$(call echo, >>, $@.tmp,  "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>\r\n")
484	$(call echo, >>, $@.tmp,  "<assembly xmlns=""urn:schemas-microsoft-com:asm.v1"" manifestVersion=""1.0"">\r\n")
485	$(call echo, >>, $@.tmp,  "  <assemblyIdentity version=""1.0.0.0"" processorArchitecture=""*"" name=""$(PROGRAM_PREFIX)chicken-install$(PROGRAM_SUFFIX)"" type=""win32""/>\r\n")
486	$(call echo, >>, $@.tmp,  "  <ms_asmv2:trustInfo xmlns:ms_asmv2=""urn:schemas-microsoft-com:asm.v2"">\r\n")
487	$(call echo, >>, $@.tmp,  "    <ms_asmv2:security>\r\n")
488	$(call echo, >>, $@.tmp,  "      <ms_asmv2:requestedPrivileges>\r\n")
489	$(call echo, >>, $@.tmp,  "        <ms_asmv2:requestedExecutionLevel level=""asInvoker"" uiAccess=""false""/>\r\n")
490	$(call echo, >>, $@.tmp,  "      </ms_asmv2:requestedPrivileges>\r\n")
491	$(call echo, >>, $@.tmp,  "    </ms_asmv2:security>\r\n")
492	$(call echo, >>, $@.tmp,  "  </ms_asmv2:trustInfo>\r\n")
493	$(call echo, >>, $@.tmp,  "</assembly>\r\n")
494	$(call echo, >>, $@.tmp,END)
495	$(call echo, >>, $@.tmp,/* END OF FILE */)
496	mv $@.tmp $@
497
498chicken-uninstall.rc:
499	$(call echo, >, $@.tmp,/* GENERATED */)
500	$(call echo, >>, $@.tmp,1 24 MOVEABLE PURE)
501	$(call echo, >>, $@.tmp,BEGIN)
502	$(call echo, >>, $@.tmp,  "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>\r\n")
503	$(call echo, >>, $@.tmp,  "<assembly xmlns=""urn:schemas-microsoft-com:asm.v1"" manifestVersion=""1.0"">\r\n")
504	$(call echo, >>, $@.tmp,  "  <assemblyIdentity version=""1.0.0.0"" processorArchitecture=""*"" name=""$(PROGRAM_PREFIX)chicken-uninstall$(PROGRAM_SUFFIX)"" type=""win32""/>\r\n")
505	$(call echo, >>, $@.tmp,  "  <ms_asmv2:trustInfo xmlns:ms_asmv2=""urn:schemas-microsoft-com:asm.v2"">\r\n")
506	$(call echo, >>, $@.tmp,  "    <ms_asmv2:security>\r\n")
507	$(call echo, >>, $@.tmp,  "      <ms_asmv2:requestedPrivileges>\r\n")
508	$(call echo, >>, $@.tmp,  "        <ms_asmv2:requestedExecutionLevel level=""asInvoker"" uiAccess=""false""/>\r\n")
509	$(call echo, >>, $@.tmp,  "      </ms_asmv2:requestedPrivileges>\r\n")
510	$(call echo, >>, $@.tmp,  "    </ms_asmv2:security>\r\n")
511	$(call echo, >>, $@.tmp,  "  </ms_asmv2:trustInfo>\r\n")
512	$(call echo, >>, $@.tmp,  "</assembly>\r\n")
513	$(call echo, >>, $@.tmp,END)
514	$(call echo, >>, $@.tmp,/* END OF FILE */)
515	mv $@.tmp $@
Trap