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