Commit 627415b0 authored by Federico Vaga's avatar Federico Vaga

Merge branch 'release/v4.0.0.beta7'

parents f6651a6d 674a4f94
TOP_DIR ?= ..
TRTL ?= $(TOP_DIR)
TRTL_SW := $(TRTL)/software
DRIVER_NAME := mockturtle
VERSION := $(shell git describe --abbrev=0)
DIR_NAME := $(DRIVER_NAME)-$(VERSION)
KEEP_TEMP ?= n
BUILD ?= $(abspath build)
BUILD_DKMS := $(BUILD)/dkms
BUILD_TOOLS := $(BUILD)/tools
BUILD_DKMSSOURCE := $(BUILD_DKMS)/source
BUILD_DKMSTREE := $(BUILD_DKMS)/tree
......@@ -14,14 +17,23 @@ SRC += $(TOP_DIR)/Makefile
DKMS_OPT := --dkmstree $(BUILD_DKMSTREE) -m $(DRIVER_NAME)/$(VERSION)
all: kernel
all: kernel tools
kernel: dkms-tar dkms-rpm
tools: tools-rpm
clean:
@rm -rf $(BUILD)
wbgen2-headers:
$(MAKE) -C ../software/include/hw/
dkms-tree:
build-dir:
@mkdir -p $(BUILD)
dkms-tree: build-dir
@mkdir -p $(BUILD_DKMSSOURCE)
@mkdir -p $(BUILD_DKMSTREE)
......@@ -29,6 +41,7 @@ dkms-src: dkms-tree wbgen2-headers
$(eval $@_dir := $(BUILD_DKMSSOURCE)/$(DRIVER_NAME)-$(VERSION))
@mkdir -p $($@_dir)/hw
@cp $(TOP_DIR)/distribution/dkms.conf $($@_dir)
@cp $(TOP_DIR)/distribution/mockturtle-dkms-mkrpm.spec $($@_dir)
@cp $(TOP_DIR)/software/kernel/mockturtle-*.[ch] $($@_dir)
@cp $(TOP_DIR)/software/kernel/Makefile $($@_dir)
@cp $(TOP_DIR)/software/include/hw/*.h $($@_dir)/hw
......@@ -49,7 +62,18 @@ dkms-tar: dkms-add
dkms-rpm: dkms-add
@dkms mkrpm $(DKMS_OPT) --source-only
clean:
@rm -rf $(BUILD)
# Build Binary RPM package for tools
tools-dir: build-dir
@mkdir -p $(BUILD_TOOLS)/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
tools-spec: mockturtle-tools.spec tools-dir
@cp $< $(BUILD_TOOLS)/SPECS
tools-tar: tools-spec
spectool -g -C $(BUILD_TOOLS)/SOURCES --define "gittag $(VERSION)" $(BUILD_TOOLS)/SPECS/mockturtle-tools.spec
tools-rpm: tools-tar
rpmbuild -vv --define "%_topdir $(BUILD_TOOLS)" --define "arch $(shell uname -p)" --define "gittag $(VERSION)" -ba $(BUILD_TOOLS)/SPECS/mockturtle-tools.spec
.PHONY: dkmstree dkms-add kernel-dkms-tar
.PHONY: dkmstree dkms-add kernel-dkms-tar tools-dir tools-spec tools-tar tools-rpm
%{?!module_name: %{error: You did not specify a module name (%%module_name)}}
%{?!version: %{error: You did not specify a module version (%%version)}}
%{?!kernel_versions: %{error: You did not specify kernel versions (%%kernel_version)}}
%{?!packager: %define packager DKMS <dkms-devel@lists.us.dell.com>}
%{?!license: %define license Unknown}
%{?!_dkmsdir: %define _dkmsdir /var/lib/dkms}
%{?!_srcdir: %define _srcdir %_prefix/src}
%{?!_datarootdir: %define _datarootdir %{_datadir}}
Summary: %{module_name} %{version} dkms package
Name: %{module_name}-driver
Version: %{version}
License: %license
Release: 1dkms
BuildArch: noarch
Group: System/Kernel
Requires: dkms >= 1.95
BuildRequires: dkms
BuildRoot: %{_tmppath}/%{module_name}-%{version}-%{release}-root/
%description
Kernel modules for %{module_name} %{version} in a DKMS wrapper.
%prep
if [ "%mktarball_line" != "none" ]; then
/usr/sbin/dkms mktarball -m %module_name -v %version %mktarball_line --archive `basename %{module_name}-%{version}.dkms.tar.gz`
cp -af %{_dkmsdir}/%{module_name}/%{version}/tarball/`basename %{module_name}-%{version}.dkms.tar.gz` %{module_name}-%{version}.dkms.tar.gz
fi
%install
if [ "$RPM_BUILD_ROOT" != "/" ]; then
rm -rf $RPM_BUILD_ROOT
fi
mkdir -p $RPM_BUILD_ROOT/%{_srcdir}
mkdir -p $RPM_BUILD_ROOT/%{_datarootdir}/%{module_name}
if [ -d %{_sourcedir}/%{module_name}-%{version} ]; then
cp -Lpr %{_sourcedir}/%{module_name}-%{version} $RPM_BUILD_ROOT/%{_srcdir}
fi
if [ -f %{module_name}-%{version}.dkms.tar.gz ]; then
install -m 644 %{module_name}-%{version}.dkms.tar.gz $RPM_BUILD_ROOT/%{_datarootdir}/%{module_name}
fi
if [ -f %{_sourcedir}/common.postinst ]; then
install -m 755 %{_sourcedir}/common.postinst $RPM_BUILD_ROOT/%{_datarootdir}/%{module_name}/postinst
fi
%clean
if [ "$RPM_BUILD_ROOT" != "/" ]; then
rm -rf $RPM_BUILD_ROOT
fi
%post
for POSTINST in %{_prefix}/lib/dkms/common.postinst %{_datarootdir}/%{module_name}/postinst; do
if [ -f $POSTINST ]; then
$POSTINST %{module_name} %{version} %{_datarootdir}/%{module_name}
exit $?
fi
echo "WARNING: $POSTINST does not exist."
done
echo -e "ERROR: DKMS version is too old and %{module_name} was not"
echo -e "built with legacy DKMS support."
echo -e "You must either rebuild %{module_name} with legacy postinst"
echo -e "support or upgrade DKMS to a more current version."
exit 1
%preun
echo -e
echo -e "Uninstall of %{module_name} module (version %{version}) beginning:"
dkms remove -m %{module_name} -v %{version} --all --rpm_safe_upgrade
exit 0
%files
%defattr(-,root,root)
%{_srcdir}
%{_datarootdir}/%{module_name}/
%changelog
* %(date "+%a %b %d %Y") %packager %{version}-%{release}
- Automatic build by DKMS
%{?!gittag: %{error: You did not specify a version}}
%{?!arch: %{error: You did not specify an architecture}}
%global project_name mock-turtle
Summary: Tools for %{project_name}
Name: mockturtle-tools
Version: %{gittag}
License: GPL-3.0-or-later
Release: 1%{?dist}
Group: Applications/System
URL: https://ohwr.org/project/%{name}
BuildArch: %{arch}
Requires: mockturtle-driver
Source0: https://ohwr.org/project/%{project_name}/-/archive/%{gittag}/%{project_name}-%{gittag}.tar.bz2
%description
This package contains a set of tools useful to manage a Mock Turtle
instance
%prep
%autosetup -n %{project_name}-%{gittag}
%build
make -C software/include/hw
make -C software/lib EXTRACFLAGS="$RPM_OPT_FLAGS"
make -C software/tools EXTRACFLAGS="$RPM_OPT_FLAGS"
%install
make -C software/tools DESTDIR=%{buildroot}/usr/ install
%files
%license LICENSES/GPL-3.0-or-later.txt
%{_bindir}/lsmockturtle
%{_bindir}/mockturtle-buffer
%{_bindir}/mockturtle-count
%{_bindir}/mockturtle-cpu-restart
%{_bindir}/mockturtle-gdbserver
%{_bindir}/mockturtle-loader
%{_bindir}/mockturtle-messages
%{_bindir}/mockturtle-ping
%{_bindir}/mockturtle-smem
%{_bindir}/mockturtle-variable
%changelog
# Nothing for the time being
*.a
*.so
*.so*
.depend
\ No newline at end of file
......@@ -7,17 +7,25 @@
REPO_PARENT ?= ../..
-include $(REPO_PARENT)/parent_common.mk
GIT_VERSION := $(shell git describe --dirty --long --tags)
SO_VERSION := $(shell git describe --abbrev=0 | grep -o -E "[0-9]+\.[0-9]+\.[0-9]")
PREFIX ?= /usr/local
DESTLIBDIR ?= $(PREFIX)/lib
TRTL ?= ../..
TRTL_SW = $(TRTL)/software
LIBS = libmockturtle.so
LIBSV = $(LIBS).$(SO_VERSION)
LIB = libmockturtle.a
LOBJ := libmockturtle.o
LOBJ += libmockturtle-rt-msg.o
CFLAGS += -Wall -Werror -fPIC
CFLAGS += -I. -I$(TRTL_SW)/include $(EXTRACFLAGS)
CFLAGS += -I. -I$(TRTL_SW)/include
CFLAGS += -DVERSION="\"$(GIT_VERSION)\""
CFLAGS += $(EXTRACFLAGS)
ARFLAGS = rcv
modules all: $(LIB) $(LIBS)
......@@ -29,15 +37,27 @@ modules all: $(LIB) $(LIBS)
$(LIB): $(LOBJ)
$(AR) $(ARFLAGS) $@ $^
$(LIBS): $(LIB)
$(LIBSV): $(LIB)
$(CC) -shared -o $@ -Wl,--whole-archive,-soname,$@ $^ -Wl,--no-whole-archive
$(LIBS): $(LIBSV)
ln -s $@ $(shell echo $@ | grep -o -E ".*\.so")
clean:
rm -f $(LIB) $(LIBS) .depend *.o *~
rm -f $(LIB) $(LIBS) $(LIBSV) .depend *.o *~
.depend: Makefile $(wildcard *.c *.h)
$(CC) $(CFLAGS) -M $(LOBJ:.o=.c) -o $@
install modules_install:
install:
install -d $(DESTLIBDIR)
install -D $(LIB) $(DESTLIBDIR)
install -D $(LIBSV) $(DESTLIBDIR)
ln -sf $(LIBSV) $(DESTLIBDIR)/$(LIBS)
uninstall:
rm -f $(DESTLIBDIR)/$(LIB) $(DESTLIBDIR)/$(LIBS) $(DESTLIBDIR)/$(LIBSV)
rmdir --ignore-fail-on-non-empty $(DESTLIBDIR)
modules_install:
-include .depend
......@@ -26,6 +26,9 @@
*/
#define TRTL_SYSFS_READ_LEN 32
static const char libmockturtle_version[] __attribute__((unused));
static const char libmockturtle_version[] = "libmockturtle version: "VERSION;
/**
* The default timeout when communicating with the
* driver: HMQ
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment