@@ -102,7 +102,7 @@ all: top-all
102102YOSYS_SRC := $(dir $(firstword $(MAKEFILE_LIST ) ) )
103103VPATH := $(YOSYS_SRC )
104104
105- CXXSTD ?= c++17
105+ export CXXSTD ?= c++17
106106CXXFLAGS := $(CXXFLAGS ) -Wall -Wextra -ggdb -I. -I"$(YOSYS_SRC ) " -MD -MP -D_YOSYS_ -fPIC -I$(PREFIX ) /include
107107LIBS := $(LIBS ) -lstdc++ -lm
108108PLUGIN_LINKFLAGS :=
@@ -133,10 +133,6 @@ LINKFLAGS += -rdynamic
133133ifneq ($(shell :; command -v brew),)
134134BREW_PREFIX := $(shell brew --prefix) /opt
135135$(info $$BREW_PREFIX is [${BREW_PREFIX}])
136- ifeq ($(ENABLE_PYOSYS ) ,1)
137- CXXFLAGS += -I$(BREW_PREFIX ) /boost/include
138- LINKFLAGS += -L$(BREW_PREFIX ) /boost/lib -L$(BREW_PREFIX ) /boost-python3/lib
139- endif
140136CXXFLAGS += -I$(BREW_PREFIX ) /readline/include -I$(BREW_PREFIX ) /flex/include
141137LINKFLAGS += -L$(BREW_PREFIX ) /readline/lib -L$(BREW_PREFIX ) /flex/lib
142138PKG_CONFIG_PATH := $(BREW_PREFIX ) /libffi/lib/pkgconfig:$(PKG_CONFIG_PATH )
@@ -348,31 +344,24 @@ ifeq ($(ENABLE_LIBYOSYS),1)
348344TARGETS += libyosys.so
349345endif
350346
347+ PY_WRAPPER_FILE = pyosys/wrappers
348+
349+ # running make clean on just those and then recompiling saves a lot of
350+ # time when running cibuildwheel
351+ PYTHON_OBJECTS = pyosys/wrappers.o kernel/drivers.o kernel/yosys.o passes/cmds/plugin.o
352+
351353ifeq ($(ENABLE_PYOSYS ) ,1)
352354# python-config --ldflags includes -l and -L, but LINKFLAGS is only -L
353355LINKFLAGS += $(filter-out -l% ,$(shell $(PYTHON_CONFIG ) --ldflags) )
354356LIBS += $(shell $(PYTHON_CONFIG ) --libs)
355357EXE_LIBS += $(filter-out $(LIBS ) ,$(shell $(PYTHON_CONFIG_FOR_EXE ) --libs) )
356- CXXFLAGS += $(shell $(PYTHON_CONFIG ) --includes) -DWITH_PYTHON
357-
358- # Detect name of boost_python library. Some distros use boost_python-py<version>, other boost_python<version>, some only use the major version number, some a concatenation of major and minor version numbers
359- CHECK_BOOST_PYTHON = (echo "int main(int argc, char ** argv) {return 0;}" | $(CXX ) -xc -o /dev/null $(LINKFLAGS ) $(EXE_LIBS ) $(LIBS ) -l$(1 ) - > /dev/null 2>&1 && echo "-l$(1 ) ")
360- BOOST_PYTHON_LIB ?= $(shell \
361- $(call CHECK_BOOST_PYTHON,boost_python-py$(subst .,,$(PYTHON_VERSION ) ) ) || \
362- $(call CHECK_BOOST_PYTHON,boost_python-py$(PYTHON_MAJOR_VERSION ) ) || \
363- $(call CHECK_BOOST_PYTHON,boost_python$(subst .,,$(PYTHON_VERSION ) ) ) || \
364- $(call CHECK_BOOST_PYTHON,boost_python$(PYTHON_MAJOR_VERSION ) ) \
365- )
358+ PYBIND11_INCLUDE ?= $(shell $(PYTHON_EXECUTABLE ) -m pybind11 --includes)
359+ CXXFLAGS += -I$(PYBIND11_INCLUDE ) -DYOSYS_ENABLE_PYTHON
360+ CXXFLAGS += $(shell $(PYTHON_CONFIG ) --includes) -DYOSYS_ENABLE_PYTHON
366361
367- ifeq ($(BOOST_PYTHON_LIB ) ,)
368- $(error BOOST_PYTHON_LIB could not be detected. Please define manually)
369- endif
370-
371- LIBS += $(BOOST_PYTHON_LIB ) -lboost_system -lboost_filesystem
372- PY_WRAPPER_FILE = kernel/python_wrappers
373362OBJS += $(PY_WRAPPER_FILE ) .o
374- PY_GEN_SCRIPT = py_wrap_generator
375- PY_WRAP_INCLUDES := $(shell $(PYTHON_EXECUTABLE ) -c "from misc import $(PY_GEN_SCRIPT ) ; $( PY_GEN_SCRIPT ) .print_includes() " )
363+ PY_GEN_SCRIPT = pyosys/generator.py
364+ PY_WRAP_INCLUDES := $(shell $(PYTHON_EXECUTABLE ) $(PY_GEN_SCRIPT ) --print-includes )
376365endif # ENABLE_PYOSYS
377366
378367ifeq ($(ENABLE_READLINE ) ,1)
@@ -786,9 +775,9 @@ endif
786775 $(P ) cat $< | grep -E -v " #[ ]*(include|error)" | $(CXX ) $(CXXFLAGS ) -x c++ -o $@ -E -P -
787776
788777ifeq ($(ENABLE_PYOSYS ) ,1)
789- $(PY_WRAPPER_FILE ) .cc : misc/ $(PY_GEN_SCRIPT ) .py $(PY_WRAP_INCLUDES )
778+ $(PY_WRAPPER_FILE ) .cc : $(PY_GEN_SCRIPT ) pyosys/wrappers_tpl.cc $(PY_WRAP_INCLUDES ) pyosys/hashlib.h
790779 $(Q ) mkdir -p $(dir $@ )
791- $(P ) $(PYTHON_EXECUTABLE ) -c " from misc import $( PY_GEN_SCRIPT) ; $( PY_GEN_SCRIPT ) .gen_wrappers( \" $( PY_WRAPPER_FILE) .cc\" ) "
780+ $(P ) $(PYTHON_EXECUTABLE ) $(PY_GEN_SCRIPT ) $(PY_WRAPPER_FILE ) .cc
792781endif
793782
794783% .o : % .cpp
@@ -1035,12 +1024,12 @@ ifeq ($(ENABLE_LIBYOSYS),1)
10351024 if [ -n "$(STRIP)" ]; then $(INSTALL_SUDO) $(STRIP) -S $(DESTDIR)$(LIBDIR)/libyosys.so; fi
10361025ifeq ($(ENABLE_PYOSYS ) ,1)
10371026 $(INSTALL_SUDO) mkdir -p $(DESTDIR)$(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys
1027+ $(INSTALL_SUDO) cp pyosys/__init__.py $(DESTDIR)$(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys/__init__.py
10381028 $(INSTALL_SUDO) cp libyosys.so $(DESTDIR)$(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys/libyosys.so
10391029 $(INSTALL_SUDO) cp -r share $(DESTDIR)$(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys
10401030ifeq ($(ENABLE_ABC ) ,1)
10411031 $(INSTALL_SUDO) cp yosys-abc $(DESTDIR)$(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys/yosys-abc
10421032endif
1043- $(INSTALL_SUDO) cp misc/__init__.py $(DESTDIR)$(PYTHON_DESTDIR)/$(subst -,_,$(PROGRAM_PREFIX))pyosys/
10441033endif
10451034endif
10461035ifeq ($(ENABLE_PLUGINS ) ,1)
@@ -1130,12 +1119,10 @@ DOC_TARGET ?= html
11301119docs : docs/prep
11311120 $(Q ) $(MAKE ) -C docs $(DOC_TARGET )
11321121
1133- clean :
1122+ clean : clean-py
11341123 rm -rf share
1135- rm -rf kernel/* .pyh
1136- rm -f $(OBJS ) $(GENFILES ) $(TARGETS ) $(EXTRA_TARGETS ) $(EXTRA_OBJS ) $(PY_WRAP_INCLUDES ) $(PY_WRAPPER_FILE ) .cc
1124+ rm -f $(OBJS ) $(GENFILES ) $(TARGETS ) $(EXTRA_TARGETS ) $(EXTRA_OBJS ) $(PY_WRAP_INCLUDES )
11371125 rm -f kernel/version_* .o kernel/version_* .cc
1138- rm -f kernel/python_wrappers.o
11391126 rm -f libs/* /* .d frontends/* /* .d passes/* /* .d backends/* /* .d kernel/* .d techlibs/* /* .d
11401127 rm -rf tests/asicworld/* .out tests/asicworld/* .log
11411128 rm -rf tests/hana/* .out tests/hana/* .log
@@ -1149,8 +1136,14 @@ clean:
11491136 rm -f $(addsuffix /run-test.mk,$(MK_TEST_DIRS ) )
11501137 -$(MAKE ) -C docs clean
11511138 rm -rf docs/util/__pycache__
1139+ rm -f libyosys.so
1140+
1141+ clean-py :
1142+ rm -f $(PY_WRAPPER_FILE ) .inc.cc $(PY_WRAPPER_FILE ) .cc
1143+ rm -f $(PYTHON_OBJECTS )
11521144 rm -f * .whl
11531145 rm -f libyosys.so
1146+ rm -rf kernel/* .pyh
11541147
11551148clean-abc :
11561149 $(MAKE ) -C abc DEP= clean
0 commit comments