From 5556402f42199f3efb6cbefb52e726b7eaefd0c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CRumi?= Date: Wed, 15 Apr 2026 21:03:55 +0000 Subject: [PATCH] 1. updated Dockerfile to build from a yosys containing debian(bookworm) image 2. fixed build dependencies (package & makefile) 3. added a vscode .devcontainer to trigger the appropriate mounting & build command --- .devcontainer/devcontainer.json | 19 +++++++++++++++++++ Dockerfile | 20 +++++++++++++------- src/Makefile | 31 ++++++++++++++++++++++++++++--- 3 files changed, 60 insertions(+), 10 deletions(-) create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..9697e944 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "My Project", + "build": { + "dockerfile": "../Dockerfile" + }, + "postCreateCommand": "make -C /vossroot/src package", + "workspaceFolder": "/vossroot", + "customizations": { + "vscode": { + "extensions": [ + "ms-vscode.cpptools" + ] + } + }, + "mounts": [ + "source=${localWorkspaceFolder},target=/vossroot,type=bind,consistency=cached" + ], + "remoteUser": "root" +} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 8943831b..cc5d30f8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,18 @@ -FROM debian:buster +# FROM debian:bookworm +FROM gdnmhr/yosys:debian-bookworm-v0.62 ARG DEBIAN_FRONTEND=noninteractive -RUN sudo apt-get update && \ - sudo apt-get -y install gawk git make python3 lld bison clang flex \ - libffi-dev libfl-dev libreadline-dev pkg-config tcl-dev zlib1g-dev \ - graphviz xdot +RUN apt-get update && \ + apt-get -y install --no-install-recommends \ + build-essential \ + gawk git make python3 lld bison clang flex \ + libffi-dev libfl-dev libreadline-dev pkg-config tcl-dev tk-dev zlib1g-dev \ + graphviz xdot \ + # rumi 260415 for BSD Editline + libedit-dev && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* VOLUME /vossroot -WORKDIR /vossroot/src -CMD make package +WORKDIR /vossroot/src \ No newline at end of file diff --git a/src/Makefile b/src/Makefile index e9c1a5e6..5733830f 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2,6 +2,12 @@ # Top level makefile # +# rumi 260415: Automatically detect compiler and linker flags for Tcl, Tk, and Editline +PKG_FLAGS := $(filter-out -static, $(shell pkg-config --cflags --libs tcl tk libedit)) +CFLAGS += $(PKG_FLAGS) +CXXFLAGS += $(PKG_FLAGS) +LDFLAGS += $(PKG_FLAGS) + # # Current directory # @@ -96,7 +102,7 @@ docker_package: docker run --user $(REPO_OWNER) -v `pwd`/..:/vossroot vossii-static-builder package: clean - make install LINKFLAG=-static + make install rm -r ../voss ; true install -m 755 -d ../voss/ install -m 755 -d ../voss/bin @@ -242,8 +248,27 @@ minisat: visualization: make -C "$(VISUALIZATION_DIR)" TCL_INCLUDE=$(TCL_INCLUDE) CC=$(CC) CXX=$(CX) -$(YOSYS_WRITE_PEXLIF)/write_pexlif.so: $(YOSYS_WRITE_PEXLIF)/write_pexlif.cc - make -C $(YOSYS_WRITE_PEXLIF) +# $(YOSYS_WRITE_PEXLIF)/write_pexlif.so: $(YOSYS_WRITE_PEXLIF)/write_pexlif.cc +# make -C $(YOSYS_WRITE_PEXLIF) +# Define the libraries to link +# YOSYS_LIBS := $(shell /opt/tools/yosys/bin/yosys-config --ldflags --libs) + +# write_pexlif.so: write_pexlif.o +# g++ -shared -o $@ $^ $(YOSYS_LIBS) + +# rumi 260415: this is a stupid HACK to make pexlif compile +VPATH := /vossroot/src/external/yosys/write_pexlif + +PEXLIF_OBJ := write_pexlif.o +PEXLIF_TARGET := /vossroot/src/external/yosys/write_pexlif/write_pexlif.so + +$(PEXLIF_TARGET): $(PEXLIF_OBJ) + g++ -shared -o $@ $^ $(shell /opt/tools/yosys/bin/yosys-config --ldflags --libs) + +# Now make will automatically find write_pexlif.cc because of VPATH +$(PEXLIF_OBJ): write_pexlif.cc + g++ -fPIC -D_YOSYS_ -DDEBUG -I/opt/tools/yosys/share/yosys/include -c $< -o $@ + clean: @-make -C lib clean