http_parser: fix copying outputs for static build
Co-Authored-By: John Ericson <John.Ericson@Obsidian.Systems>
This commit is contained in:
parent
fa58b67d7a
commit
33f464b661
2 changed files with 108 additions and 4 deletions
|
@ -1,4 +1,7 @@
|
|||
{ lib, stdenv, fetchFromGitHub, fetchpatch }:
|
||||
{ lib, stdenv, fetchFromGitHub, fetchpatch
|
||||
, enableShared ? !stdenv.hostPlatform.isStatic
|
||||
, enableStatic ? stdenv.hostPlatform.isStatic
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "http-parser";
|
||||
|
@ -14,6 +17,7 @@ stdenv.mkDerivation rec {
|
|||
env.NIX_CFLAGS_COMPILE = "-Wno-error";
|
||||
|
||||
patches = [
|
||||
./enable-static-shared.patch
|
||||
] ++ lib.optionals stdenv.isAarch32 [
|
||||
# https://github.com/nodejs/http-parser/pull/510
|
||||
(fetchpatch {
|
||||
|
@ -25,16 +29,23 @@ stdenv.mkDerivation rec {
|
|||
makeFlags = [
|
||||
"DESTDIR="
|
||||
"PREFIX=$(out)"
|
||||
"SOEXT=${lib.strings.removePrefix "." stdenv.hostPlatform.extensions.sharedLibrary}"
|
||||
"BINEXT=${stdenv.hostPlatform.extensions.executable}"
|
||||
"Platform=${lib.toLower stdenv.hostPlatform.uname.system}"
|
||||
] ++ lib.optionals stdenv.hostPlatform.isWindows [
|
||||
"AEXT=${lib.strings.removePrefix "." stdenv.hostPlatform.extensions.staticLibrary}"
|
||||
"ENABLE_SHARED=${if enableShared then "1" else "0"}"
|
||||
"ENABLE_STATIC=${if enableStatic then "1" else "0"}"
|
||||
] ++ lib.optionals enableShared [
|
||||
"SOEXT=${lib.strings.removePrefix "." stdenv.hostPlatform.extensions.sharedLibrary}"
|
||||
] ++ lib.optionals enableStatic [
|
||||
"AEXT=${lib.strings.removePrefix "." stdenv.hostPlatform.extensions.staticLibrary}"
|
||||
] ++ lib.optionals (enableShared && stdenv.hostPlatform.isWindows) [
|
||||
"SONAME=$(SOLIBNAME).$(SOMAJOR).$(SOMINOR).$(SOEXT)"
|
||||
"LIBNAME=$(SOLIBNAME).$(SOMAJOR).$(SOMINOR).$(SOREV).$(SOEXT)"
|
||||
"LDFLAGS=-Wl,--out-implib=$(LIBNAME).a"
|
||||
];
|
||||
|
||||
buildFlags = [ "library" ];
|
||||
buildFlags = lib.optional enableShared "library"
|
||||
++ lib.optional enableStatic "package";
|
||||
|
||||
doCheck = true;
|
||||
checkTarget = "test";
|
||||
|
|
|
@ -0,0 +1,93 @@
|
|||
commit abcb3cca9452779e91380b7636f32745166af3de
|
||||
Author: John Ericson <John.Ericson@Obsidian.Systems>
|
||||
Date: Wed Nov 29 23:55:38 2023 -0500
|
||||
|
||||
Make build system: enable/disable shared/static support
|
||||
|
||||
This allows building this package in static-lib-only distros.
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 5d21221..cbc7914 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -18,6 +18,9 @@
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
+ENABLE_SHARED ?= 1
|
||||
+ENABLE_STATIC ?=
|
||||
+
|
||||
PLATFORM ?= $(shell sh -c 'uname -s | tr "[A-Z]" "[a-z]"')
|
||||
HELPER ?=
|
||||
BINEXT ?=
|
||||
@@ -25,6 +28,8 @@ SOLIBNAME = libhttp_parser
|
||||
SOMAJOR = 2
|
||||
SOMINOR = 9
|
||||
SOREV = 4
|
||||
+AEXT = a
|
||||
+STATICLIBNAME = $(SOLIBNAME).$(AEXT)
|
||||
ifeq (darwin,$(PLATFORM))
|
||||
SOEXT ?= dylib
|
||||
SONAME ?= $(SOLIBNAME).$(SOMAJOR).$(SOMINOR).$(SOEXT)
|
||||
@@ -109,11 +114,17 @@ test-valgrind: test_g
|
||||
libhttp_parser.o: http_parser.c http_parser.h Makefile
|
||||
$(CC) $(CPPFLAGS_FAST) $(CFLAGS_LIB) -c http_parser.c -o libhttp_parser.o
|
||||
|
||||
-library: libhttp_parser.o
|
||||
- $(CC) $(LDFLAGS_LIB) -o $(LIBNAME) $<
|
||||
+.PHONY: library
|
||||
+library: $(LIBNAME)
|
||||
+
|
||||
+$(LIBNAME): libhttp_parser.o
|
||||
+ $(CC) $(LDFLAGS_LIB) -o $@ $<
|
||||
|
||||
-package: http_parser.o
|
||||
- $(AR) rcs libhttp_parser.a http_parser.o
|
||||
+.PHONY: package
|
||||
+package: $(STATICLIBNAME)
|
||||
+
|
||||
+$(STATICLIBNAME): http_parser.o
|
||||
+ $(AR) rcs $@ $<
|
||||
|
||||
url_parser: http_parser.o contrib/url_parser.c
|
||||
$(CC) $(CPPFLAGS_FAST) $(CFLAGS_FAST) $^ -o $@
|
||||
@@ -130,12 +141,30 @@ parsertrace_g: http_parser_g.o contrib/parsertrace.c
|
||||
tags: http_parser.c http_parser.h test.c
|
||||
ctags $^
|
||||
|
||||
-install: library
|
||||
+.PHONY: install-headers
|
||||
+install-headers:
|
||||
$(INSTALL) -D http_parser.h $(DESTDIR)$(INCLUDEDIR)/http_parser.h
|
||||
+
|
||||
+.PHONY: install-library
|
||||
+install-library: library
|
||||
$(INSTALL) -D $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME)
|
||||
ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME)
|
||||
ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT)
|
||||
|
||||
+.PHONY: install-package
|
||||
+install-package: package
|
||||
+ $(INSTALL) -D $(STATICLIBNAME) $(DESTDIR)$(LIBDIR)/$(STATICLIBNAME)
|
||||
+
|
||||
+.PHONY: install
|
||||
+install: install-headers
|
||||
+ifeq ($(ENABLE_SHARED),1)
|
||||
+install: install-library
|
||||
+endif
|
||||
+ifeq ($(ENABLE_STATIC),1)
|
||||
+install: install-package
|
||||
+endif
|
||||
+
|
||||
+.PHONY: install-strip
|
||||
install-strip: library
|
||||
$(INSTALL) -D http_parser.h $(DESTDIR)$(INCLUDEDIR)/http_parser.h
|
||||
$(INSTALL) -D -s $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME)
|
||||
@@ -147,6 +176,7 @@ uninstall:
|
||||
rm $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT)
|
||||
rm $(DESTDIR)$(LIBDIR)/$(SONAME)
|
||||
rm $(DESTDIR)$(LIBDIR)/$(LIBNAME)
|
||||
+ rm $(DESTDIR)$(LIBDIR)/$(STATICLIBNAME)
|
||||
|
||||
clean:
|
||||
rm -f *.o *.a tags test test_fast test_g \
|
Loading…
Reference in a new issue