Code Monkey home page Code Monkey logo

bsdmakefile's Introduction

BSDmakefile v1.0

Makes testing Makefile is (Free|Open)BSDmake compatible easier on GNU/Linux

How to use this in your own projects

  • Copy GNUmakefile and the directory mk to your project directory.
  • Copy Makefile.EXAMPLE to your project directory as Makefile.

Benefits

GNUmakefile is a file that is only understood by GNU Make. So, when make is run, if you are on GNU/Linux, (or using gmake on another system,) it will attempt to run all common commands through Busybox to make sure your Makefile works with stripped down non-GNU coreutils.

However, when run on a system with only bsdmake (bmake on GNU/Linux), the file is totally ignored and busybox is not used.

Writing the Makefile

All of your recipes must be written as:

myrecipe:
	$(DOBEFORE) && (\
		#
	)

#

.include <mk/before.mk>

Furthermore, it is highly recommended to enforce:

SHELL=/bin/sh

At the top of the Makefile. This ensures compatibility with POSIX shells, such as those in use by default on *BSD.

Accessing BSD-compatible coreutils

By default sed and awk will use generic versions, with their paths at $SED and $AWK, either through Busybox or through the system coreutils as appropriate. You can add any program busybox supports by editing the all recipe in GNUmakefile, and adding more $(MAKE) test_busybox_has lines. E.g., to add cat as $CAT, add the line:

all:
	#
	$(eval export $(shell $(MAKE) WHAT=cat test_busybox_has))
	#

Full project example

I got this idea while working on yeslogic/glyph-names№3 and added BSDmakefile to that project in yeslogic/glyph-names№2.

LICENSE

###############################################################################
#-       BSDmakefile © 2022 Fredrick R. Brennan <[email protected]>       -#
###############################################################################
#- Permission  is  hereby granted, free of charge, to any person obtaining  a #
#- copy of this software and associated documentation files (the "Software"), #
#- to  deal in the Software without restriction, including without limitation #
#- the  rights to use, copy, modify, merge, publish, distribute,  sublicense, #
#- and/or  sell  copies  of the Software, and to permit persons to  whom  the #
#- Software is furnished to do so, subject to the following conditions:       #
#-                                                                            #
#- The above copyright notice and this permission notice shall be included in #
#- all copies or substantial portions of the Software.                        #
#-                                                                            #
#- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
#- IMPLIED,  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF  MERCHANTABILITY, #
#- FITNESS  FOR  A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT  SHALL #
#- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
#- LIABILITY,  WHETHER  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,  ARISING #
#- FROM,  OUT  OF  OR  IN CONNECTION WITH THE SOFTWARE OR THE  USE  OR  OTHER #
#- DEALINGS IN THE SOFTWARE.                                                  #
###############################################################################

bsdmakefile's People

Contributors

ctrlcctrlv avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.