~ chicken-core (chicken-5) /egg-environment.scm
Trap1;;; environment settings for egg compilation2;3; Copyright (c) 2017-2022, The CHICKEN Team4; All rights reserved.5;6; Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following7; conditions are met:8;9; Redistributions of source code must retain the above copyright notice, this list of conditions and the following10; disclaimer.11; Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following12; disclaimer in the documentation and/or other materials provided with the distribution.13; Neither the name of the author nor the names of its contributors may be used to endorse or promote14; products derived from this software without specific prior written permission.15;16; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS17; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY18; AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR19; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR20; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR21; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY22; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR23; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE24; POSSIBILITY OF SUCH DAMAGE.252627(foreign-declare #<<EOF28#ifndef STATICBUILD29# define STATIC_CHICKEN 030#else31# define STATIC_CHICKEN 132#endif33#ifndef DEBUGBUILD34# define DEBUG_CHICKEN 035#else36# define DEBUG_CHICKEN 137#endif38EOF39)4041(define staticbuild (foreign-value "STATIC_CHICKEN" bool))42(define debugbuild (foreign-value "DEBUG_CHICKEN" bool))43(define cross-chicken (feature? #:cross-chicken))44(define binary-version (foreign-value "C_BINARY_VERSION" int))45(define major-version (foreign-value "C_MAJOR_VERSION" int))46(define chicken-install-program (foreign-value "C_CHICKEN_INSTALL_PROGRAM" c-string))4748(define default-cc (foreign-value "C_TARGET_CC" c-string))49(define default-cxx (foreign-value "C_TARGET_CXX" c-string))50(define default-install-program (foreign-value "C_TARGET_INSTALL_PROGRAM" c-string))51(define default-cflags (foreign-value "C_TARGET_CFLAGS" c-string))52(define default-ldflags (foreign-value "C_TARGET_LDFLAGS" c-string))53(define default-install-program-executable-flags (foreign-value "C_TARGET_INSTALL_PROGRAM_EXECUTABLE_OPTIONS" c-string))54(define default-install-program-data-flags (foreign-value "C_TARGET_INSTALL_PROGRAM_FILE_OPTIONS" c-string))55(define default-libs (foreign-value "C_TARGET_MORE_LIBS" c-string))56(define default-libdir (foreign-value "C_TARGET_LIB_HOME" c-string))57(define default-runlibdir (foreign-value "C_TARGET_RUN_LIB_HOME" c-string))58(define default-slibdir (foreign-value "C_TARGET_STATIC_LIB_HOME" c-string))59(define default-incdir (foreign-value "C_TARGET_INCLUDE_HOME" c-string))60(define default-bindir (foreign-value "C_TARGET_BIN_HOME" c-string))61(define default-sharedir (foreign-value "C_TARGET_SHARE_HOME" c-string))6263(define default-platform64 (if (eq? (software-type) 'windows)65 (foreign-value "C_WINDOWS_SHELL" bool)66 'unix))6768(define default-prefix (foreign-value "C_INSTALL_PREFIX" c-string))69(define default-bindir (foreign-value "C_INSTALL_BIN_HOME" c-string))7071(define default-csc72 (string-append default-bindir "/" (foreign-value "C_CSC_PROGRAM" c-string)))7374(define default-csi75 (string-append default-bindir "/" (foreign-value "C_CSI_PROGRAM" c-string)))7677(define default-builder78 (make-pathname default-bindir (foreign-value "C_CHICKEN_DO_PROGRAM" c-string)))7980(define target-librarian (foreign-value "C_TARGET_LIBRARIAN" c-string))81(define target-librarian-options (foreign-value "C_TARGET_LIBRARIAN_FLAGS" c-string))8283(define host-prefix (foreign-value "C_INSTALL_PREFIX" c-string))84(define host-repo (foreign-value "C_INSTALL_EGG_HOME" c-string))85(define host-libdir (foreign-value "C_INSTALL_LIB_HOME" c-string))86(define host-bindir (foreign-value "C_INSTALL_BIN_HOME" c-string))87(define host-incdir (foreign-value "C_INSTALL_INCLUDE_HOME" c-string))88(define host-sharedir (foreign-value "C_INSTALL_SHARE_HOME" c-string))89(define host-libs (foreign-value "C_INSTALL_MORE_LIBS" c-string))90(define host-cflags (foreign-value "C_INSTALL_CFLAGS" c-string))91(define host-ldflags (foreign-value "C_INSTALL_LDFLAGS" c-string))92(define host-cc (foreign-value "C_INSTALL_CC" c-string))93(define host-cxx (foreign-value "C_INSTALL_CXX" c-string))9495(define target-repo96 (string-append default-libdir "/chicken/" (number->string binary-version)))9798(define target-run-repo99 (string-append default-runlibdir "/chicken/" (number->string binary-version)))100101(define +egg-info-extension+ "egg-info")102(define +egg-extension+ "egg")103104(define (validate-environment)105 (let ((var1 (get-environment-variable "CHICKEN_INSTALL_REPOSITORY"))106 (var2 (get-environment-variable "CHICKEN_INSTALL_PREFIX")))107 (unless (or (not var1) (absolute-pathname? var1))108 (error "CHICKEN_INSTALL_REPOSITORY must be an absolute pathname" var1))109 (unless (or (not var2) (absolute-pathname? var2))110 (error "CHICKEN_INSTALL_PREFIX must be an absolute pathname" var2))))111112(define (destination-repository mode #!optional run)113 (if (eq? 'target mode)114 (if run target-run-repo target-repo)115 (or (get-environment-variable "CHICKEN_INSTALL_REPOSITORY")116 host-repo)))117118(define (probe-dir dir)119 (and dir (directory-exists? dir) dir))120121(define cache-directory122 (or (get-environment-variable "CHICKEN_EGG_CACHE")123 (make-pathname (or (system-cache-directory)124 (current-directory))125 chicken-install-program)))126127(define cache-metadata-directory128 ;; Directory where the VERSION, TIMESTAMP and STATUS files are129 ;; stored (under their corresponding egg directory).130 (make-pathname cache-directory ".cache-metadata"))131132(define +version-file+ "VERSION")133(define +timestamp-file+ "TIMESTAMP")134(define +status-file+ "STATUS")