diff options
Diffstat (limited to 'kerl')
-rwxr-xr-x | kerl | 111 |
1 files changed, 105 insertions, 6 deletions
@@ -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" |