1dnl Process this file with autoconf to produce a configure script. -*-m4-*-
2
3dnl %CopyrightBegin%
4dnl
5dnl Copyright Ericsson AB 2008-2016. All Rights Reserved.
6dnl
7dnl Licensed under the Apache License, Version 2.0 (the "License");
8dnl you may not use this file except in compliance with the License.
9dnl You may obtain a copy of the License at
10dnl
11dnl     http://www.apache.org/licenses/LICENSE-2.0
12dnl
13dnl Unless required by applicable law or agreed to in writing, software
14dnl distributed under the License is distributed on an "AS IS" BASIS,
15dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16dnl See the License for the specific language governing permissions and
17dnl limitations under the License.
18dnl
19dnl %CopyrightEnd%
20
21AC_INIT()
22
23AC_CONFIG_AUX_DIRS($srcdir/autoconf)
24
25AC_PREREQ(2.59)
26
27## Delete previous failed configure results
28if test -f ./CONF_INFO; then
29   rm ./CONF_INFO
30fi
31
32AC_DEFUN([WX_MSG_ERROR],
33[	echo "$1" >> ./CONF_INFO
34    WXERL_CAN_BUILD_DRIVER=false
35    if test X"$with_wx" = X"yes" ; then
36        AC_MSG_ERROR([$1])
37    else
38        AC_MSG_WARN([$1])
39    fi
40])
41
42
43if test -z "$ERL_TOP" || test ! -d $ERL_TOP ; then
44  AC_MSG_ERROR([ERL_TOP is not set])
45else
46  erl_top=${ERL_TOP}
47  AC_CONFIG_AUX_DIRS($erl_top/erts/autoconf)
48  WX_BUILDING_INSIDE_ERLSRC=true
49fi
50
51AC_ARG_WITH(wx,
52[  --with-wxdir=PATH    specify location of wxWidgets include and lib
53  --with-wx             use wxWidgets (default)
54  --without-wx          don't use wxWidgets])
55
56if test "X$host" != "Xfree_source" -a "X$host" != "Xwin32"; then
57    AC_CANONICAL_HOST
58else
59    host_os=win32
60fi
61
62case $host_os in
63    mingw32)
64	if test "X$host" = "X"; then
65	   host=win32
66	fi
67	;;
68    *)
69	;;
70esac
71
72TARGET=$host
73AC_SUBST(TARGET)
74
75AC_PROG_CC
76AC_PROG_CXX
77AC_PROG_RANLIB
78AC_PROG_CPP
79
80AC_LANG_PUSH([C++])
81AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
82  [[#ifndef __cplusplus
83    #error "broken C++"
84    #endif]])],,
85  [CXX=;])
86AC_LANG_POP([C++])
87if test "X$CXX" = X ; then
88   WX_MSG_ERROR([Can not find C++ compiler])
89fi
90WXERL_CAN_BUILD_DRIVER=false
91
92AC_MSG_NOTICE(Building for [$host_os])
93WXERL_CAN_BUILD_DRIVER=true
94
95LM_WINDOWS_ENVIRONMENT
96
97USER_CFLAGS=$CFLAGS
98
99if test  X"$MIXED_VC" = X"yes" ; then
100   CFLAGS="-Owx"
101fi
102
103AC_CHECK_SIZEOF(void *)
104
105PTHR_CFLAGS="-D_THREAD_SAFE -D_REENTRANT"
106
107OBJC_CC=$CC
108OBJC_CFLAGS=""
109CXXFLAGS=""
110dnl NOTE: CPPFLAGS will be included in CFLAGS at the end
111case $host_os in
112    darwin*)
113	AC_MSG_CHECKING([Checking wxWidgets for min version:])
114	WX_CC=`wx-config --cc`
115	MAC_MIN=`echo "$WX_CC" | sed 's/^[[^ ]]*\ *//'`
116	AC_MSG_RESULT([$MAC_MIN])
117
118	AC_MSG_CHECKING([if compiler accepts -ObjC])
119  	CFLAGS="$CFLAGS -ObjC"
120  	AC_TRY_COMPILE([],[;], accept_objc_flag=true, accept_objc_flag=false)
121  	if test "X$accept_objc_flag" = "Xtrue"; then
122	   AC_MSG_RESULT([yes])
123           C_ONLY_FLAGS="-ObjC"
124	else
125	   dnl We are probably trying to build with a non-Apple gcc,
126	   dnl which is good as long as we do not try to build Cocoa
127	   dnl code. We need an Apple compiler for just that (Objective C)
128	   AC_MSG_RESULT([no])
129	   AC_MSG_CHECKING([for a Cocoa compliant Objective C compiler])
130	   SEARCHFOR=""
131	   SEARCHFORXX=""
132	   save_IFS=$IFS
133	   IFS=:
134	   set $PATH
135	   IFS=$save_IFS
136	   while test X"$1" != X""; do
137	       dnl Add all possible paths to a real apple gcc
138	       SEARCHFOR="$1/gcc-apple-4.2 $SEARCHFOR"
139	       SEARCHFORXX="$1/g++-apple-4.2 $SEARCHFORXX"
140	       shift
141	   done
142	   dnl Add LLVM compilers, they will work in this case
143	   SEARCHFOR="/usr/bin/clang /usr/bin/gcc $SEARCHFOR"
144	   SEARCHFORXX="/usr/bin/clang /usr/bin/g++ $SEARCHFORXX"
145	   APPLE_CC=""
146	   APPLE_CXX=""
147	   dnl SEARCHFOR is reversed, so we want to find the last existing
148	   dnl executable in the list
149	   IFS=" "
150	   set $SEARCHFORXX
151	   for x in $SEARCHFOR; do
152	       if test -x $x; then
153	       	  APPLE_CC=$x
154	       fi
155	       if test -x "$1"; then
156	       	  APPLE_CXX="$1"
157	       fi
158	       shift
159	   done
160	   IFS=$save_IFS
161	   if test X$APPLE_CC = X -o X$APPLE_CXX = X; then
162	      AC_MSG_RESULT([no])
163	      dnl Complete failure, we cannot build Cocoa code
164	      WX_MSG_ERROR([Can not find compiler to compile Cocoa applications])
165	   else
166	      dnl We think we found an Apple compiler and will add
167	      dnl Apple specific options
168	      AC_MSG_RESULT([$APPLE_CC ($APPLE_CXX)])
169	      dnl We should use this compiler for all of wx - hack...
170	      CC=$APPLE_CC
171	      CXX=$APPLE_CXX
172	      dnl Both clang and gcc accept these flags...
173	      #CXXFLAGS="-x c++ $CXXFLAGS"
174	      OBJC_CC=$APPLE_CC
175	      OBJC_CFLAGS="-ObjC"
176	   fi
177  	fi
178  	CFLAGS="$USER_CFLAGS $MAC_MIN -Wno-deprecated-declarations"
179	CPPFLAGS="$CPPFLAGS -D_MACOSX $PTHR_CFLAGS"
180	;;
181    mingw32)
182	CFLAGS="$CFLAGS -DWIN32 -DWINVER=0x0600 -D_WINDOWS -D_UNICODE -DUNICODE"
183	CPPFLAGS="$CPPFLAGS -D_WIN32_WINNT=0x0600"
184	AC_MSG_WARN([Reverting to 32-bit time_t])
185	CPPFLAGS="$CPPFLAGS -D_USE_32BIT_TIME_T"
186	;;
187    win32)
188	CFLAGS="$CFLAGS -DWIN32 -DWINVER=0x0600 -D_WINDOWS -D_UNICODE -DUNICODE"
189	CPPFLAGS="$CPPFLAGS -D_WIN32_WINNT=0x0600"
190	;;
191    *)
192	CFLAGS="$CFLAGS -Wno-deprecated-declarations"
193	CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE $PTHR_CFLAGS"
194	;;
195esac
196
197AC_SUBST(OBJC_CC)
198AC_SUBST(OBJC_CFLAGS)
199
200case $host_os in
201    darwin*)
202	LDFLAGS="$MAC_MIN -bundle -flat_namespace -undefined warning -fPIC $LDFLAGS"
203	# Check sizof_void_p as future will hold 64bit MacOS wx
204	if test $ac_cv_sizeof_void_p = 4; then
205	    LDFLAGS="-m32 $LDFLAGS"
206	fi
207	GL_LIBS="-framework OpenGL"
208	;;
209    win32)
210        LDFLAGS="-dll $LDFLAGS"
211	GL_LIBS="-lglu32 -lOpengl32"
212	;;
213    mingw32)
214	LDFLAGS="-shared -fPIC $LDFLAGS"
215	GL_LIBS="-lglu32 -lOpengl32"
216	;;
217    *)
218	LDFLAGS="-shared -fPIC $LDFLAGS"
219	GL_LIBS="-lGL -lGLU"
220	;;
221esac
222
223dnl ----------------------------------------------------------------------
224dnl Include CPPFLAGS in CFLAGS
225dnl ----------------------------------------------------------------------
226
227case $host_os in
228    mingw32)
229	DEBUG_CFLAGS="-g -Wall -DDEBUG $CFLAGS"
230	CFLAGS="-g -Wall -O2 $CFLAGS -fomit-frame-pointer -fno-strict-aliasing"
231	;;
232    win32)
233	DEBUG_CFLAGS="-g -Wall $CFLAGS -DDEBUG"
234	CFLAGS="-g -Wall -O2 $CFLAGS"
235	;;
236    darwin*)
237	DEBUG_CFLAGS="-g -Wall -fPIC $CFLAGS -DDEBUG"
238	# omit-frame-pointer causes seg faults with 10.9 and clang
239	CFLAGS="-g -Wall -fPIC $CFLAGS -fno-strict-aliasing"
240	;;
241    *)
242	DEBUG_CFLAGS="-g -Wall -fPIC $CFLAGS -DDEBUG"
243	CFLAGS="-Wall -fPIC $CFLAGS -fomit-frame-pointer -fno-strict-aliasing"
244	;;
245esac
246
247dnl
248dnl  Use -O1 -fno-move-loop-invariants for wxe_funcs.cpp to reduce
249dnl  compilation time
250dnl
251
252if test "x$GCC" = xyes -a X"$host_os" != X"win32" ; then
253   CXXNOOPT="-O1"
254   LM_TRY_ENABLE_CFLAG([-fno-move-loop-invariants], [CXXNOOPT])
255   LM_TRY_ENABLE_CFLAG([-fno-var-tracking-assignments], [CXXNOOPT])
256fi
257
258dnl
259dnl  Opengl tests
260dnl
261
262if test X"$host_os" != X"win32" ; then
263    AC_CHECK_HEADERS([GL/gl.h], [],
264    	[AC_CHECK_HEADERS([OpenGL/gl.h])])
265    if test X"$ac_cv_header_GL_gl_h" != Xyes &&
266       	test X"$ac_cv_header_OpenGL_gl_h" != Xyes
267    then
268       	saved_CPPFLAGS="$CPPFLAGS"
269	AC_MSG_NOTICE(Checking for OpenGL headers in /usr/X11R6)
270       	CPPFLAGS="-isystem /usr/X11R6/include $CPPFLAGS"
271       	$as_unset ac_cv_header_GL_gl_h
272       	AC_CHECK_HEADERS([GL/gl.h])
273       	if test X"$ac_cv_header_GL_gl_h" != Xyes ; then
274	    AC_MSG_NOTICE(Checking for OpenGL headers in /usr/local)
275	    CPPFLAGS="-isystem /usr/local/include $saved_CPPFLAGS"
276	    $as_unset ac_cv_header_GL_gl_h
277	    AC_CHECK_HEADERS([GL/gl.h])
278	    if test X"$ac_cv_header_GL_gl_h" != Xyes ; then
279		WX_MSG_ERROR([No OpenGL headers found, wx will NOT be usable])
280		CPPFLAGS="$saved_CPPFLAGS"
281	    else
282	    	GL_LIBS="-L/usr/local/lib $GL_LIBS"
283	    fi
284	else
285    	    GL_LIBS="-L/usr/X11R6/lib $GL_LIBS"
286       	fi
287    fi
288else
289    AC_CHECK_HEADERS([gl/gl.h],[],[],[#include <windows.h>])
290fi
291
292if test X"$host_os" != X"win32" ; then
293    AC_CHECK_HEADERS([GL/glu.h], [],
294        [AC_CHECK_HEADERS([OpenGL/glu.h])])
295    if test X"$ac_cv_header_GL_glu_h" != Xyes &&
296        test X"$ac_cv_header_OpenGL_glu_h" != Xyes
297    then
298    WX_MSG_ERROR([No GLU headers found, wx will NOT be usable])
299    fi
300else
301    AC_CHECK_HEADERS([gl/glu.h],[],[],[#include <windows.h>])
302fi
303
304AC_SUBST(GL_LIBS)
305
306DEBUG_CXXFLAGS="$CXXFLAGS $DEBUG_CFLAGS $CPPFLAGS"
307DEBUG_CFLAGS="$DEBUG_CFLAGS $CPPFLAGS $C_ONLY_FLAGS"
308
309CXXNOOPTFLAGS="$CXXFLAGS $CFLAGS $CPPFLAGS $CXXNOOPT"
310CXXFLAGS="$CXXFLAGS $CFLAGS $CPPFLAGS"
311CFLAGS="$CFLAGS $CPPFLAGS $C_ONLY_FLAGS"
312
313AC_SUBST(DEBUG_CFLAGS)
314AC_SUBST(DEBUG_CXXFLAGS)
315
316ERLC=erlc
317ERL=erl
318ERLANG_ROOT_DIR=$ERL_TOP
319AC_SUBST(ERLC)
320
321AC_SUBST(WX_BUILDING_INSIDE_ERLSRC)
322AC_SUBST(ERLANG_ROOT_DIR)
323
324dnl
325dnl  Check for wxwidgets
326dnl
327if test "$cross_compiling" = "yes"; then
328    WX_MSG_ERROR([Cross compilation of the wx driver is not supported yet, wx will NOT be usable])
329elif test  X"$MIXED_VC" = X"no"; then
330    m4_include(wxwin-nothrow.m4)
331
332    AM_OPTIONS_WXCONFIG
333    reqwx=3.0.2
334	AM_PATH_WXCONFIG($reqwx, [], [], [core,base,html,webview], [--unicode])
335	AC_MSG_CHECKING(for wxwidgets webview)
336	AC_LANG_PUSH(C++)
337	saved_CXXFLAGS=$CXXFLAGS
338	CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS"
339        saved_LIBS=$LIBS
340        LIBS=$WX_LIBS
341
342	AC_LINK_IFELSE(
343 	  [AC_LANG_PROGRAM([[
344	  #include "wx/wx.h"
345          #include "wx/webview.h"
346	  ]], [[
347             wxWebView::New();
348	  ]])],
349	  HAVE_WEBVIEW_SUPPORT=yes, HAVE_WEBVIEW_SUPPORT=no)
350
351	CXXFLAGS=$saved_CXXFLAGS
352        LIBS=$saved_LIBS
353	AC_LANG_POP(C++)
354	AC_MSG_RESULT($HAVE_WEBVIEW_SUPPORT)
355
356	if test X"$HAVE_WEBVIEW_SUPPORT" != X"yes" ; then
357	  WXELIBS=stc,xrc,html,adv,xml,core,base,gl,aui
358	  echo "wxWidgets was not compiled with --enable-webview or wxWebView developer package is not installed, wxWebView will NOT be available" >> ./CONF_INFO
359	else
360	  WXELIBS=stc,xrc,html,adv,xml,core,base,gl,aui,webview
361          AC_DEFINE([WXE_WEBVIEW])
362	fi
363
364    # Try to find debug libs first
365    AM_PATH_WXCONFIG($reqwx, wxWinWithGLDBG=1, wxWinWithGLDBG=0, [$WXELIBS], [--unicode --debug=yes])
366
367    AC_MSG_CHECKING(for debug build of wxWidgets)
368    if test "$wxWinWithGLDBG" = 1; then
369      AC_MSG_RESULT(yes);
370    else
371      AC_MSG_RESULT(no);
372    fi
373
374    DEBUG_WX_CFLAGS=$WX_CFLAGS
375    DEBUG_WX_CXXFLAGS=$WX_CXXFLAGS
376    DEBUG_WX_LIBS=$WX_LIBS
377    DEBUG_WX_LIBS_STATIC=$WX_LIBS_STATIC
378    AC_SUBST(DEBUG_WX_CFLAGS)
379    AC_SUBST(DEBUG_WX_CXXFLAGS)
380    AC_SUBST(DEBUG_WX_LIBS)
381    AC_SUBST(DEBUG_WX_LIBS_STATIC)
382
383    AM_PATH_WXCONFIG($reqwx, wxWinWithGL=1, wxWinWithGL=0, [$WXELIBS], [--unicode --debug=no])
384
385    AC_MSG_CHECKING(for standard build of wxWidgets)
386    if test "$wxWinWithGL" = 1; then
387      AC_MSG_RESULT(yes);
388    else
389      AC_MSG_RESULT(no);
390    fi
391
392    if test "x$WX_LIBS_STATIC" = "x"; then
393       WX_HAVE_STATIC_LIBS=false
394    else
395       WX_HAVE_STATIC_LIBS=true
396    fi
397
398    wxWin=0
399
400    if test "$wxWinWithGLDBG" = 1; then
401        if test "$wxWinWithGL" = 1; then
402    	   wxWin=1
403	   FORCED_DEBUG_BUILD=false
404    	else
405    	   wxWin=1
406	   FORCED_DEBUG_BUILD=debug
407	   WX_CFLAGS=$DEBUG_WX_CFLAGS
408	   WX_CXXFLAGS=$DEBUG_WX_CXXFLAGS
409	   WX_LIBS=$DEBUG_WX_LIBS
410	   WX_LIBS_STATIC=$DEBUG_WX_LIBS_STATIC
411	fi
412    elif test "$wxWinWithGL" = 1; then
413    	wxWin=1
414	FORCED_DEBUG_BUILD=false
415    fi
416    AC_SUBST(FORCED_DEBUG_BUILD)
417    RC_FILE_TYPE=o
418
419    if test "$wxWin" != 1; then
420       WX_MSG_ERROR([
421        wxWidgets must be installed on your system.
422
423        Please check that wx-config is in path, the directory
424        where wxWidgets libraries are installed (returned by
425        'wx-config --libs' or 'wx-config --static --libs' command)
426        is in LD_LIBRARY_PATH or equivalent variable and
427        wxWidgets version is $reqwx or above.])
428    fi
429else
430    AC_MSG_CHECKING(for wxWidgets in standard locations)
431    echo
432    # Check whether --with-wxdir was given.
433    AC_MSG_NOTICE(OptionCheck: [$with_wxdir $with_wx_prefix])
434
435    if test "${with_wxdir+set}" = set; then :
436      withval=$with_wxdir;  CWXWIN0=$withval
437    else
438      # Check whether --with-wx-prefix was given.
439      if test "${with_wx_prefix+set}" = set; then :
440        withval=$with_wx_prefix; CWXWIN0=$withval
441      else
442        CWXWIN0=""
443      fi
444    fi
445
446    CWXWIN_CONFIG=`win32_path.sh -u $wx_config_name 2>/dev/null`
447    CWXWIN1=`dirname $CWXWIN_CONFIG 2>/dev/null`
448    CWXWIN2=`dirname $CWXWIN1 2>/dev/null`
449
450    if test -z "$PROGRAMFILES" ; then
451       PROGRAMFILES="c:/Program Files"
452    fi
453
454    CWXWIN_PROG=`win32_path.sh -u "$PROGRAMFILES" 2>/dev/null`
455
456    CWXWIN3="$CWXWIN_PROG/wxWidgets-3.*.*
457    CWXWIN4="$CWXWIN_PROG/wxMSW-3.*.*
458
459    DOC_OPT1=/opt/local/pgm
460    DOC_OPT2=/mnt/c/opt/local/pgm
461    CWX_DOCUMENTED="$DOC_OPT1/wxWidgets-3.*.* $DOC_OPT1/wxMSW-3.*.*"
462    CWX_DOCUMENTED="$DOC_OPT2/wxWidgets-3.*.* $DOC_OPT2/wxMSW-3.*.* $CWX_DOCUMENTED"
463
464    case $ac_cv_sizeof_void_p in
465    	 8)
466                VC_LIB=lib/vc_x64_lib
467                WX_ARCH=x64
468		DOC_OPT64_1=/opt/local64/pgm
469		DOC_OPT64_2=/mnt/c/opt/local64/pgm
470		CWX_DOCUMENTED="$DOC_OPT64_1/wxWidgets-3.*.* $DOC_OPT64_1/wxMSW-3.*.* $CWX_DOCUMENTED"
471		CWX_DOCUMENTED="$DOC_OPT64_2/wxWidgets-3.*.* $DOC_OPT64_2/wxMSW-3.*.* $CWX_DOCUMENTED"
472		;;
473         *)
474                VC_LIB=lib/vc_lib
475                WX_ARCH=x86
476		DOC_OPT3=/opt/local32/pgm
477		DOC_OPT4=/mnt/c/opt/local32/pgm
478		CWX_DOCUMENTED="$DOC_OPT3/wxWidgets-3.*.* $DOC_OPT3/wxMSW-3.*.* $CWX_DOCUMENTED"
479		CWX_DOCUMENTED="$DOC_OPT4/wxWidgets-3.*.* $DOC_OPT4/wxMSW-3.*.* $CWX_DOCUMENTED"
480		;;
481    esac
482
483    CWXPATH="$CWXWIN0 $CWXWIN1 $CWXWIN2 $CWX_DOCUMENTED $CWXWIN3 $CWXWIN4"
484
485    for dir in $CWXPATH; do
486        AC_MSG_NOTICE(Checking: [$dir])
487	if test -f $dir/include/wx/wx.h; then
488	    WXINCLUDE_MSVC=$dir/include/msvc
489	    WXINCLUDE_PLAIN=$dir/include
490	    WX_CFLAGS="-EHsc -D_UNICODE -DUNICODE -I$WXINCLUDE_MSVC -I$WXINCLUDE_PLAIN -D__WXMSW__"
491	    WX_CXXFLAGS="-TP $WX_CFLAGS"
492	    WX_LIBDIR=$dir/$VC_LIB
493	    WX_RESCOMP="rc.sh -I$WXINCLUDE_PLAIN -D __WIN32__"
494	    RC_FILE_TYPE=res
495  	    base=`ls $WX_LIBDIR/wxbase*.lib 2> /dev/null | egrep 'wxbase[[0-9]]*u\.lib'`
496  	    corelib_number=`echo $base | sed 's,.*\([[0-9]].\)u\.lib,\1,'`
497	    if test '!' -z "$corelib_number"; then
498		WXLIBNO=$corelib_number
499		WX_LIBS0="wxmsw${WXLIBNO}u_stc wxmsw${WXLIBNO}u_xrc wxmsw${WXLIBNO}u_html"
500		WX_LIBS1="wxmsw${WXLIBNO}u_adv wxbase${WXLIBNO}u_xml wxmsw${WXLIBNO}u_core"
501		WX_LIBS2="wxbase${WXLIBNO}u wxmsw${WXLIBNO}u_gl wxmsw${WXLIBNO}u_aui"
502		WX_LIBS3="wxregexu wxexpat wxtiff wxjpeg wxpng wxzlib"
503		WX_SYSLIBS="winspool winmm oleaut32 ole32 gdiplus"
504		WX_LIBS_STATIC="-L$WX_LIBDIR"
505		for lib in $WX_LIBS0 $WX_LIBS1 $WX_LIBS2 $WX_LIBS3 $WX_SYSLIBS; do
506		   WX_LIBS_STATIC="$WX_LIBS_STATIC -l$lib"
507		done
508                WXDIR=$dir
509		AC_MSG_RESULT([Found: $dir])
510		break
511	    fi
512	fi
513    done
514
515    if test -z "$WX_LIBS_STATIC"; then
516	AC_MSG_RESULT([failed])
517	WX_MSG_ERROR([Cannot find core lib version for wxWidgets])
518    fi
519
520    AC_MSG_CHECKING(for edge webview loader)
521    WEBVIEW_DLL=$WXDIR/3rdparty/webview2/build/native/$WX_ARCH/WebView2Loader.dll
522    if test -f "$WEBVIEW_DLL"; then
523	AC_MSG_RESULT([$WEBVIEW_DLL])
524        WX_WEBVIEW_DLL=$WEBVIEW_DLL
525    else
526        AC_MSG_RESULT(not found in $WEBVIEW_DLL)
527        WX_WEBVIEW_DLL=
528    fi
529
530
531    WX_HAVE_STATIC_LIBS=true
532    AC_SUBST(WX_CFLAGS)
533    AC_SUBST(WX_CXXFLAGS)
534    AC_SUBST(WX_LIBS_STATIC)
535    AC_SUBST(WX_RESCOMP)
536    AC_SUBST(WX_WEBVIEW_DLL)
537    AC_DEFINE([WXE_WEBVIEW])
538fi
539
540if test "$WXERL_CAN_BUILD_DRIVER" != "false"; then
541
542AC_SUBST(WX_HAVE_STATIC_LIBS)
543AC_SUBST(RC_FILE_TYPE)
544
545AC_MSG_CHECKING(for wxwidgets 3.0 compatibility )
546AC_LANG_PUSH(C++)
547saved_CXXFLAGS=$CXXFLAGS
548CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS"
549
550AC_COMPILE_IFELSE(
551 [AC_LANG_PROGRAM([[
552  #ifdef WIN32
553  # include <windows.h>
554  #endif
555  #include "wx/wx.h"
556  ]], [[
557  #if wxMAJOR_VERSION > 2 && (wxMINOR_VERSION == 0 || WXWIN_COMPATIBILITY_3_0 == 1)
558  ;
559  #else
560  #error barf
561  #endif
562  ]])],
563  HAVE_COMPAT30_SUPPORT=yes, HAVE_COMPAT30_SUPPORT=no)
564
565CXXFLAGS=$saved_CXXFLAGS
566AC_LANG_POP(C++)
567AC_MSG_RESULT($HAVE_COMPAT30_SUPPORT)
568
569if test X"$HAVE_COMPAT30_SUPPORT" != X"yes" ; then
570   WX_MSG_ERROR([wxWidgets was not compiled with --enable-compat30, wx will NOT be useable])
571fi
572
573AC_MSG_CHECKING(for wxwidgets opengl support)
574AC_LANG_PUSH(C++)
575saved_CXXFLAGS=$CXXFLAGS
576CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS"
577
578AC_COMPILE_IFELSE(
579 [AC_LANG_PROGRAM([[
580  #ifdef WIN32
581  # include <windows.h>
582  #endif
583  #include "wx/wx.h"
584  ]], [[
585  #if wxUSE_GLCANVAS
586  ;
587  #else
588  #error barf
589  #endif
590  ]])],
591[HAVE_GL_SUPPORT=yes
592 AC_DEFINE(HAVE_GL_SUPPORT, [1], [Define if wxwidgets have gl support])],
593 HAVE_GL_SUPPORT=no)
594
595CXXFLAGS=$saved_CXXFLAGS
596AC_LANG_POP(C++)
597AC_MSG_RESULT($HAVE_GL_SUPPORT)
598AC_SUBST(HAVE_GL_SUPPORT)
599
600if test X"$HAVE_GL_SUPPORT" != X"yes" ; then
601   WX_MSG_ERROR([wxWidgets don't have gl support, wx will NOT be useable])
602fi
603
604dnl Check for GLintptr
605dnl We define the types glext.h so we don't depend on glext.h is updated
606dnl to the latest version, but some systems defined them in gl.h
607dnl i.e Darwin and Solaris.
608
609AC_CHECK_TYPES([GLintptr, GLintptrARB, GLchar,
610                GLcharARB, GLhalfARB, GLint64EXT],
611	       [], [],
612	       [#ifdef WIN32
613		# include <windows.h>
614	        # include <gl/gl.h>
615	        #elif defined(HAVE_GL_GL_H)
616	        # include <GL/gl.h>
617                #elif defined(HAVE_OPENGL_GL_H)
618		# include <OpenGL/gl.h>
619		#endif
620		])
621
622AC_MSG_CHECKING(GLU Callbacks uses Tiger Style)
623AC_LANG_PUSH(C++)
624saved_CXXFLAGS=$CXXFLAGS
625CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS"
626
627AC_TRY_COMPILE([
628                #ifdef WIN32
629		# include <windows.h>
630	        # include <gl/glu.h>
631	        #elif defined(HAVE_GL_GL_H)
632	        # include <GL/glu.h>
633                #elif defined(HAVE_OPENGL_GL_H)
634		# include <OpenGL/glu.h>
635		#endif
636		#ifndef CALLBACK
637		# define CALLBACK
638		#endif
639		void CALLBACK foo() {};
640	       ],
641		[
642		   GLUtesselator* tess;
643		   gluTessCallback(tess,GLU_TESS_VERTEX,(GLvoid (*)(...)) foo);
644		],
645		[TESS_CB_TIGER_STYLE=yes
646		 AC_DEFINE(TESS_CB_TIGER_STYLE, [1], [GLU Callbacks are Tiger style])],
647		TESS_CB_TIGER_STYLE=no)
648AC_MSG_RESULT($TESS_CB_TIGER_STYLE)
649AC_SUBST(TESS_CB_TIGER_STYLE)
650
651dnl
652dnl Check that we wx have stc (wxStyledTextControl) headers
653dnl
654
655AC_CHECK_HEADERS([wx/stc/stc.h],
656        [],
657    	[WX_MSG_ERROR([Can not find wx/stc/stc.h $CXXFLAGS])
658     	],
659	[#ifdef WIN32
660	 # include <windows.h>
661         #endif
662         #include "wx/wx.h"])
663
664dnl
665dnl Check that we can link all the libraries
666dnl
667
668AC_MSG_CHECKING(if we can link wxwidgets programs)
669saved_LIBS=$LIBS
670
671if test X"$WX_HAVE_STATIC_LIBS" = X"true" ; then
672   LIBS=$WX_LIBS_STATIC
673fi
674
675AC_LINK_IFELSE([AC_LANG_SOURCE([
676		#ifdef WIN32
677		# include <windows.h>
678		#endif
679                #include "wx/wx.h"
680		#include "wx/stc/stc.h"
681		])
682
683		class MyApp : public wxApp
684		{
685		   virtual bool OnInit() {
686		   	   // Test that we have a FromUTF8
687			   // it isn't in too old wxWidgets versions
688		   	   wxString test = wxString::FromUTF8((const char *)"foo");
689		   	   wxStyledTextCtrl * foo = new wxStyledTextCtrl();
690			   return foo;
691                  };
692		};
693		IMPLEMENT_APP(MyApp)
694	       ],
695	       [
696		CAN_LINK_WX=yes
697	       ],
698	       [
699		CAN_LINK_WX=no
700	       ])
701
702CXXFLAGS=$saved_CXXFLAGS
703LIBS=$saved_LIBS
704AC_LANG_POP(C++)
705AC_MSG_RESULT($CAN_LINK_WX)
706
707if test X"$CAN_LINK_WX" != X"yes" ; then
708   WX_MSG_ERROR([Can not link wx program are all developer packages installed?])
709fi
710
711fi dnl - if test "$WXERL_CAN_BUILD_DRIVER" != "false"
712
713AC_SUBST(WXERL_CAN_BUILD_DRIVER)
714
715if test "x$GCC" = xyes; then
716    # Treat certain GCC warnings as errors
717    LM_TRY_ENABLE_CFLAG([-Werror=return-type], [CFLAGS])
718    LM_TRY_ENABLE_CFLAG([-Werror=return-type], [CXXFLAGS])
719fi
720
721dnl ----------------------------------------------------------------------
722dnl Enable -fsanitize= flags.
723dnl ----------------------------------------------------------------------
724
725m4_define(DEFAULT_SANITIZERS, [address,undefined])
726AC_ARG_ENABLE(
727    sanitizers,
728    AS_HELP_STRING(
729        [--enable-sanitizers@<:@=comma-separated list of sanitizers@:>@],
730	    [Default=DEFAULT_SANITIZERS]),
731[
732case "$enableval" in
733    no) sanitizers= ;;
734    yes) sanitizers="-fsanitize=DEFAULT_SANITIZERS" ;;
735    *) sanitizers="-fsanitize=$enableval" ;;
736esac
737CFLAGS="$CFLAGS $sanitizers"
738CXXFLAGS="$CXXFLAGS $sanitizers"
739LDFLAGS="$LDFLAGS $sanitizers"
740])
741
742#############################################################################
743
744dnl
745
746case $host_os in
747    mingw32|win32)
748	RUN_ERL=werl
749	SO_EXT=.dll;;
750    *)
751	RUN_ERL=erl
752	SO_EXT=.so;;
753esac
754
755AC_SUBST(SO_EXT)
756AC_SUBST(RUN_ERL)
757AC_SUBST(CXXNOOPTFLAGS)
758
759
760if test X"$WX_BUILDING_INSIDE_ERLSRC" != X"true" ; then
761    dnl  Find driver directory name according to erlang
762    WXERL_SYS_TYPE=`erl -noshell -eval 'io:format("~s~n",[[erlang:system_info(system_architecture)]])' -s erlang halt`
763else
764    WXERL_SYS_TYPE=$TARGET
765fi
766
767AC_SUBST(WXERL_SYS_TYPE)
768
769mkdir -p $WXERL_SYS_TYPE
770CONFIG_STATUS=$WXERL_SYS_TYPE/config.status
771
772dnl
773
774AC_CONFIG_FILES([
775	config.mk
776	c_src/Makefile
777        ])
778
779AC_OUTPUT
780
781CORES=`ls core* 2>/dev/null`
782if test X"$CORES" != X"" ; then
783   echo "Configure dumped core files" > ignore_core_files
784fi
785
786
787
788