Sidebar

makefile

makefile
makefile bahmanm β€’ 8 months ago β€’ 80%
[ANN] bmakelib v0.7.0 github.com

bmakelib v0.7.0 has just been released. The highlight is the fail-fast alternative to `$(shell)` which relieves you from checking `.SHELLSTATUS` every time `$(shell)` is used. --- Makefile: ```makefile include bmakelib/bmakelib.mk VAR1 := $(call bmakelib.shell.error-if-nonzero,\ echo Fails hard❗ && false) unreachable-target : ``` Shell: ```text $ make unreachable-target Makefile:3: *** shell.error-if-nonzero: Command exited with non-zero value 1. Stop. ```

3
0
makefile
makefile bahmanm β€’ 10 months ago β€’ 100%
[ANN] bmakelib v0.6.0 with enums github.com

_[bmakelib](https://github.com/bahmanm/bmakelib) is a collection of useful targets, recipes and variables you can use to augment your Makefiles._ --- I just released bmakelib v0.6.0 w/ the main highlight being the ability to define enums and validate variable values against them. --- ➀ Makefile: ```Makefile define-enum : bmakelib.enum.define( DEPLOY-ENV/dev,staging,prod ) include define-enum deploy : bmakelib.enum.error-unless-member( DEPLOY-ENV,ENV ) deploy : @echo πŸš€ Deploying to $(ENV)... ``` ➀ Shell: ```text $ make ENV=local-laptop deploy *** 'local-laptop' is not a member of enum 'DEPLOY-ENV'. Stop. $ make ENV=prod deploy πŸš€ Deploying to prod... ```

1
0
makefile
makefile bahmanm β€’ 11 months ago β€’ 100%
How do you comment your makefiles?

Fed up w/ my ad-hoc scripts to display the targets and variables in a makefile(s), I've decided to write a reusable piece of code to do that: https://github.com/bahmanm/bmakelib/issues/81 --- The first step toward that would be to understand the common commenting styles. So far I have identified 4 patterns in the wild which you can find below. Are there any style guides/conventions around this topic? Any references to well-written makefiles I can get inspiration from? --- ### A ``` VAR1 = foo ## short one-liner comment my-target: ## short one-liner comment … ``` ### B ``` # longer comment which # may span # several lines VAR1 = foo ## comments can be prefixed w/ more than # ## lorem ipsum dolor my-target: … ``` ### C ``` ##### # a comment block which is marked w/ several #s on # an otherwise blank line ##### VAR1 = foo ``` ### D ``` ##### #> # heading 1 # This is a variation to have markdown comments # inside makefile comments. # # ## It's a made-up style! # I came up w/ this style and used it to document `bmakelib`. # For example: https://is.gd/QtiqyA (opens github) #< ##### VAR1 = foo ```

4
3
makefile
makefile bahmanm β€’ 11 months ago β€’ 100%
GNU Make - Unconditionally run a target before any other targets https://www.bahmanm.com/2023/10/gnu-make-unconditionally-run-target.html

> When writing a (GNU) Makefile, there are times when you need a particular target(s) to be run before anything else. That can be for example to check the environment, ensure variables are set or prepare a particular directory layout. > >... take advantage of GNU Make's mechanism of `include`ing and `make`ing makefiles which is described in details in the manual:

2
0
makefile
makefile bahmanm β€’ 12 months ago β€’ 100%
[RFC] bmakelib - Print available Make targets and variables along w/ their docs github.com

I'm trying to gather requirements wrt a potential *bmakelib* feature linked in the post. I'd appreciate your feedback around: - What are the conventions you follow to document your Makefiles? - How/where do you usually declare variables and how do you document them? --- Please take a second to share your thoughts on the issue or simply reply to this post if you'd prefer πŸ™

2
0
makefile
makefile bahmanm β€’ 1 year ago β€’ 75%
Variables in GNU Make: Simple and Recursive https://www.bahmanm.com/2023/09/variables-in-gnu-make-simple-and.html

>There are two major flavours of variables in GNU Make: "simple" and "recursive". > >While simple variables are quite simple and easy to understand, they can be limiting at times. On the other hand, recursive variables are powerful yet tricky. > >... > >There is exactly one rule to recall when using recursive variables... > > 🧠 The value of a recursive variable is computed every time it is expanded.

2
0
makefile
makefile bahmanm β€’ 1 year ago β€’ 100%
Using Make and cURL to measure Lemmy's performance github.com

*A follow up on [[DISCUSS] Website to monitor Lemmy servers' performance/availability](https://lemmy.ml/post/4489142)* --- I wanted to experiment w/ Lemmy's APIs to, eventually, build a public-facing performance monitoring solution for Lemmy. It started w/ a couple of shell commands which I found myself repeating. Then I recalled the saying *"Don't repeat yourself - make Make make things happen for you!"* and, well, stopped typing commands in bash. Instead I, incrementally, wrote a makefile to do the crud work for me (esp thanks to its declarative style): https://github.com/bahmanm/lemmy-clerk/blob/v0.0.1/run-clerk --- TBH there's nothing special about the file. But I thought I'd share this primarily b/c it is a demonstration of the patterns I usually use in my makefiles and I'd love some feedback on those. Additionally, it's a real world use-case for [bmakelib](https://github.com/bahmanm/bmakelib) (a library that I maintain 😎 )

4
0