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) 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 -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) set (HAS_KITCHENSINK ON) 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 (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 () 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 () 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 ######### 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 ########## 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 (HAS_ICONV) ExternalProject_Add (libiconv_Project URL ${CMAKE_CURRENT_SOURCE_DIR}/externals/libiconv.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.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.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.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.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.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.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.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.tar.xz PREFIX ${CMAKE_BINARY_DIR} CONFIGURE_COMMAND patch -p1 < ${CMAKE_CURRENT_SOURCE_DIR}/externals/pulseaudio.patch && ${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.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.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 ############# 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} ) 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 () 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 (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}") 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_BINARY_DIR}/bin/${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/;~$;${CPACK_SOURCE_IGNORE_FILES}") include (CPack)