mirror of
https://github.com/avinal/avinal.github.io.git
synced 2026-07-04 15:50:08 +05:30
a196ac4391
Signed-off-by: Avinal Kumar <avinal.xlvii@gmail.com> rh-pre-commit.version: 2.2.0 rh-pre-commit.check-secrets: ENABLED
92 lines
4.4 KiB
Markdown
92 lines
4.4 KiB
Markdown
---
|
|
category: gsoc
|
|
date: 2021-06-11T23:30:40
|
|
description: In this third meeting, I demoed the working build system, currently building
|
|
executables and libraries, a lot of queries were resolved about writing version
|
|
files and attaching commits and hashes to the build.
|
|
image: /images/tech-wallpaper-3.webp
|
|
tags:
|
|
- gsoc
|
|
- FOSSology
|
|
title: Coding Week 1 Meeting
|
|
---
|
|
|
|
In this third meeting, I demoed the working build system, currently building executables and libraries, a lot of queries were resolved about writing version files and attaching commits and hashes to the build.
|
|
|
|
## Week 1 Progress
|
|
|
|
> This week was mainly focused on analyzing the previous build system and framing a skeleton for the new build system.
|
|
>
|
|
> - Created the build configuration [analysis table](https://github.com/avinal/FOSSology/wiki/agents-spec#agents-configuration-list).
|
|
> - Completed the basic skeleton.
|
|
> - Completed the CMake configuration for libraries
|
|
> - To test the current progress, follow the instructions [here](https://github.com/avinal/FOSSology/wiki#test-the-new-system-only-gcc-with-make-and-ninja-tested-for-now)
|
|
> - Test on [GitPod](https://gitpod.io/#https://github.com/avinal/FOSSology/tree/avinal/feat/cmake-buildsystem) right inside your browser.
|
|
|
|
## Discussions
|
|
|
|
- **What are the flags needed for C and C++?**
|
|
- The `-g` flag enables debug.
|
|
- The `-O2` flag is used for optimizing.
|
|
- In FOSSology these two flags are used together by default for all
|
|
build purposes because it is desired to have an optimized binary but
|
|
some level of debugging information is also desired.
|
|
- **The Makefiles have some compile-time preprocessor macro definitions
|
|
that need to be passed to each build.** The Makefiles have all the
|
|
path values passed as `'"..value.."'` format *(double quote inside
|
|
single quotes)*, however the commands produced by CMake have
|
|
`\"..value..\"` format *(escaped double quotes)*. Are they the same or
|
|
it needs to be changed?
|
|
- Currently, there is nothing to determine if they work the same or
|
|
not, but if the compiler would not have accepted them then, it would
|
|
have thrown an error. As long it is working these should be fine,
|
|
but will need to be checked in the final build.
|
|
- **Are all libraries in FOSSology static?**
|
|
- No, by default no library is static. The format
|
|
`lib<library-name>.a` is confusing but no need to worry about it for
|
|
now, if this is working fine then no problem.
|
|
- In general, this format denotes a static library.
|
|
- **How to add the version and commit information to the builds?**
|
|
- I have gone through [this
|
|
thread](https://cmake.org/pipermail/cmake/2018-October/068383.html)
|
|
on CMake's official mailing list. And they have suggested a lot of
|
|
options, but unable to decide which option to use. Gaurav said he
|
|
will see into this thread and for now, I should try writing a shell
|
|
script and test if that works.
|
|
- Same can be tested for the version too.
|
|
- **What is** `_squareVisitor.h.pre` **used for?**
|
|
- They are used to generate source code at build time.
|
|
- **Is there any inheritance structure in the build system?**
|
|
*(Michael)*
|
|
- For now, I am writing separate modules for the default operations
|
|
needed in most configurations. The final structure will be decided
|
|
in the final build.
|
|
- **Where are all the binaries produced?** *(Gaurav)*
|
|
- They are located in the build folder with the same directory
|
|
structure as the original project.
|
|
- While installing the same will be used and none of the source
|
|
folders are ever disturbed.
|
|
- **Are all flags taken from the Makefiles itself?** *(Anupam)*
|
|
- Yes and No, there are some flags that CMake uses by default, they
|
|
can be altered by changing the value for `CMAKE_C_FLAGS` and
|
|
`CMAKE_CXX_FLAGS`. One can also append their flags. Since not all
|
|
compilation requires all the flags, I have taken the default one
|
|
into cache variables, and others are appended while configuring for
|
|
a particular project.
|
|
|
|
## Conclusion and Further Plans
|
|
|
|
- Try the `monkbulk` in monk and `makefile.sa` in nomos.
|
|
- Try adding the version and commit hash info.
|
|
- Implement writing version files for each build.
|
|
- Add proper comments in the `CMakeLists.txt` files.
|
|
|
|
## Attendees
|
|
|
|
- [Michael C. Jaeger](https://github.com/mcjaeger)
|
|
- [Shaheem Azmal M MD](https://github.com/shaheemazmalmmd)
|
|
- [Gaurav Mishra](https://github.com/GMishx)
|
|
- [Anupam Ghosh](https://github.com/ag4ums)
|
|
- [Ayush Bhardwaj](https://github.com/hastagAB)
|
|
- [Avinal Kumar](https://github.com/avinal)
|