add Ubuntu 18.04 docker build target
This commit is contained in:
parent
eb09e0603b
commit
b40e0e56e4
37
Makefile
37
Makefile
|
@ -1,10 +1,18 @@
|
||||||
# Cakefoot [https://cakefoot.dank.game]
|
# /\ +-------------------------------------------------------+
|
||||||
|
# ____/ \____ /| Open source game framework licensed to freely use, |
|
||||||
|
# \ / / | copy, and modify. Created for [dank.game] |
|
||||||
|
# +--\ ^__^ /--+ | |
|
||||||
|
# | ~/ \~ | | Download at https://open.shampoo.ooo/shampoo/spacebox |
|
||||||
|
# | ~~~~~~~~~~~~ | +-------------------------------------------------------+
|
||||||
|
# | SPACE ~~~~~ | /
|
||||||
|
# | ~~~~~~~ BOX |/
|
||||||
|
# +--------------+
|
||||||
#
|
#
|
||||||
# This Makefile can be used to create a Linux or web build.
|
# This Makefile is used to create executables for Cakefoot. There are targets for Linux, Windows, and WebGL.
|
||||||
#
|
#
|
||||||
# NOTE: The Android rules are currently outdated.
|
# NOTE: The Android rules are currently outdated.
|
||||||
#
|
#
|
||||||
# The SPACE🪐BOX game framework source code from <https://open.shampoo.ooo/shampoo/spacebox> is required.
|
# The SPACE🪐BOX source code <https://open.shampoo.ooo/shampoo/spacebox> is required.
|
||||||
|
|
||||||
#########
|
#########
|
||||||
# Paths #
|
# Paths #
|
||||||
|
@ -57,8 +65,9 @@ WINDOWS_BUILD_DIR := $(BUILD_ROOT)/win32
|
||||||
ARCADE_BUILD_DIR := $(BUILD_ROOT)/win32_arcade
|
ARCADE_BUILD_DIR := $(BUILD_ROOT)/win32_arcade
|
||||||
DEMO_BUILD_DIR := $(BUILD_ROOT)/win32_demo
|
DEMO_BUILD_DIR := $(BUILD_ROOT)/win32_demo
|
||||||
WIN64_BUILD_DIR := $(BUILD_ROOT)/win64
|
WIN64_BUILD_DIR := $(BUILD_ROOT)/win64
|
||||||
|
UBUNTU18_BUILD_DIR := $(BUILD_ROOT)/ubuntu18
|
||||||
BUILD_DIRS := $(X64_BUILD_DIR) $(X64_DEBUG_BUILD_DIR) $(WASM_BUILD_DIR) $(WASM_DEBUG_BUILD_DIR) $(WASM_COOLMATH_BUILD_DIR) \
|
BUILD_DIRS := $(X64_BUILD_DIR) $(X64_DEBUG_BUILD_DIR) $(WASM_BUILD_DIR) $(WASM_DEBUG_BUILD_DIR) $(WASM_COOLMATH_BUILD_DIR) \
|
||||||
$(WINDOWS_BUILD_DIR) $(ARCADE_BUILD_DIR) $(DEMO_BUILD_DIR) $(WIN64_BUILD_DIR)
|
$(WINDOWS_BUILD_DIR) $(ARCADE_BUILD_DIR) $(DEMO_BUILD_DIR) $(WIN64_BUILD_DIR) $(UBUNTU_BUILD_DIR)
|
||||||
|
|
||||||
$(BUILD_DIRS):
|
$(BUILD_DIRS):
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
|
@ -187,18 +196,19 @@ $(addsuffix /Cakefoot.o, $(BUILD_DIRS)): $(SRC_DIR)/Cakefoot.cpp $(SRC_H_FILES)
|
||||||
|
|
||||||
LINUX_CFLAGS = -c -I$(SB_LIB_DIR) -I$(SB_SRC_DIR) $(SDL_CFLAGS) -DGLEW_STATIC
|
LINUX_CFLAGS = -c -I$(SB_LIB_DIR) -I$(SB_SRC_DIR) $(SDL_CFLAGS) -DGLEW_STATIC
|
||||||
LINUX_CXXFLAGS = $(CFLAGS) --std=c++17
|
LINUX_CXXFLAGS = $(CFLAGS) --std=c++17
|
||||||
# LINUX_LFLAGS = $(SDL_LFLAGS) -Wl/,--enable-new-dtags -lpthread -lGL -lGLESv2 -lSDL2_image -lSDL2_ttf -lSDL2_mixer -lstdc++fs
|
|
||||||
# LINUX_LFLAGS = $(SDL_LFLAGS) -lpthread -lGL -lGLESv2 -lSDL2_image -lSDL2_ttf -lSDL2_mixer -lstdc++fs
|
|
||||||
LINUX_LFLAGS = $(SDL_LFLAGS) -lpthread -lGL -lGLESv2 -lSDL2_image -lSDL2_ttf -lSDL2_mixer -lstdc++fs -static-libstdc++ -static-libgcc
|
LINUX_LFLAGS = $(SDL_LFLAGS) -lpthread -lGL -lGLESv2 -lSDL2_image -lSDL2_ttf -lSDL2_mixer -lstdc++fs -static-libstdc++ -static-libgcc
|
||||||
LINUX_OBJ = $(addprefix $(X64_BUILD_DIR)/, glew.o SDL2_rotozoom.o SDL2_gfxPrimitives.o $(SB_O_FILES) $(SRC_O_FILES))
|
LINUX_OBJ = $(addprefix $(X64_BUILD_DIR)/, glew.o SDL2_rotozoom.o SDL2_gfxPrimitives.o $(SB_O_FILES) $(SRC_O_FILES))
|
||||||
LINUX_DEBUG_OBJ = $(addprefix $(X64_DEBUG_BUILD_DIR)/, glew.o SDL2_rotozoom.o SDL2_gfxPrimitives.o $(SB_O_FILES) $(SRC_O_FILES))
|
LINUX_DEBUG_OBJ = $(addprefix $(X64_DEBUG_BUILD_DIR)/, glew.o SDL2_rotozoom.o SDL2_gfxPrimitives.o $(SB_O_FILES) $(SRC_O_FILES))
|
||||||
X64_BUILD_LIB_DIR = lib/
|
X64_BUILD_LIB_DIR = lib/
|
||||||
|
|
||||||
Cakefoot-linux.x64 : CFLAGS = $(LINUX_CFLAGS) -O3
|
# EXTRA_PLATFORM_FLAGS refers to extra preprocessor definitions, for example -D__UBUNTU18__, to trigger code blocks specific to that
|
||||||
|
# platform or architecture
|
||||||
|
|
||||||
|
Cakefoot-linux.x64 : CFLAGS = $(LINUX_CFLAGS) -O3 $(EXTRA_PLATFORM_FLAGS)
|
||||||
Cakefoot-linux.x64 : CXXFLAGS = $(LINUX_CXXFLAGS)
|
Cakefoot-linux.x64 : CXXFLAGS = $(LINUX_CXXFLAGS)
|
||||||
Cakefoot-linux.x64 : LFLAGS = $(LINUX_LFLAGS) -Wl,-rpath $(X64_BUILD_LIB_DIR)
|
Cakefoot-linux.x64 : LFLAGS = $(LINUX_LFLAGS) -Wl,-rpath $(X64_BUILD_LIB_DIR)
|
||||||
Cakefoot-linux.x64 : $(LINUX_OBJ)
|
Cakefoot-linux.x64 : $(LINUX_OBJ)
|
||||||
$(CXX) $^ $(LFLAGS) -D__LINUX__ -o $(X64_BUILD_DIR)/$@
|
$(CXX) $^ $(LFLAGS) -o $(X64_BUILD_DIR)/$@
|
||||||
|
|
||||||
# Build a distributable archive
|
# Build a distributable archive
|
||||||
|
|
||||||
|
@ -220,6 +230,17 @@ Cakefoot-linux_debug.x64 : LFLAGS = $(LINUX_LFLAGS) -fsanitize=undefined
|
||||||
Cakefoot-linux_debug.x64 : $(LINUX_DEBUG_OBJ)
|
Cakefoot-linux_debug.x64 : $(LINUX_DEBUG_OBJ)
|
||||||
$(CXX) $^ $(LFLAGS) -D__LINUX__ -o $(X64_DEBUG_BUILD_DIR)/$@
|
$(CXX) $^ $(LFLAGS) -D__LINUX__ -o $(X64_DEBUG_BUILD_DIR)/$@
|
||||||
|
|
||||||
|
# Launch a docker container to build the game on Ubuntu 18.04 for compatibility with older Linux distributions. This requires
|
||||||
|
# Docker to be installed on the host system with the image cakefoot-ubuntu18. Use `src/Ubuntu18.Dockerfile` to build the image
|
||||||
|
# before attempting this build if the image was not built yet.
|
||||||
|
#
|
||||||
|
# sudo docker build src/Ubuntu18.Dockerfile
|
||||||
|
|
||||||
|
Ubuntu-18 :
|
||||||
|
sudo docker run --rm -v "$(shell pwd)/$(UBUNTU18_BUILD_DIR):/cakefoot/$(X64_BUILD_DIR)" cakefoot-ubuntu18 sh -c \
|
||||||
|
"cd cakefoot && git submodule foreach --recursive git pull origin main && git pull origin main &&\
|
||||||
|
make CC=clang-8 CXX=clang++-8 EXTRA_PLATFORM_FLAGS='-D__UBUNTU18__' -j7 Cakefoot-linux.x64"
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# Web build #
|
# Web build #
|
||||||
#############
|
#############
|
||||||
|
|
2
lib/sb
2
lib/sb
|
@ -1 +1 @@
|
||||||
Subproject commit 6fdfa67c4181b023925b6a1e86950b6fb1378959
|
Subproject commit a1eef8017eb3c75a30b00863e1d54f906eefc0df
|
|
@ -0,0 +1,36 @@
|
||||||
|
# /\ +-------------------------------------------------------+
|
||||||
|
# ____/ \____ /| Open source game framework licensed to freely use, |
|
||||||
|
# \ / / | copy, and modify. Created for [dank.game] |
|
||||||
|
# +--\ ^__^ /--+ | |
|
||||||
|
# | ~/ \~ | | Download at https://open.shampoo.ooo/shampoo/spacebox |
|
||||||
|
# | ~~~~~~~~~~~~ | +-------------------------------------------------------+
|
||||||
|
# | SPACE ~~~~~ | /
|
||||||
|
# | ~~~~~~~ BOX |/
|
||||||
|
# +--------------+
|
||||||
|
#
|
||||||
|
# Docker instructions for building an Ubuntu 18.04 container with everything necessary for compiling Cakefoot.
|
||||||
|
#
|
||||||
|
# Build with the tag "cakefoot-ubuntu18" for compatbility with the Makefile.
|
||||||
|
#
|
||||||
|
# sudo docker build -t cakefoot-ubuntu18 src/Ubuntu18.Dockerfile
|
||||||
|
|
||||||
|
FROM ubuntu:18.04
|
||||||
|
|
||||||
|
RUN sed -i '/deb-src/s/^# //' /etc/apt/sources.list && \
|
||||||
|
apt update && \
|
||||||
|
apt upgrade -y && \
|
||||||
|
apt install -y wget build-essential clang-8 git rsync && \
|
||||||
|
apt build-dep -y libsdl2 && \
|
||||||
|
apt clean -y && apt autoclean -y && \
|
||||||
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
|
wget https://github.com/libsdl-org/SDL/releases/download/release-2.24.2/SDL2-2.24.2.tar.gz && \
|
||||||
|
wget https://github.com/libsdl-org/SDL_image/releases/download/release-2.6.2/SDL2_image-2.6.2.tar.gz && \
|
||||||
|
wget https://github.com/libsdl-org/SDL_ttf/releases/download/release-2.20.1/SDL2_ttf-2.20.1.tar.gz && \
|
||||||
|
wget https://github.com/libsdl-org/SDL_mixer/releases/download/release-2.6.2/SDL2_mixer-2.6.2.tar.gz && \
|
||||||
|
tar -xf SDL2-2.24.2.tar.gz && cd SDL2-2.24.2/ && ./configure && make && make install && cd .. && \
|
||||||
|
tar -xf SDL2_image-2.6.2.tar.gz && cd SDL2_image-2.6.2/ && ./configure && make && make install && cd .. && \
|
||||||
|
tar -xf SDL2_ttf-2.20.1.tar.gz && cd SDL2_ttf-2.20.1/ && ./configure && make && make install && cd .. && \
|
||||||
|
tar -xf SDL2_mixer-2.6.2.tar.gz && cd SDL2_mixer-2.6.2/ && ./configure && make && make install && cd .. && \
|
||||||
|
ldconfig && \
|
||||||
|
rm -rf SDL2* && \
|
||||||
|
git clone --recursive https://open.shampoo.ooo/shampoo/cakefoot
|
Loading…
Reference in New Issue