diff --git a/CMakeLists.txt b/CMakeLists.txt index fbd64b6..7a4f463 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,10 +7,24 @@ include_directories (${CMAKE_BINARY_DIR}/include) link_directories (${CMAKE_BINARY_DIR}/lib) option (STATIC_BUILD "Build Planet Blupi statically" ON) +option (EMSCRIPTEN "Build Planet Blupi for emscripten toolchain" OFF) + +if (EMSCRIPTEN) + set (BUILD_JS ON) + set (PLATFORM emscripten) +elseif (APPLE) + set (BUILD_DARWIN ON) + set (PLATFORM darwin) +elseif (UNIX) + set (BUILD_LINUX ON) + set (PLATFORM linux) +elseif (MINGW OR WIN32) + set (BUILD_WINDOWS ON) + set (PLATFORM windows) +endif () # It's an hack in order to be able to link statically planetblupi on darwin. -if (APPLE) - set (ISAPPLE 1) +if (BUILD_DARWIN) set (CMD_LDFLAGS "-L${CMAKE_BINARY_DIR}/lib -framework AudioToolBox -framework AudioUnit -framework CoreAudio -framework CoreFoundation -framework Cocoa -framework OpenGL -framework IOKit -framework CoreVideo -framework Carbon") if (OLD_SDK) @@ -21,136 +35,240 @@ if (APPLE) set (CMD_CFLAGS "-isysroot ${CMAKE_OSX_SYSROOT} -mmacosx-version-min=${OSX_SDK_VERSION} ${CMAKE_C_FLAGS}") endif () set (CMD_CPPFLAGS "-I${CMAKE_BINARY_DIR}/include") +elseif (BUILD_JS) + set (EMSCRIPTEN_FLAGS + "-s USE_ZLIB=1 -s USE_LIBPNG=1 -s USE_SDL=2 -s USE_SDL_IMAGE=2 -s SDL2_IMAGE_FORMATS=['png'] -s USE_OGG=1 -s USE_VORBIS=1 -s TOTAL_MEMORY=256MB -s WASM=1" + ) + set (CMD_CXXFLAGS ${EMSCRIPTEN_FLAGS}) + set (CMD_CFLAGS ${EMSCRIPTEN_FLAGS}) + set (CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${EMSCRIPTEN_FLAGS}) + set (CMAKE_C_FLAGS ${CMAKE_C_FLAGS} ${EMSCRIPTEN_FLAGS}) endif () configure_file (cmd.sh.in cmd.sh @ONLY) set (CMD ${CMAKE_BINARY_DIR}/cmd.sh) +############### +## Dependencies +############### + macro (DLEXT in out) if (NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/externals/${out}") file (DOWNLOAD "${in}" "${CMAKE_CURRENT_SOURCE_DIR}/externals/${out}" SHOW_PROGRESS) endif () endmacro (DLEXT) -DLEXT (http://www.zlib.net/zlib-1.2.11.tar.gz zlib.tar.gz) -DLEXT (https://github.com/vietjtnguyen/argagg/archive/0.4.6.tar.gz argagg.tar.gz) -DLEXT (https://curl.haxx.se/download/curl-7.55.0.tar.xz curl.tar.xz) -DLEXT (http://mirror.switch.ch/ftp/mirror/gnu/gettext/gettext-0.19.8.1.tar.xz gettext.tar.xz) -DLEXT (ftp://ftp-osl.osuosl.org/pub/libpng/src/libpng16/libpng-1.6.34.tar.xz libpng.tar.xz) -DLEXT (http://www.ffmpeg.org/releases/ffmpeg-3.4.1.tar.xz ffmpeg.tar.xz) -DLEXT (http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz libogg.tar.xz) -DLEXT (http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.xz libvorbis.tar.xz) -DLEXT (https://www.libsdl.org/release/SDL2-2.0.8.tar.gz SDL2.tar.bz2) -DLEXT (https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.3.tar.gz SDL2_image.tar.gz) -DLEXT (https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.2.tar.gz SDL2_mixer.tar.gz) +set (HAS_KITCHENSINK ON) -if (NOT APPLE) - DLEXT (https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz libiconv.tar.gz) +DLEXT (https://github.com/vietjtnguyen/argagg/archive/0.4.6.tar.gz argagg.tar.gz) +set (HAS_ARGAGG ON) +DLEXT (http://www.ffmpeg.org/releases/ffmpeg-3.4.1.tar.xz ffmpeg.tar.xz) +set (HAS_FFMPEG ON) + +if (BUILD_JS) + DLEXT (https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.1.tar.gz SDL2_mixer.tar.gz) +else () + DLEXT (https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.2.tar.gz SDL2_mixer.tar.gz) +endif () +set (HAS_SDLMIXER ON) + +if (NOT BUILD_JS) + DLEXT (http://www.zlib.net/zlib-1.2.11.tar.gz zlib.tar.gz) + set (HAS_ZLIB ON) + DLEXT (https://curl.haxx.se/download/curl-7.55.0.tar.xz curl.tar.xz) + set (HAS_CURL ON) + DLEXT (http://mirror.switch.ch/ftp/mirror/gnu/gettext/gettext-0.19.8.1.tar.xz gettext.tar.xz) + set (HAS_GETTEXT ON) + DLEXT (ftp://ftp-osl.osuosl.org/pub/libpng/src/libpng16/libpng-1.6.34.tar.xz libpng.tar.xz) + set (HAS_PNG ON) + DLEXT (http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz libogg.tar.xz) + set (HAS_OGG ON) + DLEXT (http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.xz libvorbis.tar.xz) + set (HAS_VORBIS ON) + DLEXT (https://www.libsdl.org/release/SDL2-2.0.8.tar.gz SDL2.tar.bz2) + set (HAS_SDL ON) + DLEXT (https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.3.tar.gz SDL2_image.tar.gz) + set (HAS_SDLIMAGE ON) endif () -if (UNIX AND NOT APPLE) +if (BUILD_LINUX AND BUILD_WINDOWS) + DLEXT (https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz libiconv.tar.gz) + set (HAS_ICONV ON) +endif () + +if (BUILD_LINUX) DLEXT (ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.1.4.1.tar.bz2 alsa-lib.tar.bz2) + set (HAS_ALSA ON) DLEXT (http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28.tar.gz libsndfile.tar.gz) + set (HAS_SNDFILE ON) DLEXT (https://freedesktop.org/software/pulseaudio/releases/pulseaudio-11.1.tar.xz pulseaudio.tar.xz) DLEXT (http://www.linuxfromscratch.org/patches/blfs/svn/pulseaudio-11.1-glibc_2.27_fix-1.patch pulseaudio.patch) + set (HAS_PULSEAUDIO ON) endif () -######### -## zlib -######### +message (STATUS "Build projects for ${PLATFORM}") +if (HAS_ZLIB) + message (STATUS " * zlib") +endif () +if (HAS_GETTEXT) + message (STATUS " * gettext") +endif () +if (HAS_ARGAGG) + message (STATUS " * argagg") +endif () +if (HAS_CURL) + message (STATUS " * libcurl") +endif () +if (HAS_ICONV) + message (STATUS " * libiconv") +endif () +if (HAS_PNG) + message (STATUS " * libpng") +endif () +if (HAS_FFMPEG) + message (STATUS " * FFmpeg") +endif () +if (HAS_SDL) + message (STATUS " * SDL2") +endif () +if (HAS_SDLIMAGE) + message (STATUS " * SDL2_image") +endif () +if (HAS_SDLMIXER) + message (STATUS " * SDL2_mixer") +endif () +if (HAS_KITCHENSINK) + message (STATUS " * SDL_kitchensink") +endif () +if (HAS_ALSA) + message (STATUS " * libasound") +endif () +if (HAS_SNDFILE) + message (STATUS " * libsndfile") +endif () +if (HAS_PULSEAUDIO) + message (STATUS " * libpulse") +endif () +if (HAS_OGG) + message (STATUS " * libogg") +endif () +if (HAS_VORBIS) + message (STATUS " * libvorbis") +endif () -if (WIN32) - ExternalProject_Add (zlib_Project - URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/zlib.tar.gz - PREFIX ${CMAKE_BINARY_DIR} - CONFIGURE_COMMAND - BUILD_COMMAND ${CMD} make -fwin32/Makefile.gcc - INSTALL_COMMAND ${CMD} make install -fwin32/Makefile.gcc - BUILD_IN_SOURCE 1 - INSTALL_DIR ${CMAKE_BINARY_DIR} - ) -else () - ExternalProject_Add (zlib_Project - URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/zlib.tar.gz - PREFIX ${CMAKE_BINARY_DIR} - CONFIGURE_COMMAND ${CMD} ./configure - --prefix=${CMAKE_BINARY_DIR} - --static - BUILD_COMMAND ${CMD} make - INSTALL_COMMAND ${CMD} make install - BUILD_IN_SOURCE 1 - INSTALL_DIR ${CMAKE_BINARY_DIR} - ) +set (planetblupi_DEPS) + +####### +## zlib +####### + +if (HAS_ZLIB) + if (BUILD_WINDOWS) + ExternalProject_Add (zlib_Project + URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/zlib.tar.gz + PREFIX ${CMAKE_BINARY_DIR} + CONFIGURE_COMMAND + BUILD_COMMAND ${CMD} make -fwin32/Makefile.gcc + INSTALL_COMMAND ${CMD} make install -fwin32/Makefile.gcc + BUILD_IN_SOURCE 1 + INSTALL_DIR ${CMAKE_BINARY_DIR} + ) + else () + ExternalProject_Add (zlib_Project + URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/zlib.tar.gz + PREFIX ${CMAKE_BINARY_DIR} + CONFIGURE_COMMAND ${CMD} ./configure + --prefix=${CMAKE_BINARY_DIR} + --static + BUILD_COMMAND ${CMD} make + INSTALL_COMMAND ${CMD} make install + BUILD_IN_SOURCE 1 + INSTALL_DIR ${CMAKE_BINARY_DIR} + ) + endif () endif () ######### ## argagg ######### -ExternalProject_Add (argagg_Project - URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/argagg.tar.gz - PREFIX ${CMAKE_BINARY_DIR} - CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}" -) +if (HAS_ARGAGG) + ExternalProject_Add (argagg_Project + URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/argagg.tar.gz + PREFIX ${CMAKE_BINARY_DIR} + CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}" + ) + + set (planetblupi_DEPS ${planetblupi_DEPS} argagg_Project) +endif () ########## ## libcurl ########## -ExternalProject_Add (libcurl_Project - URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/curl.tar.xz - PREFIX ${CMAKE_BINARY_DIR} - CONFIGURE_COMMAND ${CMD} ./configure - --prefix=${CMAKE_BINARY_DIR} - --disable-shared - --enable-static - --enable-http - --disable-ftp - --disable-file - --disable-ldap - --disable-ldaps - --disable-rtsp - --disable-proxy - --disable-dict - --disable-telnet - --disable-tftp - --disable-pop3 - --disable-imap - --disable-smb - --disable-smtp - --disable-gopher - --disable-manual - --disable-libcurl-option - --enable-ipv6 - --disable-sspi - --disable-ntlm-wb - --disable-unix-socket - --without-winssl - --without-darwinssl - --without-ssl - --without-gnutls - --without-polarssl - --without-mbedtls - --without-cyassl - --without-axtls - --without-libpsl - --without-libmetalink - --without-libssh2 - --without-librtmp - --without-nghttp2 - --without-libidn2 - BUILD_COMMAND ${CMD} make - INSTALL_COMMAND ${CMD} make install - BUILD_IN_SOURCE 1 - INSTALL_DIR ${CMAKE_BINARY_DIR} - DEPENDS zlib_Project -) +if (HAS_CURL) + set (libcurl_DEPENDS) + if (HAS_ZLIB) + set (libcurl_DEPENDS ${libcurl_DEPENDS} zlib_Project) + endif () + + ExternalProject_Add (libcurl_Project + URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/curl.tar.xz + PREFIX ${CMAKE_BINARY_DIR} + CONFIGURE_COMMAND ${CMD} ./configure + --prefix=${CMAKE_BINARY_DIR} + --disable-shared + --enable-static + --enable-http + --disable-ftp + --disable-file + --disable-ldap + --disable-ldaps + --disable-rtsp + --disable-proxy + --disable-dict + --disable-telnet + --disable-tftp + --disable-pop3 + --disable-imap + --disable-smb + --disable-smtp + --disable-gopher + --disable-manual + --disable-libcurl-option + --enable-ipv6 + --disable-sspi + --disable-ntlm-wb + --disable-unix-socket + --without-winssl + --without-darwinssl + --without-ssl + --without-gnutls + --without-polarssl + --without-mbedtls + --without-cyassl + --without-axtls + --without-libpsl + --without-libmetalink + --without-libssh2 + --without-librtmp + --without-nghttp2 + --without-libidn2 + BUILD_COMMAND ${CMD} make + INSTALL_COMMAND ${CMD} make install + BUILD_IN_SOURCE 1 + INSTALL_DIR ${CMAKE_BINARY_DIR} + DEPENDS ${libcurl_DEPENDS} + ) + + set (planetblupi_DEPS ${planetblupi_DEPS} libcurl_Project) +endif () ########### ## libiconv ########### -if (NOT APPLE) +if (HAS_ICONV) ExternalProject_Add (libiconv_Project URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/libiconv.tar.gz PREFIX ${CMAKE_BINARY_DIR} @@ -169,97 +287,120 @@ endif () ## gettext ########## -set (gettext_DEPENDS) -if (NOT APPLE) - set (gettext_DEPENDS ${gettext_DEPENDS} libiconv_Project) -endif () +if (HAS_GETTEXT) + set (gettext_DEPENDS) + if (HAS_ICONV) + set (gettext_DEPENDS ${gettext_DEPENDS} libiconv_Project) + endif () -ExternalProject_Add (gettext_Project - URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/gettext.tar.xz - PREFIX ${CMAKE_BINARY_DIR} - CONFIGURE_COMMAND cd gettext-runtime && ${CMD} ./configure - --prefix=${CMAKE_BINARY_DIR} - --disable-shared - --enable-static - BUILD_COMMAND ${CMD} make -C gettext-runtime - INSTALL_COMMAND ${CMD} make -C gettext-runtime install - BUILD_IN_SOURCE 1 - INSTALL_DIR ${CMAKE_BINARY_DIR} - DEPENDS ${gettext_DEPENDS} -) + ExternalProject_Add (gettext_Project + URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/gettext.tar.xz + PREFIX ${CMAKE_BINARY_DIR} + CONFIGURE_COMMAND cd gettext-runtime && ${CMD} ./configure + --prefix=${CMAKE_BINARY_DIR} + --disable-shared + --enable-static + BUILD_COMMAND ${CMD} make -C gettext-runtime + INSTALL_COMMAND ${CMD} make -C gettext-runtime install + BUILD_IN_SOURCE 1 + INSTALL_DIR ${CMAKE_BINARY_DIR} + DEPENDS ${gettext_DEPENDS} + ) + + set (planetblupi_DEPS ${planetblupi_DEPS} gettext_Project) +endif () ######### ## libpng ######### -ExternalProject_Add (libpng_Project - URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/libpng.tar.xz - PREFIX ${CMAKE_BINARY_DIR} - CONFIGURE_COMMAND ${CMD} ./configure - --prefix=${CMAKE_BINARY_DIR} - --disable-shared - --enable-static - BUILD_COMMAND ${CMD} make - INSTALL_COMMAND ${CMD} make install - BUILD_IN_SOURCE 1 - INSTALL_DIR ${CMAKE_BINARY_DIR} - DEPENDS zlib_Project -) +if (HAS_PNG) + ExternalProject_Add (libpng_Project + URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/libpng.tar.xz + PREFIX ${CMAKE_BINARY_DIR} + CONFIGURE_COMMAND ${CMD} ./configure + --prefix=${CMAKE_BINARY_DIR} + --disable-shared + --enable-static + BUILD_COMMAND ${CMD} make + INSTALL_COMMAND ${CMD} make install + BUILD_IN_SOURCE 1 + INSTALL_DIR ${CMAKE_BINARY_DIR} + DEPENDS zlib_Project + ) + + set (planetblupi_DEPS ${planetblupi_DEPS} libpng_Project) +endif () ######### ## FFmpeg ######### -ExternalProject_Add (FFmpeg_Project - URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/ffmpeg.tar.xz - PREFIX ${CMAKE_BINARY_DIR} - CONFIGURE_COMMAND ${CMD} ./configure - --prefix=${CMAKE_BINARY_DIR} - --disable-shared - --enable-static - --disable-iconv - --disable-programs - --disable-doc - --disable-x86asm - --disable-avdevice - --disable-avfilter - --disable-network - --disable-everything - --enable-decoder=cinepak,msvideo1,vorbis - --enable-demuxer=matroska - --enable-protocol=file - --disable-crystalhd - --disable-xvmc - --disable-vaapi - --disable-videotoolbox - --disable-vdpau - --disable-vda - --disable-nvenc - --disable-dxva2 - --disable-d3d11va - --disable-audiotoolbox - --disable-zlib - --disable-bzlib - --disable-lzma - --disable-xlib - --disable-sdl2 - --disable-libxcb - --disable-libxcb-shm - --disable-libxcb-xfixes - --disable-libxcb-shape - --disable-jack - --disable-sndio - BUILD_COMMAND ${CMD} make - INSTALL_COMMAND ${CMD} make install - BUILD_IN_SOURCE 1 - INSTALL_DIR ${CMAKE_BINARY_DIR} -) +if (HAS_FFMPEG) + set (FFMPEG_CONFIGURE) + if (BUILD_JS) + set (FFMPEG_CONFIGURE + --cc=emcc + --enable-cross-compile + --target-os=none + --arch=x86_64 + --disable-asm + --disable-pthreads + ) + endif () + + ExternalProject_Add (FFmpeg_Project + URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/ffmpeg.tar.xz + PREFIX ${CMAKE_BINARY_DIR} + CONFIGURE_COMMAND ${CMD} ./configure + --prefix=${CMAKE_BINARY_DIR} + --disable-shared + --enable-static + --disable-iconv + --disable-programs + --disable-doc + --disable-x86asm + --disable-avdevice + --disable-avfilter + --disable-network + --disable-everything + --enable-decoder=cinepak,msvideo1,vorbis + --enable-demuxer=matroska + --enable-protocol=file + --disable-crystalhd + --disable-xvmc + --disable-vaapi + --disable-videotoolbox + --disable-vdpau + --disable-vda + --disable-nvenc + --disable-dxva2 + --disable-d3d11va + --disable-audiotoolbox + --disable-zlib + --disable-bzlib + --disable-lzma + --disable-xlib + --disable-sdl2 + --disable-libxcb + --disable-libxcb-shm + --disable-libxcb-xfixes + --disable-libxcb-shape + --disable-jack + --disable-sndio + ${FFMPEG_CONFIGURE} + BUILD_COMMAND ${CMD} make + INSTALL_COMMAND ${CMD} make install + BUILD_IN_SOURCE 1 + INSTALL_DIR ${CMAKE_BINARY_DIR} + ) +endif () ############ ## libasound ############ -if (UNIX AND NOT APPLE) +if (HAS_ALSA) ExternalProject_Add (libasound_Project URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/alsa-lib.tar.bz2 PREFIX ${CMAKE_BINARY_DIR} @@ -274,48 +415,56 @@ if (UNIX AND NOT APPLE) BUILD_IN_SOURCE 1 INSTALL_DIR ${CMAKE_BINARY_DIR} ) + + set (planetblupi_DEPS ${planetblupi_DEPS} libasound_Project) endif () ######### ## libogg ######### -ExternalProject_Add (libogg_Project - URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/libogg.tar.xz - PREFIX ${CMAKE_BINARY_DIR} - CONFIGURE_COMMAND ${CMD} ./configure - --prefix=${CMAKE_BINARY_DIR} - --disable-shared - --enable-static - BUILD_COMMAND ${CMD} make - INSTALL_COMMAND ${CMD} make install INSTALLDIR=${CMAKE_BINARY_DIR} - BUILD_IN_SOURCE 1 - INSTALL_DIR ${CMAKE_BINARY_DIR} -) +if (HAS_OGG) + ExternalProject_Add (libogg_Project + URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/libogg.tar.xz + PREFIX ${CMAKE_BINARY_DIR} + CONFIGURE_COMMAND ${CMD} ./configure + --prefix=${CMAKE_BINARY_DIR} + --disable-shared + --enable-static + BUILD_COMMAND ${CMD} make + INSTALL_COMMAND ${CMD} make install INSTALLDIR=${CMAKE_BINARY_DIR} + BUILD_IN_SOURCE 1 + INSTALL_DIR ${CMAKE_BINARY_DIR} + ) +endif () ############ ## libvorbis ############ -ExternalProject_Add (libvorbis_Project - URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/libvorbis.tar.xz - PREFIX ${CMAKE_BINARY_DIR} - CONFIGURE_COMMAND ${CMD} ./configure - --prefix=${CMAKE_BINARY_DIR} - --disable-shared - --enable-static - BUILD_COMMAND ${CMD} make - INSTALL_COMMAND ${CMD} make install INSTALLDIR=${CMAKE_BINARY_DIR} - BUILD_IN_SOURCE 1 - INSTALL_DIR ${CMAKE_BINARY_DIR} - DEPENDS libogg_Project -) +if (HAS_VORBIS) + ExternalProject_Add (libvorbis_Project + URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/libvorbis.tar.xz + PREFIX ${CMAKE_BINARY_DIR} + CONFIGURE_COMMAND ${CMD} ./configure + --prefix=${CMAKE_BINARY_DIR} + --disable-shared + --enable-static + BUILD_COMMAND ${CMD} make + INSTALL_COMMAND ${CMD} make install INSTALLDIR=${CMAKE_BINARY_DIR} + BUILD_IN_SOURCE 1 + INSTALL_DIR ${CMAKE_BINARY_DIR} + DEPENDS libogg_Project + ) + + set (planetblupi_DEPS ${planetblupi_DEPS} libvorbis_Project) +endif () ############# ## libsndfile ############# -if (UNIX AND NOT APPLE) +if (HAS_SNDFILE) ExternalProject_Add (libsndfile_Project URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/libsndfile.tar.gz PREFIX ${CMAKE_BINARY_DIR} @@ -339,7 +488,7 @@ endif () ## libpulse ########### -if (UNIX AND NOT APPLE) +if (HAS_PULSEAUDIO) ExternalProject_Add (libpulse_Project URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/pulseaudio.tar.xz PREFIX ${CMAKE_BINARY_DIR} @@ -387,162 +536,201 @@ if (UNIX AND NOT APPLE) INSTALL_DIR ${CMAKE_BINARY_DIR} DEPENDS libasound_Project libsndfile_Project ) + + set (planetblupi_DEPS ${planetblupi_DEPS} libpulse_Project) endif () ####### ## SDL2 ####### -if (UNIX AND NOT APPLE) - set (SDL2_CONFIGURE --enable-video-x11 - --enable-x11-shared - --enable-video-wayland - --enable-wayland-shared - --enable-video-opengl - --enable-oss - --enable-alsa - --disable-alsa-shared - --disable-sndio - --disable-sndio-shared - --enable-pulseaudio - --disable-pulseaudio-shared - --disable-jack - --disable-jack-shared) -elseif (MINGW) - set (SDL2_CONFIGURE --enable-directx - --enable-render-d3d - --enable-video-opengl) -elseif (APPLE) - set (SDL2_CONFIGURE --enable-video-opengl - --enable-video-cocoa) -endif () +if (HAS_SDL) + if (BUILD_LINUX) + set (SDL2_CONFIGURE + --enable-video-x11 + --enable-x11-shared + --enable-video-wayland + --enable-wayland-shared + --enable-video-opengl + --enable-oss + --enable-alsa + --disable-alsa-shared + --disable-sndio + --disable-sndio-shared + --enable-pulseaudio + --disable-pulseaudio-shared + --disable-jack + --disable-jack-shared + ) + elseif (BUILD_WINDOWS) + set (SDL2_CONFIGURE + --enable-directx + --enable-render-d3d + --enable-video-opengl + ) + elseif (BUILD_DARWIN) + set (SDL2_CONFIGURE + --enable-video-opengl + --enable-video-cocoa + ) + endif () -set (SDL2_DEPENDS zlib_Project) -if (UNIX AND NOT APPLE) - set (SDL2_DEPENDS ${SDL2_DEPENDS} libasound_Project libpulse_Project) -endif () + set (SDL2_DEPENDS) + if (HAS_ZLIB) + set (SDL2_DEPENDS zlib_Project) + endif () + if (HAS_ALSA) + set (SDL2_DEPENDS ${SDL2_DEPENDS} libasound_Project) + endif () + if (HAS_PULSEAUDIO) + set (SDL2_DEPENDS ${SDL2_DEPENDS} libpulse_Project) + endif () -ExternalProject_Add (SDL2_Project - URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/SDL2.tar.bz2 - PREFIX ${CMAKE_BINARY_DIR} - CONFIGURE_COMMAND ${CMD} ./configure - --prefix=${CMAKE_BINARY_DIR} - --disable-shared - --enable-static - --disable-joystick - --disable-haptic - ${SDL2_CONFIGURE} - BUILD_COMMAND ${CMD} make - INSTALL_COMMAND ${CMD} make install - BUILD_IN_SOURCE 1 - INSTALL_DIR ${CMAKE_BINARY_DIR} - DEPENDS ${SDL2_DEPENDS} -) + ExternalProject_Add (SDL2_Project + URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/SDL2.tar.bz2 + PREFIX ${CMAKE_BINARY_DIR} + CONFIGURE_COMMAND ${CMD} ./configure + --prefix=${CMAKE_BINARY_DIR} + --disable-shared + --enable-static + --disable-joystick + --disable-haptic + ${SDL2_CONFIGURE} + BUILD_COMMAND ${CMD} make + INSTALL_COMMAND ${CMD} make install + BUILD_IN_SOURCE 1 + INSTALL_DIR ${CMAKE_BINARY_DIR} + DEPENDS ${SDL2_DEPENDS} + ) +endif () ############# ## SDL2_image ############# -ExternalProject_Add (SDL2_image_Project - URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/SDL2_image.tar.gz - PREFIX ${CMAKE_BINARY_DIR} - CONFIGURE_COMMAND ${CMD} ./configure - --prefix=${CMAKE_BINARY_DIR} - --disable-shared - --enable-static - --disable-sdltest - --disable-bmp - --disable-gif - --disable-jpg - --disable-jpg-shared - --disable-lbm - --disable-pcx - --enable-png - --disable-png-shared - --disable-pnm - --disable-tga - --disable-tif - --disable-tif-shared - --disable-xcf - --disable-xpm - --disable-xv - --disable-webp - --disable-webp-shared - BUILD_COMMAND ${CMD} make - INSTALL_COMMAND ${CMD} make install - BUILD_IN_SOURCE 1 - INSTALL_DIR ${CMAKE_BINARY_DIR} - DEPENDS SDL2_Project libpng_Project -) +if (HAS_SDLIMAGE) + ExternalProject_Add (SDL2_image_Project + URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/SDL2_image.tar.gz + PREFIX ${CMAKE_BINARY_DIR} + CONFIGURE_COMMAND ${CMD} ./configure + --prefix=${CMAKE_BINARY_DIR} + --disable-shared + --enable-static + --disable-sdltest + --disable-bmp + --disable-gif + --disable-jpg + --disable-jpg-shared + --disable-lbm + --disable-pcx + --enable-png + --disable-png-shared + --disable-pnm + --disable-tga + --disable-tif + --disable-tif-shared + --disable-xcf + --disable-xpm + --disable-xv + --disable-webp + --disable-webp-shared + BUILD_COMMAND ${CMD} make + INSTALL_COMMAND ${CMD} make install + BUILD_IN_SOURCE 1 + INSTALL_DIR ${CMAKE_BINARY_DIR} + DEPENDS SDL2_Project libpng_Project + ) +endif () ############# ## SDL2_mixer ############# -set (SDL2_mixer_DEPENDS SDL2_Project libogg_Project libvorbis_Project) -if (NOT APPLE) - set (SDL2_mixer_DEPENDS ${SDL2_mixer_DEPENDS} libiconv_Project) -endif () +if (HAS_SDLMIXER) + set (SDL2_mixer_DEPENDS) + if (HAS_SDL) + set (SDL2_mixer_DEPENDS ${SDL2_mixer_DEPENDS} SDL2_Project) + endif () + if (HAS_OGG) + set (SDL2_mixer_DEPENDS ${SDL2_mixer_DEPENDS} libogg_Project) + endif () + if (HAS_VORBIS) + set (SDL2_mixer_DEPENDS ${SDL2_mixer_DEPENDS} libvorbis_Project) + endif () + if (HAS_ICONV) + set (SDL2_mixer_DEPENDS ${SDL2_mixer_DEPENDS} libiconv_Project) + endif () -ExternalProject_Add (SDL2_mixer_Project - URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/SDL2_mixer.tar.gz - PREFIX ${CMAKE_BINARY_DIR} - CONFIGURE_COMMAND ${CMD} ./configure - --prefix=${CMAKE_BINARY_DIR} - --disable-shared - --enable-static - --disable-sdltest - --disable-music-cmd - --enable-music-wave - --disable-music-mod - --disable-music-mod-modplug - --disable-music-mod-modplug-shared - --disable-music-mod-mikmod - --disable-music-mod-mikmod-shared - --enable-music-midi - --enable-music-midi-timidity - --enable-music-midi-native - --disable-music-midi-fluidsynth - --disable-music-midi-fluidsynth-shared - --enable-music-ogg - --disable-music-ogg-tremor - --disable-music-ogg-shared - --disable-music-flac - --disable-music-flac-shared - --disable-music-mp3 - --disable-music-mp3-smpeg - --disable-music-mp3-smpeg-shared - --disable-smpegtest - --disable-music-mp3-mad-gpl - BUILD_COMMAND ${CMD} make - INSTALL_COMMAND ${CMD} make install - BUILD_IN_SOURCE 1 - INSTALL_DIR ${CMAKE_BINARY_DIR} - DEPENDS ${SDL2_mixer_DEPENDS} -) + ExternalProject_Add (SDL2_mixer_Project + URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/SDL2_mixer.tar.gz + PREFIX ${CMAKE_BINARY_DIR} + CONFIGURE_COMMAND ${CMD} ./configure + --prefix=${CMAKE_BINARY_DIR} + --disable-shared + --enable-static + --disable-sdltest + --disable-music-cmd + --enable-music-wave + --disable-music-mod + --disable-music-mod-modplug + --disable-music-mod-modplug-shared + --disable-music-mod-mikmod + --disable-music-mod-mikmod-shared + --enable-music-midi + --enable-music-midi-timidity + --enable-music-midi-native + --disable-music-midi-fluidsynth + --disable-music-midi-fluidsynth-shared + --enable-music-ogg + --disable-music-ogg-tremor + --disable-music-ogg-shared + --disable-music-flac + --disable-music-flac-shared + --disable-music-mp3 + --disable-music-mp3-smpeg + --disable-music-mp3-smpeg-shared + --disable-smpegtest + --disable-music-mp3-mad-gpl + BUILD_COMMAND ${CMD} make + INSTALL_COMMAND ${CMD} make install + BUILD_IN_SOURCE 1 + INSTALL_DIR ${CMAKE_BINARY_DIR} + DEPENDS ${SDL2_mixer_DEPENDS} + ) +endif () ################## ## SDL_kitchensink ################## -ExternalProject_Add (SDL_kitchensink_Project - URL ${CMAKE_SOURCE_DIR}/SDL_kitchensink - DOWNLOAD_COMMAND "" - SOURCE_DIR ${CMAKE_SOURCE_DIR}/SDL_kitchensink - PREFIX ${CMAKE_BINARY_DIR} - CMAKE_COMMAND ${CMD} cmake - CMAKE_ARGS -DDISABLE_SHARED=true - -DCMAKE_INSTALL_PREFIX:PATH= - INSTALL_DIR ${CMAKE_BINARY_DIR} - BUILD_ALWAYS 1 - DEPENDS SDL2_Project FFmpeg_Project -) +if (HAS_KITCHENSINK) + set (SDL_kitchensink_DEPENDS FFmpeg_Project) + if (HAS_SDL) + set (SDL_kitchensink_DEPENDS ${SDL_kitchensink_DEPENDS} SDL2_Project) + endif () + + ExternalProject_Add (SDL_kitchensink_Project + URL ${CMAKE_SOURCE_DIR}/SDL_kitchensink + DOWNLOAD_COMMAND "" + SOURCE_DIR ${CMAKE_SOURCE_DIR}/SDL_kitchensink + PREFIX ${CMAKE_BINARY_DIR} + CMAKE_COMMAND ${CMD} cmake + CMAKE_ARGS -DDISABLE_SHARED=true + -DCMAKE_INSTALL_PREFIX:PATH= + -DCMAKE_C_FLAGS=${EMSCRIPTEN_FLAGS} + INSTALL_DIR ${CMAKE_BINARY_DIR} + BUILD_ALWAYS 1 + DEPENDS ${SDL_kitchensink_DEPENDS} + ) + + set (planetblupi_DEPS ${planetblupi_DEPS} SDL_kitchensink_Project) +endif () ############## ## planetblupi ############## -if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") +if (BUILD_LINUX) set (APPIMAGE_APPRUN_BIN "AppRun-x86_64") set (APPIMAGE_APPRUN_URL "https://github.com/probonopd/AppImageKit/releases/download/continuous/${APPIMAGE_APPRUN_BIN}") set (APPIMAGE_APPRUN_PROGRAM "${CMAKE_BINARY_DIR}/bin/${APPIMAGE_APPRUN_BIN}") @@ -563,24 +751,6 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") execute_process (COMMAND /bin/chmod 0755 "${APPIMAGE_TOOL_PROGRAM}") endif () -set (planetblupi_DEPS - argagg_Project - libcurl_Project - SDL2_Project - SDL2_image_Project - SDL2_mixer_Project - SDL_kitchensink_Project - libpng_Project - gettext_Project - libvorbis_Project -) -if (UNIX AND NOT APPLE) - list (APPEND planetblupi_DEPS - libasound_Project - libpulse_Project - ) -endif () - ExternalProject_Add (planetblupi_Project URL ${CMAKE_SOURCE_DIR}/planetblupi DOWNLOAD_COMMAND "" @@ -591,9 +761,14 @@ ExternalProject_Add (planetblupi_Project -DAPPIMAGE_APPRUN_PROGRAM=${APPIMAGE_APPRUN_PROGRAM} -DAPPIMAGE_ASSISTANT_PROGRAM=${APPIMAGE_TOOL_PROGRAM} -DCMAKE_INSTALL_PREFIX:PATH= - -DPB_HTTP_VERSION_CHECK=yes + -DPB_HTTP_VERSION_CHECK=${HAS_CURL} -DSTATIC_BUILD=${STATIC_BUILD} -DSIGN_APP=${SIGN_APP} + -DEMSCRIPTEN_FLAGS=${EMSCRIPTEN_FLAGS} + -DBUILD_JS=${BUILD_JS} + -DBUILD_LINUX=${BUILD_LINUX} + -DBUILD_DARWIN=${BUILD_DARWIN} + -DBUILD_WINDOWS=${BUILD_WINDOWS} INSTALL_DIR ${CMAKE_BINARY_DIR} BUILD_ALWAYS 1 DEPENDS ${planetblupi_DEPS} diff --git a/SDL_kitchensink b/SDL_kitchensink index c0f187f..616a3b4 160000 --- a/SDL_kitchensink +++ b/SDL_kitchensink @@ -1 +1 @@ -Subproject commit c0f187fd002b14ccb31fb1ecfe894e87ceac343e +Subproject commit 616a3b439bde626f26726e2484713e6c9a475dcb diff --git a/planetblupi b/planetblupi index dd18a0b..8d67df2 160000 --- a/planetblupi +++ b/planetblupi @@ -1 +1 @@ -Subproject commit dd18a0bdaff105cc956d2c9628bcb2d2d9db25c0 +Subproject commit 8d67df23b13e623872e7323c5827000c3f4514ba diff --git a/planetblupi-data b/planetblupi-data index 5685f4d..0ebdd99 160000 --- a/planetblupi-data +++ b/planetblupi-data @@ -1 +1 @@ -Subproject commit 5685f4d6a0d2a5d6684618e4f3c84703665b8fc3 +Subproject commit 0ebdd99246682b7abc138678186446dbdcd79100