• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1##############################################################################
2# Copyright 2018-2020,2021 Thomas E. Dickey                                  #
3# Copyright 1999-2016,2018 Free Software Foundation, Inc.                    #
4#                                                                            #
5# Permission is hereby granted, free of charge, to any person obtaining a    #
6# copy of this software and associated documentation files (the "Software"), #
7# to deal in the Software without restriction, including without limitation  #
8# the rights to use, copy, modify, merge, publish, distribute, distribute    #
9# with modifications, sublicense, and/or sell copies of the Software, and to #
10# permit persons to whom the Software is furnished to do so, subject to the  #
11# following conditions:                                                      #
12#                                                                            #
13# The above copyright notice and this permission notice shall be included in #
14# all copies or substantial portions of the Software.                        #
15#                                                                            #
16# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
17# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   #
18# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL    #
19# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      #
20# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    #
21# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER        #
22# DEALINGS IN THE SOFTWARE.                                                  #
23#                                                                            #
24# Except as contained in this notice, the name(s) of the above copyright     #
25# holders shall not be used in advertising or otherwise to promote the sale, #
26# use or other dealings in this Software without prior written               #
27# authorization.                                                             #
28##############################################################################
29#
30#  Author:  Juergen Pfeifer, 1996
31#
32#  $Id: Makefile.in,v 1.96 2021/07/03 15:45:33 tom Exp $
33#
34.SUFFIXES:
35
36SHELL		= @SHELL@
37VPATH		= @srcdir@
38THIS		= Makefile
39
40ADA_MFLAGS 	= @cf_cv_makeflags@
41@SET_MAKE@
42
43MODEL		= ../../@DFT_OBJ_SUBDIR@
44
45DESTDIR		= @DESTDIR@
46
47top_srcdir	= @top_srcdir@
48srcdir		= @srcdir@
49prefix		= @prefix@
50exec_prefix	= @exec_prefix@
51includedir	= @includedir@
52libdir		= @libdir@
53
54LIBDIR		= $(DESTDIR)$(libdir)
55ADA_INCLUDE	= $(DESTDIR)@ADA_INCLUDE@
56ADA_OBJECTS	= $(DESTDIR)@ADA_OBJECTS@
57
58INSTALL		= @INSTALL@ @INSTALL_OPT_O@
59INSTALL_LIB	= @INSTALL@ @INSTALL_LIB@
60
61AR		= @AR@
62ARFLAGS		= @ARFLAGS@
63AWK		= @AWK@
64LN_S		= @LN_S@
65
66CC		= @CC@
67CFLAGS		= @CFLAGS@ @EXTRA_CFLAGS@
68
69CPPFLAGS	= @ACPPFLAGS@ @CPPFLAGS@ \
70		  -DHAVE_CONFIG_H -I$(srcdir)
71
72CCFLAGS		= $(CPPFLAGS) $(CFLAGS)
73
74CFLAGS_NORMAL	= $(CCFLAGS) -DNCURSES_STATIC
75CFLAGS_DEBUG	= $(CCFLAGS) -DNCURSES_STATIC @CC_G_OPT@ -DTRACE
76CFLAGS_PROFILE	= $(CCFLAGS) -DNCURSES_STATIC -pg
77CFLAGS_SHARED	= $(CCFLAGS) @CC_SHARED_OPTS@
78
79CFLAGS_DEFAULT	= $(CFLAGS_@DFT_UPR_MODEL@)
80
81LINK		= $(CC)
82LDFLAGS		= @LDFLAGS@ @LD_MODEL@ @LIBS@
83
84RANLIB		= @RANLIB@
85
86################################################################################
87ADA		= @cf_ada_compiler@
88ADAPREP		= gnatprep
89ADAFLAGS	= @ADAFLAGS@ -I. -I$(srcdir)
90
91LIB_NAME	= @ADA_LIBNAME@
92SONAME		= @ADA_SHAREDLIB@
93
94GNAT_PROJECT	= @ADA_LIBNAME@.gpr
95
96# build/source are the Ada95 tree
97BUILD_DIR	= ..
98SOURCE_DIR	= ..
99
100BUILD_DIR_LIB	= $(BUILD_DIR)/lib
101SOURCE_DIR_SRC	= $(SOURCE_DIR)/src
102
103ADAMAKE		= @cf_ada_make@
104ADAMAKEFLAGS	= \
105	-P$(GNAT_PROJECT) \
106	-XBUILD_DIR=`cd $(BUILD_DIR);pwd` \
107	-XSOURCE_DIR=`cd $(SOURCE_DIR);pwd` \
108	-XSOURCE_DIR2=`cd $(srcdir);pwd` \
109	-XLIB_NAME=$(LIB_NAME) \
110	-XSONAME=$(SONAME)
111
112CARGS           = -cargs $(ADAFLAGS)
113LARGS           =
114
115STATIC_LIBNAME	= lib$(LIB_NAME).a
116SHARED_LIBNAME	= $(SONAME)
117SHARED_SYMLINK	= lib$(LIB_NAME).so
118
119ALIB            = @cf_ada_package@
120ABASE           = $(ALIB)-curses
121################################################################################
122GENERATED_SOURCES=$(ABASE).ads         			\
123		  $(ABASE).adb         			\
124	          $(ABASE)-aux.ads   			\
125	          $(ABASE)-trace.ads   			\
126	          $(ABASE)-menus.ads   			\
127	          $(ABASE)-forms.ads   			\
128	          $(ABASE)-mouse.ads 			\
129	          $(ABASE)-panels.ads			\
130	          $(ABASE)-menus-menu_user_data.ads	\
131	          $(ABASE)-menus-item_user_data.ads	\
132	          $(ABASE)-forms-form_user_data.ads	\
133	          $(ABASE)-forms-field_types.ads	\
134	          $(ABASE)-forms-field_user_data.ads	\
135	          $(ABASE)-panels-user_data.ads
136################################################################################
137LIBOBJS=$(ALIB).o                			\
138	$(ABASE)-aux.o           			\
139	$(ABASE).o               			\
140	$(ABASE)-terminfo.o				\
141	$(ABASE)-termcap.o				\
142	$(ABASE)-putwin.o				\
143	$(ABASE)-trace.o				\
144	$(ABASE)-mouse.o         			\
145	$(ABASE)-panels.o        			\
146	$(ABASE)-menus.o         			\
147	$(ABASE)-forms.o         			\
148	$(ABASE)-forms-field_types.o      		\
149	$(ABASE)-forms-field_types-alpha.o      	\
150	$(ABASE)-forms-field_types-alphanumeric.o	\
151	$(ABASE)-forms-field_types-intfield.o     	\
152	$(ABASE)-forms-field_types-numeric.o     	\
153	$(ABASE)-forms-field_types-regexp.o       	\
154	$(ABASE)-forms-field_types-enumeration.o	\
155	$(ABASE)-forms-field_types-ipv4_address.o	\
156	$(ABASE)-forms-field_types-user.o 		\
157	$(ABASE)-forms-field_types-user-choice.o 	\
158	$(ABASE)-text_io.o       			\
159	$(ABASE)-text_io-aux.o
160
161# Ada object files for generic packages. Since gnat 3.10 they are
162# also compiled
163GENOBJS=$(ABASE)-menus-menu_user_data.o			\
164	$(ABASE)-menus-item_user_data.o			\
165	$(ABASE)-forms-form_user_data.o			\
166	$(ABASE)-forms-field_user_data.o		\
167	$(ABASE)-forms-field_types-enumeration-ada.o	\
168	$(ABASE)-panels-user_data.o			\
169	$(ABASE)-text_io-integer_io.o			\
170	$(ABASE)-text_io-float_io.o			\
171	$(ABASE)-text_io-fixed_io.o			\
172	$(ABASE)-text_io-decimal_io.o			\
173	$(ABASE)-text_io-enumeration_io.o		\
174	$(ABASE)-text_io-modular_io.o			\
175	$(ABASE)-text_io-complex_io.o
176
177################################################################################
178
179@MAKE_PHONY@.PHONY :	all
180@MAKE_PHONY@.PHONY :	clean
181@MAKE_PHONY@.PHONY :	distclean
182@MAKE_PHONY@.PHONY :	install
183@MAKE_PHONY@.PHONY :	install.libs
184@MAKE_PHONY@.PHONY :	libs
185@MAKE_PHONY@.PHONY :	mostlyclean
186@MAKE_PHONY@.PHONY :	realclean
187@MAKE_PHONY@.PHONY :	sources
188@MAKE_PHONY@.PHONY :	uninstall
189@MAKE_PHONY@.PHONY :	uninstall.libs
190
191all ::  $(BUILD_DIR_LIB)/$(STATIC_LIBNAME)
192	@echo done
193
194$(ADA_INCLUDE) \
195$(ADA_OBJECTS) \
196$(LIBDIR) \
197$(BUILD_DIR_LIB) :
198	mkdir -p $@
199
200$(GENERATED_SOURCES) :
201	( cd ../gen; $(MAKE) $(ADA_MFLAGS) )
202
203sources : $(GENERATED_SOURCES)
204	@echo made $@
205
206libs \
207install \
208install.libs :: \
209		$(BUILD_DIR_LIB)/$(STATIC_LIBNAME)
210	@echo made $(STATIC_LIBNAME)
211
212#OLD:BEGIN
213install \
214install.libs :: \
215		$(BUILD_DIR_LIB)/$(STATIC_LIBNAME) \
216		$(ADA_OBJECTS)
217	@$(INSTALL_LIB) \
218		$(BUILD_DIR_LIB)/$(STATIC_LIBNAME) \
219		$(ADA_OBJECTS)
220
221uninstall \
222uninstall.libs ::
223	@rm -f $(ADA_OBJECTS)/$(STATIC_LIBNAME)
224#OLD:END
225
226mostlyclean ::
227	rm -f *.o *.ali b_t*.* *.s $(PROGS) a.out core b_*_test.c *.xr[bs] *.a
228
229clean :: mostlyclean
230	rm -f $(ABASE)-trace.adb
231
232distclean :: clean
233	rm -f Makefile library.gpr
234
235realclean :: distclean
236
237BASEDEPS=$(ABASE).ads $(ABASE)-aux.ads $(ABASE).adb
238
239$(ABASE)-trace.adb : $(srcdir)/$(ABASE)-trace.adb_p
240	rm -f $@
241	$(ADAPREP) -DADA_TRACE=@ADA_TRACE@ @GNATPREP_OPTS@ $(srcdir)/$(ABASE)-trace.adb_p $@
242
243###############################################################################
244# Use these definitions when building a shared library.
245SHARED_C_OBJS	= c_varargs_to_ada.o c_threaded_variables.o ncurses_compat.o
246SHARED_OBJS 	= $(SHARED_C_OBJS) @USE_OLD_MAKERULES@$(LIBOBJS) @cf_generic_objects@
247
248c_varargs_to_ada.o :	$(srcdir)/c_varargs_to_ada.c
249	$(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/c_varargs_to_ada.c
250
251c_threaded_variables.o : $(srcdir)/c_threaded_variables.c
252	$(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/c_threaded_variables.c
253
254ncurses_compat.o :	$(srcdir)/ncurses_compat.c
255	$(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/ncurses_compat.c
256
257###############################################################################
258# Use these definitions when building a static library.
259STATIC_C_OBJS	= static_c_varargs_to_ada.o static_c_threaded_variables.o static_ncurses_compat.o
260STATIC_OBJS 	= $(STATIC_C_OBJS) @USE_OLD_MAKERULES@$(LIBOBJS) @cf_generic_objects@
261
262static_c_varargs_to_ada.o :	$(srcdir)/c_varargs_to_ada.c
263	$(CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/c_varargs_to_ada.c
264
265static_c_threaded_variables.o : $(srcdir)/c_threaded_variables.c
266	$(CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/c_threaded_variables.c
267
268static_ncurses_compat.o :	$(srcdir)/ncurses_compat.c
269	$(CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/ncurses_compat.c
270
271###############################################################################
272
273@USE_OLD_MAKERULES@$(BUILD_DIR_LIB)/$(STATIC_LIBNAME) :: \
274@USE_OLD_MAKERULES@		$(BUILD_DIR_LIB) \
275@USE_OLD_MAKERULES@		$(STATIC_OBJS)
276@USE_OLD_MAKERULES@	$(AR) $(ARFLAGS) $@ $(STATIC_OBJS)
277
278$(BUILD_DIR)/static-ali : ; mkdir -p $@
279$(BUILD_DIR)/static-obj : ; mkdir -p $@
280
281STATIC_DIRS = \
282	$(BUILD_DIR_LIB) \
283	$(BUILD_DIR)/static-ali \
284	$(BUILD_DIR)/static-obj
285
286@USE_GNAT_PROJECTS@$(BUILD_DIR_LIB)/$(STATIC_LIBNAME) :: \
287@USE_GNAT_PROJECTS@		$(ABASE)-trace.adb \
288@USE_GNAT_PROJECTS@		$(STATIC_C_OBJS) \
289@USE_GNAT_PROJECTS@		$(STATIC_DIRS)
290@USE_GNAT_PROJECTS@	@cf_ada_config@gprconfig --batch --config=Ada --config=C,,,,@cf_ada_config_C@
291@USE_GNAT_PROJECTS@	-rm -f $(GNAT_PROJECT)
292@USE_GNAT_PROJECTS@	$(SHELL) $(srcdir)/library-cfg.sh static library.gpr $(CFLAGS_NORMAL) >$(GNAT_PROJECT)
293@USE_GNAT_PROJECTS@	@echo "Using GNAT Project:"
294@USE_GNAT_MAKE_GPR@	@-$(SHELL) -c "diff -c $(srcdir)/library.gpr $(GNAT_PROJECT); exit 0"
295@USE_GNAT_MAKE_GPR@	$(ADAMAKE) $(ADAMAKEFLAGS) -XLIB_KIND=static
296@USE_GNAT_MAKE_GPR@	$(AR) $(ARFLAGS) $@ $(STATIC_C_OBJS)
297@USE_GNAT_MAKE_GPR@	-rm -f $(GNAT_PROJECT)
298@USE_GNAT_GPRBUILD@	@-$(SHELL) -c "diff -c library.gpr $(GNAT_PROJECT); exit 0"
299@USE_GNAT_GPRBUILD@	gprbuild -p $(ADAMAKEFLAGS) -XLIB_KIND=static
300@USE_GNAT_GPRBUILD@	-rm -f $(GNAT_PROJECT)
301
302#OLD:BEGIN
303@USE_GNAT_LIBRARIES@install \
304@USE_GNAT_LIBRARIES@install.libs :: \
305@USE_GNAT_LIBRARIES@		$(ADA_OBJECTS)
306@USE_GNAT_LIBRARIES@	$(INSTALL_LIB) \
307@USE_GNAT_LIBRARIES@		$(BUILD_DIR)/static-ali/*.ali \
308@USE_GNAT_LIBRARIES@		$(ADA_OBJECTS)
309#OLD:END
310# While gprinstall is the "recommended" tool, it is rather brittle, with
311# hardcoded assumptions about the use of the install-name which prevent using
312# that tool to make the directory layout of older versions of the AdaCurses
313# package.
314#
315# In principle, one might just do
316#	--install-name=""
317# and in dry-run mode, gprinstall pretends to handle it properly (trimming the
318# empty directory level), but without the dry-run option, it fails (tested
319# with gnat 10.1.1).
320#NEW:BEGIN
321#@USE_GNAT_LIBRARIES@install \
322#@USE_GNAT_LIBRARIES@install.libs ::
323#@USE_GNAT_LIBRARIES@	@cf_ada_config@gprconfig --batch --config=Ada --config=C,,,,@cf_ada_config_C@
324#@USE_GNAT_LIBRARIES@	-rm -f $(GNAT_PROJECT)
325#@USE_GNAT_LIBRARIES@	$(SHELL) $(srcdir)/library-cfg.sh static library.gpr $(CFLAGS_NORMAL) >$(GNAT_PROJECT)
326#@USE_GNAT_LIBRARIES@	@echo "Using GNAT Project:"
327#@USE_GNAT_LIBRARIES@	@-$(SHELL) -c "diff -c library.gpr $(GNAT_PROJECT); exit 0"
328#@USE_GNAT_LIBRARIES@
329#@USE_GNAT_LIBRARIES@	gprinstall -m -v -f -p \
330#@USE_GNAT_LIBRARIES@		--prefix="$(DESTDIR)$(prefix)" \
331#@USE_GNAT_LIBRARIES@		$(ADAMAKEFLAGS) -XLIB_KIND=static \
332#@USE_GNAT_LIBRARIES@		--lib-subdir="$(DESTDIR)$(prefix)"/lib \
333#@USE_GNAT_LIBRARIES@		--ali-subdir="$(DESTDIR)$(prefix)"/lib/ada/adalib \
334#@USE_GNAT_LIBRARIES@		--sources-subdir="$(DESTDIR)$(prefix)"/share/ada/adainclude
335#@USE_GNAT_LIBRARIES@
336#@USE_GNAT_LIBRARIES@	-rm -f $(GNAT_PROJECT)
337#NEW:END
338
339#OLD:BEGIN
340uninstall \
341uninstall.libs ::
342	@rm -f $(ADA_OBJECTS)/$(STATIC_LIBNAME)
343#OLD:END
344#NEW:BEGIN
345#@USE_GNAT_LIBRARIES@uninstall \
346#@USE_GNAT_LIBRARIES@uninstall.libs ::
347#@USE_GNAT_LIBRARIES@	@cf_ada_config@gprconfig --batch --config=Ada --config=C,,,,@cf_ada_config_C@
348#@USE_GNAT_LIBRARIES@	-rm -f $(GNAT_PROJECT)
349#@USE_GNAT_LIBRARIES@	$(SHELL) $(srcdir)/library-cfg.sh static library.gpr $(CFLAGS_NORMAL) >$(GNAT_PROJECT)
350#@USE_GNAT_LIBRARIES@	@echo "Using GNAT Project:"
351#@USE_GNAT_LIBRARIES@	@-$(SHELL) -c "diff -c library.gpr $(GNAT_PROJECT); exit 0"
352#@USE_GNAT_LIBRARIES@
353#@USE_GNAT_LIBRARIES@	gprinstall -v -f --prefix="$(DESTDIR)$(prefix)" --uninstall $(ADAMAKEFLAGS) -XLIB_KIND=static
354#@USE_GNAT_LIBRARIES@
355#@USE_GNAT_LIBRARIES@	-rm -f $(GNAT_PROJECT)
356#NEW:END
357
358@USE_GNAT_LIBRARIES@uninstall \
359@USE_GNAT_LIBRARIES@uninstall.libs ::
360@USE_GNAT_LIBRARIES@	@$(SHELL) -c 'for name in $(BUILD_DIR)/static-ali/*.ali ; do rm -f $(ADA_OBJECTS)/`basename $$name`; done'
361
362$(BUILD_DIR)/dynamic-ali : ; mkdir -p $@
363$(BUILD_DIR)/dynamic-obj : ; mkdir -p $@
364
365SHARED_DIRS = \
366	$(BUILD_DIR_LIB) \
367	$(BUILD_DIR)/dynamic-ali \
368	$(BUILD_DIR)/dynamic-obj
369
370@MAKE_ADA_SHAREDLIB@all :: $(BUILD_DIR_LIB)/$(SHARED_LIBNAME)
371@MAKE_ADA_SHAREDLIB@$(BUILD_DIR_LIB)/$(SHARED_LIBNAME) :: \
372@MAKE_ADA_SHAREDLIB@		$(ABASE)-trace.adb \
373@MAKE_ADA_SHAREDLIB@		$(SHARED_DIRS) \
374@MAKE_ADA_SHAREDLIB@		$(SHARED_OBJS)
375@MAKE_ADA_SHAREDLIB@	cp $(SHARED_OBJS) $(BUILD_DIR)/dynamic-obj/
376@MAKE_ADA_SHAREDLIB@	@cf_ada_config@gprconfig --batch --config=Ada --config=C,,,,@cf_ada_config_C@
377@MAKE_ADA_SHAREDLIB@	-rm -f $(GNAT_PROJECT)
378@MAKE_ADA_SHAREDLIB@	$(SHELL) $(srcdir)/library-cfg.sh dynamic library.gpr $(CFLAGS_SHARED) >$(GNAT_PROJECT)
379@MAKE_ADA_SHAREDLIB@	@echo "Making Ada shared-lib:"
380@MAKE_ADA_SHAREDLIB@	@-$(SHELL) -c "diff -c library.gpr $(GNAT_PROJECT); exit 0"
381@MAKE_ADA_SHAREDLIB@	$(ADAMAKE) $(ADAMAKEFLAGS) -XLIB_KIND=dynamic
382@MAKE_ADA_SHAREDLIB@	-rm -f $(GNAT_PROJECT)
383
384install \
385install.libs :: $(ADA_INCLUDE)
386	$(INSTALL_LIB) \
387		$(SOURCE_DIR_SRC)/*.ad[sb] \
388		$(ADA_INCLUDE)
389
390install \
391install.libs :: $(ADA_INCLUDE)
392	$(INSTALL_LIB) \
393		$(GENERATED_SOURCES) \
394		$(ADA_INCLUDE)
395
396uninstall \
397uninstall.libs ::
398	$(SHELL) -c 'for name in $(SOURCE_DIR_SRC)/*.ad[sb] $(GENERATED_SOURCES); do rm -f $(ADA_INCLUDE)/`basename $$name`; done'
399
400@MAKE_ADA_SHAREDLIB@install \
401@MAKE_ADA_SHAREDLIB@install.libs :: $(ADA_OBJECTS) $(LIBDIR)
402@MAKE_ADA_SHAREDLIB@	$(INSTALL_LIB) \
403@MAKE_ADA_SHAREDLIB@		$(BUILD_DIR)/dynamic-ali/* \
404@MAKE_ADA_SHAREDLIB@		$(ADA_OBJECTS)
405@MAKE_ADA_SHAREDLIB@	$(INSTALL_LIB) \
406@MAKE_ADA_SHAREDLIB@		$(BUILD_DIR_LIB)/$(SHARED_LIBNAME) \
407@MAKE_ADA_SHAREDLIB@		$(LIBDIR)
408@MAKE_ADA_SHAREDLIB@	( cd $(LIBDIR) && $(LN_S) $(SHARED_LIBNAME) $(SHARED_SYMLINK) )
409@MAKE_ADA_SHAREDLIB@
410@MAKE_ADA_SHAREDLIB@uninstall \
411@MAKE_ADA_SHAREDLIB@uninstall.libs ::
412@MAKE_ADA_SHAREDLIB@	$(SHELL) -c 'for name in $(BUILD_DIR)/dynamic-ali/* ; do rm -f $(ADA_OBJECTS)/`basename $$name`; done'
413@MAKE_ADA_SHAREDLIB@
414@MAKE_ADA_SHAREDLIB@uninstall \
415@MAKE_ADA_SHAREDLIB@uninstall.libs ::
416@MAKE_ADA_SHAREDLIB@	rm -f $(LIBDIR)/$(SHARED_SYMLINK)
417@MAKE_ADA_SHAREDLIB@	rm -f $(LIBDIR)/$(SHARED_LIBNAME)
418
419#rm-docs :
420#	gnatdoc --enable-build $(ADAMAKEFLAGS) -XLIB_KIND=static
421
422clean ::
423	-rm -f default.cgpr
424	-rm -rf $(BUILD_DIR)/*-ali
425	-rm -rf $(BUILD_DIR)/*-obj
426	-rm -rf $(BUILD_DIR_LIB)
427#@USE_GNAT_PROJECTS@	gprclean $(ADAMAKEFLAGS) -XLIB_KIND=static
428#@MAKE_ADA_SHAREDLIB@	gprclean $(ADAMAKEFLAGS) -XLIB_KIND=dynamic
429