aboutsummaryrefslogtreecommitdiffstats
path: root/kerl
diff options
context:
space:
mode:
Diffstat (limited to 'kerl')
-rwxr-xr-xkerl111
1 files changed, 105 insertions, 6 deletions
diff --git a/kerl b/kerl
index 034c341..2c3e4d2 100755
--- a/kerl
+++ b/kerl
@@ -24,7 +24,7 @@
unset ERL_TOP
-KERL_VERSION="1.5.1"
+KERL_VERSION="1.6.0"
#Grep fix for mac pcre errors
GREP_OPTIONS=''
@@ -500,9 +500,15 @@ maybe_patch_all()
maybe_patch_darwin()
{
+ # Reminder: $1 = OTP release version
if [ "$1" -le 14 ]; then
CFLAGS="-DERTS_DO_INCL_GLB_INLINE_FUNC_DEF"
apply_darwin_compiler_patch >> "$LOGFILE"
+ elif [ "$1" -eq 16 ]; then
+ # TODO: Maybe check if clang version == 9
+ apply_r16_wx_ptr_patch >> "$LOGFILE"
+ elif [ "$1" -ge 17 -a "$1" -le 19 ]; then
+ apply_wx_ptr_patch >> "$LOGFILE"
fi
}
@@ -538,6 +544,42 @@ do_normal_build()
list_add builds "$1,$2"
}
+_flags()
+{
+
+ # We need to munge the LD and DED flags for clang 9 shipped with
+ # High Sierra (macOS 10.13)
+ case "$KERL_SYSTEM" in
+ Darwin)
+ osver=$(uname -r)
+ case "$osver" in
+ 17*)
+ # Make sure we don't overwrite values that someone who
+ # knows better than us set.
+ if [ -z "$DED_LD" ]; then
+ DED_LD="clang"
+ fi
+ if [ -z "$CC" ]; then
+ CC="clang"
+ fi
+ if [ -z "$DED_LDFLAGS" ]; then
+ host=$(./erts/autoconf/config.guess)
+ DED_LDFLAGS="-m64 -bundle -bundle_loader ${ERL_TOP}/bin/$host/beam.smp"
+ fi
+ CFLAGS="$CFLAGS" DED_LD="$DED_LD" CC="$CC" DED_LDFLAGS="$DED_LDFLAGS" $@
+ ;;
+ *)
+ CFLAGS="$CFLAGS" $@
+ ;;
+ esac
+ ;;
+ *)
+ CFLAGS="$CFLAGS" $@
+ ;;
+ esac
+
+}
+
_do_build()
{
case "$KERL_SYSTEM" in
@@ -554,7 +596,7 @@ _do_build()
fi
case "$OSVERSION" in
- 16*|15*)
+ 17*|16*|15*)
echo -n $KERL_CONFIGURE_OPTIONS | grep "ssl" 1>/dev/null 2>&1
# Reminder to self: 0 from grep means the string was detected
if [ $? -ne 0 ]; then
@@ -622,15 +664,15 @@ _do_build()
fi
if [ -n "$KERL_USE_AUTOCONF" ]; then
./otp_build autoconf $KERL_CONFIGURE_OPTIONS >> "$LOGFILE" 2>&1 && \
- CFLAGS="$CFLAGS" ./otp_build configure $KERL_CONFIGURE_OPTIONS >> "$LOGFILE" 2>&1
+ _flags ./otp_build configure $KERL_CONFIGURE_OPTIONS >> "$LOGFILE" 2>&1
else
- CFLAGS="$CFLAGS" ./otp_build configure $KERL_CONFIGURE_OPTIONS >> "$LOGFILE" 2>&1
+ _flags ./otp_build configure $KERL_CONFIGURE_OPTIONS >> "$LOGFILE" 2>&1
fi
echo -n $KERL_CONFIGURE_OPTIONS | grep "--enable-native-libs" 1>/dev/null 2>&1
if [ $? -ne 0 ]; then
make clean >> "$LOGFILE" 2>&1
- CFLAGS="$CFLAGS" ./otp_build configure $KERL_CONFIGURE_OPTIONS >> "$LOGFILE" 2>&1
+ _flags ./otp_build configure $KERL_CONFIGURE_OPTIONS >> "$LOGFILE" 2>&1
fi
if [ $? -ne 0 ]; then
show_logfile "Configure failed." "$LOGFILE"
@@ -665,7 +707,7 @@ _do_build()
done
fi
- CFLAGS="$CFLAGS" ./otp_build boot -a $KERL_CONFIGURE_OPTIONS >> "$LOGFILE" 2>&1
+ _flags ./otp_build boot -a $KERL_CONFIGURE_OPTIONS >> "$LOGFILE" 2>&1
if [ $? -ne 0 ]; then
show_logfile "Build failed." "$LOGFILE"
list_remove builds "$1 $2"
@@ -1493,6 +1535,63 @@ apply_r15_beam_makeops_patch()
_END_PATCH
}
+#https://github.com/erlang/otp/commit/a64c4d806fa54848c35632114585ad82b98712e8.diff
+apply_wx_ptr_patch()
+{
+ patch -p1 <<'_END_PATCH'
+diff --git a/lib/wx/c_src/wxe_impl.cpp b/lib/wx/c_src/wxe_impl.cpp
+index 0d2da5d4a79..8118136d30e 100644
+--- a/lib/wx/c_src/wxe_impl.cpp
++++ b/lib/wx/c_src/wxe_impl.cpp
+@@ -666,7 +666,7 @@ void * WxeApp::getPtr(char * bp, wxeMemEnv *memenv) {
+ throw wxe_badarg(index);
+ }
+ void * temp = memenv->ref2ptr[index];
+- if((index < memenv->next) && ((index == 0) || (temp > NULL)))
++ if((index < memenv->next) && ((index == 0) || (temp != (void *)NULL)))
+ return temp;
+ else {
+ throw wxe_badarg(index);
+@@ -678,7 +678,7 @@ void WxeApp::registerPid(char * bp, ErlDrvTermData pid, wxeMemEnv * memenv) {
+ if(!memenv)
+ throw wxe_badarg(index);
+ void * temp = memenv->ref2ptr[index];
+- if((index < memenv->next) && ((index == 0) || (temp > NULL))) {
++ if((index < memenv->next) && ((index == 0) || (temp != (void *) NULL))) {
+ ptrMap::iterator it;
+ it = ptr2ref.find(temp);
+ if(it != ptr2ref.end()) {
+_END_PATCH
+}
+
+apply_r16_wx_ptr_patch()
+{
+ patch -p1 <<'_END_PATCH'
+diff --git a/lib/wx/c_src/wxe_impl.cpp b/lib/wx/c_src/wxe_impl.cpp
+index cc9bcc995..1b1912630 100644
+--- a/lib/wx/c_src/wxe_impl.cpp
++++ b/lib/wx/c_src/wxe_impl.cpp
+@@ -757,7 +757,7 @@ void * WxeApp::getPtr(char * bp, wxeMemEnv *memenv) {
+ throw wxe_badarg(index);
+ }
+ void * temp = memenv->ref2ptr[index];
+- if((index < memenv->next) && ((index == 0) || (temp > NULL)))
++ if((index < memenv->next) && ((index == 0) || (temp != (void *)NULL)))
+ return temp;
+ else {
+ throw wxe_badarg(index);
+@@ -769,7 +769,7 @@ void WxeApp::registerPid(char * bp, ErlDrvTermData pid, wxeMemEnv * memenv) {
+ if(!memenv)
+ throw wxe_badarg(index);
+ void * temp = memenv->ref2ptr[index];
+- if((index < memenv->next) && ((index == 0) || (temp > NULL))) {
++ if((index < memenv->next) && ((index == 0) || (temp != (void *)NULL))) {
+ ptrMap::iterator it;
+ it = ptr2ref.find(temp);
+ if(it != ptr2ref.end()) {
+_END_PATCH
+}
+
case "$1" in
version)
echo "$KERL_VERSION"