浏览代码

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 8 年前
父节点
当前提交
7be150b0e4
共有 6 个文件被更改,包括 103 次插入35 次删除
  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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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 查看文件

@@ -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
}; };




正在加载...
取消
保存