Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmake/xplatform builds using github/tox/conda workflows #187

Open
wants to merge 18 commits into
base: master
Choose a base branch
from

Conversation

sarnold
Copy link
Contributor

@sarnold sarnold commented Oct 10, 2022

  • add example workflows for CI and local development
  • enable cmake options for IPO, LLVM source coverage, really simple test
  • handles visibility a bit differently; see size of shared lib/executables with lto/ipo and namespace
  • builds on cmake PR Add 'pure' cmake build system #26 (includes commits and python update script)
  • demonstrates several toolchains/build methods across GH ci runners
  • includes some warning cleanup and edge-case build errors

Majority of changed files are new cmake files so it's fairly easy to see the actual source changes. I started this back when the cmake PR was fairly new, and then I got busy (so fresh rebase on current master).

From ubuntu-clang workflow:

-rwxr-xr-x 1 runner docker  16K Oct 10 19:23 ../staging/bin/abc
-rw-r--r-- 1 runner docker 5.0K Oct 10 19:15 ../staging/include/abc/abcapis.h
-rw-r--r-- 1 runner docker 3.4K Oct 10 19:15 ../staging/include/abc/abcapis_old.h
-rw-r--r-- 1 runner docker  826 Oct 10 19:16 ../staging/lib/cmake/abc/abcConfig-release.cmake
-rw-r--r-- 1 runner docker 4.8K Oct 10 19:16 ../staging/lib/cmake/abc/abcConfig.cmake
-rw-r--r-- 1 runner docker  13M Oct 10 19:23 ../staging/lib/libabc.so.1.1.0

set(make_env ${CMAKE_COMMAND} -E env SDKROOT=${CMAKE_OSX_SYSROOT})
endif()

# run make to extract compiler options, linker options and list of source files
Copy link
Contributor Author

@sarnold sarnold Oct 10, 2022

Choose a reason for hiding this comment

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

I'm not sure I understand the requirement driving this; can you elaborate a little bit here?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sorry, that ^^ question was in regards to cmake docs, where it says:

"... It is intended to be set locally by the user creating a build tree. "

https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_SYSROOT.html

@sarnold sarnold changed the title Github and tox workflows cmake/xplatform builds using github/tox/conda workflows Oct 19, 2022
@sarnold sarnold force-pushed the workflows branch 7 times, most recently from 91dae88 to 9a268ee Compare July 23, 2023 03:38
@sarnold
Copy link
Contributor Author

sarnold commented Jul 23, 2023

Fresh rebase-on-the-rebase with some cleanup and timespec fix.

@sarnold sarnold force-pushed the workflows branch 4 times, most recently from ba547b1 to d63c541 Compare July 23, 2023 19:27
@sarnold sarnold force-pushed the workflows branch 14 times, most recently from a029c8b to 2d82a9d Compare December 2, 2023 04:08
@sarnold sarnold force-pushed the workflows branch 11 times, most recently from 5b1d8fb to 088ae33 Compare December 10, 2023 03:34
sarnold and others added 18 commits December 9, 2023 19:36
fix a handful of warnings, add missing gia.c to module.make
add makefile overrides and a soname, make library symlinks
add separate shared library/test targets
add -fvisibility=hidden to cxxflags, makes build result much smaller
add visibility pragma for demo consumer
add ci workflow with simple gcc/clang matrix

Signed-off-by: Stephen L Arnold <[email protected]>
* update cmake source modules using PR script
* add basic versioning for cmake shared libs
* complete target/install properties, export config
* move toolchain file to tools dir, add python script from PR
* add tox file, update ci workflow to use it
* tox handles most build tool dependencies, cmake, ninja, cpplint
* make sure ABC_USE_STDINT_H is fallback if ABC_USE_NAMESPACE is not set

Signed-off-by: Stephen L Arnold <[email protected]>
* fix type invalid literal errors
* use pSat2 from abcglucuse2 header for correct cec solver type

Signed-off-by: Stephen L Arnold <[email protected]>
* add win32 defines ABC_NO_DYNAMIC_LINKING, WIN32
* static_cast => uint returns in acbTest.c !refactor
* check for win first, win/mingw definitions inside if(msys or mingw)
* fix missing leading ddunder on mingw32__
* switch msys env for clang64, re-enable readline
* cleanup cmake type checks and workflow env
* mingw clang-64 thinks sizeof long is 4
* use abc typedefs instead of hard-coded types

Signed-off-by: Stephen L Arnold <[email protected]>
The assert is disabled in release builds.
* define HAVE_STRUCT_TIMESPEC and _XKEYCHECK_H on msvc
* avoid LIBSTDCXX linking (msvc only), pass build config to all steps
* add optional lto support; note clang lto requires llvm-config and lld
* add llvm source-based coverage build, fix uninitialzed variable
* update cmake-posix workflow configure, bin path, emulate in tox
* add conda devenv file and workflow => use platform compilers and Ninja
* update build instructions in readme file, cleanup tox/ci files

Signed-off-by: Stephen L Arnold <[email protected]>
* remove the linker optimization arg for gnu on macos
* remove GH workflow warning annotations, bump action versions

Signed-off-by: Stephen L Arnold <[email protected]>
* updates tox argument syntax on macos
* also restores missing OS list in conda-dev workflow

Signed-off-by: Stephen L Arnold <[email protected]>
* win pthreads module tries to define timespec if HAVE_STRUCT_TIMESPEC
  is not defined except msys/mingw already defines it

Signed-off-by: Stephen L Arnold <[email protected]>
* use more specific if check for windows includes
* add missing win32 link library
* move extern Io_MvLoadFileBz2 to header, use hdr in cmd.c

Signed-off-by: Stephen L Arnold <[email protected]>
* msys/mingw has incomplete dirent so disable namespace
* refactor cmake config, update dirent pkg spec in conda env
* try cheap ENV hack to find dirent header in conda

Signed-off-by: Stephen L Arnold <[email protected]>
* update setup-miniconda config to get latest pkg versions
* add more workflow output, reset cache number
* list envs, revert to previous with some info output, back to v2

Signed-off-by: Stephen L Arnold <[email protected]>
* leave default PY_VER but do not specify version for action
* use proper activate command workflow in build step
* add some path and prefix introspection, try find/which
* bump windows ci runner version, list env, cat dirent.h
* do not use jinja compier templates, revert to py39/win2019 default

Signed-off-by: Stephen L Arnold <[email protected]>
* cleanup initial extern hacks and use ioAbc.h for missing symbol
* remove superfluous dirent dep on windows

Signed-off-by: Stephen L Arnold <[email protected]>
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.

2 participants