Browse Source

Allow to build without SDL or ffmpeg.

Linux-only for now. This will be necessary for projects that do not
actually use the rendering engine, such as LolRemez.
legacy
Sam Hocevar 7 years ago
parent
commit
7be150b0e4
6 changed files with 103 additions and 35 deletions
  1. +1
    -27
      build/autotools/m4/lol-conf.m4
  2. +53
    -0
      build/autotools/m4/lol-ffmpeg.m4
  3. +14
    -6
      build/autotools/m4/lol-sdl.m4
  4. +5
    -0
      configure.ac
  5. +2
    -0
      src/Makefile.am
  6. +28
    -2
      src/application/application.cpp

+ 1
- 27
build/autotools/m4/lol-conf.m4 View File

@@ -162,33 +162,6 @@ fi
AM_CONDITIONAL(LOL_USE_GDIPLUS, test "${ac_cv_my_have_gdiplus}" = "yes")


dnl Use libavcodec? (required for movie encoding)
ac_cv_my_have_ffmpeg="yes"
PKG_CHECK_MODULES([LIBAVCODEC], [libavcodec], [:], [ac_cv_my_have_ffmpeg=no])
PKG_CHECK_MODULES([LIBAVUTIL], [libavutil], [:], [ac_cv_my_have_ffmpeg=no])
PKG_CHECK_MODULES([LIBAVFORMAT], [libavformat], [:], [ac_cv_my_have_ffmpeg=no])
PKG_CHECK_MODULES([LIBSWSCALE], [libswscale], [:], [ac_cv_my_have_ffmpeg=no])
if test "${ac_cv_my_have_ffmpeg}" = "no"; then
ac_cv_my_have_ffmpeg="yes"
AC_CHECK_HEADERS(libavcodec/avcodec.h, [:], [ac_cv_my_have_ffmpeg=no])
AC_CHECK_HEADERS(libavformat/avformat.h, [:], [ac_cv_my_have_ffmpeg=no])
AC_CHECK_HEADERS(libswscale/swscale.h, [:], [ac_cv_my_have_ffmpeg=no])
if test "${ac_cv_my_have_ffmpeg}" = "yes"; then
LIBAVCODEC_LIBS="-lavcodec"
LIBAVUTIL_LIBS="-lavutil"
LIBAVFORMAT_LIBS="-lavformat"
LIBSWSCALE_LIBS="-lswscale"
AC_CHECK_LIB(ws2_32, main, LOL_LIBS="${LOL_LIBS} -lws2_32")
fi
fi
if test "${ac_cv_my_have_ffmpeg}" != "no"; then
AC_DEFINE(LOL_USE_FFMPEG, 1, Define to 1 to use FFmpeg)
LOL_CFLAGS="${LOL_CFLAGS} ${LIBAVFORMAT_CFLAGS} ${LIBAVUTIL_CFLAGS} ${LIBAVCODEC_CFLAGS} ${LIBSWSCALE_CFLAGS}"
LOL_LIBS="${LOL_LIBS} ${LIBAVFORMAT_LIBS} ${LIBAVUTIL_LIBS} ${LIBAVCODEC_LIBS} ${LIBSWSCALE_LIBS}"
fi
AM_CONDITIONAL(LOL_USE_FFMPEG, test "${ac_cv_my_have_ffmpeg}" != "no")


