cmake_minimum_required (VERSION 3.2) include (${CMAKE_ROOT}/Modules/ExternalProject.cmake) 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) option (ASMJS "Build for asm.js instead of WebAssembly (slower)" 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 (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) set (OSX_SDK_VERSION 10.9) set (CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX${OSX_SDK_VERSION}.sdk/") set (CMAKE_OSX_DEPLOYMENT_TARGET ${OSX_SDK_VERSION}) set (CMD_CXXFLAGS "-isysroot ${CMAKE_OSX_SYSROOT} -mmacosx-version-min=${OSX_SDK_VERSION} ${CMAKE_CXX_FLAGS}") 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" ) if (ASMJS) set (EMSCRIPTEN_FLAGS "${EMSCRIPTEN_FLAGS} -s WASM=0") else () set (EMSCRIPTEN_FLAGS "${EMSCRIPTEN_FLAGS} -s WASM=1") endif () 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) set (HAS_KITCHENSINK ON) set (HAS_ARGAGG ON) set (ARGAGG_VER 0.4.6) DLEXT (https://github.com/vietjtnguyen/argagg/archive/${ARGAGG_VER}.tar.gz argagg-${ARGAGG_VER}.tar.gz) set (HAS_FFMPEG ON) set (FFMPEG_VER 3.4.1) DLEXT (http://www.ffmpeg.org/releases/ffmpeg-${FFMPEG_VER}.tar.xz ffmpeg-${FFMPEG_VER}.tar.xz) set (HAS_SDLMIXER ON) if (BUILD_JS) set (SDLMIXER_VER 2.0.1) else () set (SDLMIXER_VER 2.0.2) endif () DLEXT (https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-${SDLMIXER_VER}.tar.gz SDL2_mixer-${SDLMIXER_VER}.tar.gz) if (NOT BUILD_JS) set (HAS_ZLIB ON) set (ZLIB_VER 1.2.11) DLEXT (http://www.zlib.net/zlib-${ZLIB_VER}.tar.gz zlib-${ZLIB_VER}.tar.gz) set (HAS_CURL ON) set (CURL_VER 7.55.0) DLEXT (https://curl.haxx.se/download/curl-${CURL_VER}.tar.xz curl-${CURL_VER}.tar.xz) set (HAS_GETTEXT ON) set (GETTEXT_VER 0.19.8.1) DLEXT (http://mirror.switch.ch/ftp/mirror/gnu/gettext/gettext-${GETTEXT_VER}.tar.xz gettext-${GETTEXT_VER}.tar.xz) set (HAS_PNG ON) set (PNG_VER 1.6.34) DLEXT (ftp://ftp-osl.osuosl.org/pub/libpng/src/libpng16/libpng-${PNG_VER}.tar.xz libpng-${PNG_VER}.tar.xz) set (HAS_OGG ON) set (OGG_VER 1.3.3) DLEXT (http://downloads.xiph.org/releases/ogg/libogg-${OGG_VER}.tar.xz libogg-${OGG_VER}.tar.xz) set (HAS_VORBIS ON) set (VORBIS_VER 1.3.5) DLEXT (http://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VER}.tar.xz libvorbis-${VORBIS_VER}.tar.xz) set (HAS_SDL ON) set (SDL_VER 2.0.8) DLEXT (https://www.libsdl.org/release/SDL2-${SDL_VER}.tar.gz SDL2-${SDL_VER}.tar.bz2) set (HAS_SDLIMAGE ON) set (SDLIMAGE_VER 2.0.3) DLEXT (https://www.libsdl.org/projects/SDL_image/release/SDL2_image-${SDLIMAGE_VER}.tar.gz SDL2_image-${SDLIMAGE_VER}.tar.gz) endif () if (BUILD_LINUX OR BUILD_WINDOWS) set (HAS_ICONV ON) set (ICONV_VER 1.15) DLEXT (https://ftp.gnu.org/pub/gnu/libiconv/libiconv-${ICONV_VER}.tar.gz libiconv-${ICONV_VER}.tar.gz) endif () if (BUILD_LINUX) set (HAS_ALSA ON) set (ALSA_VER 1.1.4.1) DLEXT (ftp://ftp.alsa-project.org/pub/lib/alsa-lib-${ALSA_VER}.tar.bz2 alsa-lib-${ALSA_VER}.tar.bz2) set (HAS_SNDFILE ON) set (SNDFILE_VER 1.0.28) DLEXT (http://www.mega-nerd.com/libsndfile/files/libsndfile-${SNDFILE_VER}.tar.gz libsndfile-${SNDFILE_VER}.tar.gz) set (HAS_PULSEAUDIO ON) set (PULSEAUDIO_VER 12.2) DLEXT (https://freedesktop.org/software/pulseaudio/releases/pulseaudio-${PULSEAUDIO_VER}.tar.xz pulseaudio-${PULSEAUDIO_VER}.tar.xz) endif () message (STATUS "Build projects for ${PLATFORM}") if (HAS_ZLIB) message (STATUS " * zlib (${ZLIB_VER})") endif () if (HAS_GETTEXT) message (STATUS " * gettext (${GETTEXT_VER})") endif () if (HAS_ARGAGG) message (STATUS " * argagg (${ARGAGG_VER})") endif () if (HAS_CURL) message (STATUS " * libcurl (${CURL_VER})") endif () if (HAS_ICONV) message (STATUS " * libiconv (${ICONV_VER})") endif () if (HAS_PNG) message (STATUS " * libpng (${PNG_VER})") endif () if (HAS_FFMPEG) message (STATUS " * FFmpeg (${FFMPEG_VER})") endif () if (HAS_SDL) message (STATUS " * SDL2 (${SDL_VER})") endif () if (HAS_SDLIMAGE) message (STATUS " * SDL2_image (${SDLIMAGE_VER})") endif () if (HAS_SDLMIXER) message (STATUS " * SDL2_mixer (${SDLMIXER_VER})") endif () if (HAS_KITCHENSINK) message (STATUS " * SDL_kitchensink") endif () if (HAS_ALSA) message (STATUS " * libasound (${ALSA_VER})") endif () if (HAS_SNDFILE) message (STATUS " * libsndfile (${SNDFILE_VER})") endif () if (HAS_PULSEAUDIO) message (STATUS " * libpulse (${PULSEAUDIO_VER})") endif () if (HAS_OGG) message (STATUS " * libogg (${OGG_VER})") endif () if (HAS_VORBIS) message (STATUS " * libvorbis (${VORBIS_VER})") endif () set (planetblupi_DEPS) ####### ## zlib ####### if (HAS_ZLIB) if (BUILD_WINDOWS) ExternalProject_Add (zlib_Project URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/zlib-${ZLIB_VER}.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-${ZLIB_VER}.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 ######### if (HAS_ARGAGG) ExternalProject_Add (argagg_Project URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/argagg-${ARGAGG_VER}.tar.gz PREFIX ${CMAKE_BINARY_DIR} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR} -DARGAGG_BUILD_EXAMPLES=off -DARGAGG_BUILD_TESTS=off -DARGAGG_BUILD_DOCS=off ) set (planetblupi_DEPS ${planetblupi_DEPS} argagg_Project) endif () ########## ## libcurl ########## 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-${CURL_VER}.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 (HAS_ICONV) ExternalProject_Add (libiconv_Project URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/libiconv-${ICONV_VER}.tar.gz 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} ) endif () ########## ## gettext ########## 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-${GETTEXT_VER}.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 ######### if (HAS_PNG) ExternalProject_Add (libpng_Project URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/libpng-${PNG_VER}.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 ######### 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-${FFMPEG_VER}.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 (HAS_ALSA) ExternalProject_Add (libasound_Project URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/alsa-lib-${ALSA_VER}.tar.bz2 PREFIX ${CMAKE_BINARY_DIR} CONFIGURE_COMMAND ${CMD} ./configure --prefix=${CMAKE_BINARY_DIR} --disable-shared --enable-static --disable-old-symbols --disable-python BUILD_COMMAND ${CMD} make INSTALL_COMMAND ${CMD} make install BUILD_IN_SOURCE 1 INSTALL_DIR ${CMAKE_BINARY_DIR} ) set (planetblupi_DEPS ${planetblupi_DEPS} libasound_Project) endif () ######### ## libogg ######### if (HAS_OGG) ExternalProject_Add (libogg_Project URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/libogg-${OGG_VER}.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 ############ if (HAS_VORBIS) ExternalProject_Add (libvorbis_Project URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/libvorbis-${VORBIS_VER}.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 (HAS_SNDFILE) ExternalProject_Add (libsndfile_Project URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/libsndfile-${SNDFILE_VER}.tar.gz PREFIX ${CMAKE_BINARY_DIR} CONFIGURE_COMMAND ${CMD} ./configure --prefix=${CMAKE_BINARY_DIR} --disable-shared --enable-static --enable-alsa --disable-sqlite --disable-octave --disable-full-suite BUILD_COMMAND ${CMD} make INSTALL_COMMAND ${CMD} make install INSTALLDIR=${CMAKE_BINARY_DIR} BUILD_IN_SOURCE 1 INSTALL_DIR ${CMAKE_BINARY_DIR} DEPENDS libasound_Project libogg_Project libvorbis_Project ) endif () ########### ## libpulse ########### if (HAS_PULSEAUDIO) ExternalProject_Add (libpulse_Project URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/pulseaudio-${PULSEAUDIO_VER}.tar.xz PREFIX ${CMAKE_BINARY_DIR} CONFIGURE_COMMAND ${CMD} ./configure --prefix=${CMAKE_BINARY_DIR} --disable-shared --enable-static --enable-alsa --disable-nls --disable-x11 --disable-tests --disable-esound --disable-waveout --disable-gconf --disable-glib2 --disable-gtk3 --disable-jack --disable-asyncns --disable-avahi --disable-openssl --disable-tcpwrap --disable-lirc --disable-dbus --disable-udev --disable-bluez4 --disable-bluez5 --disable-hal-compat --disable-ipv6 --disable-webrtc-aec --disable-systemd-daemon --disable-systemd-login --disable-systemd-journal --disable-manpages --disable-default-build-tests --disable-legacy-database-entry-format --enable-static-bins --without-caps --without-fftw --without-speex --without-soxr --with-database=simple BUILD_COMMAND ${CMD} make INSTALL_COMMAND ${CMD} make install INSTALLDIR=${CMAKE_BINARY_DIR} BUILD_IN_SOURCE 1 INSTALL_DIR ${CMAKE_BINARY_DIR} DEPENDS libasound_Project libsndfile_Project ) set (planetblupi_DEPS ${planetblupi_DEPS} libpulse_Project) endif () ####### ## SDL2 ####### 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) 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-${SDL_VER}.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 ############# if (HAS_SDLIMAGE) ExternalProject_Add (SDL2_image_Project URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/SDL2_image-${SDLIMAGE_VER}.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 ) set (planetblupi_DEPS ${planetblupi_DEPS} SDL2_image_Project) endif () ############# ## SDL2_mixer ############# 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-${SDLMIXER_VER}.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} ) set (planetblupi_DEPS ${planetblupi_DEPS} SDL2_mixer_Project) endif () ################## ## SDL_kitchensink ################## if (HAS_KITCHENSINK) set (SDL_kitchensink_DEPENDS FFmpeg_Project) if (HAS_SDL) set (SDL_kitchensink_DEPENDS ${SDL_kitchensink_DEPENDS} SDL2_Project) endif () if (BUILD_DARWIN AND OLD_SDK) set (KITCHENSINK_FLAGS "-isysroot ${CMAKE_OSX_SYSROOT} -mmacosx-version-min=${OSX_SDK_VERSION}") set (KITCHENSINK_CMAKE "-DOSX_SDK_VERSION=${OSX_SDK_VERSION} -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT} -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}") set (CMAKE_C_FLAGS "${KITCHENSINK_FLAGS} ${CMAKE_C_FLAGS}") 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=${CMAKE_C_FLAGS} ${KITCHENSINK_CMAKE} INSTALL_DIR ${CMAKE_BINARY_DIR} BUILD_ALWAYS 1 DEPENDS ${SDL_kitchensink_DEPENDS} ) set (planetblupi_DEPS ${planetblupi_DEPS} SDL_kitchensink_Project) endif () ############## ## planetblupi ############## 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_CURRENT_SOURCE_DIR}/externals/${APPIMAGE_APPRUN_BIN}") set (APPIMAGE_TOOL_BIN "appimagetool-x86_64.AppImage") set (APPIMAGE_TOOL_URL "https://github.com/probonopd/AppImageKit/releases/download/continuous/${APPIMAGE_TOOL_BIN}") set (APPIMAGE_TOOL_PROGRAM "${CMAKE_CURRENT_SOURCE_DIR}/externals/${APPIMAGE_TOOL_BIN}") if (NOT EXISTS "${APPIMAGE_APPRUN_PROGRAM}") file (DOWNLOAD "${APPIMAGE_APPRUN_URL}" "${APPIMAGE_APPRUN_PROGRAM}") endif () if (NOT EXISTS "${APPIMAGE_TOOL_PROGRAM}") file (DOWNLOAD "${APPIMAGE_TOOL_URL}" "${APPIMAGE_TOOL_PROGRAM}") endif () execute_process (COMMAND /bin/chmod 0755 "${APPIMAGE_APPRUN_PROGRAM}") execute_process (COMMAND /bin/chmod 0755 "${APPIMAGE_TOOL_PROGRAM}") endif () ExternalProject_Add (planetblupi_Project URL ${CMAKE_SOURCE_DIR}/planetblupi DOWNLOAD_COMMAND "" SOURCE_DIR ${CMAKE_SOURCE_DIR}/planetblupi PREFIX ${CMAKE_BINARY_DIR} CMAKE_COMMAND ${CMD} cmake CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DAPPIMAGE_APPRUN_PROGRAM=${APPIMAGE_APPRUN_PROGRAM} -DAPPIMAGE_ASSISTANT_PROGRAM=${APPIMAGE_TOOL_PROGRAM} -DCMAKE_INSTALL_PREFIX:PATH= -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} ) add_custom_target (dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source) set (CPACK_SOURCE_GENERATOR "TXZ") set (CPACK_SOURCE_PACKAGE_FILE_NAME "planetblupi-dev") set (CPACK_SOURCE_IGNORE_FILES "/build/;/Debug/;/Release/;/planetblupi-data/;/planetblupi-www/;/.git/;.git;.directory;~$;${CPACK_SOURCE_IGNORE_FILES}") include (CPack)