-
Notifications
You must be signed in to change notification settings - Fork 723
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Embedded javascript engine, work is almost finished to have polkit use it instead of mozjs, so add a recipe to be ready to switch: https://gitlab.freedesktop.org/polkit/polkit/-/merge_requests/97 Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
- Loading branch information
Showing
2 changed files
with
318 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
SUMMARY = "Duktape embeddable Javascript engine" | ||
DESCRIPTION = "Duktape is an embeddable Javascript engine, with a focus on portability and compact footprint." | ||
HOMEPAGE = "https://duktape.org" | ||
LICENSE = "MIT" | ||
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c83446610de1f63c7ca60cfcc82dec9d" | ||
|
||
SRC_URI = "https://duktape.org/duktape-${PV}.tar.xz \ | ||
file://0001-Support-makefile-variables.patch \ | ||
" | ||
SRC_URI[md5sum] = "01ee8ecf3dd5c6504543c8679661bb20" | ||
SRC_URI[sha256sum] = "96f4a05a6c84590e53b18c59bb776aaba80a205afbbd92b82be609ba7fe75fa7" | ||
|
||
do_compile () { | ||
oe_runmake -f Makefile.sharedlibrary INSTALL_PREFIX="${prefix}" DESTDIR="${D}" | ||
} | ||
|
||
do_install () { | ||
oe_runmake -f Makefile.sharedlibrary INSTALL_PREFIX="${prefix}" DESTDIR="${D}" install | ||
# libduktaped is identical to libduktape but has an hard-coded -g build flags, remove it | ||
rm -f ${D}${libdir}/libduktaped.so* | ||
} |
297 changes: 297 additions & 0 deletions
297
meta-oe/recipes-extended/duktape/files/0001-Support-makefile-variables.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,297 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Luca Boccassi <luca.boccassi@microsoft.com> | ||
Date: Mon, 17 Jan 2022 18:12:03 +0000 | ||
Subject: [PATCH] Support makefile variables | ||
|
||
Makefile*: use CFLAGS/CPPFLAGS/LDFLAGS | ||
Makefile*: allow compiler and install variables to be overridden | ||
Makefile.sharedlibrary: allow destdir and libdir to be overridden | ||
Makefile.sharedlibrary: generate pkg-config file | ||
|
||
Forwarded: https://github.com/svaarala/duktape/pull/2457 | ||
--- | ||
Makefile.cmdline | 5 ++-- | ||
Makefile.codepage | 5 ++-- | ||
Makefile.dukdebug | 5 ++-- | ||
Makefile.eval | 5 ++-- | ||
Makefile.eventloop | 5 ++-- | ||
Makefile.hello | 5 ++-- | ||
Makefile.jsoncbor | 5 ++-- | ||
Makefile.jxpretty | 5 ++-- | ||
Makefile.sandbox | 5 ++-- | ||
Makefile.sharedlibrary | 48 ++++++++++++++++++++----------- | ||
duktape.pc.in | 10 +++++++ | ||
11 files changed, 68 insertions(+), 35 deletions(-) | ||
create mode 100644 duktape.pc.in | ||
|
||
diff --git a/Makefile.cmdline b/Makefile.cmdline | ||
index 235566b8..0b020510 100644 | ||
--- a/Makefile.cmdline | ||
+++ b/Makefile.cmdline | ||
@@ -8,7 +8,8 @@ DUKTAPE_SOURCES = src/duktape.c | ||
CMDLINE_SOURCES = \ | ||
examples/cmdline/duk_cmdline.c | ||
|
||
-CC = gcc | ||
+CC ?= gcc | ||
+CC := $(CC) | ||
CCOPTS = -Os -pedantic -std=c99 -Wall -fstrict-aliasing -fomit-frame-pointer | ||
CCOPTS += -I./examples/cmdline -I./src # duktape.h and duk_config.h must be in include path | ||
CCLIBS = -lm | ||
@@ -40,7 +41,7 @@ CMDLINE_SOURCES += extras/module-duktape/duk_module_duktape.c | ||
# http://wiki.duktape.org/Configuring.html | ||
|
||
duk: $(DUKTAPE_SOURCES) $(CMDLINE_SOURCES) | ||
- $(CC) -o $@ $(DEFINES) $(CCOPTS) $(DUKTAPE_SOURCES) $(CMDLINE_SOURCES) $(CCLIBS) | ||
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $(DEFINES) $(CCOPTS) $(DUKTAPE_SOURCES) $(CMDLINE_SOURCES) $(CCLIBS) | ||
|
||
linenoise/linenoise.c: linenoise | ||
linenoise: | ||
diff --git a/Makefile.codepage b/Makefile.codepage | ||
index f6ef1582..29fa6ffc 100644 | ||
--- a/Makefile.codepage | ||
+++ b/Makefile.codepage | ||
@@ -1,6 +1,7 @@ | ||
-CC = gcc | ||
+CC ?= gcc | ||
+CC := $(CC) | ||
|
||
codepage: | ||
- $(CC) -o $@ -std=c99 -O2 -Wall -Wextra -Isrc/ \ | ||
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ -std=c99 -O2 -Wall -Wextra -Isrc/ \ | ||
src/duktape.c examples/codepage-conv/duk_codepage_conv.c \ | ||
examples/codepage-conv/test.c -lm | ||
diff --git a/Makefile.dukdebug b/Makefile.dukdebug | ||
index 9fafcc3f..aa289d2e 100644 | ||
--- a/Makefile.dukdebug | ||
+++ b/Makefile.dukdebug | ||
@@ -10,7 +10,8 @@ CMDLINE_SOURCES = \ | ||
examples/cmdline/duk_cmdline.c \ | ||
examples/debug-trans-socket/duk_trans_socket_unix.c | ||
|
||
-CC = gcc | ||
+CC ?= gcc | ||
+CC := $(CC) | ||
CCOPTS = -Os -pedantic -std=c99 -Wall -fstrict-aliasing -fomit-frame-pointer | ||
CCOPTS += -I./prep -I./examples/cmdline -I./examples/debug-trans-socket | ||
CCOPTS += -DDUK_CMDLINE_DEBUGGER_SUPPORT # enable --debugger in ./duk | ||
@@ -38,4 +39,4 @@ duk: $(CMDLINE_SOURCES) | ||
-DDUK_USE_INTERRUPT_COUNTER \ | ||
-DDUK_USE_DEBUGGER_DUMPHEAP \ | ||
-DDUK_USE_DEBUGGER_INSPECT | ||
- $(CC) -o $@ $(DEFINES) $(CCOPTS) $(DUKTAPE_SOURCES) $(CMDLINE_SOURCES) $(CCLIBS) | ||
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $(DEFINES) $(CCOPTS) $(DUKTAPE_SOURCES) $(CMDLINE_SOURCES) $(CCLIBS) | ||
diff --git a/Makefile.eval b/Makefile.eval | ||
index 530f74a8..ce831a69 100644 | ||
--- a/Makefile.eval | ||
+++ b/Makefile.eval | ||
@@ -2,8 +2,9 @@ | ||
# Example Makefile for building the eval example | ||
# | ||
|
||
-CC = gcc | ||
+CC ?= gcc | ||
+CC := $(CC) | ||
|
||
eval: | ||
- $(CC) -o $@ -std=c99 -O2 -Wall -Wextra -Isrc/ \ | ||
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ -std=c99 -O2 -Wall -Wextra -Isrc/ \ | ||
src/duktape.c examples/eval/eval.c -lm | ||
diff --git a/Makefile.eventloop b/Makefile.eventloop | ||
index 1a75587b..ab1b2f72 100644 | ||
--- a/Makefile.eventloop | ||
+++ b/Makefile.eventloop | ||
@@ -2,14 +2,15 @@ | ||
# Example Makefile for building the eventloop example | ||
# | ||
|
||
-CC = gcc | ||
+CC ?= gcc | ||
+CC := $(CC) | ||
|
||
evloop: | ||
@echo "NOTE: The eventloop is an example intended to be used on Linux" | ||
@echo " or other common UNIX variants. It is not fully portable." | ||
@echo "" | ||
|
||
- $(CC) -o $@ -std=c99 -Wall -Wextra -O2 -Isrc \ | ||
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ -std=c99 -Wall -Wextra -O2 -Isrc \ | ||
examples/eventloop/main.c \ | ||
examples/eventloop/c_eventloop.c \ | ||
examples/eventloop/poll.c \ | ||
diff --git a/Makefile.hello b/Makefile.hello | ||
index c12b8e09..61269337 100644 | ||
--- a/Makefile.hello | ||
+++ b/Makefile.hello | ||
@@ -13,7 +13,8 @@ DUKTAPE_SOURCES = src/duktape.c | ||
# Compiler options are quite flexible. GCC versions have a significant impact | ||
# on the size of -Os code, e.g. gcc-4.6 is much worse than gcc-4.5. | ||
|
||
-CC = gcc | ||
+CC ?= gcc | ||
+CC := $(CC) | ||
CCOPTS = -Os -pedantic -std=c99 -Wall -fstrict-aliasing -fomit-frame-pointer | ||
CCOPTS += -I./src # for combined sources | ||
CCLIBS = -lm | ||
@@ -29,4 +30,4 @@ DEFINES = | ||
# For debugging, use -O0 -g -ggdb, and don't add -fomit-frame-pointer | ||
|
||
hello: $(DUKTAPE_SOURCES) examples/hello/hello.c | ||
- $(CC) -o $@ $(DEFINES) $(CCOPTS) $(DUKTAPE_SOURCES) examples/hello/hello.c $(CCLIBS) | ||
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $(DEFINES) $(CCOPTS) $(DUKTAPE_SOURCES) examples/hello/hello.c $(CCLIBS) | ||
diff --git a/Makefile.jsoncbor b/Makefile.jsoncbor | ||
index 30387a2f..8f234004 100644 | ||
--- a/Makefile.jsoncbor | ||
+++ b/Makefile.jsoncbor | ||
@@ -2,9 +2,10 @@ | ||
# Example Makefile for building the jsoncbor example | ||
# | ||
|
||
-CC = gcc | ||
+CC ?= gcc | ||
+CC := $(CC) | ||
|
||
jsoncbor: | ||
- $(CC) -o $@ -std=c99 -Wall -Wextra -O2 -Isrc -Iextras/cbor \ | ||
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ -std=c99 -Wall -Wextra -O2 -Isrc -Iextras/cbor \ | ||
src/duktape.c extras/cbor/duk_cbor.c extras/cbor/jsoncbor.c \ | ||
-lm | ||
diff --git a/Makefile.jxpretty b/Makefile.jxpretty | ||
index 7ab00cec..aa53aa8b 100644 | ||
--- a/Makefile.jxpretty | ||
+++ b/Makefile.jxpretty | ||
@@ -2,9 +2,10 @@ | ||
# Example Makefile for building the jxpretty example | ||
# | ||
|
||
-CC = gcc | ||
+CC ?= gcc | ||
+CC := $(CC) | ||
|
||
jxpretty: | ||
- $(CC) -o $@ -std=c99 -Wall -Wextra -O2 -Isrc \ | ||
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ -std=c99 -Wall -Wextra -O2 -Isrc \ | ||
src/duktape.c examples/jxpretty/jxpretty.c \ | ||
-lm | ||
diff --git a/Makefile.sandbox b/Makefile.sandbox | ||
index 26bb5ffc..d1d69ce4 100644 | ||
--- a/Makefile.sandbox | ||
+++ b/Makefile.sandbox | ||
@@ -2,8 +2,9 @@ | ||
# Example Makefile for building the sandbox example | ||
# | ||
|
||
-CC = gcc | ||
+CC ?= gcc | ||
+CC := $(CC) | ||
|
||
sandbox: | ||
- $(CC) -o $@ -std=c99 -O2 -Wall -Wextra -Isrc/ \ | ||
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ -std=c99 -O2 -Wall -Wextra -Isrc/ \ | ||
src/duktape.c examples/sandbox/sandbox.c -lm | ||
diff --git a/Makefile.sharedlibrary b/Makefile.sharedlibrary | ||
index ace206a1..11620aa7 100644 | ||
--- a/Makefile.sharedlibrary | ||
+++ b/Makefile.sharedlibrary | ||
@@ -24,7 +24,9 @@ | ||
# convention is to set soname version to (100*MAJOR + MINOR), e.g. 104 for | ||
# Duktape 1.4.x, so that it gets automatically bumped for major and minor | ||
# releases (potentially binary incompatible), but not for patch releases. | ||
+# The formatted version is used for the pkg-config file. | ||
DUK_VERSION = 20600 | ||
+DUK_VERSION_FORMATTED = 2.6.0 | ||
SONAME_VERSION = 206 | ||
REAL_VERSION = $(SONAME_VERSION).$(DUK_VERSION) | ||
|
||
@@ -45,44 +45,58 @@ else | ||
endif | ||
|
||
# Change to actual path for actual distribution packaging. | ||
-INSTALL_PREFIX = /usr/local | ||
+INSTALL_PREFIX ?= /usr/local | ||
+INSTALL_PREFIX := $(INSTALL_PREFIX) | ||
+DESTDIR ?= | ||
+DESTDIR := $(DESTDIR) | ||
+LIBDIR ?= /lib | ||
+LIBDIR := $(LIBDIR) | ||
|
||
# The 'noline' variant may be more appropriate for some distributions; it | ||
# doesn't have #line directives in the combined source. | ||
DUKTAPE_SRCDIR = ./src | ||
#DUKTAPE_SRCDIR = ./src-noline | ||
|
||
-CC = gcc | ||
+CC ?= gcc | ||
+CC := $(CC) | ||
|
||
.PHONY: all | ||
-all: libduktape.$(SO_REALNAME_SUFFIX) libduktaped.$(SO_REALNAME_SUFFIX) | ||
+all: libduktape.$(SO_REALNAME_SUFFIX) libduktaped.$(SO_REALNAME_SUFFIX) duktape.pc | ||
|
||
# If the default duk_config.h is not suitable for the distribution, modify it | ||
# before compiling the shared library and copy the same, edited duk_config.h | ||
# to $INSTALL_PREFIX/include on installation. | ||
|
||
libduktape.$(SO_REALNAME_SUFFIX): | ||
- $(CC) -shared -fPIC -Wall -Wextra -Os -Wl,$(LD_SONAME_ARG),libduktape.$(SO_SONAME_SUFFIX) \ | ||
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fPIC -Wall -Wextra -Os -Wl,$(LD_SONAME_ARG),libduktape.$(SO_SONAME_SUFFIX) \ | ||
-o $@ $(DUKTAPE_SRCDIR)/duktape.c | ||
|
||
libduktaped.$(SO_REALNAME_SUFFIX): | ||
- $(CC) -shared -fPIC -g -Wall -Wextra -Os -Wl,$(LD_SONAME_ARG),libduktaped.$(SO_SONAME_SUFFIX) \ | ||
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fPIC -g -Wall -Wextra -Os -Wl,$(LD_SONAME_ARG),libduktaped.$(SO_SONAME_SUFFIX) \ | ||
-o $@ $(DUKTAPE_SRCDIR)/duktape.c | ||
|
||
+duktape.pc: | ||
+ sed -e "s|@PREFIX@|$(INSTALL_PREFIX)|" \ | ||
+ -e "s|@LIBDIR@|$(LIBDIR)|" \ | ||
+ -e "s|@VERSION@|$(DUK_VERSION_FORMATTED)|" \ | ||
+ duktape.pc.in \ | ||
+ > duktape.pc | ||
+ | ||
# Symlinks depend on platform conventions. | ||
.PHONY: install | ||
-install: libduktape.$(SO_REALNAME_SUFFIX) libduktaped.$(SO_REALNAME_SUFFIX) | ||
- mkdir -p $(INSTALL_PREFIX)/lib/ | ||
- cp $+ $(INSTALL_PREFIX)/lib/ | ||
- rm -f $(INSTALL_PREFIX)/lib/libduktape.so $(INSTALL_PREFIX)/lib/libduktape.$(SO_SONAME_SUFFIX) | ||
- ln -s libduktape.$(SO_REALNAME_SUFFIX) $(INSTALL_PREFIX)/lib/libduktape.so | ||
- ln -s libduktape.$(SO_REALNAME_SUFFIX) $(INSTALL_PREFIX)/lib/libduktape.$(SO_SONAME_SUFFIX) | ||
- rm -f $(INSTALL_PREFIX)/lib/libduktaped.so $(INSTALL_PREFIX)/lib/libduktaped.$(SO_SONAME_SUFFIX) | ||
- ln -s libduktaped.$(SO_REALNAME_SUFFIX) $(INSTALL_PREFIX)/lib/libduktaped.so | ||
- ln -s libduktaped.$(SO_REALNAME_SUFFIX) $(INSTALL_PREFIX)/lib/libduktaped.$(SO_SONAME_SUFFIX) | ||
- mkdir -p $(INSTALL_PREFIX)/include/ | ||
- cp $(DUKTAPE_SRCDIR)/duktape.h $(DUKTAPE_SRCDIR)/duk_config.h $(INSTALL_PREFIX)/include/ | ||
+install: libduktape.$(SO_REALNAME_SUFFIX) libduktaped.$(SO_REALNAME_SUFFIX) duktape.pc | ||
+ mkdir -p $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/pkgconfig | ||
+ cp $+ $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/ | ||
+ rm -f $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktape.so $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktape.$(SO_SONAME_SUFFIX) | ||
+ ln -s libduktape.$(SO_REALNAME_SUFFIX) $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktape.so | ||
+ ln -s libduktape.$(SO_REALNAME_SUFFIX) $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktape.$(SO_SONAME_SUFFIX) | ||
+ rm -f $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktaped.so $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktaped.$(SO_SONAME_SUFFIX) | ||
+ ln -s libduktaped.$(SO_REALNAME_SUFFIX) $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktaped.so | ||
+ ln -s libduktaped.$(SO_REALNAME_SUFFIX) $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktaped.$(SO_SONAME_SUFFIX) | ||
+ mv $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/duktape.pc $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/pkgconfig/ | ||
+ mkdir -p $(DESTDIR)$(INSTALL_PREFIX)/include/ | ||
+ cp $(DUKTAPE_SRCDIR)/duktape.h $(DUKTAPE_SRCDIR)/duk_config.h $(DESTDIR)$(INSTALL_PREFIX)/include/ | ||
|
||
CCOPTS = -I./examples/cmdline | ||
duk: | ||
- $(CC) $(CCOPTS) -I$(INSTALL_PREFIX)/include -L$(INSTALL_PREFIX)/lib -Wall -Wextra -Os -o $@ ./examples/cmdline/duk_cmdline.c -lduktape -lm | ||
+ $(CC) $(CCOPTS) -I$(INSTALL_PREFIX)/include -L$(INSTALL_PREFIX)$(LIBDIR) -Wall -Wextra -Os -o $@ ./examples/cmdline/duk_cmdline.c -lduktape -lm | ||
diff --git a/duktape.pc.in b/duktape.pc.in | ||
new file mode 100644 | ||
index 00000000..0985c67e | ||
--- /dev/null | ||
+++ b/duktape.pc.in | ||
@@ -0,0 +1,10 @@ | ||
+prefix=@PREFIX@ | ||
+exec_prefix=${prefix} | ||
+libdir=${prefix}@LIBDIR@ | ||
+includedir=${prefix}/include | ||
+ | ||
+Name: duktape | ||
+Description: Embeddable Javascript engine | ||
+Version: @VERSION@ | ||
+Libs: -L${libdir} -lduktape | ||
+Cflags: -I${includedir} |