aboutsummaryrefslogtreecommitdiffstats
path: root/lib/wx
diff options
context:
space:
mode:
authorDan Gudmundsson <[email protected]>2019-06-26 10:26:45 +0200
committerDan Gudmundsson <[email protected]>2019-06-26 10:26:45 +0200
commitbf9e4be9ef971da7d7325424dde50d9bc6b186aa (patch)
treeea7c784a8606beb5a6ed9145b74803b6fdfc4e3a /lib/wx
parenta92672118b5b80fc7f6d902bf064c6efae2754dc (diff)
parenta6a9a16dbf1ad5eb49b4f72a8073def5e0566485 (diff)
downloadotp-bf9e4be9ef971da7d7325424dde50d9bc6b186aa.tar.gz
otp-bf9e4be9ef971da7d7325424dde50d9bc6b186aa.tar.bz2
otp-bf9e4be9ef971da7d7325424dde50d9bc6b186aa.zip
Merge branch 'dgud/wx-configure-fixes' into maint
* dgud/wx-configure-fixes: Speed up compilation Cleanup configure Fail if no C++ compiler is avaiable
Diffstat (limited to 'lib/wx')
-rw-r--r--lib/wx/c_src/Makefile.in15
-rw-r--r--lib/wx/configure.in158
2 files changed, 72 insertions, 101 deletions
diff --git a/lib/wx/c_src/Makefile.in b/lib/wx/c_src/Makefile.in
index 8ec64bea7e..daadf5e785 100644
--- a/lib/wx/c_src/Makefile.in
+++ b/lib/wx/c_src/Makefile.in
@@ -70,7 +70,7 @@ else
RC_FILE =
endif
-WX_OBJECTS = $(GENERAL_O) $(GENERATED_O) $(RC_FILE)
+WX_OBJECTS = $(GENERATED_O) $(GENERAL_O) $(RC_FILE)
OBJECTS = $(WX_OBJECTS) $(GL_OBJECTS)
@@ -86,7 +86,7 @@ LD = $(CXX)
LDFLAGS = @LDFLAGS@
RESCOMP = @WX_RESCOMP@
-ifeq (@WX_HAVE_STATIC_LIBS@,true)
+ifeq (@WX_HAVE_STATIC_LIBS@,true)
OPT_WX_LIBS = @WX_LIBS_STATIC@
DEBUG_WX_LIBS = @DEBUG_WX_LIBS_STATIC@
else
@@ -97,14 +97,16 @@ endif
ifeq ($(TYPE),debug)
WX_CFLAGS = @DEBUG_WX_CFLAGS@
CFLAGS = @DEBUG_CFLAGS@
-WX_CXX_FLAGS = @DEBUG_WX_CXXFLAGS@
+WX_CXX_FLAGS = @DEBUG_WX_CXXFLAGS@
CXX_FLAGS = @DEBUG_CXXFLAGS@
+CXX_NO_OPT_FLAGS = @DEBUG_CXXFLAGS@
WX_LIBS = $(DEBUG_WX_LIBS)
else
WX_CFLAGS = @WX_CFLAGS@
CFLAGS = @CFLAGS@
-WX_CXX_FLAGS = @WX_CXXFLAGS@
+WX_CXX_FLAGS = @WX_CXXFLAGS@
CXX_FLAGS = @CXXFLAGS@
+CXX_NO_OPT_FLAGS = @CXXNOOPTFLAGS@
WX_LIBS = $(OPT_WX_LIBS)
endif
@@ -113,6 +115,7 @@ GL_LIBS = @GL_LIBS@
CC_O = $(V_CC) -c $(CFLAGS) $(WX_CFLAGS) $(COMMON_CFLAGS)
OBJC_CC_O = $(OBJC_CC) -c $(CFLAGS) $(OBJC_CFLAGS) $(WX_CFLAGS) $(COMMON_CFLAGS)
CXX_O = $(V_CXX) -c $(CXX_FLAGS) $(WX_CXX_FLAGS) $(COMMON_CFLAGS)
+CXX_O_NO_OPT = $(V_CXX) -c $(CXX_NO_OPT_FLAGS) $(WX_CXX_FLAGS) $(COMMON_CFLAGS)
# Targets
@@ -152,6 +155,10 @@ $(SYS_TYPE)/wxe_ps_init.o: wxe_ps_init.c
$(V_at)mkdir -p $(SYS_TYPE)
$(cc_verbose)$(OBJC_CC_O) $< -o $@
+$(SYS_TYPE)/wxe_funcs.o: gen/wxe_funcs.cpp
+ $(V_at)mkdir -p $(SYS_TYPE)
+ $(CXX_O_NO_OPT) $< -o $@
+
$(SYS_TYPE)/%.o: gen/%.cpp
$(V_at)mkdir -p $(SYS_TYPE)
$(CXX_O) $< -o $@
diff --git a/lib/wx/configure.in b/lib/wx/configure.in
index dbe237cd74..f35e6cdbd0 100644
--- a/lib/wx/configure.in
+++ b/lib/wx/configure.in
@@ -30,17 +30,11 @@ if test -f ./CONF_INFO; then
fi
if test -z "$ERL_TOP" || test ! -d $ERL_TOP ; then
- AC_CONFIG_AUX_DIRS(autoconf)
- WX_BUILDING_INSIDE_ERLSRC=false
+ AC_MSG_ERROR([ERL_TOP is not set])
else
erl_top=${ERL_TOP}
- if test -d $erl_top/erts/autoconf; then
- AC_CONFIG_AUX_DIRS($erl_top/erts/autoconf)
- WX_BUILDING_INSIDE_ERLSRC=true
- else
- AC_CONFIG_AUX_DIRS(autoconf)
- WX_BUILDING_INSIDE_ERLSRC=false
- fi
+ AC_CONFIG_AUX_DIRS($erl_top/erts/autoconf)
+ WX_BUILDING_INSIDE_ERLSRC=true
fi
if test "X$host" != "Xfree_source" -a "X$host" != "Xwin32"; then
@@ -67,6 +61,20 @@ AC_PROG_CXX
AC_PROG_RANLIB
AC_PROG_CPP
+AC_LANG_PUSH([C++])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+ [[#ifndef __cplusplus
+ #error "broken C++"
+ #endif]])],,
+ [CXX=;])
+AC_LANG_POP([C++])
+if test "X$CXX" = X ; then
+ echo "Can not find C++ compiler" >> ./CONF_INFO
+ WXERL_CAN_BUILD_DRIVER=false
+ AC_MSG_WARN([Can not find C++ compiler])
+fi
+WXERL_CAN_BUILD_DRIVER=false
+
AC_MSG_NOTICE(Building for [$host_os])
WXERL_CAN_BUILD_DRIVER=true
@@ -139,13 +147,9 @@ case $host_os in
if test X$APPLE_CC = X -o X$APPLE_CXX = X; then
AC_MSG_RESULT([no])
dnl Complete failure, we cannot build Cocoa code
- if test X"$WX_BUILDING_INSIDE_ERLSRC" != X"true" ; then
- AC_MSG_ERROR([Can not find compiler to compile Cocoa applications])
- else
- echo "Can not find compiler to compile Cocoa applications" > ./CONF_INFO
- WXERL_CAN_BUILD_DRIVER=false
- AC_MSG_WARN([Can not find compiler to compile Cocoa applications])
- fi
+ echo "Can not find compiler to compile Cocoa applications" >> ./CONF_INFO
+ WXERL_CAN_BUILD_DRIVER=false
+ AC_MSG_WARN([Can not find compiler to compile Cocoa applications])
WXERL_CAN_BUILD_DRIVER=false
else
dnl We think we found an Apple compiler and will add
@@ -225,11 +229,21 @@ case $host_os in
;;
*)
DEBUG_CFLAGS="-g -Wall -fPIC $CFLAGS -DDEBUG"
- CFLAGS="-g -Wall -O2 -fPIC $CFLAGS -fomit-frame-pointer -fno-strict-aliasing"
+ CFLAGS="-Wall -fPIC $CFLAGS -fomit-frame-pointer -fno-strict-aliasing"
;;
esac
-dnl
+dnl
+dnl Use -O1 -fno-move-loop-invariants for wxe_funcs.cpp to reduce
+dnl compilation time
+dnl
+
+if test "x$GCC" = xyes -a X"$host_os" != X"win32" ; then
+ CXXNOOPT="-O1"
+ LM_TRY_ENABLE_CFLAG([-fno-move-loop-invariants], [CXXNOOPT])
+fi
+
+dnl
dnl Opengl tests
dnl
@@ -251,11 +265,13 @@ if test X"$host_os" != X"win32" ; then
AC_CHECK_HEADERS([GL/gl.h])
if test X"$ac_cv_header_GL_gl_h" != Xyes ; then
AC_MSG_WARN([No OpenGL headers found, wx will NOT be usable])
+ echo "No OpenGL headers found, wx will NOT be usable" >> ./CONF_INFO
+ WXERL_CAN_BUILD_DRIVER=false
CPPFLAGS="$saved_CPPFLAGS"
- else
+ else
GL_LIBS="-L/usr/local/lib $GL_LIBS"
fi
- else
+ else
GL_LIBS="-L/usr/X11R6/lib $GL_LIBS"
fi
fi
@@ -270,6 +286,8 @@ if test X"$host_os" != X"win32" ; then
test X"$ac_cv_header_OpenGL_glu_h" != Xyes
then
AC_MSG_WARN([No GLU headers found, wx will NOT be usable])
+ echo "No GLU headers (glu.h) found, wx will NOT be usable" >> ./CONF_INFO
+ WXERL_CAN_BUILD_DRIVER=false
fi
else
AC_CHECK_HEADERS([gl/glu.h],[],[],[#include <windows.h>])
@@ -280,47 +298,17 @@ AC_SUBST(GL_LIBS)
DEBUG_CXXFLAGS="$CXXFLAGS $DEBUG_CFLAGS $CPPFLAGS"
DEBUG_CFLAGS="$DEBUG_CFLAGS $CPPFLAGS $C_ONLY_FLAGS"
-CXXFLAGS="$CXXFLAGS $CFLAGS $CPPFLAGS"
+CXXNOOPTFLAGS="$CXXFLAGS $CFLAGS $CPPFLAGS $CXXNOOPT"
+CXXFLAGS="$CXXFLAGS $CFLAGS $CPPFLAGS"
CFLAGS="$CFLAGS $CPPFLAGS $C_ONLY_FLAGS"
AC_SUBST(DEBUG_CFLAGS)
AC_SUBST(DEBUG_CXXFLAGS)
-
-if test X"$WX_BUILDING_INSIDE_ERLSRC" != X"true" ; then
- AC_MSG_CHECKING(for erl)
- if test X$ERL != X; then
- AC_MSG_RESULT([yes; using $ERL])
- else
- type erl >/dev/null 2>&1
- if test $? -eq 0 ; then
- ERL=erl
- AC_MSG_RESULT([yes])
- else
- AC_MSG_ERROR([Cannot find erl in path])
- fi
- fi
- AC_MSG_CHECKING(for erlc)
- if test X$ERLC != X; then
- AC_MSG_RESULT([yes; using $ERLC])
- else
- type erlc >/dev/null 2>&1
- if test $? -eq 0 ; then
- ERLC=erlc
- AC_MSG_RESULT([yes])
- else
- AC_MSG_ERROR([Cannot find erlc in path])
- fi
- fi
- ERLANG_ROOT_DIR=`erl -noshell -eval 'io:format("~s~n",[[code:root_dir()]])' -s erlang halt`
- AC_MSG_NOTICE(ERL ROOT DIR: [$ERLANG_ROOT_DIR])
- ERLWX_VSN=`grep WX_VSN $srcdir/vsn.mk | sed 's/^.*=[ ]*//'`
-else
- ERLC=erlc
- ERL=erl
- ERLANG_ROOT_DIR=$ERL_TOP
- AC_SUBST(ERLC)
-fi
+ERLC=erlc
+ERL=erl
+ERLANG_ROOT_DIR=$ERL_TOP
+AC_SUBST(ERLC)
AC_SUBST(WX_BUILDING_INSIDE_ERLSRC)
AC_SUBST(ERLANG_ROOT_DIR)
@@ -329,7 +317,7 @@ dnl
dnl Check for wxwidgets
dnl
if test "$cross_compiling" = "yes"; then
- echo "Cross compilation of the wx driver is not supported yet, wx will NOT be usable" > ./CONF_INFO
+ echo "Cross compilation of the wx driver is not supported yet, wx will NOT be usable" >> ./CONF_INFO
WXERL_CAN_BUILD_DRIVER=false
elif test X"$MIXED_CYGWIN_VC" = X"no" -a X"$MIXED_MSYS_VC" = X"no"; then
WX_VERSION=`wx-config --version`
@@ -398,13 +386,9 @@ define(wx_warn_text,[
wxWidgets version is $reqwx or above.])
if test "$wxWin" != 1; then
- if test X"$WX_BUILDING_INSIDE_ERLSRC" != X"true" ; then
- AC_MSG_ERROR([wx_warn_text])
- else
- echo "wxWidgets not found, wx will NOT be usable" > ./CONF_INFO
- WXERL_CAN_BUILD_DRIVER=false
- AC_MSG_WARN([wx_warn_text])
- fi
+ echo "wxWidgets not found, wx will NOT be usable" >> ./CONF_INFO
+ WXERL_CAN_BUILD_DRIVER=false
+ AC_MSG_WARN([wx_warn_text])
fi
else
AC_MSG_CHECKING(for wxWidgets in standard locations)
@@ -502,13 +486,9 @@ else
if test -z "$WX_LIBS_STATIC"; then
AC_MSG_RESULT([failed])
- if test X"$WX_BUILDING_INSIDE_ERLSRC" != X"true" ; then
- AC_MSG_ERROR([Cannot find core lib version for wxWidgets])
- else
- echo "No usable wxWidgets not found, wx will not be useable" > ./CONF_INFO
- WXERL_CAN_BUILD_DRIVER=false
- AC_MSG_WARN([Cannot find core lib version for wxWidgets])
- fi
+ echo "No usable wxWidgets not found, wx will not be useable" >> ./CONF_INFO
+ WXERL_CAN_BUILD_DRIVER=false
+ AC_MSG_WARN([Cannot find core lib version for wxWidgets])
fi
WX_HAVE_STATIC_LIBS=true
AC_SUBST(WX_CFLAGS)
@@ -550,8 +530,8 @@ AC_MSG_RESULT($HAVE_GL_SUPPORT)
AC_SUBST(HAVE_GL_SUPPORT)
if test X"$HAVE_GL_SUPPORT" != X"yes" ; then
- echo "wxWidgets don't have gl support, wx will NOT be useable" > ./CONF_INFO
- WXERL_CAN_BUILD_DRIVER=false
+ echo "wxWidgets don't have gl support, wx will NOT be useable" >> ./CONF_INFO
+ WXERL_CAN_BUILD_DRIVER=false
fi
dnl Check for GLintptr
@@ -610,7 +590,7 @@ dnl
AC_CHECK_HEADERS([wx/stc/stc.h],
[],
[WXERL_CAN_BUILD_DRIVER=false
- echo "wxWidgets don't have wxStyledTextControl (stc.h), wx will NOT be useable" > ./CONF_INFO
+ echo "wxWidgets don't have wxStyledTextControl (stc.h), wx will NOT be useable" >> ./CONF_INFO
AC_MSG_WARN([Can not find wx/stc/stc.h $CXXFLAGS])
],
[#ifdef WIN32
@@ -670,9 +650,9 @@ AC_LANG_POP(C++)
AC_MSG_RESULT($CAN_LINK_WX)
if test X"$CAN_LINK_WX" != X"yes" ; then
- echo "Can not link the wx driver, wx will NOT be useable" > ./CONF_INFO
- WXERL_CAN_BUILD_DRIVER=false
- AC_MSG_WARN([Can not link wx program are all developer packages installed?])
+ echo "Can not link the wx driver, wx will NOT be useable" >> ./CONF_INFO
+ WXERL_CAN_BUILD_DRIVER=false
+ AC_MSG_WARN([Can not link wx program are all developer packages installed?])
fi
fi dnl - if test "$WXERL_CAN_BUILD_DRIVER" != "false"
@@ -721,6 +701,7 @@ esac
AC_SUBST(SO_EXT)
AC_SUBST(RUN_ERL)
+AC_SUBST(CXXNOOPTFLAGS)
if test X"$WX_BUILDING_INSIDE_ERLSRC" != X"true" ; then
@@ -737,12 +718,6 @@ CONFIG_STATUS=$WXERL_SYS_TYPE/config.status
dnl
-if test X"$WX_BUILDING_INSIDE_ERLSRC" != X"true" ; then
- if test X"$WXERL_CAN_BUILD_DRIVER" != X"true" ; then
- AC_MSG_ERROR([Cannot build wxErlang driver, see ./CONF_INFO for information])
- fi
-fi
-
AC_CONFIG_FILES([
config.mk
c_src/Makefile
@@ -750,20 +725,9 @@ AC_CONFIG_FILES([
AC_OUTPUT
-if test X"$WX_BUILDING_INSIDE_ERLSRC" != X"true" ; then
- AC_MSG_NOTICE()
- AC_MSG_NOTICE(--------------------------------------------------)
- AC_MSG_NOTICE(Using erlang compiler: [$ERLC])
- AC_MSG_NOTICE(wxErlang Install in: [$ERLANG_ROOT_DIR/lib/wx-$ERLWX_VSN])
- AC_MSG_NOTICE(Erlang driver in priv/[$WXERL_SYS_TYPE]/wxe_driver[$SO_EXT])
- AC_MSG_NOTICE(--------------------------------------------------)
-fi
-
-if test X"$WX_BUILDING_INSIDE_ERLSRC" = X"true" ; then
- CORES=`ls core* 2>/dev/null`
- if test X"$CORES" != X"" ; then
- echo "Configure dumped core files" > ignore_core_files
- fi
+CORES=`ls core* 2>/dev/null`
+if test X"$CORES" != X"" ; then
+ echo "Configure dumped core files" > ignore_core_files
fi