Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Experimental support for xdg-shell #135

Merged
merged 9 commits into from Jan 24, 2018
12 changes: 8 additions & 4 deletions .travis.yml
Expand Up @@ -31,9 +31,10 @@ stages:
env:
global:
# SPREAD_LINODE_KEY
- secure: QmijX+AeqyYUJuiRkdCCXMZTAzokc7Y9a5Lwv1Y48SALuBLyMULrJxNVrHi/8whRX97PL5+31JazS8ZdfxucIaEy/JapwbmoKlJIjsvcm4azFgzATlXLKdqkfTOZ0qtYdSI910UjRT7EfBp2tyTz4zDnXysicr3K/CWx2P4MnIvNoH+hNz6ux/WpET9a+GFMmDJmyqyxDNLiHCpk7AUHARMsl6LC0SeGfabJjd59cRkG0Kdktr7nDooegB9aZPrMkIH9HIFRkib45/nTFHHa7jqX0CvJPMTBY/QljPOuNfhkaNtUTxCdfqFH7u8hM7d7ieX6PavjSgt4aTZC4LVJf6Y7xC/LA32yZELHKUexH1EaDkur0fypErDpRmjoPC9yBvpijL+bLlnDAHNc7xnelIhn6HHd8qM6OpEQUN6yl3J5KHRSuXPsBxwMQWoo3cXWRtLo0ESrZOm5KJ2+UA+JArofBwcyeygbBtYnvzTJB+nNPCmY5TrqA6wPeSaaZPMsESCGmgzCRTxg3B2YNbgX7VqZjwBcwRhNwGzLSlL40WSOa7bgDyQTm76l7Y/6Nav4vMrSFDycQz1n4keaD4b0Dy7rUTD5HTIu+IP7KiO/anu8IPCnG4kBfPw2r52GHMXlNE9cN8aC9exwuvfZOn3DbtREPeZUTaxqpWUvAIQ7nRs=
- secure: RCoJlG7Su7btAQDHoqDDkIGj3pXatGPeUnBQ3ZC2nfw40Tg7m3Rp21igW02x4hjWH7BtHM7AzyyAbr7Z87MA1KYVZ6bc1+LXjByiKWH+rurXchJupWusplZR1/6kbPMsOswH9bPf72FzfoG+Kt7Xg+14ePu34x0lvLHqIPQ40BdQVWWtonb9Af5IFpHz+6WU8wHxgjhaY84l2mlwIxu/IAqjxwvuMNrfHcoIdmwcITxZh1Dun8ckWTL8XDCxL4EHwhXj5tEOR51zE3wnvfNT1OfavtnIOpa35gx4oqpvb6748bPDbT1KScSrItsXRDelwZn5qAC/9oZwGZpF41F+uMPwty/X/P6AqWYz2UW/hoNIymFkcoU8HUkI2OtmlKW76bkJ+KHR+MW3uwOVQtZYkEolH/RYLlmMCJ2RhfD7MsKrrqOsOI7ROrMVp7bBzHkGT50vYi8hDGYRnb9jMgmHVuFejwQiFSFxOvN5aGo6dnmKV6fGXiTq3yUWSfwdC0/1K6OqT0giLByWLduLtEJSBIUWk8cWSIsx6CPh/TVrM3DPG7R1p6yuPyu9O13tRHYlLpGJOXbq6/eTLp6y9Jyh5f/mN3P1ydNfKH8iG1Sjj8pJbK2JAQ3zCnstHGpzFgjWncFqc1DuFIv/gJRact5fA7MnwjZMaexxhInq+4Thbl8=
- DEBFULLNAME="Mir CI Bot"
- DEBEMAIL="mir-ci-bot@canonical.com"
- SPREAD_PATH=/tmp/spread
matrix:
- SYSTEM=ubuntu-16.04 VARIANT=amd64
- SYSTEM=ubuntu-16.04 VARIANT=arm64
Expand All @@ -42,11 +43,14 @@ env:
- SYSTEM=fedora-27 VARIANT=amd64

before_install:
- sudo apt-get --yes install snapd
- sudo snap install spread
- mkdir -p ${SPREAD_PATH}
- pushd "${SPREAD_PATH}"
- curl -s -O https://niemeyer.s3.amazonaws.com/spread-amd64.tar.gz
- tar xzvf spread-amd64.tar.gz
- popd

script:
- /snap/bin/spread linode:$SYSTEM:...:$VARIANT
- ${SPREAD_PATH}/spread -v linode:$SYSTEM:...:$VARIANT

jobs:
include:
Expand Down
2 changes: 2 additions & 0 deletions spread.yaml
Expand Up @@ -12,6 +12,8 @@ backends:
- fedora-27
linode:
key: "$(HOST: echo $SPREAD_LINODE_KEY)"
plan: 8GB
location: fremont
systems:
- ubuntu-16.04
- ubuntu-17.10
Expand Down
28 changes: 25 additions & 3 deletions src/protocol/CMakeLists.txt
Expand Up @@ -13,16 +13,38 @@ target_link_libraries(wrapper-generator
)

get_filename_component(
GENERATED_HEADER src/server/frontend/wayland/core_generated_interfaces.h
CORE_GENERATED_HEADER src/server/frontend/wayland/core_generated_interfaces.h
ABSOLUTE
BASE_DIR ${PROJECT_SOURCE_DIR}
)

