1 ##############################################################################
2 # Copyright 2018-2020,2021 Thomas E. Dickey #
3 # Copyright 1999-2016,2018 Free Software Foundation, Inc. #
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: #
13 # The above copyright notice and this permission notice shall be included in #
14 # all copies or substantial portions of the Software. #
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. #
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 #
28 ##############################################################################
30 # Author: Juergen Pfeifer, 1996
32 # $Id: Makefile.in,v 1.96 2021/07/03 15:45:33 tom Exp $
40 ADA_MFLAGS = @cf_cv_makeflags@
43 MODEL = ../../@DFT_OBJ_SUBDIR@
47 top_srcdir = @top_srcdir@
50 exec_prefix = @exec_prefix@
51 includedir = @includedir@
54 LIBDIR = $(DESTDIR)$(libdir)
55 ADA_INCLUDE = $(DESTDIR)@ADA_INCLUDE@
56 ADA_OBJECTS = $(DESTDIR)@ADA_OBJECTS@
58 INSTALL = @INSTALL@ @INSTALL_OPT_O@
59 INSTALL_LIB = @INSTALL@ @INSTALL_LIB@
67 CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
69 CPPFLAGS = @ACPPFLAGS@ @CPPFLAGS@ \
70 -DHAVE_CONFIG_H -I$(srcdir)
72 CCFLAGS = $(CPPFLAGS) $(CFLAGS)
74 CFLAGS_NORMAL = $(CCFLAGS) -DNCURSES_STATIC
75 CFLAGS_DEBUG = $(CCFLAGS) -DNCURSES_STATIC @CC_G_OPT@ -DTRACE
76 CFLAGS_PROFILE = $(CCFLAGS) -DNCURSES_STATIC -pg
77 CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@
79 CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
82 LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
86 ################################################################################
87 ADA = @cf_ada_compiler@
89 ADAFLAGS = @ADAFLAGS@ -I. -I$(srcdir)
91 LIB_NAME = @ADA_LIBNAME@
92 SONAME = @ADA_SHAREDLIB@
94 GNAT_PROJECT = @ADA_LIBNAME@.gpr
96 # build/source are the Ada95 tree
100 BUILD_DIR_LIB = $(BUILD_DIR)/lib
101 SOURCE_DIR_SRC = $(SOURCE_DIR)/src
103 ADAMAKE = @cf_ada_make@
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) \
112 CARGS = -cargs $(ADAFLAGS)
115 STATIC_LIBNAME = lib$(LIB_NAME).a
116 SHARED_LIBNAME = $(SONAME)
117 SHARED_SYMLINK = lib$(LIB_NAME).so
119 ALIB = @cf_ada_package@
120 ABASE = $(ALIB)-curses
121 ################################################################################
122 GENERATED_SOURCES=$(ABASE).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 ################################################################################
140 $(ABASE)-terminfo.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 \
159 $(ABASE)-text_io-aux.o
161 # Ada object files for generic packages. Since gnat 3.10 they are
163 GENOBJS=$(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
177 ################################################################################
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
191 all :: $(BUILD_DIR_LIB)/$(STATIC_LIBNAME)
200 $(GENERATED_SOURCES) :
201 ( cd ../gen; $(MAKE) $(ADA_MFLAGS) )
203 sources : $(GENERATED_SOURCES)
209 $(BUILD_DIR_LIB)/$(STATIC_LIBNAME)
210 @echo made $(STATIC_LIBNAME)
215 $(BUILD_DIR_LIB)/$(STATIC_LIBNAME) \
218 $(BUILD_DIR_LIB)/$(STATIC_LIBNAME) \
223 @rm -f $(ADA_OBJECTS)/$(STATIC_LIBNAME)
227 rm -f *.o *.ali b_t*.* *.s $(PROGS) a.out core b_*_test.c *.xr[bs] *.a
230 rm -f $(ABASE)-trace.adb
233 rm -f Makefile library.gpr
235 realclean :: distclean
237 BASEDEPS=$(ABASE).ads $(ABASE)-aux.ads $(ABASE).adb
239 $(ABASE)-trace.adb : $(srcdir)/$(ABASE)-trace.adb_p
241 $(ADAPREP) -DADA_TRACE=@ADA_TRACE@ @GNATPREP_OPTS@ $(srcdir)/$(ABASE)-trace.adb_p $@
243 ###############################################################################
244 # Use these definitions when building a shared library.
245 SHARED_C_OBJS = c_varargs_to_ada.o c_threaded_variables.o ncurses_compat.o
246 SHARED_OBJS = $(SHARED_C_OBJS) @USE_OLD_MAKERULES@$(LIBOBJS) @cf_generic_objects@
248 c_varargs_to_ada.o : $(srcdir)/c_varargs_to_ada.c
249 $(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/c_varargs_to_ada.c
251 c_threaded_variables.o : $(srcdir)/c_threaded_variables.c
252 $(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/c_threaded_variables.c
254 ncurses_compat.o : $(srcdir)/ncurses_compat.c
255 $(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/ncurses_compat.c
257 ###############################################################################
258 # Use these definitions when building a static library.
259 STATIC_C_OBJS = static_c_varargs_to_ada.o static_c_threaded_variables.o static_ncurses_compat.o
260 STATIC_OBJS = $(STATIC_C_OBJS) @USE_OLD_MAKERULES@$(LIBOBJS) @cf_generic_objects@
262 static_c_varargs_to_ada.o : $(srcdir)/c_varargs_to_ada.c
263 $(CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/c_varargs_to_ada.c
265 static_c_threaded_variables.o : $(srcdir)/c_threaded_variables.c
266 $(CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/c_threaded_variables.c
268 static_ncurses_compat.o : $(srcdir)/ncurses_compat.c
269 $(CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/ncurses_compat.c
271 ###############################################################################
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)
278 $(BUILD_DIR)/static-ali : ; mkdir -p $@
279 $(BUILD_DIR)/static-obj : ; mkdir -p $@
283 $(BUILD_DIR)/static-ali \
284 $(BUILD_DIR)/static-obj
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)
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)
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
315 # In principle, one might just do
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
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)
342 @rm -f $(ADA_OBJECTS)/$(STATIC_LIBNAME)
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)
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'
362 $(BUILD_DIR)/dynamic-ali : ; mkdir -p $@
363 $(BUILD_DIR)/dynamic-obj : ; mkdir -p $@
367 $(BUILD_DIR)/dynamic-ali \
368 $(BUILD_DIR)/dynamic-obj
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)
385 install.libs :: $(ADA_INCLUDE)
387 $(SOURCE_DIR_SRC)/*.ad[sb] \
391 install.libs :: $(ADA_INCLUDE)
393 $(GENERATED_SOURCES) \
398 $(SHELL) -c 'for name in $(SOURCE_DIR_SRC)/*.ad[sb] $(GENERATED_SOURCES); do rm -f $(ADA_INCLUDE)/`basename $$name`; done'
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) )
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'
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)
420 # gnatdoc --enable-build $(ADAMAKEFLAGS) -XLIB_KIND=static
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