summaryrefslogtreecommitdiff
path: root/polux/devkit/Makefile
blob: 1b3685fda9650844093f9cf0dc0fc8a3ab9f0931 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
TOPDIR:=$(shell pwd)/..
LINUX_DIR:=$(TOPDIR)/linux-2.6.10
TARGET_DIR:=$(TOPDIR)/binaries
INCLUDE_DIR:=$(TOPDIR)/include

RTAI_DIR:=$(TOPDIR)/devkit/rtai-3.1-2.6
MODULES_DIR:=$(TOPDIR)/devkit/rtai-modules
PLC_DIR:=$(TOPDIR)/devkit/plc-polux

-include $(TOPDIR)/.config
-include $(LINUX_DIR)/.config

# Create suffixes
ifeq ($(CONFIG_MACH_MSE500DINI_200),y)
PLATFORM=mse500dini_200
else ifeq ($(CONFIG_MACH_MSE500_200),y)
PLATFORM=mse500_200
else ifeq ($(CONFIG_ARCH_SPC200C),y)
PLATFORM=spc200c
else ifeq ($(CONFIG_ARCH_SPC200E),y)
PLATFORM=spc200e
else
$(error unknown architecture)
endif

ifeq ($(BR2_CONFIG_SLAVE),y)
VERSION=slave
else
VERSION=all
endif


# Append suffix to objects
PLC_DRV_KO    := plc_drv_$(PLATFORM)_$(VERSION).ko
RTAI_HAL_KO   := rtai_hal_$(PLATFORM)_$(VERSION).ko
RTAI_UP_KO    := rtai_up_$(PLATFORM)_$(VERSION).ko
RTAI_TIMER_KO := rtai_timer_start_$(PLATFORM)_$(VERSION).ko

STRIP  := arm-uclinux-strip
SFLAGS := -g

# Dependencies
all: devkit

# *** RTAI ***
$(RTAI_DIR)/.rtai_config:
#	Forget about the configure...
	@cp $(RTAI_DIR)/rtai-core/arch/arm/defconfig $@
	@echo "CONFIG_RTAI_LINUXDIR=$(LINUX_DIR)" >> $@
	@$(MAKE) -C $(RTAI_DIR) reconfig

$(RTAI_DIR)/modules/rtai_hal.ko: $(RTAI_DIR)/.rtai_config
	$(MAKE) -C $(RTAI_DIR)

$(RTAI_DIR)/modules/rtai_up.ko: \
	$(RTAI_DIR)/modules/rtai_hal.ko

$(TARGET_DIR)/$(RTAI_HAL_KO): $(RTAI_DIR)/modules/rtai_hal.ko
	@mkdir -p $(TARGET_DIR)
	@cp $(RTAI_DIR)/modules/rtai_hal.ko $@

$(TARGET_DIR)/$(RTAI_UP_KO): $(RTAI_DIR)/modules/rtai_up.ko
	@mkdir -p $(TARGET_DIR)
	@cp $(RTAI_DIR)/modules/rtai_up.ko $@

rtai-clean:
	$(MAKE) -C $(RTAI_DIR) clean

rtai-mrproper:
	$(MAKE) -C $(RTAI_DIR) distclean
	@rm -f $(RTAI_DIR)/.rtai_config

# *** MODULES ***
$(MODULES_DIR)/rtai_timer_start.ko:
	$(MAKE) -C $(LINUX_DIR) M=$(MODULES_DIR) V=1 \
		CC=arm-uclinux-gcc \
		RTAI_DIR=$(RTAI_DIR)

$(TARGET_DIR)/$(RTAI_TIMER_KO): $(TARGET_DIR)/$(RTAI_HAL_KO) $(TARGET_DIR)/$(RTAI_UP_KO) $(MODULES_DIR)/rtai_timer_start.ko
	@mkdir -p $(TARGET_DIR)
	@cp $(MODULES_DIR)/rtai_timer_start.ko $@

rtai-modules-clean:
	@rm -f $(MODULES_DIR)/*.o $(MODULES_DIR)/*.ko \
	$(MODULES_DIR)/*.mod.c $(MODULES_DIR)/*.cmd

rtai-modules-mrproper: rtai-modules-clean
	@rm -fR $(MODULES_DIR)/.tmp_version

# *** PLC ***
$(PLC_DIR)/$(PLC_DRV_KO):
	@$(MAKE) -C $(PLC_DIR) \
		PLATFORM=$(PLATFORM) \
		VERSION=$(VERSION) \
		TOPDIR=$(TOPDIR) \
		LINUX_DIR=$(LINUX_DIR) \
		RTAI_DIR=$(RTAI_DIR)

$(TARGET_DIR)/$(PLC_DRV_KO): $(PLC_DIR)/$(PLC_DRV_KO)
	@mkdir -p $(TARGET_DIR)
	@cp $< $@
	@$(STRIP) $(SFLAGS) $@

plc_drv-clean:
	$(MAKE) -C $(PLC_DIR) clean
	@rm -rf $(PLC_DIR)/plc_drv_*.ko
	@rm -rf $(INCLUDE_DIR)/plc-drv/

# *** DEVKIT ***
devkit: \
	$(TARGET_DIR)/$(RTAI_HAL_KO) \
	$(TARGET_DIR)/$(RTAI_UP_KO) \
	$(TARGET_DIR)/$(RTAI_TIMER_KO) \
	$(TARGET_DIR)/$(PLC_DRV_KO) \

clean: plc_drv-clean rtai-clean rtai-modules-clean

mrproper: rtai-mrproper rtai-modules-mrproper plc_drv-clean

.PHONY: devkit rtai rtai-modules plc_drv
.PHONY: mrproper rtai-mrproper rtai-modules-mrproper
.PHONY: clean plc_drv-clean rtai-clean rtai-modules-clean

# Should be set, but the tree dependance have not be done inside the plc-polux directory
#.PHONY: $(PLC_DIR)/$(PLC_DRV_KO)