Systemverilog plugin: Use pkg-config to determine dependencies.
UHDM and Surelog now both provide pkg-config configuration
so using that moves the repsonsibility finding the correct include
paths and libs to the right place.
Fixes #472
Signed-off-by: Henner Zeller <h.zeller@acm.org>
diff --git a/systemverilog-plugin/Makefile b/systemverilog-plugin/Makefile
index af5320d..0e2f11f 100644
--- a/systemverilog-plugin/Makefile
+++ b/systemverilog-plugin/Makefile
@@ -27,31 +27,26 @@
# Directory to search for Surelog and UHDM libraries
UHDM_INSTALL_DIR ?= /usr/local
+# Tell pkg-config to look in the provided install path first.
+# PKG_CONFIG_PATH and PKG_CONFIG_PATH_FOR_TARGET are search paths it looks in
+# so set the environment variables and prefix with our local install first
+PKG_CONFIG_INVOKE = \
+ PKG_CONFIG_PATH=$(UHDM_INSTALL_DIR)/lib/pkgconfig:${PKG_CONFIG_PATH} \
+ PKG_CONFIG_PATH_FOR_TARGET=$(UHDM_INSTALL_DIR)/lib/pkgconfig:${PKG_CONFIG_PATH_FOR_TARGET} \
+ pkg-config
+
include ../Makefile_plugin.common
+# A litmus-test: make compilation fail if pkg-config fails
+.SECONDARY: $(BUILD_DIR)/.$(NAME)-deps-test
+$(BUILD_DIR)/.$(NAME)-deps-test:
+ $(PKG_CONFIG_INVOKE) --cflags Surelog
+
+${_SO_LIB}: | $(BUILD_DIR)/.$(NAME)-deps-test
+
CXXFLAGS += -std=c++17 -Wall -W -Wextra \
-Wno-deprecated-declarations \
-Wno-unused-parameter \
- -I${UHDM_INSTALL_DIR}/include \
- -I${UHDM_INSTALL_DIR}/include/Surelog
+ $(shell $(PKG_CONFIG_INVOKE) --cflags Surelog)
-LDFLAGS += -L${UHDM_INSTALL_DIR}/lib/uhdm \
- -L${UHDM_INSTALL_DIR}/lib/surelog \
- -L${UHDM_INSTALL_DIR}/lib \
- -L${UHDM_INSTALL_DIR}/lib64/uhdm \
- -L${UHDM_INSTALL_DIR}/lib64/surelog \
- -L${UHDM_INSTALL_DIR}/lib64
-
-LDLIBS += -Wl,--whole-archive \
- -luhdm \
- -Wl,--no-whole-archive \
- -lsurelog \
- -lantlr4-runtime \
- -lflatbuffers \
- -lcapnp \
- -lkj \
- -ldl \
- -lutil \
- -lm \
- -lrt \
- -lpthread
+LDFLAGS += $(shell $(PKG_CONFIG_INVOKE) --libs Surelog)