Skip to content
This repository has been archived by the owner on Feb 13, 2024. It is now read-only.

Optionally use installed sdbus-cpp library #1733

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,22 @@ set(ANBOX_STATEDIR_FULL "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/lib/anbox")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/anbox/build/config.h.in
${CMAKE_CURRENT_SOURCE_DIR}/src/anbox/build/config.h)


# sdbus-cpp
# find includes and code-generator
find_package(sdbus-c++ QUIET)
find_program(XML2CPP "sdbus-c++-xml2cpp")

# sdbus-c++-xml2cpp should be in PATH when building with docker container
if(${sdbus-c++_FOUND} AND (NOT XML2CPP STREQUAL "XML2CPP-NOTFOUND"))
message(STATUS "sdbus-cpp: use installed library")
set(COMPILE_SDBUS_CPP FALSE)
else()
message(STATUS "sdbus-cpp: compile from source")
set(COMPILE_SDBUS_CPP TRUE)
endif()


add_subdirectory(external)
add_subdirectory(src)
add_subdirectory(tests)
Expand Down
40 changes: 35 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,37 @@
FROM ubuntu:20.04
# ---- BASE IMAGE
FROM ubuntu:20.04 as base

# hadolint ignore=DL3008
RUN apt-get update && \
DEBIAN_FRONTEND="noninteractive" apt-get install -qq -y --no-install-recommends \
DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends --yes \
build-essential \
cmake


# ---- COMPILE SDBUS-C++
FROM base as sdbus-cpp

RUN DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends --yes \
build-essential \
libsystemd-dev \
pkg-config \
libexpat1-dev

# copy and build library sdbus-cpp
RUN mkdir -p /tmp/
COPY external/sdbus-cpp /tmp/sdbus-cpp
RUN cmake -S/tmp/sdbus-cpp -B/tmp/sdbus-cpp/build \
-DBUILD_CODE_GEN=ON \
-DBUILD_SHARED_LIBS=OFF \
&& make --directory=/tmp/sdbus-cpp/build --jobs=8



# ---- COMPILE ANBOX
FROM base as anbox

# hadolint ignore=DL3008
RUN DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends --yes \
ca-certificates \
cmake \
cmake-data \
cmake-extras \
debhelper \
Expand Down Expand Up @@ -33,10 +59,14 @@ RUN apt-get update && \
libsdl2-image-dev \
libsystemd-dev \
lxc-dev \
pkg-config \
python3 \
protobuf-compiler && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

# install sdbus-cpp and add to path
COPY --from=sdbus-cpp /tmp/sdbus-cpp /tmp/sdbus-cpp
RUN make --directory=/tmp/sdbus-cpp/build install
ENV PATH="/usr/local/bin/sdbus-c++-xml2cpp:${PATH}"

WORKDIR /anbox
22 changes: 13 additions & 9 deletions external/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,16 @@ add_subdirectory(backward-cpp)
set(BUILD_TESTING OFF)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error")
add_subdirectory(cpu_features)
include(ExternalProject)
ExternalProject_Add(sdbus-cpp
PREFIX sdbus-cpp
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/sdbus-cpp"
INSTALL_COMMAND ""
CMAKE_CACHE_ARGS
-DBUILD_CODE_GEN:BOOL=ON
-DBUILD_SHARED_LIBS:BOOL=OFF
)

if(COMPILE_SDBUS_CPP)
include(ExternalProject)
ExternalProject_Add(sdbus-cpp
PREFIX sdbus-cpp
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/sdbus-cpp"
INSTALL_COMMAND ""
CMAKE_CACHE_ARGS
-DBUILD_CODE_GEN:BOOL=ON
-DBUILD_SHARED_LIBS:BOOL=OFF
)
endif()

2 changes: 1 addition & 1 deletion scripts/build-with-docker.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#!/bin/sh
docker build -t anbox/anbox-builder .
DOCKER_BUILDKIT=1 docker build -t anbox/anbox-builder .
docker run --rm --user=$(id -u):$(id -g) --volume=$PWD:/anbox anbox/anbox-builder /anbox/scripts/build.sh $@
18 changes: 16 additions & 2 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ include_directories(
${CMAKE_SOURCE_DIR}/external/android-emugl/host/libs/renderControl_dec
${CMAKE_BINARY_DIR}/external/android-emugl/host/libs/renderControl_dec
${CMAKE_SOURCE_DIR}/external/cpu_features/include
${CMAKE_SOURCE_DIR}/external/sdbus-cpp/include
)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBINDERFS_PATH=\"\\\"${BINDERFS_PATH}\\\"\"")
Expand Down Expand Up @@ -59,7 +58,22 @@ add_library(anbox-protobuf
target_link_libraries(anbox-protobuf
${PROTOBUF_LITE_LIBRARIES})

set(XML2CPP ${CMAKE_BINARY_DIR}/external/sdbus-cpp/src/sdbus-cpp-build/tools/sdbus-c++-xml2cpp)

# sdbus-cpp
# set includes and code-generator
if(COMPILE_SDBUS_CPP)
# in-tree binary and includes
set(XML2CPP ${CMAKE_BINARY_DIR}/external/sdbus-cpp/src/sdbus-cpp-build/tools/sdbus-c++-xml2cpp)
include_directories(
${CMAKE_SOURCE_DIR}/external/sdbus-cpp/include
)
else()
# installed binary (must be in PATH) and includes
set(XML2CPP sdbus-c++-xml2cpp)
include_directories(
/usr/local/include/sdbus-c++
)
endif()

macro(DBusServer BaseName)
add_custom_command(
Expand Down