Skip to content

Add USE_BUNDLE option#167

Draft
FreddieAkeroyd wants to merge 1 commit intoepics-base:masterfrom
FreddieAkeroyd:bundle_build
Draft

Add USE_BUNDLE option#167
FreddieAkeroyd wants to merge 1 commit intoepics-base:masterfrom
FreddieAkeroyd:bundle_build

Conversation

@FreddieAkeroyd
Copy link
Copy Markdown

@FreddieAkeroyd FreddieAkeroyd commented Apr 15, 2026

If BUNDLE_BUILD is set to YES via e.g. CONFIG_SITE.local then a make at top level will build libevent from bundle directory without it needing to be built separately first; bundle is also added to the clean target and DLLs are installed to pvxs bin directory so the libevent bin area does not need to be separately added to windows PATH

Copy link
Copy Markdown
Member

@mdavidsaver mdavidsaver left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok in principle.

Comment thread src/Makefile
Comment on lines +114 to +116
ifeq ($(USE_BUNDLE),YES)
BIN_INSTALLS_WIN32 += $(wildcard $(LIBEVENT_PREFIX)/lib/*.dll)
endif
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While I understand the motivation of avoiding %PATH% manipulation, I don't like mixing together libevent and PVXS binaries.

@mdavidsaver
Copy link
Copy Markdown
Member

Taking a step back, how is %PATH% constructed for DLL builds in the ISIS environment(s)?

@FreddieAkeroyd
Copy link
Copy Markdown
Author

FreddieAkeroyd commented Apr 16, 2026

this is done by usual EPICS dllPath.bat which searches all bin directories specified via modules specified in the RELEASE files. I could add the LIBEVENT directory to RELEASE, but i copied the DLLs so it only needed to have PVXS specified. Should it find LIBEVENT via one of the cfg when generating dllPath.bat ?

@mdavidsaver
Copy link
Copy Markdown
Member

mdavidsaver commented Apr 16, 2026

this is done by usual EPICS dllPath.bat ...

I have been working with EPICS for awhile now. So I was surprised to find myself asking; what is dllPath.bat? The answer apparently is something I never see in my own projects because I run makeBaseApp on Linux, and this TARGET is only included when expanding for a windows target. I learn something new every day.

$ git grep dllPath
...
modules/database/src/template/top/exampleBoot/ioc/Makefile@win32:TARGETS = envPaths dllPath.bat
modules/database/src/template/top/exampleBoot/ioc/Makefile@windows:TARGETS = envPaths dllPath.bat
modules/database/src/template/top/iocBoot/ioc/Makefile@win32:TARGETS = envPaths dllPath.bat
modules/database/src/template/top/iocBoot/ioc/Makefile@windows:TARGETS = envPaths dllPath.bat
...

Comment thread bundle/Makefile
Comment on lines +102 to +106
install: libevent

uninstall: clean

runtests:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The EPICS build system can recursively request more build targets than just these for any directory entry named in the parent Makefile's DIRS variable, depending on what the user asked it to build. The complete set of targets that can get passed to subdirectory Makefiles via recursive $(MAKE) -C calls is:

  1. inc
  2. build
  3. install
  4. buildInstall
  5. clean
  6. realclean
  7. archclean
  8. runtests
  9. tapfiles
  10. clean-tests
  11. test-results
  12. junitfiles
  13. <arch> (any architecture name, e.g. windows-x64-debug)
  14. <action>.<arch> (any of the 12 actions above dotted with an arch, e.g. clean.windows-x64-debug)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants