Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

executable file 148 lines (129 sloc) 4.664 kB
#!/bin/sh
#
# %CopyrightBegin%
#
# Copyright Ericsson AB 2010. All Rights Reserved.
#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
#
# %CopyrightEnd%
#
# Author: Rickard Green
#
target=
build_otp=
erl_top=
force=no
while [ $# -gt 0 ]; do
case "$1" in
-target)
shift
test $# -gt 0 || { echo "$0: Missing target" 1>&2; exit 1; }
target="$1";;
-otp)
shift
test $# -gt 0 || { echo "$0: Missing otp release" 1>&2; exit 1; }
build_otp="$1";;
-erl_top)
shift
test $# -gt 0 || { echo "$0: Missing erl top" 1>&2; exit 1; }
erl_top="$1";;
-force)
shift
test $# -gt 0 || { echo "$0: Missing force value" 1>&2; exit 1; }
force=$1;;
*)
echo "$0: Bad argument: $1" 1>&2
exit 1;;
esac
shift
done
test "X$target" != "X" || { echo "$0: Missing target" 1>&2; exit 1; }
test "X$build_otp" != "X" || { echo "$0: Missing otp release" 1>&2; exit 1; }
test "X$erl_top" != "X" || { echo "$0: Missing erl top" 1>&2; exit 1; }
test "X$force" != "X" || { echo "$0: Missing force value" 1>&2; exit 1; }
cd $erl_top
cat > cross_check_erl.erl <<\EOF
%
% Copyright Ericsson AB 2010. All Rights Reserved.
%
% The contents of this file are subject to the Erlang Public License,
% Version 1.1, (the "License"); you may not use this file except in
% compliance with the License. You should have received a copy of the
% Erlang Public License along with this software. If not, it can be
% retrieved online at http://www.erlang.org/.
%
% Software distributed under the License is distributed on an "AS IS"
% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
% the License for the specific language governing rights and limitations
% under the License.
%
-module(cross_check_erl).
-export([start/0]).
start() ->
OTP = case catch erlang:system_info(otp_release) of
{'EXIT', _} -> "OTP";
Rel -> "OTP-" ++ Rel
end,
io:format("~s~n", [OTP]),
init:stop().
EOF
erlc cross_check_erl.erl 2>/dev/null \
&& used_otp=`erl -noshell -noinput -pa . -run cross_check_erl 2>/dev/null`
res=$?
rm -f cross_check_erl.erl cross_check_erl.beam
test $res -eq 0 || {
cat 1>&2 <<EOF
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* ERROR: No usable Erlang/OTP system for the build machine found! Cannot
* cross compile without such a system.
*
* Either build a bootstrap system for the build machine, or provide
* an Erlang/$build_otp system in the \$PATH, and try again. For more
* information on cross compiling Erlang/$build_otp, see the
* \$ERL_TOP/xcomp/README file.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
EOF
exit 1
}
test "X$build_otp" = "X$used_otp" || {
test $force = yes || {
cat 1>&2 <<EOF
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* ERROR: Trying to cross compile an Erlang/$build_otp system with a different
* Erlang/$used_otp system. When cross compiling you should compile
* with an Erlang/OTP system of the same release. It is possible,
* however not recomended, to force the cross compilation even though
* the wrong Erlang/OTP system is used. For more information on this,
* and cross compiling Erlang/$build_otp in general, see the
* \$ERL_TOP/xcomp/README file.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
EOF
exit 1
}
cat <<EOF
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* WARNING: Cross compiling an Erlang/$build_otp system with a different
* Erlang/$used_otp system. When cross compiling you should compile
* with an Erlang/OTP system of the same release. This build might
* fail, or silently produce suboptimal code. For more information on
* cross compiling Erlang/$build_otp, see the \$ERL_TOP/xcomp/README
* file.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
EOF
}
cat <<EOF
*
* Cross compiling Erlang/$build_otp for: $target
*
EOF
exit 0
Jump to Line
Something went wrong with that request. Please try again.