Mercurial > pub > dyncall > dyncall
view configure.rc @ 27:523c45dfa8fb
- refactored arm calling conventions' callvm code, so that the code that keeps
the caller from overwriting the return value on some platforms also works on
OpenBSD (before we casted the function pointer to have long long as return
type, to hint the caller that there is one, but that triggers an intentional
SIGABRT on OpenBSD for security reasons; now the decl reflects this, directly)
author | cslag |
---|---|
date | Tue, 15 Sep 2015 12:48:52 +0200 |
parents | 3e629dc19168 |
children | ed19b429a152 |
line wrap: on
line source
#!/bin/rc #////////////////////////////////////////////////////////////////////////////// # # Copyright (c) 2007-2010 Daniel Adler <dadler@uni-goettingen.de>, # Tassilo Philipp <tphilipp@potion-studios.com> # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # #////////////////////////////////////////////////////////////////////////////// # --- configure settings ------------------------------------------------------ PACKAGE=dyncall CONFIG_PREFIX=/usr/local #@@@ # --- output error message ---------------------------------------------------- fn error { echo error: $* exit 1 } # --- output warning message -------------------------------------------------- fn warning { echo warning: $* } # --- output info message ----------------------------------------------------- fn info { echo $* } # --- print usage ------------------------------------------------------------- fn usage { echo $PACKAGE' configuration shell-script' echo 'Usage:' echo ' configure [ options ]' echo echo 'Options:' echo ' --help' echo ' -h print this page' #echo #echo ' --target-x86 build for x86 architecture platform' #echo ' --target-x64 build for x64 architecture platform' #echo ' --target-ppc32 build for ppc32 architecture platform' #echo ' --target-arm-arm build for ARM architecture platform (ARM mode)' #echo ' --target-arm-thumb build for ARM architecture platform (THUMB mode)' #echo #echo ' --tool-pcc use Portable C Compiler' #echo #echo ' --asm-xa use Plan9 Assemblers (0a, 1a, 2a, etc.)' #echo #echo ' --config-release build release version (default)' #echo ' --config-debug build debug version' echo exit 0 } # --- guess operating system ------------------------------------------------- CONFIG_OS=() fn guess_os { CONFIG_OS='plan9' info 'guess os '$CONFIG_OS } # --- guess architecture ----------------------------------------------------- CONFIG_ARCH=() fn guess_arch { CONFIG_ARCH='x86' switch($cputype) { case 386 CONFIG_ARCH='x86' case amd64 CONFIG_ARCH='x64' case arm CONFIG_ARCH='arm32_arm' case power CONFIG_ARCH='ppc32' case mips CONFIG_ARCH='mips32' case * warning 'unknown architecture '$cputype' - using default (x86)' } info 'guess arch '$CONFIG_ARCH } # --- guess tool chain ------------------------------------------------------- CONFIG_TOOL=() fn guess_tool { #CONFIG_TOOL=`{grep CC /$objtype/mkfile | sed s/CC.//} CONFIG_TOOL='pcc' info 'guess tool '$CONFIG_TOOL } # --- guess assembler -------------------------------------------------------- CONFIG_ASM=() fn guess_asm { CONFIG_ASM=`{grep AS /$objtype/mkfile | sed s/AS.//} info 'guess assembler '$CONFIG_ASM } # --- process arguments ------------------------------------------------------ fn args { while(! ~ $#* 0 && ~ $1 -*) { OPT=$1 shift switch($OPT) { case --help -h usage #case --target-x86 #CONFIG_ARCH='x86' #case --target-x64 #CONFIG_ARCH='x64' #case --target-ppc32 #CONFIG_ARCH='ppc32' #case --target-arm-arm #CONFIG_ARCH='arm32_arm' #case --target-arm-thumb #CONFIG_ARCH='arm32_thumb' #case --tool-pcc #CONFIG_TOOL=pcc #CONFIG_ASM=2a #case --tool-xa #CONFIG_ASM=2a #case --config-release #CONFIG_CONFIG=release #case --config-debug #CONFIG_CONFIG=debug case * warning 'unknown option '$OPT } } } # --- guess variables -------------------------------------------------------- fn guess { if(~ $#CONFIG_OS 0) { guess_os if(~ $#CONFIG_OS 0) { error 'unsupported operating system '$OS } } if(~ $#CONFIG_ARCH 0) { guess_arch if(~ $#CONFIG_ARCH 0) { error 'unsupported architecture '$ARCH } } if(~ $#CONFIG_TOOL 0) { guess_tool if(~ $#CONFIG_TOOL 0) { error 'no tool' } } if(~ $#CONFIG_ASM 0) { guess_asm if(~ $#CONFIG_ASM 0) { error 'no assembler tool' } } if(~ $#CONFIG_CONFIG 0) { CONFIG_CONFIG=release } } # --- set default variables -------------------------------------------------- fn set_defaults { CONFIG_HOST=$CONFIG_OS } # --- derive variables ------------------------------------------------------- fn derive_vars { BUILD_HOST=$CONFIG_HOST if(! ~ $CONFIG_HOST $CONFIG_OS) { BUILD_HOST=$CONFIG_HOST'_'$CONFIG_OS } } # --- write ConfigVars files ------------------------------------------------ fn output { echo '#auto-generated by '$PACKAGE'/configure' >$1 echo 'CONFIG_PACKAGE='$PACKAGE >>$1 echo 'CONFIG_HOST='$CONFIG_HOST >>$1 echo 'CONFIG_OS='$CONFIG_OS >>$1 echo 'CONFIG_ARCH='$CONFIG_ARCH >>$1 echo 'CONFIG_TOOL='$CONFIG_TOOL >>$1 echo 'CONFIG_ASM='$CONFIG_ASM >>$1 echo 'CONFIG_CONFIG='$CONFIG_CONFIG >>$1 echo 'CONFIG_PREFIX='$CONFIG_PREFIX >>$1 if(! ~ $#CONFIG_BUILDPREFIX 0) { echo 'CONFIG_BUILDPREFIX='$CONFIG_BUILDPREFIX >>$1 } echo '' >>$1 } # --- main ------------------------------------------------------------------- fn main { args $* info '* configure package '$PACKAGE guess set_defaults derive_vars output ConfigVars } main $*