Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Friendlier user-space build/run for graphical components (gui, vnc)
[palacios.git] / linux_usr / Makefile
1 #
2 # Build Static or Dynamic versions of the control utilities
3 #
4 #
5
6 # define this at the command-line or here
7 # to get dynamically linked versions
8 STATIC = 0
9
10 #
11 # Executables that implement core functionality
12 #
13 BASE_EXECS =    v3_mem \
14                 v3_mem_free \
15                 v3_create \
16                 v3_create_bind \
17                 v3_free  \
18                 v3_launch \
19                 v3_stop   \
20                 v3_pause  \
21                 v3_continue \
22                 v3_core_move \
23                 v3_load \
24                 v3_save \
25                 v3_cons \
26                 v3_cons_sc \
27                 v3_stream \
28                 v3_monitor \
29                 v3_hypercall \
30                 v3_debug \
31                 v3_send \
32                 v3_receive \
33                 v3_pci
34
35
36 #
37 # Examples
38 #
39 EXAMPLE_EXECS = v3_user_host_dev_example \
40                 v3_os_debug \
41                 v3_user_keyed_stream_example \
42                 v3_user_keyed_stream_file 
43
44 #
45 # Currently experimental things
46 #
47 EXPERIMENTAL_EXECS =    v3_simulate  \
48                         v3_inject_ecc_scrubber_mce  \
49                         v3_top_inject \
50                         v3_env_inject \
51                         v3_syscall
52
53
54
55
56 #
57 # Things that have been built elsewhere - just for reference here
58 #
59 PRECOMPILED_EXECS = x0vncserver
60
61 COPIED_EXECS = v3_x0vncserver v3_x0gui
62
63 #
64 # Libraries that we need to build
65 #
66 LIBS = libv3_user_host_dev.a libv3_user_keyed_stream.a libv3_ctrl.a
67
68 BUILD_EXECS = $(BASE_EXECS) $(EXAMPLE_EXECS) $(EXPERIMENTAL_EXECS) 
69 BUILD_LIBS = $(LIBS)
70
71
72 CFILES = $(BUILD_EXECS:%=%.c) $(BUILD_LIBS:lib%.a=%.c) 
73
74 ifeq ($(STATIC),1)
75   CFLAGS += -static 
76 endif
77
78 CFLAGS += -I../linux_module
79
80 CC = gcc
81 AR = ar
82
83 all: $(BUILD_EXECS) $(BUILD_LIBS) $(COPIED_EXECS)
84
85
86 libv3_ctrl.a : v3_ctrl.c v3_ctrl.h
87         $(CC) $(CFLAGS) -I../linux_module -c v3_ctrl.c
88         $(AR) ruv libv3_ctrl.a v3_ctrl.o
89         rm -rf v3_ctrl.o 
90
91 #
92 # Most tools compile in a straightforward way
93 #
94 % :: %.c v3_ctrl.h libv3_ctrl.a
95         $(CC) $(CFLAGS) $< -lv3_ctrl -L. -o $@
96
97
98 #
99 # Console support requires curses
100 #
101 ifeq ($(STATIC),1)
102   CURSES_CFLAGS = -DNCURSES_STATIC
103   CURSES_LIBS = -lcurses                           
104 else
105   CURSES_CFLAGS = 
106   CURSES_LIBS = -lcurses 
107 endif
108
109 v3_cons: v3_cons.c
110         $(CC) $(CFLAGS) $(CURSES_CFLAGS) $< $(CURSES_LIBS) -o $@
111
112 v3_cons_sc: v3_cons_sc.c
113         $(CC) $(CFLAGS) $(CURSES_CFLAGS) $< $(CURSES_LIBS) -o $@
114
115 v3_create: v3_create.c ezxml.c libv3_ctrl.a 
116         $(CC) $(CFLAGS) $^ -lv3_ctrl -L. -o $@
117
118
119
120 #
121 # User host devices include a library and some examples
122 #
123 libv3_user_host_dev.a : v3_user_host_dev.c v3_user_host_dev.h v3_ctrl.h
124         $(CC) $(CFLAGS) -I../linux_module -c v3_user_host_dev.c 
125         $(AR) ruv libv3_user_host_dev.a v3_user_host_dev.o
126         rm -f v3_user_host_dev.o
127
128 v3_user_host_dev_example : v3_user_host_dev_example.c libv3_user_host_dev.a
129         $(CC) $(CFLAGS) $< -I../linux_module -L. -lv3_user_host_dev -o $@
130
131 v3_os_debug : v3_os_debug.c libv3_user_host_dev.a
132         $(CC) $(CFLAGS) $< -I../linux_module -L. -lv3_user_host_dev -o $@
133
134
135 #
136 # User keyed stream support includes a library and examples
137 #
138 #
139 libv3_user_keyed_stream.a :: v3_user_keyed_stream.c v3_user_keyed_stream.h v3_ctrl.h
140         $(CC) $(CFLAGS) -I../linux_module -c v3_user_keyed_stream.c 
141         $(AR) ruv libv3_user_keyed_stream.a v3_user_keyed_stream.o
142         rm -f v3_user_keyed_stream.o
143
144
145 v3_user_keyed_stream_example : v3_user_keyed_stream_example.c libv3_user_keyed_stream.a
146         $(CC) $(CFLAGS) $< -I../linux_module -L. -lv3_user_keyed_stream -o $@
147
148 v3_user_keyed_stream_file : v3_user_keyed_stream_file.c libv3_user_keyed_stream.a
149         $(CC) $(CFLAGS) $< -I../linux_module -L. -lv3_user_keyed_stream -o $@
150
151
152
153 #
154 # VNC support is compiled separately
155 #
156 v3_x0vncserver : 
157         @if [ -a x0vncserver ] ; \
158         then \
159                 cp x0vncserver v3_x0vncserver ; \
160         else \
161                 echo "In order to use v3_vncclient/server you must have" ; \
162                 echo "previously built or received palacios/linux_usr/x0vncserver" ; \
163         fi;
164
165 #
166 # GUI is compiled separately
167 #
168 v3_x0gui : 
169         @if [ -a gui/Palacios ] ; \
170         then \
171                 cp gui/Palacios v3_x0gui ; \
172         else \
173                 echo "In order to use v3_gui (the graphical interface)" ;\
174                 echo "you must first cd to palacios/linux_usr/gui" ;\
175                 echo "and compile it according to the README given there";\
176         fi;
177
178 #
179 # Cleanup and dependency builds are automated
180 #
181 clean:
182         rm -f $(BUILD_EXECS) $(BUILD_LIBS) $(COPIED_EXECS)
183
184 depend:
185         $(CC) -MM $(CFILES) -I../linux_module > .dependencies
186