Commit 7fc852d7 authored by Adam Wujek's avatar Adam Wujek 💬

Merge branch 'adam-coht'

Changes in the buildsystem.
Signed-off-by: Adam Wujek's avatarAdam Wujek <adam.wujek@cern.ch>
parents 84ef3a49 fb5c902b
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
*.order *.order
*.symvers *.symvers
*.mod.c *.mod.c
*.o.d
*.tmp
*.lof *.lof
*.bib *.bib
*.bbl *.bbl
......
# include parent_common.mk for buildsystem's defines
# use absolute path for REPO_PARENT
CURDIR:=$(shell /bin/pwd)
REPO_PARENT=$(CURDIR)/..
-include $(REPO_PARENT)/parent_common.mk
.PHONY: all clean modules install modules_install clean_all all: kernel tools lib libtools
.PHONY: gitmodules prereq prereq_install prereq_install_warn prereq_clean
DIRS = kernel tools lib libtools FMC_BUS ?= fmc-bus
ZIO ?= zio
SPEC_SW ?= spec-sw
SVEC_SW ?= svec-sw
all clean modules install modules_install: gitmodules # Use the absolute path so it can be used by submodule
@if echo $@ | grep -q install; then $(MAKE) prereq_install_warn; fi # FMC_BUS_ABS, ZIO_ABS, SPEC_SW_ABS and SVEC_SW_ABS has to be absolut path,
for d in $(DIRS); do $(MAKE) -C $$d $@ || exit 1; done # due to beeing passed to the Kbuild
FMC_BUS_ABS ?= $(abspath $(FMC_BUS) )
ZIO_ABS ?= $(abspath $(ZIO) )
SPEC_SW_ABS ?= $(abspath $(SPEC_SW) )
SVEC_SW_ABS ?= $(abspath $(SVEC_SW) )
all modules: prereq export FMC_BUS_ABS
export ZIO_ABS
export SPEC_SW_ABS
export SVEC_SW_ABS
clean_all: clean prereq_clean DIRS = $(FMC_BUS_ABS) $(ZIO_ABS) $(SPEC_SW_ABS) kernel tools lib libtools
#### The following targets are used to manage prerequisite repositories $(SPEC_SW_ABS): $(FMC_BUS_ABS)
#### only for THIS repository kernel: $(FMC_BUS_ABS) $(ZIO_ABS) $(SPEC_SW_ABS)
gitmodules: lib: $(ZIO_ABS)
@test -d fmc-bus/doc || echo "Checking out submodules" tools libtools: lib
@test -d fmc-bus/doc || git submodule update --init # we take only headers from svec-sw, no need to compile
kernel: svec-sw-init_repo
# The user can override, using environment variables, the place for our .PHONY: all clean modules install modules_install $(DIRS)
# three submodules. Note that svec-sw is not built, as it uses cern-internal .PHONY: gitmodules prereq_install prereq_install_warn
# pathnames, and thus won't build elsewhere. We have it as a submodule to
# find needed headers to build kernel code. install modules_install: prereq_install_warn
#
# Use the absolute path so it can be used by submodule all clean modules install modules_install: $(DIRS)
CURDIR ?= $(shell pwd)
FMC_BUS ?= $(CURDIR)/fmc-bus clean: TARGET = clean
export FMC_BUS modules: TARGET = modules
ZIO ?= $(CURDIR)/zio install: TARGET = install
ZIO_VERSION = $(shell cd $(ZIO); git describe --always --dirty --long --tags) modules_install: TARGET = modules_install
export ZIO_VERSION
SPEC_SW ?= $(CURDIR)/spec-sw
SUBMOD = $(FMC_BUS) $(ZIO) $(SPEC_SW) $(DIRS):
$(MAKE) -C $@ $(TARGET)
prereq:
for d in $(SUBMOD); do $(MAKE) -C $$d || exit 1; done
SUBMOD = $(FMC_BUS_ABS) $(ZIO_ABS) $(SPEC_SW_ABS)
prereq_install_warn: prereq_install_warn:
@test -f .prereq_installed || \ @test -f .prereq_installed || \
...@@ -44,5 +60,22 @@ prereq_install: ...@@ -44,5 +60,22 @@ prereq_install:
for d in $(SUBMOD); do $(MAKE) -C $$d modules_install || exit 1; done for d in $(SUBMOD); do $(MAKE) -C $$d modules_install || exit 1; done
touch .prereq_installed touch .prereq_installed
prereq_clean: $(FMC_BUS_ABS): fmc-bus-init_repo
for d in $(SUBMOD); do $(MAKE) -C $$d clean || exit 1; done $(ZIO_ABS): zio-init_repo
$(SPEC_SW_ABS): spec-sw-init_repo
# init submodule if missing
fmc-bus-init_repo:
@test -d $(FMC_BUS_ABS)/doc || ( echo "Checking out submodule $(FMC_BUS_ABS)" && git submodule update --init $(FMC_BUS_ABS) )
# init submodule if missing
zio-init_repo:
@test -d $(ZIO_ABS)/doc || ( echo "Checking out submodule $(ZIO_ABS)" && git submodule update --init $(ZIO_ABS) )
# init submodule if missing
spec-sw-init_repo:
@test -d $(SPEC_SW_ABS)/doc || ( echo "Checking out submodule $(SPEC_SW_ABS)" && git submodule update --init $(SPEC_SW_ABS) )
# init submodule if missing
svec-sw-init_repo:
@test -d $(SVEC_SW_ABS)/doc || ( echo "Checking out submodule $(SVEC_SW_ABS)" && git submodule update --init $(SVEC_SW_ABS) )
CONFIG_FMC_ADC_SVEC ?= CONFIG_VME
SVEC_SW_EXTRA_SYMBOLS-$(CONFIG_FMC_ADC_SVEC) := $(SVEC_SW_ABS)/kernel/Module.symvers.vmebus
KBUILD_EXTRA_SYMBOLS := \
$(ZIO_ABS)/Module.symvers \
$(FMC_BUS_ABS)/kernel/Module.symvers \
$(SVEC_SW_EXTRA_SYMBOLS-y)
# add versions of supermodule. It is useful when fine-delay-sw is included as sub-module
# of a bigger project that we want to track
ifdef CONFIG_SUPER_REPO
ifdef CONFIG_SUPER_REPO_VERSION
SUBMODULE_VERSIONS-y += MODULE_INFO(version_$(CONFIG_SUPER_REPO),\"$(CONFIG_SUPER_REPO_VERSION)\");
endif
endif
# add versions of used submodules
SUBMODULE_VERSIONS-y += MODULE_INFO(version_fmc_bus,\"$(FMC_BUS_VERSION)\");
SUBMODULE_VERSIONS-y += MODULE_INFO(version_zio,\"$(ZIO_VERSION)\");
SUBMODULE_VERSIONS-y += MODULE_INFO(version_spec_sw,\"$(SPEC_SW_VERSION)\");
SUBMODULE_VERSIONS-$(CONFIG_FMC_ADC_SVEC) += MODULE_INFO(version_svec_sw,\"$(SVEC_SW_VERSION)\");
ccflags-y += -DADDITIONAL_VERSIONS="$(SUBMODULE_VERSIONS-y)"
# The library includes <sdb.h>, so point -I directtly there
# include our header before to avoid conflicts with the kernel
LINUXINCLUDE := -I$(FMC_BUS_ABS)/kernel/include $(LINUXINCLUDE)
ccflags-y += -DGIT_VERSION=\"$(GIT_VERSION)\" \
-I$(ZIO_ABS)/include \
-I$(SPEC_SW_ABS)/kernel \
-I$(src)
ccflags-$(CONFIG_FMC_ADC_SVEC) += -I$(SVEC_SW_ABS)/kernel
ccflags-$(CONFIG_FMC_ADC_DEBUG) += -DDEBUG
ccflags-$(CONFIG_FMC_ADC_SVEC) += -DCONFIG_FMC_ADC_SVEC
# Extract ZIO minimum compatible version
ccflags-y += -D__ZIO_MIN_MAJOR_VERSION=$(shell echo $(ZIO_VERSION) | cut -d '-' -f 2 | cut -d '.' -f 1; )
ccflags-y += -D__ZIO_MIN_MINOR_VERSION=$(shell echo $(ZIO_VERSION) | cut -d '-' -f 2 | cut -d '.' -f 2; )
subdirs-ccflags-y = $(ccflags-y)
obj-m := fmc-adc-100m14b.o
fmc-adc-100m14b-y = fa-core.o
fmc-adc-100m14b-y += fa-zio-drv.o
fmc-adc-100m14b-y += fa-calibration.o
fmc-adc-100m14b-y += fa-regtable.o
fmc-adc-100m14b-y += fa-zio-trg.o
fmc-adc-100m14b-y += fa-irq.o
fmc-adc-100m14b-y += onewire.o
fmc-adc-100m14b-y += spi.o
fmc-adc-100m14b-y += fmc-util.o
fmc-adc-100m14b-y += fa-spec-core.o
fmc-adc-100m14b-y += fa-spec-regtable.o
fmc-adc-100m14b-y += fa-spec-dma.o
fmc-adc-100m14b-y += fa-spec-irq.o
fmc-adc-100m14b-$(CONFIG_FMC_ADC_SVEC) += fa-svec-core.o
fmc-adc-100m14b-$(CONFIG_FMC_ADC_SVEC) += fa-svec-regtable.o
fmc-adc-100m14b-$(CONFIG_FMC_ADC_SVEC) += fa-svec-dma.o
# include parent_common.mk for buildsystem's defines
# use absolute path for REPO_PARENT
CURDIR:=$(shell /bin/pwd)
REPO_PARENT=$(CURDIR)/../..
-include $(REPO_PARENT)/parent_common.mk
LINUX ?= /lib/modules/$(shell uname -r)/build LINUX ?= /lib/modules/$(shell uname -r)/build
ZIO ?= $(src)/../zio FMC_BUS ?= ../fmc-bus
FMC_BUS ?= $(src)/../fmc-bus ZIO ?= ../zio
SPEC_SW ?= $(src)/../spec-sw SPEC_SW ?= ../spec-sw
SVEC_SW ?= $(src)/../svec-sw SVEC_SW ?= ../svec-sw
CONFIG_FMC_ADC_SVEC ?= CONFIG_VME
# FMC_BUS_ABS, ZIO_ABS, SPEC_SW_ABS and SVEC_SW_ABS has to be absolut path,
KBUILD_EXTRA_SYMBOLS := \ # due to beeing passed to the Kbuild
$(ZIO)/Module.symvers \ FMC_BUS_ABS ?= $(abspath $(FMC_BUS) )
$(FMC_BUS)/kernel/Module.symvers ZIO_ABS ?= $(abspath $(ZIO) )
SPEC_SW_ABS ?= $(abspath $(SPEC_SW) )
GIT_VERSION = $(shell cd $(src); git describe --always --dirty --long --tags) SVEC_SW_ABS ?= $(abspath $(SVEC_SW) )
# For this CSM_VERSION, please see ohwr.org/csm documentation GIT_VERSION = $(shell git describe --always --dirty --long --tags)
ifdef CONFIG_CSM_VERSION export GIT_VERSION
ccflags-y += -D"CERN_SUPER_MODULE=MODULE_VERSION(\"$(CONFIG_CSM_VERSION)\")"
else FMC_BUS_VERSION ?= $(shell cd $(FMC_BUS_ABS); git describe --always --dirty --long --tags)
ccflags-y += -DCERN_SUPER_MODULE="" ZIO_VERSION ?= $(shell cd $(ZIO_ABS); git describe --always --dirty --long --tags)
endif SPEC_SW_VERSION ?= $(shell cd $(SPEC_SW_ABS); git describe --always --dirty --long --tags)
SVEC_SW_VERSION ?= $(shell cd $(SVEC_SW_ABS); git describe --always --dirty --long --tags)
# The library includes <sdb.h>, so point -I directtly there
# include our header before to avoid conflicts with the kernel export FMC_BUS_VERSION
LINUXINCLUDE := -I$(FMC_BUS)/kernel/include $(LINUXINCLUDE) export ZIO_VERSION
export SPEC_SW_VERSION
ccflags-y += -DGIT_VERSION=\"$(GIT_VERSION)\" \ export SVEC_SW_VERSION
-I$(ZIO)/include \
-I$(SPEC_SW)/kernel \
-I$(SVEC_SW)/kernel \
-I$(src)
ccflags-$(CONFIG_FMC_ADC_DEBUG) += -DDEBUG
ccflags-$(CONFIG_FMC_ADC_SVEC) += -DCONFIG_FMC_ADC_SVEC
# Extract ZIO minimum compatible version
ccflags-y += -D__ZIO_MIN_MAJOR_VERSION=$(shell echo $(ZIO_VERSION) | cut -d '-' -f 2 | cut -d '.' -f 1; )
ccflags-y += -D__ZIO_MIN_MINOR_VERSION=$(shell echo $(ZIO_VERSION) | cut -d '-' -f 2 | cut -d '.' -f 2; )
subdirs-ccflags-y = $(ccflags-y)
obj-m := fmc-adc-100m14b.o
fmc-adc-100m14b-y = fa-core.o
fmc-adc-100m14b-y += fa-zio-drv.o
fmc-adc-100m14b-y += fa-calibration.o
fmc-adc-100m14b-y += fa-regtable.o
fmc-adc-100m14b-y += fa-zio-trg.o
fmc-adc-100m14b-y += fa-irq.o
fmc-adc-100m14b-y += onewire.o
fmc-adc-100m14b-y += spi.o
fmc-adc-100m14b-y += fmc-util.o
fmc-adc-100m14b-y += fa-spec-core.o
fmc-adc-100m14b-y += fa-spec-regtable.o
fmc-adc-100m14b-y += fa-spec-dma.o
fmc-adc-100m14b-y += fa-spec-irq.o
fmc-adc-100m14b-$(CONFIG_FMC_ADC_SVEC) += fa-svec-core.o
fmc-adc-100m14b-$(CONFIG_FMC_ADC_SVEC) += fa-svec-regtable.o
fmc-adc-100m14b-$(CONFIG_FMC_ADC_SVEC) += fa-svec-dma.o
all modules: all modules:
$(MAKE) -C $(LINUX) M=$(shell /bin/pwd) modules $(MAKE) -C $(LINUX) M=$(CURDIR) FMC_BUS_ABS=$(FMC_BUS_ABS) \
ZIO_ABS=$(ZIO_ABS) SPEC_SW_ABS=$(SPEC_SW_ABS) \
SVEC_SW_ABS=$(SVEC_SW_ABS) modules
install modules_install: install modules_install: modules
$(MAKE) -C $(LINUX) M=$(shell /bin/pwd) modules_install $(MAKE) -C $(LINUX) M=$(CURDIR) modules_install
# be able to run the "clean" rule even if $(LINUX) is not valid # be able to run the "clean" rule even if $(LINUX) is not valid
clean: clean:
......
...@@ -637,4 +637,4 @@ MODULE_DESCRIPTION("FMC-ADC-100MS-14b Linux Driver"); ...@@ -637,4 +637,4 @@ MODULE_DESCRIPTION("FMC-ADC-100MS-14b Linux Driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_VERSION(GIT_VERSION); MODULE_VERSION(GIT_VERSION);
CERN_SUPER_MODULE; ADDITIONAL_VERSIONS;
...@@ -5,7 +5,12 @@ ...@@ -5,7 +5,12 @@
# build a particular environment. # build a particular environment.
-include Makefile.specific -include Makefile.specific
# include parent_common.mk for buildsystem's defines
REPO_PARENT=../..
-include $(REPO_PARENT)/parent_common.mk
ZIO ?= ../zio ZIO ?= ../zio
ZIO_ABS ?= $(abspath $(ZIO) )
LIB = libfmcadc.a LIB = libfmcadc.a
LOBJ := route.o LOBJ := route.o
...@@ -15,7 +20,7 @@ LOBJ += config-zio.o ...@@ -15,7 +20,7 @@ LOBJ += config-zio.o
LOBJ += buffer-zio.o LOBJ += buffer-zio.o
LOBJ += lib.o LOBJ += lib.o
LOBJ += fmc-adc-100m14b4cha.o LOBJ += fmc-adc-100m14b4cha.o
CFLAGS = -Wall -ggdb -O2 -I../kernel -I$(ZIO)/include $(EXTRACFLAGS) CFLAGS = -Wall -ggdb -O2 -I../kernel -I$(ZIO_ABS)/include $(EXTRACFLAGS)
LDFLAGS = -L. -lfmcadc LDFLAGS = -L. -lfmcadc
CC ?= $(CROSS_COMPILE)gcc CC ?= $(CROSS_COMPILE)gcc
...@@ -27,7 +32,7 @@ modules all: $(LIB) ...@@ -27,7 +32,7 @@ modules all: $(LIB)
$(CC) $(CFLAGS) $*.c $(LDFLAGS) -o $@ $(CC) $(CFLAGS) $*.c $(LDFLAGS) -o $@
$(LIB): $(LOBJ) $(LIB): $(LOBJ)
ar r $@ $^ $(AR) r $@ $^
clean: clean:
rm -f $(LIB) .depend *.o *~ rm -f $(LIB) .depend *.o *~
......
...@@ -3,13 +3,19 @@ ...@@ -3,13 +3,19 @@
# build a particular environment. # build a particular environment.
-include Makefile.specific -include Makefile.specific
# include parent_common.mk for buildsystem's defines
REPO_PARENT=../..
-include $(REPO_PARENT)/parent_common.mk
DESTDIR ?= /usr/local DESTDIR ?= /usr/local
LIBADC = ../lib/ LIBADC = ../lib/
ZIO ?= ../zio ZIO ?= ../zio
ZIO_ABS ?= $(abspath $(ZIO) )
CFLAGS = -Wall -g -ggdb -I$(LIBADC) -I$(ZIO)/include -I../kernel $(EXTRACFLAGS) CFLAGS = -Wall -g -ggdb -I$(LIBADC) -I$(ZIO_ABS)/include -I../kernel $(EXTRACFLAGS)
LDFLAGS = -L$(LIBADC) -lfmcadc -lpthread -lrt LDFLAGS = -L$(LIBADC)
LDLIBS = -lfmcadc -lpthread -lrt
DEMOS := fald-simple-acq fald-acq fald-trg-cfg DEMOS := fald-simple-acq fald-acq fald-trg-cfg
DEMOS += fald-simple-get-conf DEMOS += fald-simple-get-conf
...@@ -26,7 +32,7 @@ install: ...@@ -26,7 +32,7 @@ install:
install -D $(DEMOS) $(DESTDIR)/bin install -D $(DEMOS) $(DESTDIR)/bin
%: %.c $(LIBADC)/libfmcadc.a %: %.c $(LIBADC)/libfmcadc.a
$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(LDLIBS)
# make nothing for modules_install, but avoid errors # make nothing for modules_install, but avoid errors
modules_install: modules_install:
......
...@@ -519,6 +519,8 @@ static void *change_config_thread(void *arg) ...@@ -519,6 +519,8 @@ static void *change_config_thread(void *arg)
fd = open(adcfifo, O_RDONLY); fd = open(adcfifo, O_RDONLY);
} }
} }
/* function never returns, but return NULL to avoid warning */
return NULL;
} }
......
...@@ -3,11 +3,17 @@ ...@@ -3,11 +3,17 @@
# build a particular environment. # build a particular environment.
-include Makefile.specific -include Makefile.specific
# include parent_common.mk for buildsystem's defines
REPO_PARENT=../..
-include $(REPO_PARENT)/parent_common.mk
ZIO ?= ../zio
ZIO_ABS ?= $(abspath $(ZIO) )
# user-space tools for spec-fine-delay # user-space tools for spec-fine-delay
M = $(shell /bin/pwd)/../kernel M = ../kernel
DESTDIR ?= /usr/local DESTDIR ?= /usr/local
CFLAGS += -I$(M) -I$(ZIO)/include -Wno-trigraphs -Wall -ggdb -O2 $(EXTRACFLAGS) CFLAGS += -I$(M) -I$(ZIO_ABS)/include -Wno-trigraphs -Wall -ggdb -O2 $(EXTRACFLAGS)
CC ?= $(CROSS_COMPILE)gcc CC ?= $(CROSS_COMPILE)gcc
......
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