📄 defaults.make
字号:
# defaults.make - default settings -*- Makefile -*-## Copyright (c) 2007, Felix L. Winkelmann# Copyright (c) 2008, The Chicken Team# All rights reserved.## Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following# conditions are met:## Redistributions of source code must retain the above copyright notice, this list of conditions and the following# disclaimer. # Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following# disclaimer in the documentation and/or other materials provided with the distribution. # Neither the name of the author nor the names of its contributors may be used to endorse or promote# products derived from this software without specific prior written permission. ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE# POSSIBILITY OF SUCH DAMAGE.# basic parametersBINARYVERSION = 3STACKDIRECTION ?= 1CROSS_CHICKEN ?= 0ifeq ($(ARCH),x86-64)NURSERY ?= (256*1024)elseNURSERY ?= (128*1024)endif# directoriesSRCDIR ?= ./DESTDIR ?=ifeq ($(PLATFORM),mingw-msys)PREFIX ?= c:/devtoolselseifeq ($(PLATFORM),mingw)PREFIX ?= c:\\devtoolselsePREFIX ?= /usr/localendifendifBINDIR = $(PREFIX)/binLIBDIR = $(PREFIX)/libSHAREDIR = $(PREFIX)/shareDATADIR = $(SHAREDIR)/chickenTOPMANDIR = $(SHAREDIR)/manMANDIR = $(TOPMANDIR)/man1INFODIR = $(SHAREDIR)/infoINCDIR = $(PREFIX)/includeDOCDIR = $(DATADIR)/docCHICKENLIBDIR = $(LIBDIR)/chickenEGGDIR = $(CHICKENLIBDIR)/$(BINARYVERSION)ifeq ($(PLATFORM),mingw)IBINDIR = $(PREFIX)\\binILIBDIR = $(PREFIX)\\libISHAREDIR = $(PREFIX)\\shareIDATADIR = $(ISHAREDIR)\\chickenITOPMANDIR = $(ISHAREDIR)\\manIMANDIR = $(ITOPMANDIR)\\man1IINFODIR = $(ISHAREDIR)\\infoIINCDIR = $(PREFIX)\\includeIDOCDIR = $(IDATADIR)\\docICHICKENLIBDIR = $(ILIBDIR)\\chickenIEGGDIR = $(ICHICKENLIBDIR)\\$(BINARYVERSION)elseIBINDIR = $(BINDIR)ILIBDIR = $(LIBDIR)ISHAREDIR = $(SHAREDIR)IDATADIR = $(DATADIR)ITOPMANDIR = $(TOPMANDIR)IMANDIR = $(MANDIR)IINFODIR = $(INFODIR)IINCDIR = $(INCDIR)IDOCDIR = $(DOCDIR)ICHICKENLIBDIR = $(CHICKENLIBDIR)IEGGDIR = $(EGGDIR)endif# commandsifdef HOSTSYSTEMC_COMPILER ?= $(HOSTSYSTEM)-gccCXX_COMPILER ?= $(HOSTSYSTEM)-g++LIBRARIAN ?= $(HOSTSYSTEM)-arelseC_COMPILER ?= gccCXX_COMPILER ?= g++LIBRARIAN ?= arendifLINKER ?= $(C_COMPILER)ifeq ($(PLATFORM),mingw)REMOVE_COMMAND ?= delelseREMOVE_COMMAND ?= rmendifASSEMBLER ?= $(C_COMPILER)MAKEINFO_PROGRAM ?= -makeinfoifeq ($(PLATFORM),mingw)INSTALL_PROGRAM ?= copyMAKEDIR_COMMAND ?= -mkdirelseINSTALL_PROGRAM ?= installMAKEDIR_COMMAND ?= mkdirendifPOSTINSTALL_STATIC_LIBRARY ?= truePOSTINSTALL_PROGRAM ?= trueINSTALLINFO_PROGRAM ?= -install-infoUNINSTALLINFO_PROGRAM ?= -install-info# target variablesifdef TARGETSYSTEMTARGET_C_COMPILER ?= $(TARGETSYSTEM)-$(C_COMPILER)TARGET_CXX_COMPILER ?= $(TARGETSYSTEM)-$(CXX_COMPILER)elseTARGET_C_COMPILER ?= $(C_COMPILER)TARGET_CXX_COMPILER ?= $(CXX_COMPILER)endifTARGET_C_COMPILER_OPTIONS ?= $(C_COMPILER_OPTIONS)TARGET_C_COMPILER_OPTIMIZATION_OPTIONS ?= $(C_COMPILER_OPTIMIZATION_OPTIONS)TARGET_PREFIX ?= $(PREFIX)TARGET_RUN_PREFIX ?= $(TARGET_PREFIX)TARGET_LIBRARIES ?= $(LIBRARIES)TARGET_LINKER_OPTIONS ?= $(LINKER_OPTIONS)ifneq ($(TARGET_C_COMPILER),$(C_COMPILER))CROSS_CHICKEN = 1elseCROSS_CHICKEN = 0endif# optionsifneq ($(USE_HOST_PCRE),)LIBRARIES += -lpcrePCRE_INCLUDES =C_COMPILER_PCRE_OPTIONS =PCRE_OBJECTS_1 =elseifdef WINDOWSifneq ($(HOSTSYSTEM),mingw32)PCRE_DIR ?= $(SRCDIR)pcre\\elseendifPCRE_DIR ?= $(SRCDIR)pcre/elsePCRE_DIR ?= $(SRCDIR)pcre/endifC_COMPILER_PCRE_OPTIONS = -DPCRE_STATIC -DHAVE_CONFIG_HPCRE_INCLUDES = $(INCLUDES) -I$(PCRE_DIR)endififndef NOPTABLESC_COMPILER_PTABLES_OPTIONS ?= -DC_ENABLE_PTABLESendifINCLUDES ?= -I. -I$(SRCDIR)C_COMPILER_COMPILE_OPTION ?= -cC_COMPILER_OUTPUT_OPTION ?= -oC_COMPILER_OUTPUT ?= $(C_COMPILER_OUTPUT_OPTION) $@ifdef DEBUGBUILDC_COMPILER_OPTIMIZATION_OPTIONS ?= -g -Wall -Wno-unusedendifC_COMPILER_BUILD_RUNTIME_OPTIONS ?= -DC_BUILDING_LIBCHICKENC_COMPILER_BUILD_UNSAFE_RUNTIME_OPTIONS ?= $(C_COMPILER_BUILD_RUNTIME_OPTIONS) -DNDEBUG -DC_UNSAFE_RUNTIMEC_COMPILER_SHARED_OPTIONS ?= -fPIC -DPICLINKER_EXECUTABLE_OPTIONS ?= -L.LINKER_STATIC_OPTIONS ?= $(LINKER_EXECUTABLE_OPTIONS)LINKER_OUTPUT_OPTION ?= -oLINKER_OUTPUT ?= $(LINKER_OUTPUT_OPTION) $@LINKER_LIBRARY_OPTION ?= -lifdef STATICBUILDLINKER_LIBRARY_PREFIX ?= libLINKER_LIBRARY_SUFFIX ?= .aelseLINKER_LIBRARY_PREFIX ?= -lLINKER_LIBRARY_SUFFIX ?= endifLINKER_LINK_SHARED_LIBRARY_OPTIONS ?= -sharedLIBRARIAN_OPTIONS ?= cruLIBRARIAN_OUTPUT_OPTION ?=LIBRARIAN_OUTPUT ?= $(LIBRARIAN_OUTPUT_OPTION) $@LIBRARIES ?= -lmifeq ($(PLATFORM),mingw)REMOVE_COMMAND_OPTIONS ?= /f /qREMOVE_COMMAND_RECURSIVE_OPTIONS ?= /f /s /qMAKE_WRITABLE_COMMAND ?= remelseREMOVE_COMMAND_OPTIONS ?= -fREMOVE_COMMAND_RECURSIVE_OPTIONS ?= -frMAKE_WRITABLE_COMMAND ?= chmod a+rwendifMAKEINFO_PROGRAM_OPTIONS ?= --no-split ifneq ($(PLATFORM),mingw)INSTALL_PROGRAM_SHARED_LIBRARY_OPTIONS ?= -m755INSTALL_PROGRAM_STATIC_LIBRARY_OPTIONS ?= -m644INSTALL_PROGRAM_EXECUTABLE_OPTIONS ?= -m755INSTALL_PROGRAM_FILE_OPTIONS ?= -m644MAKEDIR_COMMAND_OPTIONS ?= -pendifASSEMBLER_OPTIONS ?= $(C_COMPILER_OPTIONS)ASSEMBLER_OUTPUT_OPTION ?= -oASSEMBLER_OUTPUT ?= $(ASSEMBLER_OUTPUT_OPTION) $@ASSEMBLER_COMPILE_OPTION ?= -cifdef STATICBUILDPRIMARY_LIBCHICKEN ?= libchicken$(A)elseifeq ($(PLATFORM),cygwin)PRIMARY_LIBCHICKEN = cygchicken-0.dllLIBCHICKEN_SO_FILE = cygchicken-0.dllLIBUCHICKEN_SO_FILE = cyguchicken-0.dllLIBCHICKENGUI_SO_FILE ?= elsePRIMARY_LIBCHICKEN ?= libchicken$(SO)$(SONAME_VERSION)LIBCHICKEN_SO_FILE ?= libchicken$(SO)$(SONAME_VERSION)LIBUCHICKEN_SO_FILE ?= libuchicken$(SO)$(SONAME_VERSION)LIBCHICKENGUI_SO_FILE ?= endifendifUNINSTALLINFO_PROGRAM_OPTIONS ?= --deleteLIBCHICKEN_SO_LIBRARIES ?= $(LIBRARIES)LIBUCHICKEN_SO_LIBRARIES ?= $(LIBRARIES)LIBCHICKENGUI_SO_LIBRARIES ?= $(LIBRARIES)# other settingsHOSTNAME ?= $(shell hostname)ifeq ($(PLATFORM),mingw)BUILD_TIME ?= $(shell date /t)UNAME_SYS ?= MinGWelseBUILD_TIME ?= $(shell date +%Y-%m-%d)UNAME_SYS ?= $(shell uname)endifBUILD_TAG ?= compiled $(BUILD_TIME) on $(HOSTNAME) ($(UNAME_SYS))ifdef LOCKTOSPACEC_COMPILER_BUILD_RUNTIME_OPTIONS += -DC_LOCK_TOSPACEendif# file extensionsO ?= .oA ?= .a# EXE ?=SO ?= .soASM ?= .s# special filesPOSIXFILE ?= posixunixCHICKEN_CONFIG_H = chicken-config.hifneq ($(ARCH),)HACKED_APPLY ?= 1APPLY_HACK_SRC ?= apply-hack.$(ARCH)$(ASM)APPLY_HACK_OBJECT ?= apply-hack.$(ARCH)$(O)endif# bootstrapping compilerCHICKEN = chicken$(EXE)# Scheme compiler flagsCHICKEN_OPTIONS = \ -quiet -no-trace -optimize-level 2 \ -include-path . -include-path $(SRCDIR)CHICKEN_LIBRARY_OPTIONS = $(CHICKEN_OPTIONS) -explicit-useCHICKEN_PROGRAM_OPTIONS = $(CHICKEN_OPTIONS) -no-lambda-infoCHICKEN_COMPILER_OPTIONS = $(CHICKEN_PROGRAM_OPTIONS) -extend private-namespace.scmCHICKEN_UNSAFE_OPTIONS = -unsafe -no-lambda-infoifneq ($(USE_HOST_PCRE),)CHICKEN_PCRE_LIBRARY_OPTIONS = elseCHICKEN_PCRE_LIBRARY_OPTIONS = -include-path $(SRCDIR)pcreendif# targetsCHICKEN_PROGRAM = $(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)CSC_PROGRAM = $(PROGRAM_PREFIX)csc$(PROGRAM_SUFFIX)CSI_PROGRAM = $(PROGRAM_PREFIX)csi$(PROGRAM_SUFFIX)CHICKEN_PROFILE_PROGRAM = $(PROGRAM_PREFIX)chicken-profile$(PROGRAM_SUFFIX)CHICKEN_SETUP_PROGRAM = $(PROGRAM_PREFIX)chicken-setup$(PROGRAM_SUFFIX)CHICKEN_BUG_PROGRAM = $(PROGRAM_PREFIX)chicken-bug$(PROGRAM_SUFFIX)ifdef STATICBUILDCHICKEN_STATIC_EXECUTABLE = $(CHICKEN_PROGRAM)$(EXE)CSI_STATIC_EXECUTABLE = $(CSI_PROGRAM)$(EXE)CHICKEN_SHARED_EXECUTABLE = $(CHICKEN_PROGRAM)-shared$(EXE)CSI_SHARED_EXECUTABLE = $(CSI_PROGRAM)-shared$(EXE)TARGETLIBS ?= libchicken$(A) libuchicken$(A)TARGETS ?= $(TARGETLIBS) $(CHICKEN_STATIC_EXECUTABLE) \ $(CSI_STATIC_EXECUTABLE) $(CHICKEN_PROFILE_PROGRAM)$(EXE) \ $(CSC_PROGRAM)$(EXE) \ chicken.info $(CHICKEN_BUG_PROGRAM)$(EXE)elseCHICKEN_STATIC_EXECUTABLE = $(CHICKEN_PROGRAM)-static$(EXE)CSI_STATIC_EXECUTABLE = $(CSI_PROGRAM)-static$(EXE)CHICKEN_SHARED_EXECUTABLE = $(CHICKEN_PROGRAM)$(EXE)CSI_SHARED_EXECUTABLE = $(CSI_PROGRAM)$(EXE)TARGETLIBS ?= libchicken$(A) libuchicken$(A) \ $(LIBCHICKEN_SO_FILE) $(LIBUCHICKEN_SO_FILE)TARGETS ?= $(TARGETLIBS) $(CHICKEN_SHARED_EXECUTABLE) \ $(CSI_SHARED_EXECUTABLE) $(CHICKEN_PROFILE_PROGRAM)$(EXE) \ $(CSC_PROGRAM)$(EXE) $(CHICKEN_SETUP_PROGRAM)$(EXE) chicken.info \ $(CHICKEN_BUG_PROGRAM)$(EXE)endif# main rule.PHONY: allifdef NO_UNIX_SHELLall: $(TARGETS)elseall: buildsvnrevision $(TARGETS)endifbuildsvnrevision: sh $(SRCDIR)/svnrevision.shifeq ($(USE_HOST_PCRE),) $(MAKEDIR_COMMAND) $(MAKEDIR_COMMAND_OPTIONS) pcreendif# generic part of chicken-config.hifndef CUSTOM_CHICKEN_DEFAULTSchicken-defaults.h: buildsvnrevision echo "/* generated */" >$@ echo "#define C_BUILD_TAG \"$(BUILD_TAG)\"" >>$@ echo "#define C_SVN_REVISION $(shell cat buildsvnrevision)" >>$@ echo "#ifndef C_INSTALL_CC" >>$@ echo "# define C_INSTALL_CC \"$(C_COMPILER)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_INSTALL_CXX" >>$@ echo "# define C_INSTALL_CXX \"$(CXX_COMPILER)\"" >>$@ echo "#endif" >>$@ 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 \"$(IDATADIR)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_INSTALL_BIN_HOME" >>$@ echo "# define C_INSTALL_BIN_HOME \"$(IBINDIR)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_INSTALL_EGG_HOME" >>$@ echo "# define C_INSTALL_EGG_HOME \"$(IEGGDIR)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_INSTALL_LIB_HOME" >>$@ echo "# define C_INSTALL_LIB_HOME \"$(ILIBDIR)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_INSTALL_STATIC_LIB_HOME" >>$@ echo "# define C_INSTALL_STATIC_LIB_HOME \"$(ILIBDIR)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_INSTALL_INCLUDE_HOME" >>$@ echo "# define C_INSTALL_INCLUDE_HOME \"$(IINCDIR)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_INSTALL_MORE_LIBS" >>$@ echo "# define C_INSTALL_MORE_LIBS \"$(LIBRARIES)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_INSTALL_MORE_STATIC_LIBS" >>$@ echo "# define C_INSTALL_MORE_STATIC_LIBS \"$(LIBRARIES)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_DEFAULT_TARGET_STACK_SIZE" >>$@ echo "# define C_DEFAULT_TARGET_STACK_SIZE $(NURSERY)" >>$@ echo "#endif" >>$@ echo "#ifndef C_STACK_GROWS_DOWNWARD" >>$@ echo "# define C_STACK_GROWS_DOWNWARD $(STACKDIRECTION)" >>$@ echo "#endif" >>$@ echo "#ifndef C_TARGET_MORE_LIBS" >>$@ echo "# define C_TARGET_MORE_LIBS \"$(TARGET_LIBRARIES)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_TARGET_MORE_STATIC_LIBS" >>$@ echo "# define C_TARGET_MORE_STATIC_LIBS \"$(TARGET_LIBRARIES)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_TARGET_CC" >>$@ echo "# define C_TARGET_CC \"$(TARGET_C_COMPILER)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_TARGET_CXX" >>$@ echo "# define C_TARGET_CXX \"$(TARGET_CXX_COMPILER)\"" >>$@ echo "#endif" >>$@ 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" >>$@ifdef WINDOWS echo "#ifndef C_TARGET_LIB_HOME" >>$@ echo "# define C_TARGET_LIB_HOME \"$(TARGET_PREFIX)\\lib\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_TARGET_RUN_LIB_HOME" >>$@ echo "# define C_TARGET_RUN_LIB_HOME \"$(TARGET_RUN_PREFIX)\\lib\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_TARGET_SHARE_HOME" >>$@ echo "# define C_TARGET_SHARE_HOME \"$(TARGET_PREFIX)\\share\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_TARGET_INCLUDE_HOME" >>$@ echo "# define C_TARGET_INCLUDE_HOME \"$(TARGET_PREFIX)\\include\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_TARGET_STATIC_LIB_HOME" >>$@ echo "# define C_TARGET_STATIC_LIB_HOME \"$(TARGET_PREFIX)\\lib\"" >>$@ echo "#endif" >>$@else echo "#ifndef C_TARGET_LIB_HOME" >>$@ echo "# define C_TARGET_LIB_HOME \"$(TARGET_PREFIX)/lib\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_TARGET_RUN_LIB_HOME" >>$@ echo "# define C_TARGET_RUN_LIB_HOME \"$(TARGET_RUN_PREFIX)/lib\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_TARGET_SHARE_HOME" >>$@ echo "# define C_TARGET_SHARE_HOME \"$(TARGET_PREFIX)/share\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_TARGET_INCLUDE_HOME" >>$@ echo "# define C_TARGET_INCLUDE_HOME \"$(TARGET_PREFIX)/include\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_TARGET_STATIC_LIB_HOME" >>$@ echo "# define C_TARGET_STATIC_LIB_HOME \"$(TARGET_PREFIX)/lib\"" >>$@ echo "#endif" >>$@endif echo "#ifndef C_CHICKEN_PROGRAM" >>$@ echo "# define C_CHICKEN_PROGRAM \"$(CHICKEN_PROGRAM)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_CSC_PROGRAM" >>$@ echo "# define C_CSC_PROGRAM \"$(CSC_PROGRAM)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_CSI_PROGRAM" >>$@ echo "# define C_CSI_PROGRAM \"$(CSI_PROGRAM)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_CHICKEN_PROFILE_PROGRAM" >>$@ echo "# define C_CHICKEN_PROFILE_PROGRAM \"$(CHICKEN_PROFILE_PROGRAM)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_CHICKEN_SETUP_PROGRAM" >>$@ echo "# define C_CHICKEN_SETUP_PROGRAM \"$(CHICKEN_SETUP_PROGRAM)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_CHICKEN_BUG_PROGRAM" >>$@ echo "# define C_CHICKEN_BUG_PROGRAM \"$(CHICKEN_BUG_PROGRAM)\"" >>$@ echo "#endif" >>$@ echo "#ifndef C_BINARY_VERSION" >>$@ echo "# define C_BINARY_VERSION $(BINARYVERSION)" >>$@ echo "#endif" >>$@endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -