compositor: turn weston main() into a lib
authorPekka Paalanen <pekka.paalanen@collabora.com>
Mon, 8 Jul 2019 14:12:41 +0000 (17:12 +0300)
committerPekka Paalanen <pekka.paalanen@collabora.com>
Thu, 24 Oct 2019 10:40:51 +0000 (13:40 +0300)
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 <pekka.paalanen@collabora.com>
compositor/executable.c [new file with mode: 0644]
compositor/main.c
compositor/meson.build
compositor/weston.h

diff --git a/compositor/executable.c b/compositor/executable.c
new file mode 100644 (file)
index 0000000..0644077
--- /dev/null
@@ -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);
+}
index b3f6ba25f52802ba9f031347884c5853743220da..370e634ad33c193a6fcd1f2e7ce31eb406f3d820 100644 (file)
@@ -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;
index fa3e15585537c620b46319c007def2b9bee6fc7d..c638919cd9b13031cc735e38f3d7f6e8e6f16bda 100644 (file)
@@ -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')
index 036d9cf85e8d91cb0e3bfd1cbe3a1907e33d5c70..24a67370b7526706b81b8e19655960950deb637f 100644 (file)
@@ -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