From c57de60522c3f2d493b6c013072b5c2b0dea3f0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Luis=20Lafuente?= Date: Thu, 28 Mar 2024 19:00:04 +0100 Subject: [PATCH] C API: Keep the structure flat See https://github.com/NixOS/nix/pull/10329 --- Makefile | 6 ++--- doc/external-api/doxygen.cfg.in | 6 ++--- local.mk | 2 +- src/libexpr-c/local.mk | 25 +++++++++++++++++++ src/{libexpr/c => libexpr-c}/nix-expr-c.pc.in | 0 src/{libexpr/c => libexpr-c}/nix_api_expr.cc | 0 src/{libexpr/c => libexpr-c}/nix_api_expr.h | 0 .../c => libexpr-c}/nix_api_expr_internal.h | 0 .../c => libexpr-c}/nix_api_external.cc | 0 .../c => libexpr-c}/nix_api_external.h | 0 src/{libexpr/c => libexpr-c}/nix_api_value.cc | 0 src/{libexpr/c => libexpr-c}/nix_api_value.h | 0 src/libexpr/c/local.mk | 19 -------------- src/{libstore/c => libstore-c}/local.mk | 6 ++++- .../c => libstore-c}/nix-store-c.pc.in | 0 .../c => libstore-c}/nix_api_store.cc | 0 .../c => libstore-c}/nix_api_store.h | 0 .../c => libstore-c}/nix_api_store_internal.h | 0 src/{libutil/c => libutil-c}/local.mk | 5 +++- src/{libutil/c => libutil-c}/nix_api_util.cc | 0 src/{libutil/c => libutil-c}/nix_api_util.h | 0 .../c => libutil-c}/nix_api_util_internal.h | 0 tests/unit/libexpr/local.mk | 5 +++- tests/unit/libstore/local.mk | 4 ++- tests/unit/libutil/local.mk | 3 ++- tests/unit/libutil/nix_api_util.cc | 1 - 26 files changed, 50 insertions(+), 32 deletions(-) create mode 100644 src/libexpr-c/local.mk rename src/{libexpr/c => libexpr-c}/nix-expr-c.pc.in (100%) rename src/{libexpr/c => libexpr-c}/nix_api_expr.cc (100%) rename src/{libexpr/c => libexpr-c}/nix_api_expr.h (100%) rename src/{libexpr/c => libexpr-c}/nix_api_expr_internal.h (100%) rename src/{libexpr/c => libexpr-c}/nix_api_external.cc (100%) rename src/{libexpr/c => libexpr-c}/nix_api_external.h (100%) rename src/{libexpr/c => libexpr-c}/nix_api_value.cc (100%) rename src/{libexpr/c => libexpr-c}/nix_api_value.h (100%) delete mode 100644 src/libexpr/c/local.mk rename src/{libstore/c => libstore-c}/local.mk (57%) rename src/{libstore/c => libstore-c}/nix-store-c.pc.in (100%) rename src/{libstore/c => libstore-c}/nix_api_store.cc (100%) rename src/{libstore/c => libstore-c}/nix_api_store.h (100%) rename src/{libstore/c => libstore-c}/nix_api_store_internal.h (100%) rename src/{libutil/c => libutil-c}/local.mk (53%) rename src/{libutil/c => libutil-c}/nix_api_util.cc (100%) rename src/{libutil/c => libutil-c}/nix_api_util.h (100%) rename src/{libutil/c => libutil-c}/nix_api_util_internal.h (100%) diff --git a/Makefile b/Makefile index 306f9ed19..788ed3571 100644 --- a/Makefile +++ b/Makefile @@ -18,9 +18,9 @@ makefiles = \ src/libexpr/local.mk \ src/libcmd/local.mk \ src/nix/local.mk \ - src/libutil/c/local.mk \ - src/libstore/c/local.mk \ - src/libexpr/c/local.mk \ + src/libutil-c/local.mk \ + src/libstore-c/local.mk \ + src/libexpr-c/local.mk \ src/resolve-system-dependencies/local.mk \ scripts/local.mk \ misc/bash/local.mk \ diff --git a/doc/external-api/doxygen.cfg.in b/doc/external-api/doxygen.cfg.in index 454514935..cd8b4989b 100644 --- a/doc/external-api/doxygen.cfg.in +++ b/doc/external-api/doxygen.cfg.in @@ -36,9 +36,9 @@ GENERATE_LATEX = NO # so they can expand variables despite configure variables. INPUT = \ - src/libutil/c \ - src/libexpr/c \ - src/libstore/c \ + src/libutil-c \ + src/libexpr-c \ + src/libstore-c \ doc/external-api/README.md FILE_PATTERNS = nix_api_*.h *.md diff --git a/local.mk b/local.mk index 9a1ed50df..69ef02f08 100644 --- a/local.mk +++ b/local.mk @@ -2,7 +2,7 @@ GLOBAL_CXXFLAGS += -Wno-deprecated-declarations -Werror=switch # Allow switch-enum to be overridden for files that do not support it, usually because of dependency headers. ERROR_SWITCH_ENUM = -Werror=switch-enum -$(foreach i, config.h $(wildcard src/lib*/*.hh) $(wildcard src/lib*/*.h $(filter-out %_internal.h, $(wildcard src/lib*/c/*.h))), \ +$(foreach i, config.h $(wildcard src/lib*/*.hh) $(wildcard src/lib*/*.h $(filter-out %_internal.h, $(wildcard src/lib*c/*.h))), \ $(eval $(call install-file-in, $(i), $(includedir)/nix, 0644))) $(GCH): src/libutil/util.hh config.h diff --git a/src/libexpr-c/local.mk b/src/libexpr-c/local.mk new file mode 100644 index 000000000..ce5d321d6 --- /dev/null +++ b/src/libexpr-c/local.mk @@ -0,0 +1,25 @@ +libraries += libexprc + +libexprc_NAME = libnixexprc + +libexprc_DIR := $(d) + +libexprc_SOURCES := \ + $(wildcard $(d)/*.cc) \ + +# Not just for this library itself, but also for downstream libraries using this library + +INCLUDE_libexprc := -I $(d) +libexprc_CXXFLAGS += $(INCLUDE_libutil) $(INCLUDE_libutilc) \ + $(INCLUDE_libfetchers) \ + $(INCLUDE_libstore) $(INCLUDE_libstorec) \ + $(INCLUDE_libexpr) $(INCLUDE_libexprc) + +libexprc_LIBS = libutil libutilc libstore libstorec libexpr + +libexprc_LDFLAGS += -pthread + +$(eval $(call install-file-in, $(d)/nix-expr-c.pc, $(libdir)/pkgconfig, 0644)) + +libexprc_FORCE_INSTALL := 1 + diff --git a/src/libexpr/c/nix-expr-c.pc.in b/src/libexpr-c/nix-expr-c.pc.in similarity index 100% rename from src/libexpr/c/nix-expr-c.pc.in rename to src/libexpr-c/nix-expr-c.pc.in diff --git a/src/libexpr/c/nix_api_expr.cc b/src/libexpr-c/nix_api_expr.cc similarity index 100% rename from src/libexpr/c/nix_api_expr.cc rename to src/libexpr-c/nix_api_expr.cc diff --git a/src/libexpr/c/nix_api_expr.h b/src/libexpr-c/nix_api_expr.h similarity index 100% rename from src/libexpr/c/nix_api_expr.h rename to src/libexpr-c/nix_api_expr.h diff --git a/src/libexpr/c/nix_api_expr_internal.h b/src/libexpr-c/nix_api_expr_internal.h similarity index 100% rename from src/libexpr/c/nix_api_expr_internal.h rename to src/libexpr-c/nix_api_expr_internal.h diff --git a/src/libexpr/c/nix_api_external.cc b/src/libexpr-c/nix_api_external.cc similarity index 100% rename from src/libexpr/c/nix_api_external.cc rename to src/libexpr-c/nix_api_external.cc diff --git a/src/libexpr/c/nix_api_external.h b/src/libexpr-c/nix_api_external.h similarity index 100% rename from src/libexpr/c/nix_api_external.h rename to src/libexpr-c/nix_api_external.h diff --git a/src/libexpr/c/nix_api_value.cc b/src/libexpr-c/nix_api_value.cc similarity index 100% rename from src/libexpr/c/nix_api_value.cc rename to src/libexpr-c/nix_api_value.cc diff --git a/src/libexpr/c/nix_api_value.h b/src/libexpr-c/nix_api_value.h similarity index 100% rename from src/libexpr/c/nix_api_value.h rename to src/libexpr-c/nix_api_value.h diff --git a/src/libexpr/c/local.mk b/src/libexpr/c/local.mk deleted file mode 100644 index 01b03f4d2..000000000 --- a/src/libexpr/c/local.mk +++ /dev/null @@ -1,19 +0,0 @@ -libraries += libexprc - -libexprc_NAME = libnixexprc - -libexprc_DIR := $(d) - -libexprc_SOURCES := \ - $(wildcard $(d)/*.cc) \ - -libexprc_CXXFLAGS += -I src/libutil -Isrc/libfetchers -I src/libstore -I src/libstorec -I src/libexpr -I src/libutil/c -I src/libstore/c - -libexprc_LIBS = libutil libutilc libstore libstorec libexpr - -libexprc_LDFLAGS += -pthread - -$(eval $(call install-file-in, $(d)/nix-expr-c.pc, $(libdir)/pkgconfig, 0644)) - -libexprc_FORCE_INSTALL := 1 - diff --git a/src/libstore/c/local.mk b/src/libstore-c/local.mk similarity index 57% rename from src/libstore/c/local.mk rename to src/libstore-c/local.mk index 35e2bd63d..36a8e77a4 100644 --- a/src/libstore/c/local.mk +++ b/src/libstore-c/local.mk @@ -10,7 +10,11 @@ libstorec_LIBS = libutil libstore libutilc libstorec_LDFLAGS += -pthread -libstorec_CXXFLAGS += -I src/libutil -I src/libstore -I src/libutil/c +# Not just for this library itself, but also for downstream libraries using this library + +INCLUDE_libstorec := -I $(d) +libstorec_CXXFLAGS += $(INCLUDE_libutil) $(INCLUDE_libutilc) \ + $(INCLUDE_libstore) $(INCLUDE_libstorec) $(eval $(call install-file-in, $(d)/nix-store-c.pc, $(libdir)/pkgconfig, 0644)) diff --git a/src/libstore/c/nix-store-c.pc.in b/src/libstore-c/nix-store-c.pc.in similarity index 100% rename from src/libstore/c/nix-store-c.pc.in rename to src/libstore-c/nix-store-c.pc.in diff --git a/src/libstore/c/nix_api_store.cc b/src/libstore-c/nix_api_store.cc similarity index 100% rename from src/libstore/c/nix_api_store.cc rename to src/libstore-c/nix_api_store.cc diff --git a/src/libstore/c/nix_api_store.h b/src/libstore-c/nix_api_store.h similarity index 100% rename from src/libstore/c/nix_api_store.h rename to src/libstore-c/nix_api_store.h diff --git a/src/libstore/c/nix_api_store_internal.h b/src/libstore-c/nix_api_store_internal.h similarity index 100% rename from src/libstore/c/nix_api_store_internal.h rename to src/libstore-c/nix_api_store_internal.h diff --git a/src/libutil/c/local.mk b/src/libutil-c/local.mk similarity index 53% rename from src/libutil/c/local.mk rename to src/libutil-c/local.mk index fe156e7f3..342dc2d8b 100644 --- a/src/libutil/c/local.mk +++ b/src/libutil-c/local.mk @@ -6,7 +6,10 @@ libutilc_DIR := $(d) libutilc_SOURCES := $(wildcard $(d)/*.cc) -libutilc_CXXFLAGS += -I src/libutil +# Not just for this library itself, but also for downstream libraries using this library + +INCLUDE_libutilc := -I $(d) +libutilc_CXXFLAGS += $(INCLUDE_libutil) $(INCLUDE_libutilc) libutilc_LIBS = libutil diff --git a/src/libutil/c/nix_api_util.cc b/src/libutil-c/nix_api_util.cc similarity index 100% rename from src/libutil/c/nix_api_util.cc rename to src/libutil-c/nix_api_util.cc diff --git a/src/libutil/c/nix_api_util.h b/src/libutil-c/nix_api_util.h similarity index 100% rename from src/libutil/c/nix_api_util.h rename to src/libutil-c/nix_api_util.h diff --git a/src/libutil/c/nix_api_util_internal.h b/src/libutil-c/nix_api_util_internal.h similarity index 100% rename from src/libutil/c/nix_api_util_internal.h rename to src/libutil-c/nix_api_util_internal.h diff --git a/tests/unit/libexpr/local.mk b/tests/unit/libexpr/local.mk index 0a7b28436..8df1a5207 100644 --- a/tests/unit/libexpr/local.mk +++ b/tests/unit/libexpr/local.mk @@ -24,9 +24,12 @@ libexpr-tests_EXTRA_INCLUDES = \ -I tests/unit/libstore-support \ -I tests/unit/libutil-support \ $(INCLUDE_libexpr) \ + $(INCLUDE_libexprc) \ $(INCLUDE_libfetchers) \ $(INCLUDE_libstore) \ - $(INCLUDE_libutil) + $(INCLUDE_libstorec) \ + $(INCLUDE_libutil) \ + $(INCLUDE_libutilc) libexpr-tests_CXXFLAGS += $(libexpr-tests_EXTRA_INCLUDES) diff --git a/tests/unit/libstore/local.mk b/tests/unit/libstore/local.mk index fe1254487..b8f895fad 100644 --- a/tests/unit/libstore/local.mk +++ b/tests/unit/libstore/local.mk @@ -20,7 +20,9 @@ libstore-tests_EXTRA_INCLUDES = \ -I tests/unit/libstore-support \ -I tests/unit/libutil-support \ $(INCLUDE_libstore) \ - $(INCLUDE_libutil) + $(INCLUDE_libstorec) \ + $(INCLUDE_libutil) \ + $(INCLUDE_libutilc) libstore-tests_CXXFLAGS += $(libstore-tests_EXTRA_INCLUDES) diff --git a/tests/unit/libutil/local.mk b/tests/unit/libutil/local.mk index 0d0acd4c0..39b4c0782 100644 --- a/tests/unit/libutil/local.mk +++ b/tests/unit/libutil/local.mk @@ -18,7 +18,8 @@ libutil-tests_SOURCES := $(wildcard $(d)/*.cc) libutil-tests_EXTRA_INCLUDES = \ -I tests/unit/libutil-support \ - $(INCLUDE_libutil) + $(INCLUDE_libutil) \ + $(INCLUDE_libutilc) libutil-tests_CXXFLAGS += $(libutil-tests_EXTRA_INCLUDES) diff --git a/tests/unit/libutil/nix_api_util.cc b/tests/unit/libutil/nix_api_util.cc index 20e46637c..09f3f3e05 100644 --- a/tests/unit/libutil/nix_api_util.cc +++ b/tests/unit/libutil/nix_api_util.cc @@ -1,4 +1,3 @@ - #include "config.hh" #include "args.hh" #include "nix_api_util.h"