diff -Naur duktape-2.7.0/Makefile duktape-2.7.0.new/Makefile --- duktape-2.7.0/Makefile 1970-01-01 01:00:00.000000000 +0100 +++ duktape-2.7.0.new/Makefile 2022-08-26 22:43:35.693131752 +0200 @@ -0,0 +1,104 @@ +# +# Example of how to build and install locally as a shared library +# +# Usage: +# +# $ make -f Makefile.sharedlibrary +# $ sudo make -f Makefile.sharedlibrary install +# $ make -f Makefile.sharedlibrary duk # --> example 'duk' linked to shared libduktape +# +# $ ls -l duk +# -rwxrwxr-x 1 duktape duktape 19407 Nov 30 15:48 duk +# +# $ ldd ./duk +# linux-vdso.so.1 => (0x00007ffd5ed3c000) +# libduktape.so.104 => /usr/local/lib/libduktape.so.104 (0x00007fb2f9753000) +# libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb2f944d000) +# libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb2f9088000) +# /lib64/ld-linux-x86-64.so.2 (0x00007fb2f9991000) +# +# Based on: http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html + +# Soname version must be bumped whenever a binary compatibility change occurs +# (and should not be bumped when the library is compatible). A simple Duktape +# 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 = 20700 +DUK_VERSION_FORMATTED = 2.7.0 +SONAME_VERSION = 207 +REAL_VERSION = $(SONAME_VERSION).$(DUK_VERSION) + +# Mac has an unusual .so naming convention +ifeq ($(OS),Windows_NT) + DETECTED_OS := Windows +else + DETECTED_OS := $(shell uname -s) +endif +ifeq ($(DETECTED_OS),Darwin) + LD_SONAME_ARG=-install_name + SO_SONAME_SUFFIX=$(SONAME_VERSION).so + SO_REALNAME_SUFFIX=$(REAL_VERSION).so +else + LD_SONAME_ARG=-soname + SO_SONAME_SUFFIX=so.$(SONAME_VERSION) + SO_REALNAME_SUFFIX=so.$(REAL_VERSION) +endif + +# Change to actual path for actual distribution packaging. +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 := $(CC) + +.PHONY: all +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) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fPIC -Wall -Wextra -Os -Wl,$(LD_SONAME_ARG),libduktape.$(SO_SONAME_SUFFIX) \ + -o $@ $(DUKTAPE_SRCDIR)/duktape.c -lm + +libduktaped.$(SO_REALNAME_SUFFIX): + $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fPIC -g -Wall -Wextra -Os -Wl,$(LD_SONAME_ARG),libduktaped.$(SO_SONAME_SUFFIX) \ + -o $@ $(DUKTAPE_SRCDIR)/duktape.c -lm + +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) 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)$(LIBDIR) -Wall -Wextra -Os -o $@ ./examples/cmdline/duk_cmdline.c -lduktape -lm diff -Naur duktape-2.7.0/Makefile.sharedlibrary duktape-2.7.0.new/Makefile.sharedlibrary --- duktape-2.7.0/Makefile.sharedlibrary 2022-02-18 22:22:19.000000000 +0100 +++ duktape-2.7.0.new/Makefile.sharedlibrary 1970-01-01 01:00:00.000000000 +0100 @@ -1,104 +0,0 @@ -# -# Example of how to build and install locally as a shared library -# -# Usage: -# -# $ make -f Makefile.sharedlibrary -# $ sudo make -f Makefile.sharedlibrary install -# $ make -f Makefile.sharedlibrary duk # --> example 'duk' linked to shared libduktape -# -# $ ls -l duk -# -rwxrwxr-x 1 duktape duktape 19407 Nov 30 15:48 duk -# -# $ ldd ./duk -# linux-vdso.so.1 => (0x00007ffd5ed3c000) -# libduktape.so.104 => /usr/local/lib/libduktape.so.104 (0x00007fb2f9753000) -# libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb2f944d000) -# libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb2f9088000) -# /lib64/ld-linux-x86-64.so.2 (0x00007fb2f9991000) -# -# Based on: http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html - -# Soname version must be bumped whenever a binary compatibility change occurs -# (and should not be bumped when the library is compatible). A simple Duktape -# 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 = 20700 -DUK_VERSION_FORMATTED = 2.7.0 -SONAME_VERSION = 207 -REAL_VERSION = $(SONAME_VERSION).$(DUK_VERSION) - -# Mac has an unusual .so naming convention -ifeq ($(OS),Windows_NT) - DETECTED_OS := Windows -else - DETECTED_OS := $(shell uname -s) -endif -ifeq ($(DETECTED_OS),Darwin) - LD_SONAME_ARG=-install_name - SO_SONAME_SUFFIX=$(SONAME_VERSION).so - SO_REALNAME_SUFFIX=$(REAL_VERSION).so -else - LD_SONAME_ARG=-soname - SO_SONAME_SUFFIX=so.$(SONAME_VERSION) - SO_REALNAME_SUFFIX=so.$(REAL_VERSION) -endif - -# Change to actual path for actual distribution packaging. -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 := $(CC) - -.PHONY: all -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) $(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) $(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) 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)$(LIBDIR) -Wall -Wextra -Os -o $@ ./examples/cmdline/duk_cmdline.c -lduktape -lm