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.
This commit is contained in:
James Shubin
2018-11-16 19:41:55 -05:00
parent 046b21b907
commit 433ffa05a5
6 changed files with 75 additions and 3 deletions

View File

@@ -119,6 +119,7 @@ race:
bindata: ## generate go files from non-go sources bindata: ## generate go files from non-go sources
@echo "Generating: bindata..." @echo "Generating: bindata..."
$(MAKE) --quiet -C bindata $(MAKE) --quiet -C bindata
$(MAKE) --quiet -C lang/funcs
generate: generate:
go generate go generate
@@ -163,6 +164,7 @@ crossbuild: ${crossbuild_targets}
clean: ## clean things up clean: ## clean things up
$(MAKE) --quiet -C bindata clean $(MAKE) --quiet -C bindata clean
$(MAKE) --quiet -C lang/funcs clean
$(MAKE) --quiet -C lang clean $(MAKE) --quiet -C lang clean
[ ! -e $(PROGRAM) ] || rm $(PROGRAM) [ ! -e $(PROGRAM) ] || rm $(PROGRAM)
rm -f *_stringer.go # generated by `go generate` rm -f *_stringer.go # generated by `go generate`

View File

@@ -16,9 +16,12 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# The bindata target generates go files from any source defined below. To use # 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")` # `bytes, err := bindata.Asset("FILEPATH")`
# where FILEPATH is the path of the original input file relative to `bindata/`. # 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 .PHONY: build clean
default: build default: build
@@ -34,5 +37,5 @@ bindata.go: ../COPYING
@ROOT=$$(dirname "$${BASH_SOURCE}")/.. && $$ROOT/misc/header.sh '$@' @ROOT=$$(dirname "$${BASH_SOURCE}")/.. && $$ROOT/misc/header.sh '$@'
clean: clean:
# remove generated bindata/*.go # remove generated bindata.go
@ROOT=$$(dirname "$${BASH_SOURCE}")/.. && rm -f *.go @ROOT=$$(dirname "$${BASH_SOURCE}")/.. && rm -f bindata.go

44
lang/funcs/Makefile Normal file
View File

@@ -0,0 +1,44 @@
# Mgmt
# Copyright (C) 2013-2018+ James Shubin and the project contributors
# Written by James Shubin <james@shubin.ca> 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 <http://www.gnu.org/licenses/>.
# 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 <OUTPUT> <INPUT>
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)

2
lang/funcs/bindata.mcl Normal file
View File

@@ -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.

2
lang/funcs/bindata/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
# this file gets generated here
bindata.go

19
lang/funcs/bindata/doc.go Normal file
View File

@@ -0,0 +1,19 @@
// Mgmt
// Copyright (C) 2013-2018+ James Shubin and the project contributors
// Written by James Shubin <james@shubin.ca> 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 <http://www.gnu.org/licenses/>.
// Package bindata stores core mcl code that is built-in at compile time.
package bindata