From 159e0bfdbb135e74aac10e54c7a499e9e34aa5a2 Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Mon, 17 Jun 2019 03:38:27 +0200 Subject: Rework libghdl build/install procedure (#840) * feat(libghdl): add libghdl_pkg.py, add option to generate libghdl-py.tgz with dist/travis/build.sh * libghdl*.so is now part of GHDL * move python sources to python/libghdl and python/pnodes * rename src/vhdl/python to src/vhdl/libghdl * add generation of tarball for libghdl-py to the makefile * deprecate --enable-python and --disable-python * add configuration option --disable-libghdl * feat(python/libghdl): add support for LIBGHDL_PREFIX (#844) * fix(travis): disable libghdl on mac * feat(python/libghdl): add support for GHDL_BIN_PATH and VUNIT_GHDL_PATH --- Makefile.in | 22 +- configure | 21 +- dist/travis/travis-ci.sh | 4 +- python/libghdl/__init__.py | 47 + python/libghdl/setup.py | 26 + python/libghdl/thin/errorout.py | 34 + python/libghdl/thin/errorout_memory.py | 31 + python/libghdl/thin/files_map.py | 41 + python/libghdl/thin/files_map_editor.py | 6 + python/libghdl/thin/flags.py | 14 + python/libghdl/thin/libraries.py | 17 + python/libghdl/thin/name_table.py | 14 + python/libghdl/thin/std_names.py | 747 +++++++ python/libghdl/thin/vhdl/canon.py | 14 + python/libghdl/thin/vhdl/elocations.py | 62 + python/libghdl/thin/vhdl/flists.py | 11 + python/libghdl/thin/vhdl/formatters.py | 14 + python/libghdl/thin/vhdl/ieee.py | 21 + python/libghdl/thin/vhdl/lists.py | 33 + python/libghdl/thin/vhdl/nodes.py | 2374 ++++++++++++++++++++++ python/libghdl/thin/vhdl/nodes_meta.py | 1435 +++++++++++++ python/libghdl/thin/vhdl/nodes_utils.py | 14 + python/libghdl/thin/vhdl/parse.py | 7 + python/libghdl/thin/vhdl/pyutils.py | 404 ++++ python/libghdl/thin/vhdl/scanner.py | 23 + python/libghdl/thin/vhdl/sem.py | 3 + python/libghdl/thin/vhdl/sem_lib.py | 5 + python/libghdl/thin/vhdl/std_package.py | 13 + python/libghdl/thin/vhdl/tokens.py | 203 ++ python/pnodes/pnodespy.py | 251 +++ setup.py.in | 57 - src/vhdl/libghdl/grt-modules.adb | 41 + src/vhdl/libghdl/libghdl.adb | 106 + src/vhdl/libghdl/libghdl.ads | 33 + src/vhdl/python/grt-modules.adb | 41 - src/vhdl/python/libghdl.adb | 106 - src/vhdl/python/libghdl.ads | 33 - src/vhdl/python/libghdl/__init__.py | 34 - src/vhdl/python/libghdl/thin/errorout.py | 34 - src/vhdl/python/libghdl/thin/errorout_memory.py | 31 - src/vhdl/python/libghdl/thin/files_map.py | 41 - src/vhdl/python/libghdl/thin/files_map_editor.py | 6 - src/vhdl/python/libghdl/thin/flags.py | 14 - src/vhdl/python/libghdl/thin/libraries.py | 17 - src/vhdl/python/libghdl/thin/name_table.py | 14 - src/vhdl/python/libghdl/thin/std_names.py | 747 ------- src/vhdl/python/libghdl/thin/vhdl/canon.py | 14 - src/vhdl/python/libghdl/thin/vhdl/elocations.py | 62 - src/vhdl/python/libghdl/thin/vhdl/flists.py | 11 - src/vhdl/python/libghdl/thin/vhdl/formatters.py | 14 - src/vhdl/python/libghdl/thin/vhdl/ieee.py | 21 - src/vhdl/python/libghdl/thin/vhdl/lists.py | 33 - src/vhdl/python/libghdl/thin/vhdl/nodes.py | 2374 ---------------------- src/vhdl/python/libghdl/thin/vhdl/nodes_meta.py | 1435 ------------- src/vhdl/python/libghdl/thin/vhdl/nodes_utils.py | 14 - src/vhdl/python/libghdl/thin/vhdl/parse.py | 7 - src/vhdl/python/libghdl/thin/vhdl/pyutils.py | 404 ---- src/vhdl/python/libghdl/thin/vhdl/scanner.py | 23 - src/vhdl/python/libghdl/thin/vhdl/sem.py | 3 - src/vhdl/python/libghdl/thin/vhdl/sem_lib.py | 5 - src/vhdl/python/libghdl/thin/vhdl/std_package.py | 13 - src/vhdl/python/libghdl/thin/vhdl/tokens.py | 203 -- src/vhdl/python/pnodespy.py | 251 --- 63 files changed, 6075 insertions(+), 6078 deletions(-) create mode 100644 python/libghdl/__init__.py create mode 100644 python/libghdl/setup.py create mode 100644 python/libghdl/thin/errorout.py create mode 100644 python/libghdl/thin/errorout_memory.py create mode 100644 python/libghdl/thin/files_map.py create mode 100644 python/libghdl/thin/files_map_editor.py create mode 100644 python/libghdl/thin/flags.py create mode 100644 python/libghdl/thin/libraries.py create mode 100644 python/libghdl/thin/name_table.py create mode 100644 python/libghdl/thin/std_names.py create mode 100644 python/libghdl/thin/vhdl/canon.py create mode 100644 python/libghdl/thin/vhdl/elocations.py create mode 100644 python/libghdl/thin/vhdl/flists.py create mode 100644 python/libghdl/thin/vhdl/formatters.py create mode 100644 python/libghdl/thin/vhdl/ieee.py create mode 100644 python/libghdl/thin/vhdl/lists.py create mode 100644 python/libghdl/thin/vhdl/nodes.py create mode 100644 python/libghdl/thin/vhdl/nodes_meta.py create mode 100644 python/libghdl/thin/vhdl/nodes_utils.py create mode 100644 python/libghdl/thin/vhdl/parse.py create mode 100644 python/libghdl/thin/vhdl/pyutils.py create mode 100644 python/libghdl/thin/vhdl/scanner.py create mode 100644 python/libghdl/thin/vhdl/sem.py create mode 100644 python/libghdl/thin/vhdl/sem_lib.py create mode 100644 python/libghdl/thin/vhdl/std_package.py create mode 100644 python/libghdl/thin/vhdl/tokens.py create mode 100755 python/pnodes/pnodespy.py delete mode 100644 setup.py.in create mode 100644 src/vhdl/libghdl/grt-modules.adb create mode 100644 src/vhdl/libghdl/libghdl.adb create mode 100644 src/vhdl/libghdl/libghdl.ads delete mode 100644 src/vhdl/python/grt-modules.adb delete mode 100644 src/vhdl/python/libghdl.adb delete mode 100644 src/vhdl/python/libghdl.ads delete mode 100644 src/vhdl/python/libghdl/__init__.py delete mode 100644 src/vhdl/python/libghdl/thin/errorout.py delete mode 100644 src/vhdl/python/libghdl/thin/errorout_memory.py delete mode 100644 src/vhdl/python/libghdl/thin/files_map.py delete mode 100644 src/vhdl/python/libghdl/thin/files_map_editor.py delete mode 100644 src/vhdl/python/libghdl/thin/flags.py delete mode 100644 src/vhdl/python/libghdl/thin/libraries.py delete mode 100644 src/vhdl/python/libghdl/thin/name_table.py delete mode 100644 src/vhdl/python/libghdl/thin/std_names.py delete mode 100644 src/vhdl/python/libghdl/thin/vhdl/canon.py delete mode 100644 src/vhdl/python/libghdl/thin/vhdl/elocations.py delete mode 100644 src/vhdl/python/libghdl/thin/vhdl/flists.py delete mode 100644 src/vhdl/python/libghdl/thin/vhdl/formatters.py delete mode 100644 src/vhdl/python/libghdl/thin/vhdl/ieee.py delete mode 100644 src/vhdl/python/libghdl/thin/vhdl/lists.py delete mode 100644 src/vhdl/python/libghdl/thin/vhdl/nodes.py delete mode 100644 src/vhdl/python/libghdl/thin/vhdl/nodes_meta.py delete mode 100644 src/vhdl/python/libghdl/thin/vhdl/nodes_utils.py delete mode 100644 src/vhdl/python/libghdl/thin/vhdl/parse.py delete mode 100644 src/vhdl/python/libghdl/thin/vhdl/pyutils.py delete mode 100644 src/vhdl/python/libghdl/thin/vhdl/scanner.py delete mode 100644 src/vhdl/python/libghdl/thin/vhdl/sem.py delete mode 100644 src/vhdl/python/libghdl/thin/vhdl/sem_lib.py delete mode 100644 src/vhdl/python/libghdl/thin/vhdl/std_package.py delete mode 100644 src/vhdl/python/libghdl/thin/vhdl/tokens.py delete mode 100755 src/vhdl/python/pnodespy.py diff --git a/Makefile.in b/Makefile.in index eea47de70..6654413cc 100644 --- a/Makefile.in +++ b/Makefile.in @@ -40,7 +40,7 @@ libghdl_version=@libghdl_version@ enable_werror=@enable_werror@ enable_checks=@enable_checks@ enable_openieee=@enable_openieee@ -enable_python=@enable_python@ +enable_libghdl=@enable_libghdl@ default_pic=@default_pic@ INSTALL_PROGRAM=install -m 755 @@ -191,7 +191,7 @@ libs.vhdl.mcode: ghdl_mcode$(EXEEXT) install.mcode.program: install.dirs ghdl_mcode$(EXEEXT) $(INSTALL_PROGRAM) ghdl_mcode$(EXEEXT) $(DESTDIR)$(bindir)/ghdl$(EXEEXT) -install.mcode: install.mcode.program install.vhdllib install.vpi +install.mcode: install.mcode.program install.vhdllib install.vpi install.libghdl oread-mcode$(EXEEXT): force $(MAKE) -f $(srcdir)/src/ortho/mcode/Makefile \ @@ -259,7 +259,7 @@ libs.vhdl.gcc: ghdllib: libs.vhdl.gcc $(libdirsuffix)/libgrt.a -install.gcc: install.vhdllib install.grt install.vpi +install.gcc: install.vhdllib install.grt install.vpi install.libghdl #################### For gcc backend - development only (local build) #### @@ -339,7 +339,7 @@ install.llvm.program: install.dirs ghdl1-llvm$(EXEEXT) ghdl_llvm$(EXEEXT) $(INSTALL_PROGRAM) ghdl_llvm$(EXEEXT) $(DESTDIR)$(bindir)/ghdl$(EXEEXT) $(INSTALL_PROGRAM) ghdl1-llvm$(EXEEXT) $(DESTDIR)$(bindir)/ghdl1-llvm$(EXEEXT) -install.llvm: install.llvm.program install.vhdllib install.grt install.vpi +install.llvm: install.llvm.program install.vhdllib install.grt install.vpi install.libghdl ################ For simul (no code generation, interpretation) ########## @@ -359,7 +359,7 @@ install.simul: install.simul.program install.vhdllib ################ libghdl (library for the vhdl part) #################### -LIBGHDL_INCFLAGS=$(GHDL_COMMON_INCFLAGS) -aI$(srcdir)/src/vhdl/python -aI$(srcdir)/src/ghdldrv +LIBGHDL_INCFLAGS=$(GHDL_COMMON_INCFLAGS) -aI$(srcdir)/src/vhdl/libghdl -aI$(srcdir)/src/ghdldrv libghdl_name=libghdl-$(libghdl_version)$(SOEXT) @@ -368,7 +368,17 @@ $(libghdl_name): $(GRT_SRC_DEPS) version.ads force all.libghdl.true: $(libghdl_name) all.libghdl.false: -all.libghdl: all.libghdl.$(enable_python) +all.libghdl: all.libghdl.$(enable_libghdl) + +install.libghdl.true: + $(INSTALL_PROGRAM) -p $(libghdl_name) $(DESTDIR)$(libdir)/ + $(MKDIR) python + $(CP) -r $(srcdir)/python/libghdl python + $(MV) config.py python/libghdl/ + tar -zcvf ../libghdl-py.tgz -C python/libghdl . + +install.libghdl.false: +install.libghdl: install.libghdl.$(enable_libghdl) ################ ghdlsynth library ###################################### diff --git a/configure b/configure index 099528b6a..f2f3b4377 100755 --- a/configure +++ b/configure @@ -44,7 +44,7 @@ build_mode= enable_werror=true enable_checks=true enable_openieee=unknown -enable_python=false +enable_libghdl=true default_pic=false EXEEXT= SOEXT=.so @@ -53,7 +53,7 @@ PIC_FLAGS=-fPIC show_help=no progname=$0 -subst_vars="CC CXX GNATMAKE MAKE CFLAGS LDFLAGS build srcdir abs_srcdir prefix backend libdirsuffix libdirreverse gcc_src_dir llvm_config llvm_be backtrace_lib build_mode EXEEXT SOEXT PIC_FLAGS default_pic enable_werror enable_checks enable_openieee enable_python libghdl_version ghdl_version" +subst_vars="CC CXX GNATMAKE MAKE CFLAGS LDFLAGS build srcdir abs_srcdir prefix backend libdirsuffix libdirreverse gcc_src_dir llvm_config llvm_be backtrace_lib build_mode EXEEXT SOEXT PIC_FLAGS default_pic enable_werror enable_checks enable_openieee enable_libghdl libghdl_version ghdl_version" # Find srcdir srcdir=`dirname $progname` @@ -105,8 +105,8 @@ for opt do --disable-checks) enable_checks=false;; --enable-openieee) enable_openieee=true;; --disable-openieee) enable_openieee=false;; - --enable-python) enable_python=true;; - --disable-python) enable_python=false;; + --enable-libghdl) enable_libghdl=true;; + --disable-libghdl) enable_libghdl=false;; --default-pic) default_pic=true;; --enable-coverage) build_mode="coverage";; -h|-help|--help) show_help=yes;; @@ -131,8 +131,8 @@ Options [defaults in brackets]: backtrace on errors (only for llvm). --disable-werror warnings don't stop build --disable-checks disable internal checks + --disable-libghdl do not build libghdl shared library --enable-openieee use gpl-compatible sources for ieee library - --enable-python build python libghdl EOF exit 0 fi @@ -293,6 +293,14 @@ if [ ! -d pic ]; then fi fi +if [ "$enable_libghdl" = true ]; then + cat > config.py <<-EOF +__version__ = '${ghdl_version}' +__libghdl_version__ = '${libghdl_version}' +__libghdl__ = 'libghdl-${libghdl_version}${SOEXT}' +EOF +fi + # Generate config.status rm -f config.status { @@ -317,9 +325,6 @@ rm -f config.status done sed_opts=`echo $subst_vars | sed -e "s/\\([a-zA-Z_]*\\)/ -e \"s%@\1@%\$\1%g\"/g"` subst_files="ghdl.gpr Makefile" - if [ "$enable_python" = true ]; then - subst_files="$subst_files setup.py" - fi echo "for f in $subst_files; do" echo ' echo "Creating $f"' echo " sed $sed_opts" '< $srcdir/${f}.in > $f' diff --git a/dist/travis/travis-ci.sh b/dist/travis/travis-ci.sh index e036f677e..664412a76 100755 --- a/dist/travis/travis-ci.sh +++ b/dist/travis/travis-ci.sh @@ -5,7 +5,7 @@ build_img_ghdl() { travis_start "build_run" "$ANSI_BLUE[DOCKER build] ghdl/ghdl:${IMAGE_TAG}$ANSI_NOCOLOR" docker build -t ghdl/ghdl:$IMAGE_TAG . -f-<