dnl Are we building using MinGW?
LOL_TRY_CXXFLAGS(-mwindows -mwin32,
[AM_CXXFLAGS="${AM_CXXFLAGS} -mwindows -mwin32"
@@ -223,6 +196,7 @@ LOL_TRY_LDFLAGS(-framework UIKit,
dnl Other complex checks
LOL_AC_CHECK_OPENGL()
LOL_AC_CHECK_SDL()
LOL_AC_CHECK_FFMPEG()


dnl Debug symbols


+ 53
- 0
build/autotools/m4/lol-ffmpeg.m4 View File

@@ -0,0 +1,53 @@
dnl
dnl Lol Engine
dnl
dnl Copyright © 2010—2016 Sam Hocevar <sam@hocevar.net>
dnl
dnl Lol Engine is free software. It comes without any warranty, to
dnl the extent permitted by applicable law. You can redistribute it
dnl and/or modify it under the terms of the Do What the Fuck You Want
dnl to Public License, Version 2, as published by the WTFPL Task Force.
dnl See http://www.wtfpl.net/ for more details.
dnl


# LOL_AC_CHECK_FFMPEG()
# ---------------------
AC_DEFUN([LOL_AC_CHECK_FFMPEG],
[
if test "${enable_ffmpeg}" != "no"; then
LOL_AC_CHECK_FFMPEG_INNER()
fi
AM_CONDITIONAL(LOL_USE_FFMPEG, test "${ac_cv_my_have_ffmpeg}" != "no")
])

# LOL_AC_CHECK_FFMPEG_INNER()
# ---------------------------
AC_DEFUN([LOL_AC_CHECK_FFMPEG_INNER],
[
ac_cv_my_have_ffmpeg="yes"
PKG_CHECK_MODULES([LIBAVCODEC], [libavcodec], [:], [ac_cv_my_have_ffmpeg=no])
PKG_CHECK_MODULES([LIBAVUTIL], [libavutil], [:], [ac_cv_my_have_ffmpeg=no])
PKG_CHECK_MODULES([LIBAVFORMAT], [libavformat], [:], [ac_cv_my_have_ffmpeg=no])
PKG_CHECK_MODULES([LIBSWSCALE], [libswscale], [:], [ac_cv_my_have_ffmpeg=no])
if test "${ac_cv_my_have_ffmpeg}" != "yes"; then
ac_cv_my_have_ffmpeg="yes"
AC_CHECK_HEADERS(libavcodec/avcodec.h, [:], [ac_cv_my_have_ffmpeg=no])
AC_CHECK_HEADERS(libavformat/avformat.h, [:], [ac_cv_my_have_ffmpeg=no])
AC_CHECK_HEADERS(libswscale/swscale.h, [:], [ac_cv_my_have_ffmpeg=no])
if test "${ac_cv_my_have_ffmpeg}" = "yes"; then
LIBAVCODEC_LIBS="-lavcodec"
LIBAVUTIL_LIBS="-lavutil"
LIBAVFORMAT_LIBS="-lavformat"
LIBSWSCALE_LIBS="-lswscale"
AC_CHECK_LIB(ws2_32, main, LOL_LIBS="${LOL_LIBS} -lws2_32")
fi
fi
if test "${ac_cv_my_have_ffmpeg}" = "yes"; then
AC_DEFINE(LOL_USE_FFMPEG, 1, Define to 1 to use FFmpeg)
LOL_CFLAGS="${LOL_CFLAGS} ${LIBAVFORMAT_CFLAGS} ${LIBAVUTIL_CFLAGS} ${LIBAVCODEC_CFLAGS} ${LIBSWSCALE_CFLAGS}"
LOL_LIBS="${LOL_LIBS} ${LIBAVFORMAT_LIBS} ${LIBAVUTIL_LIBS} ${LIBAVCODEC_LIBS} ${LIBSWSCALE_LIBS}"
fi

]) # LOL_AC_CHECK_FFMPEG_INNER


+ 14
- 6
build/autotools/m4/lol-sdl.m4 View File

@@ -15,6 +15,19 @@ dnl
# ------------------
AC_DEFUN([LOL_AC_CHECK_SDL],
[
if test "${enable_sdl}" != "no"; then
LOL_AC_CHECK_SDL_INNER()
fi
AM_CONDITIONAL(LOL_USE_SDL, test "x${ac_cv_my_have_sdl}" = xyes)
AM_CONDITIONAL(LOL_USE_SDL_MIXER, test "x${ac_cv_my_have_sdl_mixer}" = xyes)
AM_CONDITIONAL(LOL_USE_SDL_IMAGE, test "x${ac_cv_my_have_sdl_image}" = xyes)
AM_CONDITIONAL(LOL_USE_OLD_SDL, test "x${ac_cv_my_have_old_sdl}" = xyes)
])

# LOL_AC_CHECK_SDL_INNER()
# ------------------------
AC_DEFUN([LOL_AC_CHECK_SDL_INNER],
[
dnl Find which version of SDL to use (always required on Linux or Win32)
dnl
dnl Defined C/C++ macros:
@@ -169,27 +182,22 @@ if test "x${ac_cv_my_have_sdl}" = xno; then
else
AC_DEFINE(LOL_USE_SDL, 1, Define to 1 to use SDL)
fi
AM_CONDITIONAL(LOL_USE_SDL, test "x${ac_cv_my_have_sdl}" = xyes)

if test "x${ac_cv_my_have_sdl_mixer}" = xno; then
AC_MSG_WARN([SDL_mixer not found])
else
AC_DEFINE(LOL_USE_SDL_MIXER, 1, Define to 1 to use SDL_mixer)
fi
AM_CONDITIONAL(LOL_USE_SDL_MIXER, test "x${ac_cv_my_have_sdl_mixer}" = xyes)

if test "x${ac_cv_my_have_sdl_image}" = xno; then
AC_MSG_WARN([SDL_image not found])
else
AC_DEFINE(LOL_USE_SDL_IMAGE, 1, Define to 1 to use SDL_image)
fi
AM_CONDITIONAL(LOL_USE_SDL_IMAGE, test "x${ac_cv_my_have_sdl_image}" = xyes)

if test "x${ac_cv_my_have_old_sdl}" != xno; then
AC_DEFINE(LOL_USE_OLD_SDL, 1, Define to 1 to use SDL)
fi
AM_CONDITIONAL(LOL_USE_OLD_SDL, test "x${ac_cv_my_have_old_sdl}" = xyes)

]) # LOL_AC_CHECK_SDL

]) # LOL_AC_CHECK_SDL_INNER


+ 5
- 0
configure.ac View File

@@ -80,6 +80,11 @@ AC_ARG_ENABLE(experimental,
AC_ARG_ENABLE(subproject,
[ --enable-subproject build as a subproject (default no)])

AC_ARG_ENABLE(ffmpeg,
[ --enable-ffmpeg build using FFmpeg (default autodetected)])
AC_ARG_ENABLE(sdl,
[ --enable-sdl build using SDL (default autodetected)])

AC_ARG_ENABLE(test,
[ --enable-test build test suite (default yes)])
AC_ARG_ENABLE(tools,


+ 2
- 0
src/Makefile.am View File

@@ -140,9 +140,11 @@ liblol_core_sources = \
debug/fps.cpp debug/fps.h debug/lines.cpp \
debug/record.cpp debug/record.h debug/stats.cpp debug/stats.h

if LOL_USE_SDL
sdl_sources = \
platform/sdl/sdlapp.cpp platform/sdl/sdlapp.h \
platform/sdl/sdlinput.cpp platform/sdl/sdlinput.h
endif

d3d9_sources = \
platform/d3d9/d3d9input.cpp platform/d3d9/d3d9input.h


+ 28
- 2
src/application/application.cpp View File

@@ -32,6 +32,32 @@
namespace lol
{

class null_display
{
friend class ApplicationDisplayData;

public:
null_display(char const *, ivec2) {}
virtual ~null_display() {}

protected:
void SetResolution(ivec2) {}
void SetPosition(ivec2) {}

void Enable() {}
void Disable() {}
};

class null_app
{
public:
null_app(char const *, ivec2, float) {}
virtual ~null_app() {}

void ShowPointer(bool) {}
void Tick() {}
};

//-----------------------------------------------------------------------------
class ApplicationDisplayData
{
@@ -69,7 +95,7 @@ protected:
/* FIXME: this macro is only deactivated if we include "lolgl.h" */
//NOT HANDLED YET
#else
# error No application class available on this platform
null_display display;
#endif
};

@@ -129,7 +155,7 @@ class ApplicationData
/* FIXME: this macro is only deactivated if we include "lolgl.h" */
EglApp app;
#else
# error No application class available on this platform
null_app app;
#endif
};



Loading…
Cancel
Save