update build
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,4 +1,6 @@
|
|||||||
/build/
|
/build/
|
||||||
|
/build-*/
|
||||||
|
/dist/
|
||||||
*.o
|
*.o
|
||||||
*.so
|
*.so
|
||||||
*.swp
|
*.swp
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
cmake_minimum_required(VERSION 3.20)
|
cmake_minimum_required(VERSION 3.20)
|
||||||
|
|
||||||
project(obs-webkit-browser VERSION 0.1.0 LANGUAGES C CXX)
|
project(obs-webkit-browser VERSION 1.1.0 LANGUAGES C CXX)
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
|
|||||||
57
Makefile
Normal file
57
Makefile
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
PROJECT_NAME := obs-webkit-browser
|
||||||
|
VERSION := $(shell sed -n '/^project.* VERSION / { s/^project.* VERSION //; s/ .*//; p; }' CMakeLists.txt)
|
||||||
|
ARCH := $(shell uname -m)
|
||||||
|
|
||||||
|
BUILD_DIR ?= build-release
|
||||||
|
DIST_DIR ?= dist
|
||||||
|
STAGE_DIR ?= $(BUILD_DIR)/stage
|
||||||
|
INSTALL_PREFIX ?= /usr
|
||||||
|
ARCHIVE_NAME := $(PROJECT_NAME)-$(VERSION)-linux-$(ARCH).tar.gz
|
||||||
|
ARCHIVE_PATH := $(abspath $(DIST_DIR)/$(ARCHIVE_NAME))
|
||||||
|
PLUGIN_STAGE_DIR := $(STAGE_DIR)/$(PROJECT_NAME)
|
||||||
|
PLUGIN_BIN_DIR := $(PLUGIN_STAGE_DIR)/bin/64bit
|
||||||
|
PLUGIN_DATA_DIR := $(PLUGIN_STAGE_DIR)/data
|
||||||
|
|
||||||
|
CMAKE ?= $(if $(wildcard /usr/bin/cmake),/usr/bin/cmake,cmake)
|
||||||
|
CTEST ?= $(if $(wildcard /usr/bin/ctest),/usr/bin/ctest,ctest)
|
||||||
|
|
||||||
|
.PHONY: all configure build test install stage archive clean
|
||||||
|
|
||||||
|
all: build
|
||||||
|
|
||||||
|
configure:
|
||||||
|
$(CMAKE) -S . -B $(BUILD_DIR) -G Ninja \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=$(INSTALL_PREFIX)
|
||||||
|
|
||||||
|
build: configure
|
||||||
|
$(CMAKE) --build $(BUILD_DIR)
|
||||||
|
|
||||||
|
test: build
|
||||||
|
$(CTEST) --test-dir $(BUILD_DIR) --output-on-failure
|
||||||
|
|
||||||
|
install: build
|
||||||
|
$(CMAKE) --install $(BUILD_DIR) --strip
|
||||||
|
|
||||||
|
stage: test
|
||||||
|
$(CMAKE) -E remove_directory $(STAGE_DIR)
|
||||||
|
$(CMAKE) -E make_directory $(PLUGIN_BIN_DIR)
|
||||||
|
$(CMAKE) -E make_directory $(PLUGIN_DATA_DIR)/locale
|
||||||
|
$(CMAKE) -E copy_if_different \
|
||||||
|
$(BUILD_DIR)/obs-webkit-browser.so $(PLUGIN_BIN_DIR)/obs-webkit-browser.so
|
||||||
|
$(CMAKE) -E copy_if_different \
|
||||||
|
$(BUILD_DIR)/obs-webkit-renderer $(PLUGIN_DATA_DIR)/obs-webkit-renderer
|
||||||
|
$(CMAKE) -E copy_if_different \
|
||||||
|
data/locale/en-US.ini data/locale/ru-RU.ini $(PLUGIN_DATA_DIR)/locale/
|
||||||
|
|
||||||
|
archive: stage
|
||||||
|
$(CMAKE) -E make_directory $(DIST_DIR)
|
||||||
|
cd $(STAGE_DIR) && $(CMAKE) -E tar cfvz $(ARCHIVE_PATH) --format=gnutar $(PROJECT_NAME)
|
||||||
|
$(CMAKE) -E sha256sum $(ARCHIVE_PATH) >$(ARCHIVE_PATH).sha256
|
||||||
|
@echo
|
||||||
|
@echo "Archive: $(ARCHIVE_PATH)"
|
||||||
|
@echo "SHA-256: $(ARCHIVE_PATH).sha256"
|
||||||
|
|
||||||
|
clean:
|
||||||
|
$(CMAKE) -E remove_directory $(BUILD_DIR)
|
||||||
|
$(CMAKE) -E remove_directory $(DIST_DIR)
|
||||||
26
README.md
26
README.md
@@ -61,6 +61,32 @@ doas /usr/bin/cmake --install build --prefix /usr
|
|||||||
Если OBS установлен в нестандартный prefix, задайте при конфигурации
|
Если OBS установлен в нестандартный prefix, задайте при конфигурации
|
||||||
`OBS_PLUGIN_DIR` и `OBS_PLUGIN_DATA_DIR`.
|
`OBS_PLUGIN_DIR` и `OBS_PLUGIN_DATA_DIR`.
|
||||||
|
|
||||||
|
## Архив для публикации
|
||||||
|
|
||||||
|
После установки зависимостей используйте отдельные цели `Makefile`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make build
|
||||||
|
make test
|
||||||
|
doas make install
|
||||||
|
make archive
|
||||||
|
```
|
||||||
|
|
||||||
|
`make build` собирает Release-версию, `make test` запускает тесты,
|
||||||
|
`doas make install` устанавливает плагин в `/usr`, а `make archive` запускает
|
||||||
|
сборку и тесты, после чего создаёт пакет без установки файлов в систему.
|
||||||
|
Готовый архив `obs-webkit-browser-<version>-linux-<arch>.tar.gz` и файл с его
|
||||||
|
SHA-256 будут записаны в каталог `dist/`. Внутри нет абсолютных путей: архив
|
||||||
|
содержит только пользовательскую структуру плагина
|
||||||
|
`obs-webkit-browser/{bin/64bit,data}`. Установить её можно напрямую в каталог
|
||||||
|
пользовательских плагинов OBS:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mkdir -p ~/.config/obs-studio/plugins
|
||||||
|
tar -xzf dist/obs-webkit-browser-<version>-linux-<arch>.tar.gz \
|
||||||
|
-C ~/.config/obs-studio/plugins
|
||||||
|
```
|
||||||
|
|
||||||
## Почему WebKitGTK, а не WPE
|
## Почему WebKitGTK, а не WPE
|
||||||
|
|
||||||
WPE архитектурно подходит лучше всего, но пакет `wpewebkit` отсутствует в актуальном
|
WPE архитектурно подходит лучше всего, но пакет `wpewebkit` отсутствует в актуальном
|
||||||
|
|||||||
Reference in New Issue
Block a user