get_filename_component(
XDG_SHELL_GENERATED_HEADER src/server/frontend/wayland/xdg_shell_generated_interfaces.h
ABSOLUTE
BASE_DIR ${PROJECT_SOURCE_DIR}
)

get_filename_component(
XDG_SHELL_HEADER src/server/frontend/wayland/xdg-shell-unstable-v6.h
ABSOLUTE
BASE_DIR ${PROJECT_SOURCE_DIR}
)

get_filename_component(
XDG_SHELL_CODE src/server/frontend/wayland/xdg-shell-unstable-v6.c
ABSOLUTE
BASE_DIR ${PROJECT_SOURCE_DIR}
)

add_custom_target(refresh-wayland-wrapper
COMMAND "sh" "-c" "${CMAKE_BINARY_DIR}/bin/wrapper-generator wl_ /usr/share/wayland/wayland.xml >${GENERATED_HEADER}"
COMMAND "sh" "-c" "${CMAKE_BINARY_DIR}/bin/wrapper-generator wl_ wayland-server.h /usr/share/wayland/wayland.xml >${CORE_GENERATED_HEADER}"
COMMAND "sh" "-c" "${CMAKE_BINARY_DIR}/bin/wrapper-generator z xdg-shell-unstable-v6.h /usr/share/wayland-protocols/unstable/xdg-shell/xdg-shell-unstable-v6.xml >${XDG_SHELL_GENERATED_HEADER}"
COMMAND "wayland-scanner" "--include-core-only" "server-header" "/usr/share/wayland-protocols/unstable/xdg-shell/xdg-shell-unstable-v6.xml" "${XDG_SHELL_HEADER}"
COMMAND "wayland-scanner" "--include-core-only" "code" "/usr/share/wayland-protocols/unstable/xdg-shell/xdg-shell-unstable-v6.xml" "${XDG_SHELL_CODE}"
VERBATIM
DEPENDS wrapper-generator
DEPENDS /usr/share/wayland/wayland.xml
SOURCES ${GENERATED_HEADER}
DEPENDS /usr/share/wayland-protocols/unstable/xdg-shell/xdg-shell-unstable-v6.xml
SOURCES ${CORE_GENERATED_HEADER} ${XDG_SHELL_GENERATED_HEADER}
)

22 changes: 11 additions & 11 deletions src/protocol/wrapper_generator.cpp
Expand Up @@ -37,24 +37,18 @@ void emit_comment_header(std::ostream& out)
out << " */" << std::endl;
}

void emit_required_headers()
void emit_required_headers(std::string const& custom_header)
{
std::cout << "#include <experimental/optional>" << std::endl;
std::cout << "#include <boost/throw_exception.hpp>" << std::endl;
std::cout << "#include <boost/exception/diagnostic_information.hpp>" << std::endl;
std::cout << std::endl;
std::cout << "#include <wayland-server.h>" << std::endl;
std::cout << "#include <wayland-server-protocol.h>" << std::endl;
std::cout << "#include \"" << custom_header << "\"" << std::endl;
std::cout << std::endl;
std::cout << "#include \"mir/fd.h\"" << std::endl;
std::cout << "#include \"mir/log.h\"" << std::endl;
}

std::string strip_wl_prefix(std::string const& name)
{
return name.substr(3);
}

std::string camel_case_string(std::string const& name)
{
std::string camel_cased_name;
Expand Down Expand Up @@ -478,9 +472,14 @@ class Interface
std::vector<Method> methods;
};

// arguments are:
// 0: binary
// 1: name prefix (such as wl_)
// 2: header to include (such as wayland-server.h)
// 3: input file path
int main(int argc, char** argv)
{
if (argc != 3)
if (argc != 4)
{
exit(1);
}
Expand All @@ -497,7 +496,7 @@ int main(int argc, char** argv)
return camel_case_string(transformed_name);
};

xmlpp::DomParser parser(argv[2]);
xmlpp::DomParser parser(argv[3]);

auto document = parser.get_document();

Expand All @@ -515,7 +514,8 @@ int main(int argc, char** argv)

std::cout << std::endl;

emit_required_headers();
std::string const custom_header{argv[2]};
emit_required_headers(custom_header);

std::cout << std::endl;

Expand Down
3 changes: 3 additions & 0 deletions src/server/frontend/wayland/CMakeLists.txt
Expand Up @@ -2,6 +2,9 @@ set(
WAYLAND_SOURCES

core_generated_interfaces.h
xdg_shell_generated_interfaces.h
xdg-shell-unstable-v6.h
xdg-shell-unstable-v6.c
wayland_default_configuration.cpp
wayland_connector.cpp wayland_connector.h
wlshmbuffer.cpp wlshmbuffer.h)
Expand Down
3 changes: 1 addition & 2 deletions src/server/frontend/wayland/core_generated_interfaces.h
Expand Up @@ -9,8 +9,7 @@
#include <boost/throw_exception.hpp>
#include <boost/exception/diagnostic_information.hpp>

#include <wayland-server.h>
#include <wayland-server-protocol.h>
#include "wayland-server.h"

#include "mir/fd.h"
#include "mir/log.h"
Expand Down