2012-06-12 20:16:16 +00:00
check_switch_c C99 -std= gnu99 "Cannot find C99 compatible compiler."
2010-12-30 01:52:02 +00:00
2012-05-01 21:00:37 +00:00
check_switch_c NOUNUSED -Wno-unused-result
2012-06-12 20:16:16 +00:00
add_define_make NOUNUSED " $HAVE_NOUNUSED "
2013-03-16 11:24:53 +00:00
check_switch_c NOUNUSED_VARIABLE -Wno-unused-variable
add_define_make NOUNUSED_VARIABLE " $HAVE_NOUNUSED_VARIABLE "
2012-05-01 21:00:37 +00:00
2011-08-24 14:12:38 +00:00
# There are still broken 64-bit Linux distros out there. :)
2012-12-08 23:20:55 +00:00
[ -z " $CROSS_COMPILE " ] && [ -d /usr/lib64 ] && add_library_dirs /usr/lib64
2011-08-24 14:12:38 +00:00
2012-12-08 23:20:55 +00:00
[ -z " $CROSS_COMPILE " ] && [ -d /opt/local/lib ] && add_library_dirs /opt/local/lib
2011-09-02 14:12:34 +00:00
2014-08-28 16:41:12 +00:00
DYLIB = -ldl;
CLIB = -lc
PTHREADLIB = -lpthread
SOCKETLIB = -lc
2014-10-29 00:30:12 +00:00
SOCKETHEADER =
2014-08-28 16:41:12 +00:00
2012-12-22 22:52:05 +00:00
if [ " $OS " = 'BSD' ] ; then
DYLIB = -lc;
elif [ " $OS " = 'Haiku' ] ; then
2014-08-28 16:41:12 +00:00
DYLIB = ""
CLIB = -lroot
PTHREADLIB = -lroot
SOCKETLIB = -lnetwork
2014-08-29 19:35:56 +00:00
elif [ " $OS " = 'Win32' ] ; then
SOCKETLIB = -lws2_32
2014-10-29 00:30:12 +00:00
SOCKETHEADER = "#include <winsock2.h>"
2014-08-29 19:35:56 +00:00
DYLIB =
2012-12-22 22:52:05 +00:00
fi
add_define_make DYLIB_LIB " $DYLIB "
2012-10-11 19:00:16 +00:00
[ " $OS " = 'Darwin' ] && HAVE_X11 = no # X11 breaks on recent OSXes even if present.
2011-09-02 14:12:34 +00:00
2012-06-19 16:42:32 +00:00
[ -d /opt/vc/lib ] && add_library_dirs /opt/vc/lib
2014-07-24 19:24:34 +00:00
check_lib VIDEOCORE -lbcm_host bcm_host_init "-lvcos -lvchiq_arm"
2012-06-19 16:42:32 +00:00
2012-09-18 23:41:58 +00:00
if [ " $HAVE_VIDEOCORE " = 'yes' ] ; then
2012-06-19 16:42:32 +00:00
[ -d /opt/vc/include ] && add_include_dirs /opt/vc/include
[ -d /opt/vc/include/interface/vcos/pthreads ] && add_include_dirs /opt/vc/include/interface/vcos/pthreads
2013-01-26 11:53:30 +00:00
[ -d /opt/vc/include/interface/vmcs_host/linux ] && add_include_dirs /opt/vc/include/interface/vmcs_host/linux
2012-12-12 00:34:01 +00:00
HAVE_GLES = 'auto'
2014-07-24 19:24:34 +00:00
EXTRA_GL_LIBS = "-lEGL -lGLESv2 -lbcm_host -lvcos -lvchiq_arm"
2012-12-12 00:34:01 +00:00
fi
2013-07-13 02:07:38 +00:00
if [ " $HAVE_NEON " = "yes" ] ; then
2013-07-13 13:03:35 +00:00
CFLAGS = " $CFLAGS -mfpu=neon -marm "
CXXFLAGS = " $CXXFLAGS -mfpu=neon -marm "
2013-07-13 02:07:38 +00:00
ASFLAGS = " $ASFLAGS -mfpu=neon "
fi
2014-09-02 14:39:38 +00:00
if [ " $HAVE_7ZIP " = "yes" ] ; then
add_include_dirs ./decompress/7zip/
fi
2014-09-02 20:12:24 +00:00
if [ " $HAVE_PRESERVE_DYLIB " = "yes" ] ; then
echo "Disabling dlclose() of shared objects for Valgrind support."
add_define_make HAVE_PRESERVE_DYLIB "1"
fi
2013-07-13 01:48:02 +00:00
if [ " $HAVE_FLOATHARD " = "yes" ] ; then
CFLAGS = " $CFLAGS -mfloat-abi=hard "
2013-07-13 01:52:22 +00:00
CXXFLAGS = " $CXXFLAGS -mfloat-abi=hard "
ASFLAGS = " $ASFLAGS -mfloat-abi=hard "
2013-07-13 01:48:02 +00:00
fi
if [ " $HAVE_FLOATSOFTFP " = "yes" ] ; then
CFLAGS = " $CFLAGS -mfloat-abi=softfp "
2013-07-13 01:52:22 +00:00
CXXFLAGS = " $CXXFLAGS -mfloat-abi=softfp "
ASFLAGS = " $ASFLAGS -mfloat-abi=softfp "
2013-07-13 01:48:02 +00:00
fi
2013-07-13 02:07:38 +00:00
if [ " $HAVE_NEON " = "yes" ] ; then
2013-07-13 13:03:35 +00:00
CFLAGS = " $CFLAGS -mfpu=neon -marm "
CXXFLAGS = " $CXXFLAGS -mfpu=neon -marm "
2013-07-13 02:07:38 +00:00
ASFLAGS = " $ASFLAGS -mfpu=neon "
fi
2013-07-13 01:48:02 +00:00
if [ " $HAVE_FLOATHARD " = "yes" ] ; then
CFLAGS = " $CFLAGS -mfloat-abi=hard "
2013-07-13 01:52:22 +00:00
CXXFLAGS = " $CXXFLAGS -mfloat-abi=hard "
ASFLAGS = " $ASFLAGS -mfloat-abi=hard "
2013-07-13 01:48:02 +00:00
fi
if [ " $HAVE_FLOATSOFTFP " = "yes" ] ; then
CFLAGS = " $CFLAGS -mfloat-abi=softfp "
2013-07-13 01:52:22 +00:00
CXXFLAGS = " $CXXFLAGS -mfloat-abi=softfp "
ASFLAGS = " $ASFLAGS -mfloat-abi=softfp "
2013-07-13 01:48:02 +00:00
fi
2013-05-04 13:08:04 +00:00
if [ " $HAVE_SSE " = "yes" ] ; then
CFLAGS = " $CFLAGS -msse -msse2 "
CXXFLAGS = " $CXXFLAGS -msse -msse2 "
fi
2012-12-12 00:34:01 +00:00
if [ " $HAVE_EGL " != "no" ] ; then
2012-10-01 20:57:33 +00:00
check_pkgconf EGL egl
2012-12-12 00:34:01 +00:00
# some systems have EGL libs, but no pkgconfig
if [ " $HAVE_EGL " = "no" ] ; then
HAVE_EGL = auto && check_lib EGL " -lEGL $EXTRA_GL_LIBS "
[ " $HAVE_EGL " = "yes" ] && EGL_LIBS = -lEGL
2014-06-17 19:01:19 +00:00
else
2014-06-15 10:02:34 +00:00
EGL_LIBS = " $EGL_LIBS $EXTRA_GL_LIBS "
2014-06-17 19:01:19 +00:00
fi
2012-05-23 06:31:29 +00:00
fi
2013-11-24 16:28:21 +00:00
if [ " $HAVE_EXYNOS " != "no" ] ; then
check_pkgconf EXYNOS libdrm_exynos
check_pkgconf DRM libdrm
fi
2012-06-12 20:16:16 +00:00
if [ " $LIBRETRO " ] ; then
2012-07-07 15:08:55 +00:00
echo "Explicit libretro used, disabling dynamic libretro loading ..."
2012-06-12 20:16:16 +00:00
HAVE_DYNAMIC = 'no'
else LIBRETRO = "-lretro"
2011-11-02 15:50:34 +00:00
fi
2012-06-12 20:16:16 +00:00
[ " $HAVE_DYNAMIC " = 'yes' ] || {
check_lib_cxx RETRO " $LIBRETRO " retro_init " $DYLIB " "Cannot find libretro."
add_define_make libretro " $LIBRETRO "
}
2010-12-30 01:52:02 +00:00
2012-12-02 09:59:48 +00:00
if [ " $MAN_DIR " ] ; then
add_define_make MAN_DIR " $MAN_DIR "
else
add_define_make MAN_DIR " ${ PREFIX } /share/man/man1 "
fi
2014-08-29 19:35:56 +00:00
if [ " $OS " = 'Win32' ] ; then
HAVE_THREADS = yes
HAVE_DYLIB = yes
else
check_lib THREADS " $PTHREADLIB " pthread_create
check_lib DYLIB " $DYLIB " dlopen
fi
2012-01-24 20:00:30 +00:00
2015-01-27 23:49:43 +00:00
check_lib NETWORKING " $SOCKETLIB " socket "" " $SOCKETHEADER "
2014-10-29 00:30:12 +00:00
2015-01-27 23:49:43 +00:00
if [ " $HAVE_NETWORKING " = 'yes' ] ; then
2012-01-24 20:00:30 +00:00
HAVE_GETADDRINFO = auto
2014-08-28 16:41:12 +00:00
check_lib GETADDRINFO " $SOCKETLIB " getaddrinfo
2012-06-12 20:16:16 +00:00
if [ " $HAVE_GETADDRINFO " = 'yes' ] ; then
HAVE_SOCKET_LEGACY = 'no'
2012-01-24 20:00:30 +00:00
else
2012-06-12 20:16:16 +00:00
HAVE_SOCKET_LEGACY = 'yes'
2012-01-24 20:00:30 +00:00
fi
2012-06-12 20:16:16 +00:00
HAVE_NETWORK_CMD = 'yes'
2012-05-27 12:23:30 +00:00
else
2012-06-12 20:16:16 +00:00
HAVE_NETWORK_CMD = 'no'
2015-01-27 23:29:47 +00:00
HAVE_NETPLAY = 'no'
2012-01-24 20:00:30 +00:00
fi
2014-08-28 16:41:12 +00:00
check_lib STDIN_CMD " $CLIB " fcntl
2012-07-24 00:47:28 +00:00
if [ " $HAVE_NETWORK_CMD " = "yes" ] || [ " $HAVE_STDIN_CMD " = "yes" ] ; then
HAVE_COMMAND = 'yes'
else
HAVE_COMMAND = 'no'
fi
2014-08-28 16:41:12 +00:00
check_lib GETOPT_LONG " $CLIB " getopt_long
2011-03-07 19:22:55 +00:00
2012-06-12 20:16:16 +00:00
if [ " $HAVE_DYLIB " = 'no' ] && [ " $HAVE_DYNAMIC " = 'yes' ] ; then
2012-07-06 14:00:36 +00:00
echo "Dynamic loading of libretro is enabled, but your platform does not appear to have dlopen(), use --disable-dynamic or --with-libretro=\"-lretro\"" .
2011-11-02 15:50:34 +00:00
exit 1
fi
2011-06-25 15:15:58 +00:00
check_pkgconf ALSA alsa
2010-12-30 01:52:02 +00:00
check_header OSS sys/soundcard.h
2011-06-16 21:20:12 +00:00
check_header OSS_BSD soundcard.h
check_lib OSS_LIB -lossaudio
2012-10-11 19:00:16 +00:00
if [ " $OS " = 'Darwin' ] ; then
2011-02-04 13:42:26 +00:00
check_lib AL "-framework OpenAL" alcOpenDevice
2013-07-17 20:38:25 +00:00
HAVE_SDL = no
2011-02-04 13:42:26 +00:00
else
check_lib AL -lopenal alcOpenDevice
fi
2011-02-06 22:55:17 +00:00
check_pkgconf RSOUND rsound 1.1
2011-06-25 15:15:58 +00:00
check_pkgconf ROAR libroar
2011-03-13 17:09:27 +00:00
check_pkgconf JACK jack 0.120.1
2011-01-29 00:15:09 +00:00
check_pkgconf PULSE libpulse
2010-12-30 01:52:02 +00:00
2011-08-08 15:27:52 +00:00
check_lib COREAUDIO "-framework AudioUnit" AudioUnitInitialize
2012-09-28 21:34:19 +00:00
check_pkgconf SDL sdl 1.2.10
2014-08-11 04:56:44 +00:00
check_pkgconf SDL2 sdl2 2.0.0
2010-12-30 01:52:02 +00:00
2014-08-11 16:03:51 +00:00
if [ " $HAVE_SDL2 " = 'yes' ] ; then
if [ " $HAVE_SDL2 " = 'yes' ] && [ " $HAVE_SDL " = 'yes' ] ; then
2014-08-10 16:35:18 +00:00
echo "SDL drivers will be replaced by SDL2 ones."
HAVE_SDL = no
2014-08-11 16:03:51 +00:00
elif [ " $HAVE_SDL2 " = 'no' ] ; then
2014-08-10 16:35:18 +00:00
echo "SDL2 not found, skipping."
HAVE_SDL2 = no
fi
fi
2014-08-29 19:35:56 +00:00
if [ " $OS " = 'Win32' ] ; then
check_lib DINPUT -ldinput8
check_lib D3D9 -ld3d9
check_lib DSOUND -ldsound
if [ " $HAVE_DINPUT " != 'no' ] ; then
HAVE_WINXINPUT = yes
fi
HAVE_XAUDIO = yes
2014-10-22 17:18:56 +00:00
else
HAVE_D3D9 = no
2014-08-29 19:35:56 +00:00
fi
2013-07-05 16:15:42 +00:00
if [ " $HAVE_OPENGL " != 'no' ] && [ " $HAVE_GLES " != 'yes' ] ; then
2012-10-14 13:54:48 +00:00
if [ " $OS " = 'Darwin' ] ; then
2012-10-14 18:31:59 +00:00
check_lib CG "-framework Cg" cgCreateContext
2014-09-16 20:45:45 +00:00
[ " $HAVE_CG " = 'yes' ] && CG_LIBS = '-framework Cg'
elif [ " $OS " = 'Win32' ] ; then
check_lib_cxx CG -lcg cgCreateContext
[ " $HAVE_CG " = 'yes' ] && CG_LIBS = '-lcg -lcgGL'
2012-10-14 13:54:48 +00:00
else
# On some distros, -lCg doesn't link against -lstdc++ it seems ...
check_lib_cxx CG -lCg cgCreateContext
2014-09-16 20:45:45 +00:00
[ " $HAVE_CG " = 'yes' ] && CG_LIBS = '-lCg -lCgGL'
2012-10-14 13:54:48 +00:00
fi
2014-09-16 21:00:12 +00:00
# fix undefined variables
2014-09-16 22:11:02 +00:00
PKG_CONF_USED = " $PKG_CONF_USED CG "
2011-11-01 17:24:43 +00:00
else
2013-07-05 16:15:42 +00:00
echo "Ignoring Cg. Desktop OpenGL is not enabled."
2012-06-12 20:16:16 +00:00
HAVE_CG = 'no'
2011-11-01 17:24:43 +00:00
fi
2011-08-24 14:12:38 +00:00
2013-01-12 13:05:05 +00:00
check_pkgconf ZLIB zlib
2010-12-30 02:02:30 +00:00
2012-06-12 20:16:16 +00:00
if [ " $HAVE_THREADS " != 'no' ] ; then
if [ " $HAVE_FFMPEG " != 'no' ] ; then
2012-11-24 23:25:57 +00:00
check_pkgconf AVCODEC libavcodec 54
check_pkgconf AVFORMAT libavformat 54
check_pkgconf AVUTIL libavutil 51
check_pkgconf SWSCALE libswscale 2.1
2014-03-31 22:09:18 +00:00
check_header AV_CHANNEL_LAYOUT libavutil/channel_layout.h
2012-11-23 21:46:21 +00:00
( [ " $HAVE_FFMPEG " = 'auto' ] && ( [ " $HAVE_AVCODEC " = 'no' ] || [ " $HAVE_AVFORMAT " = 'no' ] || [ " $HAVE_AVUTIL " = 'no' ] || [ " $HAVE_SWSCALE " = 'no' ] ) && HAVE_FFMPEG = 'no' ) || HAVE_FFMPEG = 'yes'
2011-11-30 16:46:58 +00:00
fi
else
echo "Not building with threading support. Will skip FFmpeg."
2012-06-12 20:16:16 +00:00
HAVE_FFMPEG = 'no'
2011-11-02 15:54:45 +00:00
fi
2014-08-29 19:35:56 +00:00
if [ " $OS " != 'Win32' ] ; then
check_lib DYNAMIC " $DYLIB " dlopen
fi
2010-12-30 12:54:49 +00:00
2012-09-24 23:26:22 +00:00
if [ " $HAVE_KMS " != "no" ] ; then
2012-10-13 19:44:25 +00:00
check_pkgconf GBM gbm 9.0
2012-09-25 10:58:45 +00:00
check_pkgconf DRM libdrm
2012-10-01 20:57:33 +00:00
if [ " $HAVE_GBM " = "yes" ] && [ " $HAVE_DRM " = "yes" ] && [ " $HAVE_EGL " = "yes" ] ; then
2012-09-16 19:39:40 +00:00
HAVE_KMS = yes
2012-09-24 23:26:22 +00:00
elif [ " $HAVE_KMS " = "yes" ] ; then
2012-10-01 20:57:33 +00:00
echo "Cannot find libgbm, libdrm and EGL libraries required for KMS. Compile without --enable-kms."
2012-09-24 23:26:22 +00:00
exit 1
else
HAVE_KMS = no
2012-09-16 19:39:40 +00:00
fi
fi
2012-09-18 10:16:27 +00:00
2013-01-02 14:05:55 +00:00
check_pkgconf LIBXML2 libxml-2.0
2012-09-25 10:58:45 +00:00
2012-12-12 00:34:01 +00:00
if [ " $HAVE_EGL " = "yes" ] ; then
if [ " $HAVE_GLES " != "no" ] ; then
2013-12-13 16:54:28 +00:00
if [ " $GLES_LIBS " ] || [ " $GLES_CFLAGS " ] ; then
echo " Using custom OpenGLES CFLAGS ( $GLES_CFLAGS ) and LDFLAGS ( $GLES_LIBS ). "
add_define_make GLES_LIBS " $GLES_LIBS "
add_define_make GLES_CFLAGS " $GLES_CFLAGS "
else
HAVE_GLES = auto check_pkgconf GLES glesv2
[ " $HAVE_GLES " = "no" ] && HAVE_GLES = auto check_lib GLES " -lGLESv2 $EXTRA_GL_LIBS " && add_define_make GLES_LIBS " -lGLESv2 $EXTRA_GL_LIBS "
fi
2012-12-12 00:34:01 +00:00
fi
if [ " $HAVE_VG " != "no" ] ; then
check_pkgconf VG vg
if [ " $HAVE_VG " = "no" ] ; then
HAVE_VG = auto check_lib VG " -lOpenVG $EXTRA_GL_LIBS "
[ " $HAVE_VG " = "yes" ] && VG_LIBS = -lOpenVG
fi
fi
else
2012-10-01 20:57:33 +00:00
HAVE_VG = no
HAVE_GLES = no
2012-09-18 23:41:58 +00:00
fi
2012-09-16 19:39:40 +00:00
2013-11-10 15:05:21 +00:00
check_pkgconf V4L2 libv4l2
2013-05-18 13:29:42 +00:00
if [ " $OS " = 'Darwin' ] ; then
check_lib FBO "-framework OpenGL" glFramebufferTexture2D
2014-08-29 19:35:56 +00:00
elif [ " $OS " = 'Win32' ] ; then
HAVE_FBO = yes
2013-05-18 13:29:42 +00:00
else
if [ " $HAVE_GLES " = "yes" ] ; then
[ $HAVE_FBO != "no" ] && HAVE_FBO = yes
else
check_lib FBO -lGL glFramebufferTexture2D
fi
fi
2011-01-22 23:27:20 +00:00
check_pkgconf FREETYPE freetype2
2011-10-23 10:48:44 +00:00
check_pkgconf X11 x11
2012-10-12 17:05:29 +00:00
[ " $HAVE_X11 " = "no" ] && HAVE_XEXT = no && HAVE_XF86VM = no && HAVE_XINERAMA = no
2012-09-28 21:43:58 +00:00
2014-08-09 19:35:27 +00:00
check_pkgconf WAYLAND wayland-egl
2014-05-22 14:53:33 +00:00
check_pkgconf XKBCOMMON xkbcommon 0.3.2
2011-10-23 10:48:44 +00:00
check_pkgconf XEXT xext
2012-09-29 08:47:55 +00:00
check_pkgconf XF86VM xxf86vm
2012-10-12 17:05:29 +00:00
check_pkgconf XINERAMA xinerama
2012-09-29 08:47:55 +00:00
if [ " $HAVE_X11 " = 'yes' ] && [ " $HAVE_XEXT " = 'yes' ] && [ " $HAVE_XF86VM " = 'yes' ] ; then
2011-10-23 10:48:44 +00:00
check_pkgconf XVIDEO xv
else
2012-09-29 09:59:08 +00:00
echo "X11, Xext or xf86vm not present. Skipping X11 code paths."
2012-09-29 08:47:55 +00:00
HAVE_X11 = 'no'
2012-06-12 20:16:16 +00:00
HAVE_XVIDEO = 'no'
2011-10-23 10:48:44 +00:00
fi
2011-01-22 23:27:20 +00:00
2014-06-24 18:16:31 +00:00
if [ " $HAVE_UDEV " != "no" ] ; then
check_pkgconf UDEV libudev
if [ " $HAVE_UDEV " = "no" ] ; then
HAVE_UDEV = auto && check_lib UDEV "-ludev"
[ " $HAVE_UDEV " = "yes" ] && UDEV_LIBS = -ludev
fi
2014-06-05 12:21:17 +00:00
fi
2013-09-25 17:32:18 +00:00
2014-10-04 21:04:38 +00:00
check_header PARPORT linux/parport.h
check_header PARPORT linux/ppdev.h
2014-08-28 16:41:12 +00:00
check_lib STRL " $CLIB " strlcpy
check_lib STRCASESTR " $CLIB " strcasestr
check_lib MMAP " $CLIB " mmap
2011-04-03 20:16:59 +00:00
2011-06-06 15:44:05 +00:00
check_pkgconf PYTHON python3
2012-12-09 15:28:49 +00:00
check_macro NEON __ARM_NEON__
2012-06-12 20:16:16 +00:00
add_define_make OS " $OS "
2011-06-25 15:22:47 +00:00
2011-01-05 18:51:19 +00:00
# Creates config.mk and config.h.
2013-05-27 23:59:06 +00:00
add_define_make GLOBAL_CONFIG_DIR " $GLOBAL_CONFIG_DIR "
2015-01-27 23:49:43 +00:00
VARS = "RGUI LAKKA GLUI XMB ALSA OSS OSS_BSD OSS_LIB AL RSOUND ROAR JACK COREAUDIO PULSE SDL SDL2 D3D9 DINPUT WINXINPUT DSOUND XAUDIO OPENGL EXYNOS OMAP GLES GLES3 VG EGL KMS GBM DRM DYLIB GETOPT_LONG THREADS CG LIBXML2 ZLIB DYNAMIC FFMPEG AVCODEC AVFORMAT AVUTIL SWSCALE FREETYPE XKBCOMMON XVIDEO X11 XEXT XF86VM XINERAMA WAYLAND MALI_FBDEV VIVANTE_FBDEV NETWORKING NETPLAY NETWORK_CMD STDIN_CMD COMMAND SOCKET_LEGACY FBO STRL STRCASESTR MMAP PYTHON FFMPEG_ALLOC_CONTEXT3 FFMPEG_AVCODEC_OPEN2 FFMPEG_AVIO_OPEN FFMPEG_AVFORMAT_WRITE_HEADER FFMPEG_AVFORMAT_NEW_STREAM FFMPEG_AVCODEC_ENCODE_AUDIO2 FFMPEG_AVCODEC_ENCODE_VIDEO2 BSV_MOVIE VIDEOCORE NEON FLOATHARD FLOATSOFTFP UDEV V4L2 AV_CHANNEL_LAYOUT 7ZIP PARPORT"
2010-12-30 01:52:02 +00:00
create_config_make config.mk $VARS
2012-06-17 11:11:12 +00:00
create_config_header config.h $VARS