summaryrefslogtreecommitdiffstats
path: root/c/Makefile.in
blob: 98e436a299d8bc65e32737d4f36d592552cee5e7 (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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#
#  $Id$
#
# top level directory for RTEMS build tree
# This Makefile is *not* a good example of a directory Makefile.
#

@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
top_builddir = ..
subdir = c

INSTALL = @INSTALL@

RTEMS_ROOT = $(top_srcdir)/@RTEMS_TOPdir@
PROJECT_ROOT = @PROJECT_ROOT@

prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
libdir = @libdir@
includedir = @includedir@
target = @target@
manext = 1
mandir = @mandir@/man$(manext)
program_prefix = @program_prefix@
VPATH = @srcdir@

include $(RTEMS_ROOT)/make/custom/${RTEMS_BSP}.cfg
include $(RTEMS_ROOT)/make/directory.cfg

SUB_DIRS=build-tools src

# We only make the install point for the networking header files if needed.
LIBNETWORKING_yes_V = lib/include/networking lib/include/networking/sys \
	lib/include/networking/machine lib/include/networking/rtems \
	lib/include/networking/vm lib/include/networking/net \
	lib/include/networking/netinet lib/include/networking/arpa \
	lib/include/networking/nfs
LIBNETWORKING = $(LIBNETWORKING_$(HAS_NETWORKING)_V)

# We only make the rpc install point if networking is enabled.
LIBRPC_yes_V = lib/include/rpc
LIBRPC = $(LIBRPC_$(HAS_NETWORKING)_V)

# We only make the rdbg install point if networking and rdbg is enabled.
LIBRDBG_yes_yes_V = lib/include/rdbg
LIBRDBG = $(LIBRDBG_$(HAS_NETWORKING)_$(HAS_RDBG)_V)

# We only make the rtems++ install point if it is enabled.
LIBRTEMSCPLUSPLUS_yes_V = lib/include/rtems++
LIBRTEMSCPLUSPLUS = $(LIBRTEMSCPLUSPLUS_$(HAS_CPLUSPLUS)_V)

# directories to be created in install point
CREATE_DIRS = \
    lib lib/include lib/include/sys lib/include/rtems \
    lib/include/rtems/score lib/include/rtems/rtems lib/include/rtems/posix \
    lib/include/libc lib/include/libc/sys \
    lib/include/motorola lib/include/zilog \
    lib/include/libchip \
    $(LIBNETWORKING) \
    $(LIBRPC) \
    $(LIBRDBG) \
    $(LIBRTEMSCPLUSPLUS) \
    bin samples \
    tests tests/screens tests/screens/sptests \
    tests/screens/psxtests tests/screens/mptests \
    tests/screens/mptests/node1 tests/screens/mptests/node2 \
    build-tools update-tools

BUILD_DIRS = ${CREATE_DIRS:%=$(PROJECT_ROOT)/${RTEMS_BSP}/%}

# Make all/install must include 'env'
# if something is added to TARGET_VARIANTS, then account for it here
make_src_makefiles: Makefile.in Makefile
	-find src -name Makefile \
	    -exec grep -l "^preinstall" {} \; | sort > make_src_makefiles.tmp
	-grep tools make_src_makefiles.tmp > make_src_makefiles
	-grep -v tools make_src_makefiles.tmp >> make_src_makefiles
	-rm make_src_makefiles.tmp

pre_install_src: env make_src_makefiles
	cd build-tools/scripts; \
	 $(MAKE) RTEMS_BSP=${RTEMS_BSP} install-exec-local
	cd build-tools/src; \
	 $(MAKE) RTEMS_BSP=${RTEMS_BSP} install-exec-local
	@echo "Order of preinstall directories"
	cat make_src_makefiles
	@echo 
	CURRDIR=`pwd`; \
	for i in `cat make_src_makefiles` ; do \
		DIR=`dirname $$i`; \
		cd $$DIR; \
		$(MAKE) RTEMS_BSP=${RTEMS_BSP} preinstall; \
		cd $$CURRDIR; \
	done

all: pre_install_src env 
debug: pre_install_src env
profile: pre_install_src env

install: all install_files
debug_install: env debug install_files
profile_install: env profile install_files

debug_all: debug
profile_all: profile

# top level clean/clobber will delete the install points
clean_WRAPUP = $(MAKE) clean_wrapup
clobber_WRAPUP = $(MAKE) clean_wrapup

clean_wrapup: clean_tools clean_dirs clean_modules

.PHONY:	dirs clean_wrapup clean_dirs clean_tools clean_modules env install

$(BUILD_DIRS):
	$(RTEMS_ROOT)/mkinstalldirs $(BUILD_DIRS)
	if test -d $(PROJECT_ROOT)/c/src/lib/libhwapi; then \
		(cd $(PROJECT_ROOT)/c/src/lib/libhwapi ; $(MAKE) mkdirs) \
	fi

dirs: $(BUILD_DIRS)

distclean: clobber

clean_dirs:
	$(RM) -r $(PROJECT_RELEASE)

clean_tools:
	cd build-tools; $(MAKE) clean

$(PROJECT_ROOT)/${RTEMS_BSP}/Makefile.inc: $(PROJECT_ROOT)/make/Templates/Makefile.inc
	echo "RTEMS_BSP = ${RTEMS_BSP}" > $@
	$(CAT) $< >> $@

# NOTE: The wildcard on the install should pick up everything except
#       the tests directory.  This significantly minimizes the install size.

install_files: $(PROJECT_ROOT)/${RTEMS_BSP}/Makefile.inc
	@top_srcdir@/mkinstalldirs $(prefix)
	-$(RM) -rf $(prefix)/${RTEMS_BSP}
	cd ../; tar cf - ${RTEMS_BSP}/[bilsuM]* | \
		(cd $(prefix); tar xpBf - )
	cd ../make; $(MAKE) RTEMS_BSP=${RTEMS_BSP} install

tests:
	cd src/tests; $(MAKE) all

debug_tests: debug
	cd src/tests; $(MAKE) debug

profile_tests: profile
	cd src/tests; $(MAKE) profile

env:    $(SRCS) dirs

Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
	cd $(top_builddir) \
	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status