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




dnl Debug symbols 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], 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 Find which version of SDL to use (always required on Linux or Win32)
dnl dnl
dnl Defined C/C++ macros: dnl Defined C/C++ macros:
@@ -169,27 +182,22 @@ if test "x${ac_cv_my_have_sdl}" = xno; then
else else
AC_DEFINE(LOL_USE_SDL, 1, Define to 1 to use SDL) AC_DEFINE(LOL_USE_SDL, 1, Define to 1 to use SDL)
fi 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 if test "x${ac_cv_my_have_sdl_mixer}" = xno; then
AC_MSG_WARN([SDL_mixer not found]) AC_MSG_WARN([SDL_mixer not found])
else else
AC_DEFINE(LOL_USE_SDL_MIXER, 1, Define to 1 to use SDL_mixer) AC_DEFINE(LOL_USE_SDL_MIXER, 1, Define to 1 to use SDL_mixer)
fi 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 if test "x${ac_cv_my_have_sdl_image}" = xno; then
AC_MSG_WARN([SDL_image not found]) AC_MSG_WARN([SDL_image not found])
else else
AC_DEFINE(LOL_USE_SDL_IMAGE, 1, Define to 1 to use SDL_image) AC_DEFINE(LOL_USE_SDL_IMAGE, 1, Define to 1 to use SDL_image)
fi 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 if test "x${ac_cv_my_have_old_sdl}" != xno; then
AC_DEFINE(LOL_USE_OLD_SDL, 1, Define to 1 to use SDL) AC_DEFINE(LOL_USE_OLD_SDL, 1, Define to 1 to use SDL)
fi 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, AC_ARG_ENABLE(subproject,
[ --enable-subproject build as a subproject (default no)]) [ --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, AC_ARG_ENABLE(test,
[ --enable-test build test suite (default yes)]) [ --enable-test build test suite (default yes)])
AC_ARG_ENABLE(tools, 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/fps.cpp debug/fps.h debug/lines.cpp \
debug/record.cpp debug/record.h debug/stats.cpp debug/stats.h debug/record.cpp debug/record.h debug/stats.cpp debug/stats.h


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


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


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

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


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




Loading…
Cancel
Save