feat: hecitc C: add hectic-config
This commit is contained in:
10
flake.nix
10
flake.nix
@@ -430,7 +430,7 @@
|
||||
pname = "http";
|
||||
inherit version;
|
||||
src = prev.fetchFromGitHub { owner = "pramsey"; repo = "pgsql-http"; rev = "v${version}"; hash = "sha256-C8eqi0q1dnshUAZjIsZFwa5FTYc7vmATF3vv2CReWPM="; }; nativeBuildInputs = with prev; [pkg-config curl]; };
|
||||
buildHelloExt = versionSuffix: let
|
||||
buildHelExt = versionSuffix: let
|
||||
postgresql = prev."postgresql_${versionSuffix}";
|
||||
in buildPostgresqlExtension {
|
||||
inherit postgresql;
|
||||
@@ -447,25 +447,25 @@
|
||||
http = buildHttpExt "17";
|
||||
pg_smtp_client = buildSmtpExt "17";
|
||||
plhaskell = buildPlHaskellExt "17";
|
||||
hel = buildHelloExt "17";
|
||||
hel = buildHelExt "17";
|
||||
};};
|
||||
postgresql_16 = prev.postgresql_16 // {pkgs = prev.postgresql_16.pkgs // {
|
||||
http = buildHttpExt "16";
|
||||
pg_smtp_client = buildSmtpExt "16";
|
||||
plhaskell = buildPlHaskellExt "16";
|
||||
hel = buildHelloExt "16";
|
||||
hel = buildHelExt "16";
|
||||
};};
|
||||
postgresql_15 = prev.postgresql_15 // {pkgs = prev.postgresql_15.pkgs // {
|
||||
http = buildHttpExt "15";
|
||||
pg_smtp_client = buildSmtpExt "15";
|
||||
plhaskell = buildPlHaskellExt "15";
|
||||
hel = buildHelloExt "15";
|
||||
hel = buildHelExt "15";
|
||||
};};
|
||||
postgresql_14 = prev.postgresql_14 // {pkgs = prev.postgresql_14.pkgs // {
|
||||
http = buildHttpExt "14";
|
||||
pg_smtp_client = buildSmtpExt "14";
|
||||
plhaskell = buildPlHaskellExt "14";
|
||||
hel = buildHelloExt "14";
|
||||
hel = buildHelExt "14";
|
||||
};};
|
||||
writers = let
|
||||
writeC =
|
||||
|
||||
@@ -18,9 +18,46 @@ stdenv.mkDerivation {
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/lib $out/include
|
||||
mkdir -p $out/lib $out/include $out/bin
|
||||
cp target/libhectic.a $out/lib/
|
||||
cp hectic.h $out/include/
|
||||
|
||||
# Create hectic-config script
|
||||
cat > $out/bin/hectic-config <<EOF
|
||||
#!/bin/sh
|
||||
|
||||
usage() {
|
||||
echo "Usage: hectic-config [--cflags] [--libs]"
|
||||
echo " --cflags Print the compiler flags"
|
||||
echo " --libs Print the linker flags"
|
||||
echo " --help Display this help message"
|
||||
exit \$1
|
||||
}
|
||||
|
||||
if [ \$# -eq 0 ]; then
|
||||
usage 1
|
||||
fi
|
||||
|
||||
while [ \$# -gt 0 ]; do
|
||||
case "\$1" in
|
||||
--cflags)
|
||||
echo "-I$out/include"
|
||||
;;
|
||||
--libs)
|
||||
echo "-L$out/lib -lhectic"
|
||||
;;
|
||||
--help)
|
||||
usage 0
|
||||
;;
|
||||
*)
|
||||
usage 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
EOF
|
||||
|
||||
chmod +x $out/bin/hectic-config
|
||||
'';
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -7,7 +7,11 @@ PG_CONFIG = pg_config
|
||||
|
||||
PGXS := $(shell $(PG_CONFIG) --pgxs)
|
||||
|
||||
# Add hectic library path
|
||||
CFLAGS += -I -lhectic
|
||||
HECTIC_CONFIG = hectic-config
|
||||
|
||||
CFLAGS += $(shell $(HECTIC_CONFIG) --cflags)
|
||||
LDFLAGS += $(shell $(HECTIC_CONFIG) --libs)
|
||||
|
||||
SHLIB_LINK := $(LIBS)
|
||||
|
||||
include $(PGXS)
|
||||
@@ -86,8 +86,14 @@ case "$MODE" in
|
||||
build)
|
||||
mkdir -p target
|
||||
echo "# Building PostgreSQL extension"
|
||||
|
||||
# Get hectic library paths from nix
|
||||
HECTIC_PATH=$(nix build --print-out-paths -f ../../../. c-hectic)
|
||||
HECTIC_INCLUDE="$HECTIC_PATH/include"
|
||||
HECTIC_LIB="$HECTIC_PATH/lib"
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
gcc $CFLAGS $OPTFLAGS -I$PG_INCLUDE -shared -o target/hel.so hel.c
|
||||
gcc $CFLAGS $OPTFLAGS -I$PG_INCLUDE -I$HECTIC_INCLUDE -shared -o target/hel.so hel.c -L$HECTIC_LIB -lhectic
|
||||
|
||||
# Copy extension files to target directory
|
||||
cp hel.control target/
|
||||
|
||||
Reference in New Issue
Block a user