From 433ffa05a5c722d3a39c27c29cb3b237347ab582 Mon Sep 17 00:00:00 2001 From: James Shubin Date: Fri, 16 Nov 2018 19:41:55 -0500 Subject: [PATCH] bindata: Add infrastructure for building core mcl files This should prepare us so that we can build native mcl code alongside the core *.go files which we already have. This includes a single mcl file that is used as a placeholder so that the build doesn't fail if we don't have any mcl files in the core/ directory. It will get ignored automatically. --- Makefile | 2 ++ bindata/Makefile | 9 ++++--- lang/funcs/Makefile | 44 +++++++++++++++++++++++++++++++++++ lang/funcs/bindata.mcl | 2 ++ lang/funcs/bindata/.gitignore | 2 ++ lang/funcs/bindata/doc.go | 19 +++++++++++++++ 6 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 lang/funcs/Makefile create mode 100644 lang/funcs/bindata.mcl create mode 100644 lang/funcs/bindata/.gitignore create mode 100644 lang/funcs/bindata/doc.go diff --git a/Makefile b/Makefile index 8b4c22a4..523769b5 100644 --- a/Makefile +++ b/Makefile @@ -119,6 +119,7 @@ race: bindata: ## generate go files from non-go sources @echo "Generating: bindata..." $(MAKE) --quiet -C bindata + $(MAKE) --quiet -C lang/funcs generate: go generate @@ -163,6 +164,7 @@ crossbuild: ${crossbuild_targets} clean: ## clean things up $(MAKE) --quiet -C bindata clean + $(MAKE) --quiet -C lang/funcs clean $(MAKE) --quiet -C lang clean [ ! -e $(PROGRAM) ] || rm $(PROGRAM) rm -f *_stringer.go # generated by `go generate` diff --git a/bindata/Makefile b/bindata/Makefile index 6f5c222e..b2d1968a 100644 --- a/bindata/Makefile +++ b/bindata/Makefile @@ -16,9 +16,12 @@ # along with this program. If not, see . # The bindata target generates go files from any source defined below. To use -# the files, import the "bindata" package and use: +# the files, import the generated "bindata" package and use: # `bytes, err := bindata.Asset("FILEPATH")` # where FILEPATH is the path of the original input file relative to `bindata/`. +# To get a list of files stored in this "bindata" package, you can use: +# `paths := bindata.AssetNames()` and `paths, err := bindata.AssetDir(name)` +# to get a list of files with a directory prefix. .PHONY: build clean default: build @@ -34,5 +37,5 @@ bindata.go: ../COPYING @ROOT=$$(dirname "$${BASH_SOURCE}")/.. && $$ROOT/misc/header.sh '$@' clean: - # remove generated bindata/*.go - @ROOT=$$(dirname "$${BASH_SOURCE}")/.. && rm -f *.go + # remove generated bindata.go + @ROOT=$$(dirname "$${BASH_SOURCE}")/.. && rm -f bindata.go diff --git a/lang/funcs/Makefile b/lang/funcs/Makefile new file mode 100644 index 00000000..a51b32e2 --- /dev/null +++ b/lang/funcs/Makefile @@ -0,0 +1,44 @@ +# Mgmt +# Copyright (C) 2013-2018+ James Shubin and the project contributors +# Written by James Shubin and the project contributors +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# The bindata target generates go files from any source defined below. To use +# the files, import the generated "bindata" package and use: +# `bytes, err := bindata.Asset("FILEPATH")` +# where FILEPATH is the path of the original input file relative to `bindata/`. +# To get a list of files stored in this "bindata" package, you can use: +# `paths := bindata.AssetNames()` and `paths, err := bindata.AssetDir(name)` +# to get a list of files with a directory prefix. + +.PHONY: build clean +default: build + +MCL_FILES := $(shell find * -name '*.mcl' -not -path 'old/*' -not -path 'tmp/*') +GENERATED = bindata/bindata.go + +build: $(GENERATED) + +# add more input files as dependencies at the end here... +$(GENERATED): $(MCL_FILES) + @# go-bindata --pkg bindata -o + go-bindata --pkg bindata -o ./$@ $^ + @# gofmt the output file + gofmt -s -w $@ + @ROOT=$$(dirname "$${BASH_SOURCE}")/../.. && $$ROOT/misc/header.sh '$@' + +clean: + @# remove generated bindata/bindata.go + @ROOT=$$(dirname "$${BASH_SOURCE}")/../.. && rm -f $(GENERATED) diff --git a/lang/funcs/bindata.mcl b/lang/funcs/bindata.mcl new file mode 100644 index 00000000..5c597b88 --- /dev/null +++ b/lang/funcs/bindata.mcl @@ -0,0 +1,2 @@ +# You can add *.mcl files alongside the *.go files into the core/ directory. +# They will get compiled into the binary when it is built. diff --git a/lang/funcs/bindata/.gitignore b/lang/funcs/bindata/.gitignore new file mode 100644 index 00000000..b8836fcf --- /dev/null +++ b/lang/funcs/bindata/.gitignore @@ -0,0 +1,2 @@ +# this file gets generated here +bindata.go diff --git a/lang/funcs/bindata/doc.go b/lang/funcs/bindata/doc.go new file mode 100644 index 00000000..5cab4a4b --- /dev/null +++ b/lang/funcs/bindata/doc.go @@ -0,0 +1,19 @@ +// Mgmt +// Copyright (C) 2013-2018+ James Shubin and the project contributors +// Written by James Shubin and the project contributors +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +// Package bindata stores core mcl code that is built-in at compile time. +package bindata