Set up packaging for web build
This commit is contained in:
parent
4204022390
commit
805826c160
8 changed files with 103 additions and 2 deletions
|
|
@ -1,4 +1,7 @@
|
||||||
|
# On web SDL is provided by emsdk itself
|
||||||
|
if(NOT CMAKE_SYSTEM_NAME STREQUAL Emscripten)
|
||||||
find_package(SDL2 REQUIRED)
|
find_package(SDL2 REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
file(GLOB_RECURSE PSEMEK_SDL2_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "include/*.hpp")
|
file(GLOB_RECURSE PSEMEK_SDL2_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "include/*.hpp")
|
||||||
file(GLOB_RECURSE PSEMEK_SDL2_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "source/*.cpp")
|
file(GLOB_RECURSE PSEMEK_SDL2_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "source/*.cpp")
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,11 @@ if(PSEMEK_PACKAGE_MODE)
|
||||||
elseif(ANDROID)
|
elseif(ANDROID)
|
||||||
set(PSEMEK_PACKAGE_SUFFIX_RAW android)
|
set(PSEMEK_PACKAGE_SUFFIX_RAW android)
|
||||||
elseif(UNIX)
|
elseif(UNIX)
|
||||||
|
if (CMAKE_SYSTEM_NAME STREQUAL Emscripten)
|
||||||
|
set(PSEMEK_PACKAGE_SUFFIX_RAW web)
|
||||||
|
else()
|
||||||
set(PSEMEK_PACKAGE_SUFFIX_RAW linux)
|
set(PSEMEK_PACKAGE_SUFFIX_RAW linux)
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
message(FATAL "Uknown system for packaging")
|
message(FATAL "Uknown system for packaging")
|
||||||
endif()
|
endif()
|
||||||
|
|
@ -84,7 +88,19 @@ function(psemek_add_executable_impl target is_application)
|
||||||
if(NOT ANDROID)
|
if(NOT ANDROID)
|
||||||
get_filename_component(_OUTPUT_DIRECTORY "${_OUTPUT_PATH}" DIRECTORY)
|
get_filename_component(_OUTPUT_DIRECTORY "${_OUTPUT_PATH}" DIRECTORY)
|
||||||
|
|
||||||
set(_COPY_FILES $<TARGET_FILE:${target}> ${PSEMEK_PACKAGE_COPY_FILES})
|
set(_TARGET_FILE $<TARGET_FILE:${target}>)
|
||||||
|
|
||||||
|
set(_TARGET_RUNTIME)
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
|
||||||
|
set(_TARGET_PARENT $<PATH:GET_PARENT_PATH,${_TARGET_FILE}>)
|
||||||
|
set(_TARGET_STEM $<PATH:GET_STEM,${_TARGET_FILE}>)
|
||||||
|
set(_TARGET_NOEXT "${_TARGET_PARENT}/${_TARGET_STEM}")
|
||||||
|
|
||||||
|
list(APPEND _TARGET_RUNTIME ${_TARGET_NOEXT}.js)
|
||||||
|
list(APPEND _TARGET_RUNTIME ${_TARGET_NOEXT}.wasm)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(_COPY_FILES ${_TARGET_FILE} ${_TARGET_RUNTIME} ${PSEMEK_PACKAGE_COPY_FILES})
|
||||||
|
|
||||||
if(PSEMEK_GRAPHICS_API STREQUAL WEBGPU)
|
if(PSEMEK_GRAPHICS_API STREQUAL WEBGPU)
|
||||||
list(APPEND _COPY_FILES ${PSEMEK_PACKAGE_COPY_FILES_WEBGPU})
|
list(APPEND _COPY_FILES ${PSEMEK_PACKAGE_COPY_FILES_WEBGPU})
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ if [ "$#" -ne 2 ]; then
|
||||||
echo " linux"
|
echo " linux"
|
||||||
echo " windows"
|
echo " windows"
|
||||||
echo " android"
|
echo " android"
|
||||||
|
echo " web"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -15,6 +16,7 @@ case ${1} in
|
||||||
linux) ;;
|
linux) ;;
|
||||||
windows) ;;
|
windows) ;;
|
||||||
android) ;;
|
android) ;;
|
||||||
|
web) ;;
|
||||||
*)
|
*)
|
||||||
echo "Unknown platform: ${1}"
|
echo "Unknown platform: ${1}"
|
||||||
exit -1
|
exit -1
|
||||||
|
|
|
||||||
16
package/web/Dockerfile
Normal file
16
package/web/Dockerfile
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
FROM lisyarus/psemek:package-linux
|
||||||
|
|
||||||
|
# Install emsdk - the version the build was tested at
|
||||||
|
WORKDIR /home
|
||||||
|
RUN git clone --branch 3.1.46 https://github.com/emscripten-core/emsdk.git
|
||||||
|
WORKDIR /home/emsdk
|
||||||
|
RUN ./emsdk install 3.1.46
|
||||||
|
RUN ./emsdk activate 3.1.46
|
||||||
|
WORKDIR /home
|
||||||
|
COPY env-helper.sh .
|
||||||
|
# Source emsdk env variables when running the container
|
||||||
|
ENTRYPOINT ["/home/env-helper.sh"]
|
||||||
|
|
||||||
|
# Install toolchain file & main packaging script
|
||||||
|
COPY toolchain-host.cmake .
|
||||||
|
COPY package.sh .
|
||||||
7
package/web/build.sh
Executable file
7
package/web/build.sh
Executable file
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
docker build -t lisyarus/psemek:package-web .
|
||||||
6
package/web/env-helper.sh
Executable file
6
package/web/env-helper.sh
Executable file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# emsdk provides some environment variables that need to be sourced from a file
|
||||||
|
source /home/emsdk/emsdk_env.sh
|
||||||
|
|
||||||
|
exec "$@"
|
||||||
25
package/web/package.sh
Executable file
25
package/web/package.sh
Executable file
|
|
@ -0,0 +1,25 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
mkdir -p /home/build-host
|
||||||
|
cd /home/build-host
|
||||||
|
cmake ../source -DCMAKE_TOOLCHAIN_FILE=/home/toolchain-host.cmake -DCMAKE_INSTALL_PREFIX=/home/tools
|
||||||
|
cmake --build . -t install -j
|
||||||
|
|
||||||
|
mkdir -p /home/build-target
|
||||||
|
cd /home/build-target
|
||||||
|
rm -rf ./*
|
||||||
|
# Use emsdk wrapper for cmake - it sets some env variables to select the
|
||||||
|
# right toolchain.
|
||||||
|
emcmake cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||||
|
-DPSEMEK_PACKAGE_MODE=ON \
|
||||||
|
-DPSEMEK_PACKAGE_HOST=OFF \
|
||||||
|
-DPSEMEK_PACKAGE_TARGET=ON \
|
||||||
|
-DPSEMEK_STACKTRACE=OFF \
|
||||||
|
-DPSEMEK_PACKAGE_TOOLS_PATH=/home/tools \
|
||||||
|
-DPSEMEK_PACKAGE_COPY_FILES= \
|
||||||
|
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH \
|
||||||
|
../source
|
||||||
|
cmake --build . -j
|
||||||
26
package/web/toolchain-host.cmake
Normal file
26
package/web/toolchain-host.cmake
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
set(CMAKE_C_COMPILER gcc)
|
||||||
|
set(CMAKE_CXX_COMPILER g++)
|
||||||
|
set(CMAKE_BUILD_TYPE Release)
|
||||||
|
|
||||||
|
set(PSEMEK_PACKAGE_MODE ON)
|
||||||
|
set(PSEMEK_PACKAGE_ROOT "${CMAKE_CURRENT_LIST_DIR}")
|
||||||
|
set(PSEMEK_PACKAGE_HOST ON)
|
||||||
|
set(PSEMEK_PACKAGE_TARGET OFF)
|
||||||
|
set(PSEMEK_PACKAGE_TOOLS_PATH "${PSEMEK_PACKAGE_ROOT}/tools")
|
||||||
|
set(PSEMEK_STACKTRACE OFF)
|
||||||
|
|
||||||
|
set(PSEMEK_PACKAGE_COPY_FILES
|
||||||
|
${PSEMEK_PACKAGE_ROOT}/sdl2/install/lib/libSDL2-2.0.so.0
|
||||||
|
)
|
||||||
|
|
||||||
|
set(PSEMEK_PACKAGE_COPY_FILES_FREETYPE
|
||||||
|
${PSEMEK_PACKAGE_ROOT}/libfreetype.so.6
|
||||||
|
)
|
||||||
|
|
||||||
|
list(APPEND CMAKE_PREFIX_PATH
|
||||||
|
"${PSEMEK_PACKAGE_ROOT}/sdl2/install"
|
||||||
|
)
|
||||||
|
|
||||||
|
set(WGPU_NATIVE_ROOT
|
||||||
|
"${PSEMEK_PACKAGE_ROOT}/wgpu-native/install"
|
||||||
|
)
|
||||||
Loading…
Add table
Reference in a new issue