1# $Id: Makefile2.m4,v 1.303 2021-02-28 21:39:57 phil Exp $ 2changequote([,])dnl 3define([CMT],[dnl])dnl 4CMT([################################################################]) 5CMT([establish m4 macros to collect various options]) 6CMT() 7CMT([extra C compiler cpp flags for all .c files & make depend]) 8define([ADD_CPPFLAGS],[divert(1) $1[]divert(0)dnl])dnl 9define([_CPPFLAGS],[undivert(1)])dnl 10CMT() 11CMT([extra C compiler optimize/debug flags for all .c files]) 12define([ADD_OPT],[divert(2) $1[]divert(0)dnl])dnl 13define([_OPT],[undivert(2)])dnl 14CMT() 15CMT([extra source files to make depend]) 16define([ADD_SRCS],[divert(3) $1[]divert(0)dnl])dnl 17define([_SRCS],[undivert(3)])dnl 18CMT() 19CMT([extra object files to snolib]) 20define([ADD_OBJS],[divert(4) $1[]divert(0)dnl])dnl 21define([_OBJS],[undivert(4)])dnl 22CMT() 23CMT([extra C compiler flags for final link (for snobol4 AND loadable modules)]) 24define([ADD_LDFLAGS],[divert(5) $1[]divert(0)dnl])dnl 25define([_LDFLAGS],[undivert(5)])dnl 26CMT() 27CMT([extra C compiler flags for all .c files]) 28define([ADD_CFLAGS],[divert(6) $1[]divert(0)dnl])dnl 29define([_CFLAGS],[undivert(6)])dnl 30CMT() 31CMT([LDFLAGS for snobol4 (libs, MOSTLY)]) 32define([ADD_SNOBOL4_LDFLAGS],[divert(7) $1[]divert(0)dnl])dnl 33define([_SNOBOL4_LDFLAGS],[undivert(7)])dnl 34 35################################################################ 36# defaults (may be overridden in config.m4) 37 38OPT=-O 39 40CCM=./cc-M 41 42# for pow(3) 43MATHLIB=-lm 44 45SH=sh 46SHELL=/bin/sh 47 48# either snobol4 or isnobol4; 49# isnobol4 has had functions reordered for better inlining. 50# if compiler does not perform inlining, snobol4 can be used 51# with no penalty (and slightly simpler build process). 52 53SNOBOL4=isnobol4 54#SNOBOL4=snobol4 55 56# default flags for install of binaries: 57INSTALL_BIN_FLAGS=-s 58 59all: build_all timing.out 60 61######## 62# default lib source files 63 64BAL_C=$(SRCDIR)lib/bal.c 65BREAK_C=$(SRCDIR)lib/break.c 66COMPIO_OBJ_C=$(SRCDIR)lib/compio_obj.c 67DATE_C=$(SRCDIR)lib/date.c 68DIRNAME_C=$(SRCDIR)lib/generic/dirname.c 69DUMP_C=$(SRCDIR)lib/dump.c 70DYNAMIC_C=$(SRCDIR)lib/bsd/dynamic.c 71ENDEX_C=$(SRCDIR)lib/endex.c 72EXISTS_C=$(SRCDIR)lib/generic/exists.c 73EXPOPS_C=$(SRCDIR)lib/generic/expops.c 74FISATTY_C=$(SRCDIR)lib/generic/fisatty.c 75HASH_C=$(SRCDIR)lib/hash.c 76INET_C=$(SRCDIR)lib/bsd/inet.c 77INET6_C=$(SRCDIR)lib/bsd/inet6.c 78INIT_C=$(SRCDIR)lib/init.c 79INTSPC_C=$(SRCDIR)lib/generic/intspc.c 80IO_C=$(SRCDIR)lib/io.c 81LEXCMP_C=$(SRCDIR)lib/lexcmp.c 82LOAD_C=$(SRCDIR)lib/bsd/load.c 83LOADX_C=$(SRCDIR)lib/loadx.c 84MSTIME_C=$(SRCDIR)lib/bsd/mstime.c 85NEWER_C=$(SRCDIR)lib/generic/newer.c 86ORDVST_C=$(SRCDIR)lib/ordvst.c 87PAIR_C=$(SRCDIR)lib/pair.c 88PAT_C=$(SRCDIR)lib/pat.c 89PML_C=$(SRCDIR)lib/pml.c 90POPEN_C=$(SRCDIR)lib/bsd/popen.c 91PTYIO_OBJ_C=$(SRCDIR)lib/dummy/ptyio_obj.c 92REALST_C=$(SRCDIR)lib/realst.c 93REPLACE_C=$(SRCDIR)lib/replace.c 94SPCINT_C=$(SRCDIR)lib/ansi/spcint.c 95SPREAL_C=$(SRCDIR)lib/ansi/spreal.c 96STDIO_OBJ_C=$(SRCDIR)lib/stdio_obj.c 97STREAM_C=$(SRCDIR)lib/stream.c 98SUSPEND_C=$(SRCDIR)lib/posix/suspend.c 99STR_C=$(SRCDIR)lib/str.c 100TERM_C=$(SRCDIR)lib/posix/term.c 101TLSIO_OBJ_C=$(SRCDIR)lib/openssl/tlsio_obj.c 102TOP_C=$(SRCDIR)lib/top.c 103TREE_C=$(SRCDIR)lib/tree.c 104TTY_C=$(SRCDIR)lib/posix/tty.c 105# please keep in alphabetical order!! 106 107# aux sources 108BZERO_C=$(SRCDIR)lib/auxil/bzero.c 109BCOPY_C=$(SRCDIR)lib/auxil/bcopy.c 110GETOPT_C=$(SRCDIR)lib/auxil/getopt.c 111BINDRESVPORT_C=$(SRCDIR)lib/auxil/bindresvport.c 112GETLINE_C=$(SRCDIR)lib/auxil/getline.c 113BUFIO_OBJ_C=$(SRCDIR)lib/auxil/bufio_obj.c 114MEMIO_OBJ_C=$(SRCDIR)lib/auxil/memio_obj.c 115 116# dummy sources 117EXECL_C=$(SRCDIR)lib/dummy/execl.c 118FINITE_C=$(SRCDIR)lib/dummy/finite.c 119GETENV_C=$(SRCDIR)lib/dummy/getenv.c 120ISNAN_C=$(SRCDIR)lib/dummy/isnan.c 121SYSTEM_C=$(SRCDIR)lib/dummy/system.c 122 123# snolib sources 124ATAN_C=$(SRCDIR)lib/snolib/atan.c 125CHOP_C=$(SRCDIR)lib/snolib/chop.c 126COS_C=$(SRCDIR)lib/snolib/cos.c 127DELETE_C=$(SRCDIR)lib/snolib/delete.c 128ENVIRON_C=$(SRCDIR)lib/snolib/environ.c 129EXECUTE_C=$(SRCDIR)lib/generic/execute.c 130EXIT_C=$(SRCDIR)lib/snolib/exit.c 131EXP_C=$(SRCDIR)lib/snolib/exp.c 132FILE_C=$(SRCDIR)lib/snolib/file.c 133FINDUNIT_C=$(SRCDIR)lib/snolib/findunit.c 134GETSTRING_C=$(SRCDIR)lib/snolib/getstring.c 135HANDLE_C=$(SRCDIR)lib/snolib/handle.c 136HOST_C=$(SRCDIR)lib/snolib/host.c 137LOG_C=$(SRCDIR)lib/snolib/log.c 138LOGIC_C=$(SRCDIR)modules/logic/logic.c 139NDBM_C=$(SRCDIR)modules/ndbm/ndbm.c 140ORD_C=$(SRCDIR)lib/snolib/ord.c 141PTY_C=$(SRCDIR)lib/posix/pty.c 142RANDOM_C=$(SRCDIR)modules/random/random.c 143READLINE_C=$(SRCDIR)modules/readline/readline.c 144RENAME_C=$(SRCDIR)lib/snolib/rename.c 145RETSTRING_C=$(SRCDIR)lib/snolib/retstring.c 146SERV_C=$(SRCDIR)lib/snolib/serv.c 147SIN_C=$(SRCDIR)lib/snolib/sin.c 148SPRINTF_C=$(SRCDIR)modules/sprintf/sprintf.c 149SQRT_C=$(SRCDIR)lib/snolib/sqrt.c 150SSET_C=$(SRCDIR)lib/snolib/sset.c 151STCL_C=$(SRCDIR)lib/snolib/stcl.c 152SYS_C=$(SRCDIR)lib/posix/sys.c 153TAN_C=$(SRCDIR)lib/snolib/tan.c 154# for cygwin! 155COM_CPP=$(SRCDIR)lib/win32/com.cpp 156 157# private copy of CFLAGS for data_init.o; here so it can be overridden 158# (ie; to just $(MYCPPFLAGS)) by config.m4 during debug (optimizing it 159# is painful but worthwhile for production, or for compiler bugs!) 160 161DATA_INIT_CFLAGS=$(CFLAGS) 162 163################ objects 164 165# or inet6.o 166INET_O= inet.o 167 168# end of defaults 169################################################################ 170CMT() 171CMT([establish base values:]) 172ADD_OPT([$(OPT)]) 173CMT() 174# config.m4: 175include(config.m4) 176# end of local config 177################################################################ 178 179# for PML functions. 180ADD_SNOBOL4_LDFLAGS([$(MATHLIB)]) 181 182# after local config 183 184CONFIG_CPPFLAGS=[]_CPPFLAGS 185 186# NOTE: NOT named CPPFLAGS; some versions of make include CPPFLAGS in cc cmd 187MYCPPFLAGS=-I$(SRCDIR)include -I$(SRCDIR). $(CONFIG_CPPFLAGS) -DSNOBOL4 188 189COPT=[]_OPT 190 191CONFIG_LDFLAGS=[]_LDFLAGS 192LDFLAGS=$(CONFIG_LDFLAGS) _SNOBOL4_LDFLAGS 193 194################ 195# compiler flags 196 197CONFIG_CFLAGS=[]_CFLAGS 198CFLAGS=$(CONFIG_CFLAGS) $(COPT) $(MYCPPFLAGS) 199 200################ 201 202# add to new files to SRCS too! 203 204# from configure ADD_OBJS: 205AUX_OBJS=[]_OBJS 206 207OBJS= main.o $(SNOBOL4).o data.o data_init.o syn.o bal.o \ 208 break.o date.o dump.o dynamic.o endex.o expops.o \ 209 fisatty.o hash.o getstring.o handle.o $(INET_O) \ 210 init.o intspc.o io.o lexcmp.o load.o loadx.o \ 211 mstime.o newer.o ordvst.o pair.o pat.o pml.o ptyio_obj.o \ 212 realst.o replace.o retstring.o spcint.o spreal.o \ 213 stdio_obj.o str.o stream.o suspend.o term.o top.o \ 214 tree.o tty.o \ 215 atan.o chop.o cos.o delete.o execute.o exists.o \ 216 exit.o exp.o file.o findunit.o host.o ord.o log.o rename.o \ 217 serv.o sin.o sqrt.o sset.o sys.o tan.o \ 218 $(AUX_OBJS) 219 220# from configure ADD_SRCS 221AUX_SRCS=[]_SRCS 222 223SRCS= $(SRCDIR)main.c $(SRCDIR)$(SNOBOL4).c $(SRCDIR)data.c \ 224 $(SRCDIR)data_init.c $(SRCDIR)syn.c $(BAL_C) \ 225 $(BREAK_C) $(DATE_C) $(DUMP_C) $(DYNAMIC_C) \ 226 $(ENDEX_C) $(EXPOPS_C) $(FISATTY_C) $(GETSTRING_C) \ 227 $(HANDLE_C) $(HASH_C) $(INET_C) $(INIT_C) \ 228 $(INTSPC_C) $(IO_C) $(LEXCMP_C) $(LOAD_C) \ 229 $(MSTIME_C) $(NEWER_C) $(ORDVST_C) $(PAIR_C) $(PAT_C) $(PML_C) \ 230 $(PTYIO_OBJ_C) $(REALST_C) $(REPLACE_C) \ 231 $(RETSTRING_C) $(SPCINT_C) $(SPREAL_C) \ 232 $(STDIO_OBJ_C) $(STR_C) $(STREAM_C) $(SUSPEND_C) \ 233 $(TERM_C) $(TOP_C) $(TREE_C) $(TTY_C) \ 234 $(ATAN_C) $(CHOP_C) $(COS_C) $(DELETE_C) \ 235 $(EXISTS_C) $(EXIT_C) $(EXECUTE_C) $(EXP_C) $(FILE_C) \ 236 $(FINDUNIT_C) $(HOST_C) $(LOG_C) \ 237 $(LOGIC_C) $(ORD_C) $(RANDOM_C) $(RENAME_C) \ 238 $(SERV_C) $(SIN_C) $(SPRINTF_C) $(SQRT_C) \ 239 $(SSET_C) $(SYS_C) $(TAN_C) \ 240 $(AUX_SRCS) 241 242################ 243# link, regression test & timing 244 245.PRECIOUS: $(SNOBOL4).o data_init.o snobol4 246 247BUILD_ALL=sdb snobol4 snopea docs build_modules 248build_all: $(BUILD_ALL) 249 250xsnobol4: $(OBJS) 251 rm -f xsnobol4$(EXT) 252 $(MAKE) -f Makefile2 build.o 253 $(CC) -o xsnobol4 $(OBJS) build.o $(LDFLAGS) $(SNOBOL4_LDFLAGS) 254 255changequote(@,@)dnl 256 257# invoked in submake by xsnobol4, $(SOFILENAME) rules 258build.o: always 259 rm -f build.c 260 echo '/* MACHINE GENERATED. EDITING IS FUTILE */' > build.c 261 echo '#include "h.h"' >> build.c 262 echo 'const char build_files[] = "'$(SRCS)'";' >> build.c 263 echo 'const char build_date[] = "'`date`'";' >> build.c 264 echo 'const char build_dir[] = "'`pwd`'";' >> build.c 265 $(CC) $(CFLAGS) -c build.c 266changequote([,])dnl 267 268always: 269 270 271# avoid CFLAGS: -O causes crash on gcc 4.4.6 x86_64? 272cpuid: cpuid.c 273 $(CC) -o cpuid cpuid.c 274 275################ modules 276 277# NOTE! FreeBSD 3.2 (a pre-C99 test platform) does not have "make -C" 278RUNMAKE=SNOBOL4='../../snobol4 -N -I../.. -I../../snolib' $(MAKE) 279 280clean_modules: 281 for M in $(MODULES); do \ 282 (cd modules/$$M; $(RUNMAKE) clean) \ 283 done 284 285build_modules: 286 for M in $(MODULES); do \ 287 (cd modules/$$M; $(RUNMAKE) all) \ 288 done 289 290debug_modules: 291 for M in $(MODULES); do \ 292 (cd modules/$$M; $(RUNMAKE) debug) \ 293 done 294 295test_modules: 296 for M in $(MODULES); do \ 297 (cd modules/$$M; $(RUNMAKE) test) \ 298 done 299 300install_modules: 301 for M in $(MODULES); do \ 302 (cd modules/$$M; $(RUNMAKE) install) \ 303 done 304 305################ shared library 306 307SO=so 308SONAME=snobol4 309SOFILENAME=lib$(SONAME)$(SO_EXT) 310 311# do actual work to make shared library. 312# invoked by top level Makefile 313# in so directory, running so/Makefile2 (created with custom config.m4) 314# with target shared_library and SRCDIR=../ 315 316# for Makefile, so it is agnostic about filename/extension: 317shared_library: $(SOFILENAME) 318 319$(SOFILENAME): $(OBJS) 320 $(MAKE) -f Makefile2 build.o 321 $(SO_LD) -o $(SOFILENAME) $(SO_LDFLAGS) $(OBJS) build.o $(LDFLAGS) 322 323#### make shared library for ssnobol4 rule (below) 324 325# for ssnobol4, from here (Makefile2), in top directory 326# ask top level Makefile to build so/Makefile2 and run 327# to make shared library. 328 329$(SO)/$(SOFILENAME): always 330 $(MAKE) shared_library 331 332#### snobol4 executable using shared library 333 334# invoked from Makefile, in top directory 335# ask top level Makefile to build so/Makefile2 and run it 336 337# unless $(SOFILENAME) is installed a well-known location 338# you'll likely need to set LD_LIBRARY_PATH 339# (or DYLD_LIBRARY path on OSX) 340 341# snobol4 interpreter using shared library (may be up to 8% slower) 342ssnobol4: $(SO)/$(SOFILENAME) ssnobol4.c 343 $(CC) -Iinclude -o ssnobol4 ssnobol4.c -L$(SO) -l$(SONAME) 344 345# tiny test of invoking SNOBOL4 in a program: 346tlib: $(SO)/$(SOFILENAME) tlib.c 347 $(CC) -Iinclude -o tlib tlib.c -L$(SO) -l$(SONAME) 348 349################ 350# run regression tests. 351 352timing.out: tested timing timing.sno test/bench.sno test/v311.sil 353 @echo Running timing script... 354 ./timing > timing.out.tmp 355 mv timing.out.tmp timing.out 356 @echo '********************************************************' 1>&2 357 @echo 'Please consider mailing timing.out to timing@snobol4.org' 1>&2 358 @echo 'Anonymized results are posted at http://www.snobol4.org' 1>&2 359 @echo 'And you will be notified when test versions are available.' 1>&2 360 @echo '********************************************************' 1>&2 361 362tested snobol4: xsnobol4 test/tests.in cpuid 363 @echo Running regression tests... 364 (cd test; BLOCKS=$(BLOCKS) SNOPATH=..:../snolib ./run.sh ../xsnobol4 -N) 365 -rm -f snobol4$(EXT) 366 cp xsnobol4$(EXT) snobol4$(EXT) 367 $(MAKE) -f Makefile2 test_modules 368 @echo Passed regression tests. 369 date > tested 370 371#test_modules: xsnobol4 372 373################ 374 375# may need additional options due to size (and SIL code issues) 376$(SNOBOL4).o: $(SRCDIR)$(SNOBOL4).c 377 $(CC) $(CFLAGS) $(SNOBOL4_C_CFLAGS) -c $(SRCDIR)$(SNOBOL4).c 378 379main.o: $(SRCDIR)main.c 380 $(CC) $(CFLAGS) -c $(SRCDIR)main.c 381 382data.o: $(SRCDIR)data.c 383 $(CC) $(CFLAGS) -c $(SRCDIR)data.c 384 385# NOTE: private options; includes data_init.h, which is huge and tends 386# to gum up the optimizer. For development, I keep a local-config 387# file with the line "DATA_INIT_CFLAGS=$(MYCPPFLAGS)" so that no 388# attempt to optimize compilation of data_init.c occurs. This may 389# result in a slightly larger executable, or slower startup, but since 390# I may compile data_init.c many times in the course of a debug 391# session, it's worth it. 392# NOTE! 9/2013: gcc no longer takes forever!! 393data_init.o: $(SRCDIR)data_init.c 394 $(CC) $(DATA_INIT_CFLAGS) -c $(SRCDIR)data_init.c 395 396syn.o: $(SRCDIR)syn.c 397 $(CC) $(CFLAGS) -c $(SRCDIR)syn.c 398 399################ scripts 400 401sdb: sdb.sh config.m4 402 rm -f sdb 403 sed -e "s@<SNOLIB_LIB>@$(SNOLIB_LIB)@" \ 404 -e "s@<BINDIR>@$(BINDIR)@" \ 405 -e "s@<VERS>@-$(VERS)@" \ 406 < sdb.sh > sdb 407 chmod a+x sdb 408 409snopea: snopea.in config.m4 410 rm -f snopea 411 sed -e "s@<BINDIR>@$(BINDIR)@" \ 412 -e "s@<VERS>@-$(VERS)@" \ 413 < snopea.in > snopea 414 chmod a+x snopea 415 416################################################################# 417# lib files 418 419bal.o: $(BAL_C) 420 $(CC) $(CFLAGS) -c $(BAL_C) 421 422break.o: $(BREAK_C) 423 $(CC) $(CFLAGS) -c $(BREAK_C) 424 425compio_obj.o: $(COMPIO_OBJ_C) 426 $(CC) $(CFLAGS) -c $(COMPIO_OBJ_C) 427 428date.o: $(DATE_C) 429 $(CC) $(CFLAGS) -c $(DATE_C) 430 431dirname.o: $(DIRNAME_C) 432 $(CC) $(CFLAGS) -c $(DIRNAME_C) 433 434dump.o: $(DUMP_C) 435 $(CC) $(CFLAGS) -c $(DUMP_C) 436 437dynamic.o: $(DYNAMIC_C) 438 $(CC) $(CFLAGS) -c $(DYNAMIC_C) 439 440endex.o: $(ENDEX_C) 441 $(CC) $(CFLAGS) -c $(ENDEX_C) 442 443exists.o: $(EXISTS_C) 444 $(CC) $(CFLAGS) -c $(EXISTS_C) 445 446expops.o: $(EXPOPS_C) 447 $(CC) $(CFLAGS) -c $(EXPOPS_C) 448 449fisatty.o: $(FISATTY_C) 450 $(CC) $(CFLAGS) -c $(FISATTY_C) 451 452hash.o: $(HASH_C) 453 $(CC) $(CFLAGS) -c $(HASH_C) 454 455inet.o: $(INET_C) 456 $(CC) $(CFLAGS) -c $(INET_C) 457 458inet6.o: $(INET6_C) 459 $(CC) $(CFLAGS) -c $(INET6_C) 460 461init.o: $(INIT_C) 462 $(CC) $(CFLAGS) -c $(INIT_C) 463 464intspc.o: $(INTSPC_C) 465 $(CC) $(CFLAGS) -c $(INTSPC_C) 466 467io.o: $(IO_C) $(MAKEFILE2) 468 $(CC) $(CFLAGS) -c $(IO_C) 469 470lexcmp.o: $(LEXCMP_C) 471 $(CC) $(CFLAGS) -c $(LEXCMP_C) 472 473load.o: $(LOAD_C) $(MAKEFILE2) 474 $(CC) $(CFLAGS) -c $(LOAD_C) 475 476loadx.o: $(LOADX_C) 477 $(CC) $(CFLAGS) -c $(LOADX_C) 478 479mstime.o: $(MSTIME_C) 480 $(CC) $(CFLAGS) -c $(MSTIME_C) 481 482newer.o: $(NEWER_C) 483 $(CC) $(CFLAGS) -c $(NEWER_C) 484 485ordvst.o: $(ORDVST_C) 486 $(CC) $(CFLAGS) -c $(ORDVST_C) 487 488pair.o: $(PAIR_C) 489 $(CC) $(CFLAGS) -c $(PAIR_C) 490 491pat.o: $(PAT_C) 492 $(CC) $(CFLAGS) -c $(PAT_C) 493 494pml.o: $(PML_C) 495 $(CC) $(CFLAGS) -c $(PML_C) 496 497popen.o: $(POPEN_C) 498 $(CC) $(CFLAGS) -c $(POPEN_C) 499 500realst.o: $(REALST_C) 501 $(CC) $(CFLAGS) -c $(REALST_C) 502 503replace.o: $(REPLACE_C) 504 $(CC) $(CFLAGS) -c $(REPLACE_C) 505 506spcint.o: $(SPCINT_C) 507 $(CC) $(CFLAGS) -c $(SPCINT_C) 508 509spreal.o: $(SPREAL_C) 510 $(CC) $(CFLAGS) -c $(SPREAL_C) 511 512stdio_obj.o: $(STDIO_OBJ_C) 513 $(CC) $(CFLAGS) -c $(STDIO_OBJ_C) 514 515str.o: $(STR_C) 516 $(CC) $(CFLAGS) -c $(STR_C) 517 518stream.o: $(STREAM_C) 519 $(CC) $(CFLAGS) -c $(STREAM_C) 520 521suspend.o: $(SUSPEND_C) 522 $(CC) $(CFLAGS) -c $(SUSPEND_C) 523 524term.o: $(TERM_C) 525 $(CC) $(CFLAGS) -c $(TERM_C) 526 527top.o: $(TOP_C) 528 $(CC) $(CFLAGS) -c $(TOP_C) 529 530tree.o: $(TREE_C) 531 $(CC) $(CFLAGS) -c $(TREE_C) 532 533tty.o: $(TTY_C) 534 $(CC) $(CFLAGS) -c $(TTY_C) 535 536ptyio_obj.o: $(PTYIO_OBJ_C) 537 $(CC) $(CFLAGS) -c $(PTYIO_OBJ_C) 538 539tlsio_obj.o: $(TLSIO_OBJ_C) 540 $(CC) $(CFLAGS) -c $(TLSIO_OBJ_C) 541 542################# 543# aux files -- porting aids not used in all builds; 544 545bzero.o: $(BZERO_C) 546 $(CC) $(CFLAGS) -c $(BZERO_C) 547 548bcopy.o: $(BCOPY_C) 549 $(CC) $(CFLAGS) -c $(BCOPY_C) 550 551getopt.o: $(GETOPT_C) 552 $(CC) $(CFLAGS) -c $(GETOPT_C) 553 554bindresvport.o: $(BINDRESVPORT_C) 555 $(CC) $(CFLAGS) -c $(BINDRESVPORT_C) 556 557CLOSEFROM_C=$(SRCDIR)lib/bsd/closefrom.c 558closefrom.o: $(CLOSEFROM_C) 559 $(CC) $(CFLAGS) -c $(CLOSEFROM_C) 560 561getdtablesize.o: $(GETDTABLESIZE_C) 562 $(CC) $(CFLAGS) -c $(GETDTABLESIZE_C) 563 564getline.o: $(GETLINE_C) 565 $(CC) $(CFLAGS) -c $(GETLINE_C) 566 567bufio_obj.o: $(BUFIO_OBJ_C) 568 $(CC) $(CFLAGS) -c $(BUFIO_OBJ_C) 569 570memio_obj.o: $(MEMIO_OBJ_C) 571 $(CC) $(CFLAGS) -c $(MEMIO_OBJ_C) 572 573################ 574# dummy files 575 576isnan.o: $(ISNAN_C) 577 $(CC) $(CFLAGS) -c $(ISNAN_C) 578 579# for snolib/host.c 580getenv.o: $(GETENV_C) 581 $(CC) $(CFLAGS) -c $(GETENV_C) 582 583# for snolib/host.c 584system.o: $(SYSTEM_C) 585 $(CC) $(CFLAGS) -c $(SYSTEM_C) 586 587################################################################ 588# Used to be snolib.a 589# "external" functions that are always built-in via pml.h 590# everything else is now built as a module! 591 592atan.o: $(ATAN_C) 593 $(CC) $(CFLAGS) -c $(ATAN_C) 594 595chop.o: $(CHOP_C) 596 $(CC) $(CFLAGS) -c $(CHOP_C) 597 598cos.o: $(COS_C) 599 $(CC) $(CFLAGS) -c $(COS_C) 600 601delete.o: $(DELETE_C) 602 $(CC) $(CFLAGS) -c $(DELETE_C) 603 604environ.o: $(ENVIRON_C) 605 $(CC) $(CFLAGS) -c $(ENVIRON_C) 606 607execute.o: $(EXECUTE_C) 608 $(CC) $(CFLAGS) -c $(EXECUTE_C) 609 610exit.o: $(EXIT_C) 611 $(CC) $(CFLAGS) -c $(EXIT_C) 612 613exp.o: $(EXP_C) 614 $(CC) $(CFLAGS) -c $(EXP_C) 615 616file.o: $(FILE_C) 617 $(CC) $(CFLAGS) -c $(FILE_C) 618 619findunit.o: $(FINDUNIT_C) 620 $(CC) $(CFLAGS) -c $(FINDUNIT_C) 621 622fork.o: $(FORK_C) 623 $(CC) $(CFLAGS) -c $(FORK_C) 624 625getstring.o: $(GETSTRING_C) 626 $(CC) $(CFLAGS) -c $(GETSTRING_C) 627 628handle.o: $(HANDLE_C) 629 $(CC) $(CFLAGS) -c $(HANDLE_C) 630 631HOST_C_CFLAGS=-DCC=\""$(CC)"\" -DCOPT=\""$(COPT)"\" -DHAVE_BUILD_VARS \ 632 -DCONFIG_CFLAGS="\"$(CONFIG_CFLAGS)\"" \ 633 -DCONFIG_CPPFLAGS="\"$(CONFIG_CPPFLAGS)\"" \ 634 -DCONFIG_LDFLAGS="\"$(CONFIG_LDFLAGS)\"" 635 636host.o: $(HOST_C) 637 $(CC) $(CFLAGS) $(HOST_C_CFLAGS) -c $(HOST_C) 638 639log.o: $(LOG_C) 640 $(CC) $(CFLAGS) -c $(LOG_C) 641 642logic.o: $(LOGIC_C) 643 $(CC) $(CFLAGS) -c $(LOGIC_C) 644 645ndbm.o: $(NDBM_C) 646 $(CC) $(CFLAGS) -c $(NDBM_C) 647 648ord.o: $(ORD_C) 649 $(CC) $(CFLAGS) -c $(ORD_C) 650 651pty.o: $(PTY_C) 652 $(CC) $(CFLAGS) -c $(PTY_C) 653 654random.o: $(RANDOM_C) 655 $(CC) $(CFLAGS) -c $(RANDOM_C) 656 657readline.o: $(READLINE_C) 658 $(CC) $(CFLAGS) -c $(READLINE_C) 659 660rename.o: $(RENAME_C) 661 $(CC) $(CFLAGS) -c $(RENAME_C) 662 663retstring.o: $(RETSTRING_C) 664 $(CC) $(CFLAGS) -c $(RETSTRING_C) 665 666serv.o: $(SERV_C) 667 $(CC) $(CFLAGS) -c $(SERV_C) 668 669sin.o: $(SIN_C) 670 $(CC) $(CFLAGS) -c $(SIN_C) 671 672sprintf.o: $(SPRINTF_C) 673 $(CC) $(CFLAGS) -c $(SPRINTF_C) 674 675sqrt.o: $(SQRT_C) 676 $(CC) $(CFLAGS) -c $(SQRT_C) 677 678sset.o: $(SSET_C) 679 $(CC) $(CFLAGS) -c $(SSET_C) 680 681stcl.o: $(STCL_C) 682 $(CC) $(CFLAGS) -c $(STCL_C) 683 684sys.o: $(SYS_C) 685 $(CC) $(CFLAGS) -c $(SYS_C) 686 687tan.o: $(TAN_C) 688 $(CC) $(CFLAGS) -c $(TAN_C) 689 690time.o: $(TIME_C) 691 $(CC) $(CFLAGS) -c $(TIME_C) 692 693com.o: $(COM_CPP) 694 $(CC) $(CFLAGS) -c $(COM_CPP) 695 696################ 697# GENERATED_DOCS: 698 699SNOPEA=./snobol4 -N -Isnolib -I. snopea.in 700 701GENERATED_DOCS=snopea.1 snopea.1.html 702 703snopea.1: snopea snolib/snopea.sno snobol4 704 $(SNOPEA) snopea snopea.1 705 706snopea.1.html: snopea snolib/snopea.sno snobol4 707 $(SNOPEA) snopea snopea.1.html 708 709docs: snobol4 $(GENERATED_DOCS) always 710 cd doc; $(MAKE) all 711 712always: 713 714################# 715# installation 716 717# install .h files for dynamicly loaded functions 718INSTALL_H=[include]/h.h [include]/snotypes.h [include]/macros.h \ 719 [include]/load.h [include]/dt.h [include]/str.h [include]/handle.h \ 720 [include]/module.h config.h equ.h version.h 721 722# generated SNOLIB files (host.sno generated at top level) 723GENSNOLIB=host.sno config.sno 724 725SNOLIB_FILES=snolib/*.sno $(GENSNOLIB) 726 727install: snobol4 timing.out install_notiming 728 729define([INSTALL_MAN_PAGES],[(]cd $1; \ 730 $(INSTALL) -d [$(MAN]$2[DIR)]; \ 731 for F in *.$2; do \ 732 $(INSTALL) -m 644 $$F [$(MAN]$2[DIR)]; \ 733ifdef([COMPRESS_MAN_PAGES],[dnl 734 $(MAN_COMPRESS) [$(MAN]$2[DIR)/$$F]; \ 735],)dnl 736[ done)])dnl 737 738install_notiming: build_all 739 $(INSTALL) -d $(BINDIR) 740 $(INSTALL) $(INSTALL_BIN_FLAGS) snobol4 $(BINDIR)/snobol4-$(VERS) 741 $(INSTALL) sdb $(BINDIR)/sdb-$(VERS) 742 $(INSTALL) snopea $(BINDIR)/snopea-$(VERS) 743 rm -f $(BINDIR)/snobol4 $(BINDIR)/sdb $(BINDIR)/snopea 744 cd $(BINDIR) && ln -s snobol4-$(VERS) snobol4 745 cd $(BINDIR) && ln -s sdb-$(VERS) sdb 746 cd $(BINDIR) && ln -s snopea-$(VERS) snopea 747 $(INSTALL) -d $(MAN1DIR) 748 INSTALL_MAN_PAGES(.,1) 749 INSTALL_MAN_PAGES(doc,1) 750 INSTALL_MAN_PAGES(doc,3) 751 INSTALL_MAN_PAGES(doc,7) 752 $(INSTALL) -d $(SNOLIB) 753 $(INSTALL) -d $(SNOLIB_DOC) 754 $(INSTALL) -m 644 README $(SNOLIB_DOC) 755 $(INSTALL) -m 644 CHANGES $(SNOLIB_DOC) 756 $(INSTALL) -d $(SNOLIB)/local 757 $(INSTALL) -d $(SNOLIB_LIB) 758 $(INSTALL) -d $(SNOLIB_LIB)/shared 759 $(INSTALL) -d $(SNOLIB_LOCAL) 760 $(INSTALL) -d $(SNOLIB_LOCAL)/shared 761 rm -f $(SNOLIB_LIB)/dynload 762 rm -f $(MAN3DIR)/snobol4tcl.3 $(MAN3DIR)/snobol4dbm.3 763 for F in $(SNOLIB_FILES); do \ 764 $(INSTALL) -m 644 $$F $(SNOLIB_LIB); \ 765 done 766 $(MAKE) -f Makefile2 install_modules 767 $(INSTALL) -d $(INCLUDE_DIR) 768 for F in $(INSTALL_H); do \ 769 $(INSTALL) -m 644 $$F $(INCLUDE_DIR); \ 770 done 771ifdef([INSTALL_DOCS],[dnl 772 $(INSTALL) -d $(DOC_DIR) 773 for F in doc/*.html modules/*/*.html; do \ 774 $(INSTALL) -m 644 $$F $(DOC_DIR); \ 775 done 776],)dnl 777ifdef([INSTALL_SYSDEP],[ ]INSTALL_SYSDEP 778,)dnl 779 @echo '*********************************************************' 1>&2 780 @echo 'Have you mailed a copy of timing.out to timing@snobol4.org ?' 1>&2 781 @echo '*********************************************************' 1>&2 782 783printenv: 784 env 785 786################ 787MAKEFILE2=Makefile2 788 789# was MYCPPFLAGS, changed to pick up -DSHARED 790DEPENDFLAGS=$(CFLAGS) 791 792depend: 793 sed '/^# DO NOT DELETE THIS LINE/q' $(MAKEFILE2) > $(MAKEFILE2).tmp 794 $(CCM) $(DEPENDFLAGS) $(SRCS) >> $(MAKEFILE2).tmp 795 mv -f $(MAKEFILE2).tmp $(MAKEFILE2) 796