From b35c21f70cc3d86ad410b3003fce9b50e08b6dc3 Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Mon, 8 Jul 2019 17:12:41 +0300 Subject: [PATCH] compositor: turn weston main() into a lib This takes everything that was in 'weston' the executable a turns it into library. A new trivial 'weston' executable is written. Creating the library will allow future improvements: - we can link weston plugins against the library, meaning that they no longer need unresolved symbols to be allowed during linking - tests do not have to fork() and exec() 'weston', they can just link to the library and call wet_main() after setting things up; this will help with using a debugger install_rpath is set so that we can install the library into weston's module directory, away from the normal libraries in a system. This is one library we do not intend for others to use. The library has no stable ABI and is not versioned. Signed-off-by: Pekka Paalanen --- compositor/executable.c | 34 ++++++++++++++++++++++++++++++++++ compositor/main.c | 3 ++- compositor/meson.build | 21 ++++++++++++++++++--- compositor/weston.h | 3 +++ 4 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 compositor/executable.c diff --git a/compositor/executable.c b/compositor/executable.c new file mode 100644 index 00000000..0644077a --- /dev/null +++ b/compositor/executable.c @@ -0,0 +1,34 @@ +/* + * Copyright © 2019 Collabora, Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "config.h" + +#include "weston.h" + +int +main(int argc, char *argv[]) +{ + return wet_main(argc, argv); +} diff --git a/compositor/main.c b/compositor/main.c index b3f6ba25..370e634a 100644 --- a/compositor/main.c +++ b/compositor/main.c @@ -3101,7 +3101,8 @@ weston_log_subscribe_to_scopes(struct weston_log_context *log_ctx, } } -int main(int argc, char *argv[]) +WL_EXPORT int +wet_main(int argc, char *argv[]) { int ret = EXIT_FAILURE; char *cmdline; diff --git a/compositor/meson.build b/compositor/meson.build index fa3e1558..c638919c 100644 --- a/compositor/meson.build +++ b/compositor/meson.build @@ -26,12 +26,27 @@ if get_option('xwayland') config_h.set_quoted('XSERVER_PATH', get_option('xwayland-path')) endif +libexec_weston = shared_library( + 'exec_weston', + sources: srcs_weston, + include_directories: common_inc, + dependencies: deps_weston, + install_dir: dir_module_weston, + install: true, + version: '0.0.0', + soversion: 0 +) +dep_libexec_weston = declare_dependency( + link_with: libexec_weston, + include_directories: [ include_directories('.'), public_inc ], + dependencies: dep_libweston_public +) exe_weston = executable( 'weston', - srcs_weston, + 'executable.c', include_directories: common_inc, - link_args: [ '-Wl,-export-dynamic' ], - dependencies: deps_weston, + dependencies: dep_libexec_weston, + install_rpath: dir_module_weston, install: true ) install_headers('weston.h', subdir: 'weston') diff --git a/compositor/weston.h b/compositor/weston.h index 036d9cf8..24a67370 100644 --- a/compositor/weston.h +++ b/compositor/weston.h @@ -95,6 +95,9 @@ text_backend_init(struct weston_compositor *ec); void text_backend_destroy(struct text_backend *text_backend); +int +wet_main(int argc, char *argv[]); + #ifdef __cplusplus } #endif