1 // 2 // aegis - project change supervisor 3 // Copyright (C) 2012 Peter Miller 4 // 5 // This program is free software; you can redistribute it and/or modify 6 // it under the terms of the GNU General Public License as published by 7 // the Free Software Foundation; either version 3 of the License, or (at 8 // your option) any later version. 9 // 10 // This program is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 // General Public License for more details. 14 // 15 // You should have received a copy of the GNU General Public License along 16 // with this program. If not, see <http://www.gnu.org/licenses/>. 17 // 18 19 #ifndef AEMAKEGEN_PROCESS_DATA_H 20 #define AEMAKEGEN_PROCESS_DATA_H 21 22 #include <map> 23 24 #include <common/nstring.h> 25 #include <common/nstring/list.h> 26 27 #include <libaegis/change/identifier.h> 28 29 /** 30 * The process_data class is used to represent the data common to all 31 * flavours and targets for generation tasks. 32 */ 33 class process_data 34 { 35 public: 36 /** 37 * The destructor. It is intentionally not virtual. 38 * Thou shalt not derive from this class. 39 */ 40 ~process_data(); 41 42 /** 43 * The default constructor. 44 */ 45 process_data(); 46 47 /** 48 * The notify_preprocess_complete method is called to mark the 49 * end of preprocessing, and the beginning of output. After this 50 * point, no instance variables shouldchange. 51 */ 52 void notify_preprocess_complete(void); 53 54 /** 55 * The set_use_libtool method is used to request that 56 * libtool is to be used to build shared libraries. 57 */ 58 void set_use_libtool(void); 59 60 /** 61 * The use_libtool method is used to determine whether or not the 62 * output shall use libtool. 63 */ use_libtool(void)64 bool use_libtool(void) const { return use_libtool_flag; } 65 66 /** 67 * The set_use_lib_la_files method is used to request that 68 * libtool .la file be installed. The default is false. 69 */ 70 void set_use_lib_la_files(void); 71 72 /** 73 * The use_lib_la_files is used to determine whether or not to 74 * install libtool .la files for shared libraries. 75 */ use_lib_la_files(void)76 bool use_lib_la_files(void) const { return use_lib_la_files_flag; } 77 78 /** 79 * The set_version_info method is used to establish the shared 80 * files's version info string. 81 */ 82 void set_version_info(const nstring &text); 83 84 /** 85 * The get_version_info method is used to obtain a suitable 86 * argument to the libtool -version-info option, based on the 87 * project version. 88 * Only meaningful if #use_libtool returns true. 89 */ 90 nstring get_version_info(void) const; 91 92 /** 93 * The get_version_info_major method is used to obtain the major 94 * version of the version-info. 95 */ 96 nstring get_version_info_major(void) const; 97 98 /** 99 * The set_library_directory is used to determine the name of 100 * the library (shared or static) to be used for code common to 101 * executables built for the project. 102 * 103 * @param cid 104 * The change set identification of the change of interest. 105 * @param filenames 106 * The list of source files to be considered. 107 */ 108 void set_library_directory(change_identifier &cid, 109 const nstring_list &filenames); 110 111 /** 112 * The get_library_directory method may be used tp obtain the name 113 * of the top-level directory containing common files to be linked 114 * with each of the executables. 115 */ get_library_directory(void)116 nstring get_library_directory(void) const { return library_directory; } 117 118 /** 119 * The get_library_name method may be used to obtain the name 120 * of the library containing common files to be linked 121 * with each of the executables (basename, not including extension). 122 * 123 * Or the emopty string, if the project doesn't have a library. 124 */ get_library_name(void)125 nstring get_library_name(void) const { return library_name; } 126 127 /** 128 * The remember_explicit_noinst method is used to add another 129 * program name that is not to be installed. 130 * 131 * @param progname 132 * The name of the program to be omitted from the files that 133 * are installed by the "install:" target. 134 */ 135 void remember_explicit_noinst(const nstring &progname); 136 137 /** 138 * The is_explicit_noinst method may be used to determine whether 139 * or not the named program is not to be installed. 140 */ 141 bool is_explicit_noinst(const nstring &progname) const; 142 143 /** 144 * The set_use_x11 method is used to control whether or not 145 * X11 is to be used to build and link. 146 */ 147 void set_use_x11(void); 148 149 /** 150 * The use_x11 method is used to determine whether or not X11 is to 151 * be used. 152 */ use_x11(void)153 bool use_x11(void) const { return use_x11_flag; } 154 155 /** 156 * The uses_pkgconfig method is used to determine whether or not 157 * there is a pkg-config data file installed by the project. 158 * This is only meaningful if #use_libtool returns true. 159 */ 160 bool uses_pkgconfig(void) const; 161 162 /** 163 * use_i18n methof is used to remember whether or not the project 164 * installs internationalization and localization files. 165 */ use_i18n(void)166 bool use_i18n(void) const { return use_i18n_flag; } 167 168 /** 169 * The set_use_i18n method is used to remember that the 170 * project installs i18n files. 171 */ set_use_i18n(void)172 void set_use_i18n(void) { use_i18n_flag = true; } 173 174 /** 175 * The set_seen_c method is used to notify that probably C source 176 * files have been observed. 177 */ set_seen_c(void)178 void set_seen_c(void) { seen_c_flag = true; } 179 180 /** 181 * The seen_c method is used to determine whether or not probable C 182 * source files have been observed. 183 */ seen_c(void)184 bool seen_c(void) const { return seen_c_flag; } 185 186 /** 187 * The set_seen_c_plus_plus method is used to notify that probably 188 * C++ source files have been observed. 189 */ set_seen_c_plus_plus(void)190 void set_seen_c_plus_plus(void) { seen_c_plus_plus_flag = true; } 191 192 /** 193 * The seen_c_plus_plus method is used to determine whether or not 194 * probable C source files have been observed. 195 */ seen_c_plus_plus(void)196 bool seen_c_plus_plus(void) const { return seen_c_plus_plus_flag; } 197 198 /** 199 * The set_need_yacc method is used to notify that probable yacc 200 * source files have been observed in the file manifest. 201 */ set_need_yacc(void)202 void set_need_yacc(void) { need_yacc_flag = true; } 203 204 /** 205 * The need_yacc method is used to determine whether or not 206 * probable yacc source files have been observed in the file manifest. 207 */ need_yacc(void)208 bool need_yacc(void) const { return need_yacc_flag; } 209 210 /** 211 * The set_have_yacc method is used to notify that the configure.ac 212 * file contains a reference to AC_PROG_YACC, necessary for 213 * building *.y source files. 214 */ set_have_yacc(void)215 void set_have_yacc(void) { have_yacc_flag = true; } 216 217 /** 218 * The have_yacc method is used to determine whether or not 219 * the configure.ac file contains a reference to AC_PROG_YACC, 220 * necessary for building *.y source files. 221 */ have_yacc(void)222 bool have_yacc(void) const { return have_yacc_flag; } 223 224 /** 225 * The set_need_lex method is used to notify that probable lex 226 * source files have been observed in the file manifest. 227 */ set_need_lex(void)228 void set_need_lex(void) { need_lex_flag = true; } 229 230 /** 231 * The need_lex method is used to determine whether or not 232 * probable lex source files have been observed in the file manifest. 233 */ need_lex(void)234 bool need_lex(void) const { return need_lex_flag; } 235 236 /** 237 * The set_have_lex method is used to notify that the configure.ac 238 * file contains a reference to AC_PROG_LEX, necessary for 239 * building *.l source files. 240 */ set_have_lex(void)241 void set_have_lex(void) { have_lex_flag = true; } 242 243 /** 244 * The have_lex method is used to determine whether or not 245 * the configure.ac file contains a reference to AC_PROG_lex, 246 * necessary for building *.l source files. 247 */ have_lex(void)248 bool have_lex(void) const { return have_lex_flag; } 249 250 /** 251 * The remember_clean_misc_file method is used to append 252 * another misc file to the list of files to be removed by the 253 * "clean-misc:" make target. 254 */ 255 void remember_clean_misc_file(const nstring &filename); 256 257 /** 258 * The get_clean_misc_files method is used to get read-only access 259 * to the list of misc files to be cleaned. 260 */ get_clean_misc_files(void)261 const nstring_list &get_clean_misc_files(void) const 262 { return clean_misc_files; } 263 264 /** 265 * The remember_clean_obj_file method is used to add another file 266 * to be removed by the "clean-obj:" makefile target. 267 */ 268 void remember_clean_obj_file(const nstring &filename); 269 270 /** 271 * The get_clean_obj_files method is used to get read-only access 272 * to the list of object files to be cleaned. 273 */ get_clean_obj_files(void)274 const nstring_list &get_clean_obj_files(void) const 275 { return clean_obj_files; } 276 277 /** 278 * The remember_dist_clean_file method is used to add another file 279 * to be removed by the "distclean-files:" makefile target. 280 */ 281 void remember_dist_clean_file(const nstring &filename); 282 283 /** 284 * The get_dist_clean_files method is used to get read-only 285 * access to the list of support files to be cleaned by the 286 * "distclean-files:" make target. 287 */ get_dist_clean_files(void)288 const nstring_list &get_dist_clean_files(void) const 289 { return dist_clean_files; } 290 291 /** 292 * The seen_dist_clean_files method may be used to determine 293 * whether or not any dist_clean_files have been seen. 294 */ seen_dist_clean_files(void)295 bool seen_dist_clean_files(void) const { return !dist_clean_files.empty(); } 296 297 /** 298 * The remember_dist_clean_dir method is used to add another 299 * directory to be removed by the "distclean-dirs:" makefile 300 * target. 301 */ 302 void remember_dist_clean_dir(const nstring &path); 303 304 /** 305 * The get_dist_clean_dirs method is used to get read-only 306 * access to the list of support files to be cleaned by the 307 * "distclean-dirs:" make target. 308 */ get_dist_clean_dirs(void)309 const nstring_list &get_dist_clean_dirs(void) const 310 { return dist_clean_dirs; } 311 312 /** 313 * The exeext method is used to obtain the file extension of 314 * executable files. 315 */ exeext(void)316 const nstring &exeext(void) const { return executable_file_extension; } 317 318 /** 319 * The set_exeext method is used to support the autoconf $(EXEEXT) 320 * substitution. The default is the empty string. 321 */ 322 void set_exeext(void); 323 324 /** 325 * The libext method is used to obtain the file extension of 326 * library files. 327 */ 328 nstring libext(void) const; 329 330 /** 331 * The set_libext method is used to support the autoconf $(LIBEXT) 332 * substitution. The default is "a". 333 */ 334 void set_libext(void); 335 336 /** 337 * The set_libext_libtool method is used to support the libtool 338 * "la" extension. 339 */ 340 void set_libext_libtool(void); 341 342 /** 343 * The objext method is used to obtain the file extension of 344 * object files. 345 */ objext(void)346 const nstring objext(void) const { return object_file_extension; } 347 348 /** 349 * The set_objext method is used to support the autoconf $(OBJEXT) 350 * substitution. The default is "o". 351 */ 352 void set_objext(void); 353 354 /** 355 * The remember_source_file method is used to add another source 356 * file to the lists of source files being maintained, one for each 357 * top-level directory. 358 * 359 * By "source_file" we mean a file that needs to be compiled, not 360 * a script file. Or indirectly needs to be compiled, like yacc 361 * "*.y" files. 362 * 363 * @param filename 364 * The name of the source file to be remembered. 365 */ 366 void remember_source_file(const nstring &filename); 367 368 /** 369 * The get_source_files_by_dir method is used to obtain read-only 370 * access to the list of source files for a given top level 371 * directory. 372 * 373 * @param top_level_dir 374 * The top level directory that the source files fall under. 375 * @returns 376 * A const reference to a list of source file names. 377 * The empty strings means there were no source files, or no 378 * such top level directory. 379 */ 380 const nstring_list &get_source_files_by_dir(const nstring &top_level_dir) 381 const; 382 383 /** 384 * The remember_include_file method is used to add another include 385 * file to the lists of include files being maintained, one for each 386 * top-level directory. 387 * 388 * @param filename 389 * The name of the include file to be remembered. 390 */ 391 void remember_include_files_by_dir(const nstring &filename); 392 393 /** 394 * The get_include_files_by_dir method is used to obtain read-only 395 * access to the list of include files for a given top level 396 * directory. 397 * 398 * @param top_level_dir 399 * The top level directory that the include files fall under. 400 * @returns 401 * A const reference to a list of include file names. 402 * The empty strings means there were no include files, or no 403 * such top level directory. 404 */ 405 const nstring_list &get_include_files_by_dir(const nstring &top_level_dir) 406 const; 407 408 /** 409 * The remember_object_file method is used to add another object 410 * file to the lists of object files being maintained, one for each 411 * top-level directory. 412 * 413 * @param filename 414 * The name of the object file to be remembered. 415 */ 416 void remember_object_file(const nstring &filename); 417 418 /** 419 * The get_object_files_by_dir method is used to obtain read-only 420 * access to the list of object files for a given top level 421 * directory. 422 * 423 * @param top_level_dir 424 * The top level directory that the object files fall under. 425 * @returns 426 * A const reference to a list of object file names. 427 * The empty strings means there were no object files, or no 428 * such top level directory. 429 */ 430 const nstring_list &get_object_files_by_dir(const nstring &top_level_dir) 431 const; 432 433 /** 434 * The library_plus_library method is used to append the contents 435 * of one list of object filoes to another. 436 * 437 * @param to_name 438 * The directory to receive the additonal object files. 439 * @param from_name 440 * The directory from which to obtain the additonal object files. 441 */ 442 void library_plus_library(const nstring &to_name, const nstring &from_name); 443 444 /** 445 * The get_library_list_by_program method is used to obtain 446 * read-only access to the list of library files for a given 447 * program (top level directory). 448 * 449 * @param progname 450 * The name of the program (top level directory) that may have 451 * extra libraries. 452 * @returns 453 * A const reference to a list of library file names. 454 * The empty strings means there were no library files, or no 455 * such top level directory. 456 */ 457 const nstring_list &get_library_list_by_program(const nstring &progname) 458 const; 459 460 /** 461 * The program_needs_library method is used to add another library 462 * directory to the list of library directories needed by a 463 * program. 464 * 465 * @param prog_name 466 * The name of the program (a top level directory). 467 * @param lib_name 468 * The name of the library to append (a top level directory, 469 * does not include the .a suffix, etc) 470 */ 471 void program_needs_library(const nstring &prog_name, 472 const nstring &lib_name); 473 474 /** 475 * The remember_progdir method is used to add another program to 476 * the list of programs to be linked into an executable. 477 * 478 * @param progdir 479 * The directory containing the program's source tree. 480 * May contain slashes, e.g. "test/open". 481 */ 482 void remember_progdir(const nstring &progdir); 483 484 /** 485 * The get_programs method is used to obtain read-only access to 486 * the list of programs to be linked. It derives the program name 487 * from the program directory name. 488 */ 489 nstring_list get_programs(void) const; 490 491 /** 492 * The progdir_from_progname method is used to figure out the 493 * program source directory from the program name. 494 * 495 * @param progname 496 * The name of the program to find 497 * @returns 498 * the directory name (could contain slashes). or the empty 499 * string if it doesn't exist. 500 */ 501 nstring progdir_from_progname(const nstring &progname) const; 502 503 /** 504 * The get_progdirs method is used to obtain read-only access to 505 * the list of program directories to be linked. 506 */ get_progdirs(void)507 const nstring_list &get_progdirs(void) const { return progdirs; } 508 509 /** 510 * The seen_programs method may be used to determine whether or 511 * not any programs have been see (that is, programs that require 512 * linking, not scripts). 513 */ 514 bool seen_programs(void) const; 515 516 /** 517 * The need_install_script_macro method variable is used to 518 * determine whether or not to emit the "INSTALL_SCRIPT = 519 * @INSTALL_SCRIPT@" line in the Makefile.in file. 520 */ need_install_script_macro(void)521 bool need_install_script_macro(void) const { return install_script_macro; } 522 523 /** 524 * The set_install_script_macro method is used to notify that a 525 * "INSTALL_SCRIPT = @INSTALL_SCRIPT@" in the Makefile.in file. 526 */ set_install_script_macro(void)527 void set_install_script_macro(void) { install_script_macro = true; } 528 529 /** 530 * The remember_all_bin method is used to add another file that 531 * is to be build, and makes part of the "all-bin" make target. 532 * 533 * @param filename 534 * The name of the binary file. 535 */ 536 void remember_all_bin(const nstring &filename); 537 538 /** 539 * The get_all_bin method is used to obtain read-only access to 540 * the list of programs to be alled, as prerequisites of the 541 * "all-bin" make target. 542 */ get_all_bin(void)543 const nstring_list &get_all_bin(void) const { return all_bin; } 544 seen_all_bin(void)545 bool seen_all_bin(void) const { return !all_bin.empty(); } 546 547 /** 548 * The remember_install_bin method is used to add another file that 549 * is to be build, and makes part of the "install-bin" make target, 550 * into the $(bindir) directory. 551 * 552 * @param filename 553 * The name of the binary file. 554 */ 555 void remember_install_bin(const nstring &filename); 556 557 /** 558 * The get_install_bin method is used to obtain read-only access to 559 * the list of programs to be installed, as prerequisites of the 560 * "install-bin" make target. 561 */ get_install_bin(void)562 const nstring_list &get_install_bin(void) const { return install_bin; } 563 564 /** 565 * The seen_etc_test_sh method is used to determine whether or not 566 * the project contains a "etc/test.sh" source file. 567 * This will be used to run tests, if it is present. 568 */ seen_etc_test_sh(void)569 bool seen_etc_test_sh(void) const { return etc_test_sh_flag; } 570 571 /** 572 * The set_etc_test_sh method is used to notify that the project 573 * has a "etc/test.sh" source file. 574 * This will be used to run tests, if it is present. 575 */ set_etc_test_sh(void)576 void set_etc_test_sh(void) { etc_test_sh_flag = true; } 577 578 /** 579 * The remember_test_source method is used to add another source 580 * file to the list of test source files. This is used by the 581 * Makefile.am TESTS definition. 582 */ 583 void remember_test_source(const nstring &filename); 584 585 /** 586 * The get_test_sources method may be used to obtain read-only 587 * access to the list of test source files. 588 */ get_test_sources(void)589 const nstring_list &get_test_sources(void) const { return test_sources; } 590 591 /** 592 * The remember_test_file method is used to add another test file 593 * to the list of test files. This is used by the "make sure" 594 * rule. 595 */ 596 void remember_test_file(const nstring &filename); 597 598 /** 599 * The get_test_files method may be used to obtain read-only access 600 * to the list of test files. 601 */ get_test_files(void)602 const nstring_list &get_test_files(void) const { return test_files; } 603 604 /** 605 * The seen_test_files method may be used to determine 606 * whether or not there are any test files to run. 607 */ seen_test_files(void)608 bool seen_test_files(void) const { return !test_files.empty(); } 609 610 /** 611 * The have_groff method is used to determine whether or not the 612 * groff(1) command was mentioned in the configure.ac file. 613 */ have_groff(void)614 bool have_groff(void) const { return have_groff_flag; } 615 616 /** 617 * The set_have_groff method is used to notify that the groff(1) 618 * command is mentioned in the configure.ac file. 619 */ 620 void set_have_groff(void); 621 622 /** 623 * The need_groff method is used to determine whether or not the 624 * groff(1) command required to build the sources. 625 */ need_groff(void)626 bool need_groff(void) const { return need_groff_flag; } 627 628 /** 629 * The set_need_groff method is used to notify that the groff(1) 630 * command is required to build one or more files in the source 631 * file manifest. 632 */ 633 void set_need_groff(void); 634 635 /** 636 * The have_soelim method is used to determine whether or not 637 * there is a "AC_CHECK_PROGS(SOELIM, gsoelim soelim)" line in the 638 * "configure.ac" file. 639 */ have_soelim(void)640 bool have_soelim(void) const { return have_soelim_flag; } 641 642 /** 643 * The set_have_soelim method is used to notify that there 644 * is a "AC_CHECK_PROGS(SOELIM, gsoelim soelim)" line in the 645 * "configure.ac" file. 646 */ 647 void set_have_soelim(void); 648 649 /** 650 * The need_soelim method is used to determine whether or not 651 * there are any source files that require soelim(1) to build. 652 */ need_soelim(void)653 bool need_soelim(void) const { return need_soelim_flag; } 654 655 /** 656 * The set_need_soelim method is used to notify that there are 657 * source files that require soelim(1) to build. 658 */ 659 void set_need_soelim(void); 660 661 /** 662 * The seen_datadir method is used to determine whether or not 663 * content is to be installed into $(datadir)/<progname>/ 664 */ seen_datadir(void)665 bool seen_datadir(void) const { return seen_datadir_flag; } 666 667 /** 668 * The set_seen_datadir method is used to determine notify that 669 * content is to be installed into $(datadir)/<progname>/ 670 */ set_seen_datadir(void)671 void set_seen_datadir(void) { seen_datadir_flag = true; } 672 673 /** 674 * The remember_install_datadir method is used to add another file 675 * to the set of files to be installed under $(datadir)/<progname>/ 676 * 677 * @param filename 678 * The name of the fiel to be installed. 679 */ 680 void remember_install_datadir(const nstring &filename); 681 682 /** 683 * The get_install_datadir method may be used to obtain 684 * read-only access to the list of files to be installed 685 * below $(datadir)/<progname>/ 686 */ get_install_datadir(void)687 const nstring_list &get_install_datadir(void) const 688 { return install_datadir; } 689 690 /** 691 * The seen_datarootdir method is used to determine whether or not 692 * content is to be installed into $(datarootdir)/ 693 */ seen_datarootdir(void)694 bool seen_datarootdir(void) const { return seen_datarootdir_flag; } 695 696 /** 697 * The set_seen_datarootdir method is used to notify that 698 * content is to be installed into $(datarootdir)/ 699 */ set_seen_datarootdir(void)700 void set_seen_datarootdir(void) { seen_datarootdir_flag = true; } 701 702 /** 703 * The seen_libdir method is used to determine whether or not 704 * content is to be installed into $(libdir)/<progname>/ 705 */ seen_libdir(void)706 bool seen_libdir(void) const { return seen_libdir_flag; } 707 708 /** 709 * The set_seen_libdir method is used to notify that 710 * content is to be installed into $(libdir)/<progname>/ 711 */ set_seen_libdir(void)712 void set_seen_libdir(void) { seen_libdir_flag = true; } 713 714 /** 715 * The remember_pkgconfig_source method is used to add 716 * a file to the set of source files for pkgconfig/ .pc files. 717 */ 718 void remember_pkgconfig_source(const nstring &filename); 719 720 /** 721 * The seen_pkgconfig_source method may be used to determine 722 * whether or not and source files have been seen that are to be 723 * installed below $(libdir)/pkgconfig/ 724 */ seen_pkgconfig_source(void)725 bool seen_pkgconfig_source(void) const 726 { return !pkgconfig_sources.empty(); } 727 728 /** 729 * The get_get_pkgconfig_sources method may be used to obtain read-only 730 * access to the list of source to be installed below $(libdir)/pkgconfig/ 731 */ get_pkgconfig_sources(void)732 const nstring_list &get_pkgconfig_sources(void) const 733 { return pkgconfig_sources; } 734 735 /** 736 * The remember_install_libdir method is used to add another file 737 * to the set of files to be installed below $(libdir) 738 * 739 * @param filename 740 * The name of the file to be installed. 741 */ 742 void remember_install_libdir(const nstring &filename); 743 744 /** 745 * The get_install_libdir method may be used to obtain read-only 746 * access to the list of files to be installed below $(libdir)/ 747 */ get_install_libdir(void)748 const nstring_list &get_install_libdir(void) const 749 { return install_libdir; } 750 751 /** 752 * The seen_sysconfdir method is used to determine whether or not 753 * content is to be installed into $(sysconfdir)/ (i.e. /etc) 754 */ seen_sysconfdir(void)755 bool seen_sysconfdir(void) const { return seen_sysconfdir_flag; } 756 757 /** 758 * The set_seen_sysconfdir method is used to notify that 759 * content is to be installed into $(sysconfdir)/ (i.e. /etc) 760 */ set_seen_sysconfdir(void)761 void set_seen_sysconfdir(void) { seen_sysconfdir_flag = true; } 762 763 /** 764 * The remember_man_sources method is used to add another file to 765 * the set of source files for man pages. 766 */ 767 void remember_man_sources(const nstring &filename); 768 769 /** 770 * The get_man_sources method may be used to obtain read-only 771 * access to the set of source files for man pages. 772 */ get_man_sources(void)773 const nstring_list &get_man_sources(void) const { return man_sources; } 774 775 /** 776 * The remember_install_mandir method is used to add another file 777 * to the set of files to be installed below $(mandir)/ 778 * 779 * @param filename 780 * The name of the file to be installed. 781 */ 782 void remember_install_mandir(const nstring &filename); 783 784 /** 785 * The seen_install_mandir method may be used to determine 786 * whether or not there are any files to install below $(mandir)/ 787 */ seen_install_mandir(void)788 bool seen_install_mandir(void) const { return !install_mandir.empty(); } 789 790 /** 791 * The get_install_mandir method may be used to obtain read-only 792 * access to the set of files to be installed under the $(mandir)/ 793 * directory. 794 */ get_install_mandir(void)795 const nstring_list &get_install_mandir(void) const 796 { return install_mandir; } 797 798 /** 799 * The remember_all_doc method is used to add another file to the 800 * set of files to be built by the "all-doc" make target. 801 * 802 * @param filename 803 * The name of the file to be installed. 804 */ 805 void remember_all_doc(const nstring &filename); 806 807 /** 808 * The seen_all_doc method may be used to determine whether or not 809 * there are any documentation files to be built. 810 */ seen_all_doc(void)811 bool seen_all_doc(void) const { return !all_doc.empty(); } 812 813 /** 814 * The get_all_doc method may be used to obtain read-only access to 815 * the set of documentation files to be built. 816 */ get_all_doc(void)817 const nstring_list &get_all_doc(void) const { return all_doc; } 818 819 /** 820 * The remember_install_doc method is used to add another file 821 * to the set of files to be installed by the "install-doc" make 822 * target. 823 * 824 * @param filename 825 * The name of the file to be installed. 826 */ 827 void remember_install_doc(const nstring &filename); 828 829 /** 830 * The seen_install_doc method may be used to determine whether 831 * or not there are any documentation files to be installed. 832 */ seen_install_doc(void)833 bool seen_install_doc(void) const { return !install_doc.empty(); } 834 835 /** 836 * The get_install_doc method may be used to obtain read-only access to 837 * the set of documentation files to be installed. 838 */ get_install_doc(void)839 const nstring_list &get_install_doc(void) const { return install_doc; } 840 841 /** 842 * The set_program_prefix method is used to set the program 843 * prefix to "$(PROGRAM_PREFIX)". This is set by the ./configure 844 * --program-prefix option. 845 */ 846 void set_program_prefix(void); 847 848 /** 849 * The get_program_prefix method is used to obtain the value of the 850 * program prefix to be added to the names of install programs. 851 */ get_program_prefix(void)852 nstring get_program_prefix(void) const { return program_prefix; } 853 854 /** 855 * The set_program_suffix method is used to set the program 856 * suffix to "$(PROGRAM_SUFFIX)". This is set by the ./configure 857 * --program-suffix option. 858 */ 859 void set_program_suffix(void); 860 861 /** 862 * The get_program_suffix method is used to obtain the value of the 863 * program suffix to be added to the names of install programs. 864 */ get_program_suffix(void)865 nstring get_program_suffix(void) const { return program_suffix; } 866 867 /** 868 * The remember_all_i18n method is used to add another file to the 869 * set of files to be built by the "all-i18n" make target. 870 * 871 * @param filename 872 * The name of the file to be installed. 873 */ 874 void remember_all_i18n(const nstring &filename); 875 876 /** 877 * The seen_all_i18n method may be used to determine whether or not 878 * there are any i18n files to be built. 879 */ seen_all_i18n(void)880 bool seen_all_i18n(void) const { return !all_i18n.empty(); } 881 882 /** 883 * The get_all_i18n method may be used to obtain read-only access to 884 * the set of i18n files to be built. 885 */ get_all_i18n(void)886 const nstring_list &get_all_i18n(void) const { return all_i18n; } 887 888 /** 889 * The remember_install_i18n method is used to add another file 890 * to the set of files to be install by the "install-i18n" make 891 * target. 892 * 893 * @param filename 894 * The name of the file to be installed. 895 */ 896 void remember_install_i18n(const nstring &filename); 897 898 /** 899 * The seen_install_i18n method may be used to determine whether or 900 * not there are any i18n files to be installed. 901 */ seen_install_i18n(void)902 bool seen_install_i18n(void) const { return !install_i18n.empty(); } 903 904 /** 905 * The get_install_i18n method may be used to obtain read-only 906 * access to the set of i18n files to be installed. 907 */ get_install_i18n(void)908 const nstring_list &get_install_i18n(void) const { return install_i18n; } 909 910 /** 911 * The set_have_nlsdir method is used to notify that the 912 * configure.ac file contain a AC_SUBST(NLSDIR) line. 913 */ 914 void set_have_nlsdir(void); 915 916 /** 917 * The have_nlsdir method is used to determine whether or not the 918 * configure.ac file contains a AC_SUBST(NLSDIR) line. 919 */ have_nlsdir(void)920 bool have_nlsdir(void) const { return have_nlsdir_flag; } 921 922 /** 923 * The set_etc_msgfmt_sh method is used to notify that an 924 * "etc/msgfmt.sh" source file has been seen. If present, this 925 * will be used in preference to raw msgfmt(1) command. 926 */ 927 void set_etc_msgfmt_sh(void); 928 929 /** 930 * The seen_etc_msgfmt_sh method is used to determine whether or 931 * not an "etc/fmtgen.sh" file has been seen. 932 */ seen_etc_msgfmt_sh(void)933 bool seen_etc_msgfmt_sh(void) const { return etc_msgfmt_sh_flag; } 934 935 /** 936 * The remember_install_include_source method is used to add 937 * another file to the set of source files that will eventually be 938 * installed under $(includedir), see #remember_install_include, 939 * but these are the source files. 940 * 941 * @param filename 942 * The name of the source file to be remembered. 943 */ 944 void remember_install_include_source(const nstring &filename); 945 946 /** 947 * The get_install_include_sources method may be used to obtain 948 * read-only access to the set of include files to be installed, 949 * the project source filename, NOT the installed path. 950 */ get_install_include_sources(void)951 const nstring_list &get_install_include_sources(void) const 952 { return install_include_sources; } 953 954 /** 955 * The seen_install_include_sources method may be used to determine 956 * whether or not there are any include files to be installed. 957 */ seen_install_include_sources(void)958 bool seen_install_include_sources(void) const 959 { return !install_include_sources.empty(); } 960 961 /** 962 * The remember_install_include method is used to add another file 963 * to the set of files to be install by the "install-include" make 964 * target. 965 * 966 * @param filename 967 * The name of the file to be installed. 968 */ 969 void remember_install_include(const nstring &filename); 970 971 /** 972 * The seen_install_include method may be used to determine whether or 973 * not there are any include files to be installed. 974 */ seen_install_include(void)975 bool seen_install_include(void) const { return !install_include.empty(); } 976 977 /** 978 * The get_install_include method may be used to obtain 979 * read-only access to the list of include files to be installed 980 * under the $(includedir) system directory. 981 */ get_install_include(void)982 const nstring_list &get_install_include(void) const 983 { return install_include; } 984 985 void set_groff_macro(void); 986 seen_groff_macro(void)987 bool seen_groff_macro(void) const { return groff_macro_flag; } 988 989 /** 990 * The get_list_of_library_directories is used to obtain a 991 * list of directories that have object files in them, bit are 992 * not mentioned in the 'programs' list. It is possible that 993 * not all of them are libraries, but it's a pretty good first 994 * approcimation. 995 */ 996 nstring_list get_list_of_library_directories(void) const; 997 998 /** 999 * The remember_built_sources method is used to add another file 1000 * to the set of files that consTitute catch-22 cases when 1001 * automatically deriving include dependencies. 1002 * 1003 * @param filename 1004 * The name of the file to be installed. 1005 */ 1006 void remember_built_sources(const nstring &filename); 1007 1008 /** 1009 * The seen_built_sources method may be used to determine whether or 1010 * not there are any include catch-22 file. 1011 */ seen_built_sources(void)1012 bool seen_built_sources(void) const { return !built_sources.empty(); } 1013 1014 /** 1015 * The get_built_sources method may be used to obtain read-only 1016 * access to the set of catch-22 include files. 1017 */ get_built_sources(void)1018 const nstring_list &get_built_sources(void) const 1019 { return built_sources; } 1020 1021 /** 1022 * The remember_extra_dist method is used to add another file 1023 * to the set of files that consTitute catch-22 cases when 1024 * automatically deriving include dependencies. 1025 * 1026 * @param filename 1027 * The name of the file to be installed. 1028 */ 1029 void remember_extra_dist(const nstring &filename); 1030 1031 /** 1032 * The seen_extra_dist method may be used to determine whether or 1033 * not there are any include catch-22 file. 1034 */ seen_extra_dist(void)1035 bool seen_extra_dist(void) const { return !extra_dist.empty(); } 1036 1037 /** 1038 * The get_extra_dist method may be used to obtain read-only 1039 * access to the set of catch-22 include files. 1040 */ get_extra_dist(void)1041 const nstring_list &get_extra_dist(void) const 1042 { return extra_dist; } 1043 1044 /** 1045 * The set_install_data_macro method is used to notify that the 1046 * Makefile.in file will need to define the INSTAL_DATA make macro. 1047 */ 1048 void set_install_data_macro(void); 1049 1050 /** 1051 * The need_install_data_macro method is used to determine whether 1052 * or not the INSTALL_DATA make macro needs to be defined. 1053 */ need_install_data_macro(void)1054 bool need_install_data_macro(void) const { return install_data_macro; } 1055 1056 /** 1057 * The get_install_directories method is used to obtain a list 1058 * of the list of <b>directories</b> mentioned to the set of 1059 * <i>all</i> remember_install_<i>something</i> methods. 1060 */ 1061 nstring_list get_install_directories(void) const; 1062 1063 /** 1064 * The set_have_ar method is used to notify that an a 1065 * "AC_CHECK_PROGS(AR, ar)" line was observed in the "configure.ac" 1066 * file. 1067 */ 1068 void set_have_ar(void); 1069 1070 /** 1071 * The have_ar method is used to determine whether or not a 1072 * "AC_CHECK_PROGS(AR, ar)" line was observed in the "configure.ac" 1073 * file. 1074 */ have_ar(void)1075 bool have_ar(void) const { return have_ar_flag; } 1076 1077 /** 1078 * The set_have_ranlib method is used to notify that an a 1079 * "AC_PROG_RANLIB" line was observed in the "configure.ac" file. 1080 */ 1081 void set_have_ranlib(void); 1082 1083 /** 1084 * The have_ranlib method is used to determine whether or not a 1085 * "AC_PROG_RANLIB" line was observed in the "configure.ac" file. 1086 */ have_ranlib(void)1087 bool have_ranlib(void) const { return have_ranlib_flag; } 1088 1089 /** 1090 * The set_need_ghostscript method is used to remember that the 1091 * "ghostscript" package (for ps2pdf) is required. 1092 */ 1093 void set_need_ghostscript(void); 1094 1095 /** 1096 * The need_ghostscript method is used to determine whether or not 1097 * the "ghostscript" package (for ps2pdf) is required. 1098 */ need_ghostscript(void)1099 bool need_ghostscript(void) const { return need_ghostscript_flag; } 1100 1101 /** 1102 * The seen_am_data_data method is used to determine whether or not 1103 * any files have been seen that are to be installed as data by 1104 * automake. 1105 */ seen_am_data_data(void)1106 bool seen_am_data_data(void) const { return !am_data_data.empty(); } 1107 1108 /** 1109 * The get_am_data_data method is used to obtain read-only access 1110 * to the set of files to be installed as data by automake. 1111 */ get_am_data_data(void)1112 const nstring_list &get_am_data_data(void) const { return am_data_data; } 1113 1114 /** 1115 * The remember_am_data_data instance variable is used to add 1116 * another file the set of files to be installed as data by 1117 * automake. 1118 */ 1119 void remember_am_data_data(const nstring &filename); 1120 1121 private: 1122 /** 1123 * The project_name instance variable is used to remember the name 1124 * of the project. We need this for library .a file naming, in 1125 * some cases. It is set by the #set_library_directory method. 1126 */ 1127 nstring project_name; 1128 1129 /** 1130 * The use_libtool_flag is used to remember whether or not libtool 1131 * is to be used to build shared libraries. 1132 */ 1133 bool use_libtool_flag; 1134 1135 /** 1136 * The use_lib_la_files_flag is used to remember whether or not to 1137 * install *.la files. Only meaningful if #use_libtool_flag is true. 1138 * 1139 * The debian folk take exception to the "almost always useless" 1140 * *.la files install by libtool. So this defaults to false. 1141 */ 1142 bool use_lib_la_files_flag; 1143 1144 /** 1145 * The version_info instance variable is used to remember the 1146 * shared-library version-info string. 1147 */ 1148 nstring version_info; 1149 1150 /** 1151 * The library_directory instance variable is used to remember 1152 * the directory containing a library to be linked with the other 1153 * executables. Empty if none. 1154 */ 1155 nstring library_directory; 1156 1157 /** 1158 * The library_name instance variable is used to remember 1159 * the name of a library to be linked with the other executables 1160 * (basename, not including extension). Empty if none. 1161 */ 1162 nstring library_name; 1163 1164 /** 1165 * The explicit_noinst instance variable is used to remember 1166 * the names of programs that are not to be installed. 1167 */ 1168 nstring_list explicit_noinst; 1169 1170 /** 1171 * The use_x11_flag instance variable is used to remember 1172 * whether or not the output should use the X11 macros. 1173 */ 1174 bool use_x11_flag; 1175 1176 /** 1177 * The use_i18n_flag is used to remember whether or not the project 1178 * installs internationalization and localization files. 1179 */ 1180 bool use_i18n_flag; 1181 1182 /** 1183 * The seen_c_flag instance variable is used to remember that the 1184 * project appears to contain C source files. 1185 */ 1186 bool seen_c_flag; 1187 1188 /** 1189 * The seen_c_plus_plus_flag instance variable is used to remember 1190 * that the project appears to contain C++ source files. 1191 */ 1192 bool seen_c_plus_plus_flag; 1193 1194 /** 1195 * The seen_yacc_flag instance variable is used to remember 1196 * that the project appears to contain yacc source files. 1197 */ 1198 bool need_yacc_flag; 1199 1200 /** 1201 * The have_yacc_flag instance variable is used to remember 1202 * that the configure.ac file contains a definition for @YACC@ 1203 */ 1204 bool have_yacc_flag; 1205 1206 /** 1207 * The seen_lex_flag instance variable is used to remember 1208 * that the project appears to contain lex source files. 1209 */ 1210 bool need_lex_flag; 1211 1212 /** 1213 * The have_lex_flag instance variable is used to remember 1214 * that the configure.ac file contains a definition for @LEX@ 1215 */ 1216 bool have_lex_flag; 1217 1218 /** 1219 * The clean_misc_files instance variable is used to remember files 1220 * that are to be removed by the "clean-misc:" target, but do not 1221 * it into any of the other clean categories. 1222 */ 1223 nstring_list clean_misc_files; 1224 1225 /** 1226 * The clean_obj_files instance variable is used to remember files 1227 * that are to be removed by the "clean-obj:" target. 1228 */ 1229 nstring_list clean_obj_files; 1230 1231 /** 1232 * The dist_clean_files instance variable is used to remember files 1233 * that are to be removed by the "distclean-files:" target. These 1234 * files are the ones created withing the build dir to optimize the 1235 * install. 1236 */ 1237 nstring_list dist_clean_files; 1238 1239 /** 1240 * The dist_clean_dirs instance variable is used to remember the 1241 * directories that are to be removed by the "distclean-dirs:" 1242 * target. These directories are the ones created within the build 1243 * directory, usually by libtool but not always. 1244 */ 1245 nstring_list dist_clean_dirs; 1246 1247 /** 1248 * The executable_file_extension instance variable is used to 1249 * remember the file extension of executable files. On Unix, the 1250 * isn't one. 1251 */ 1252 nstring executable_file_extension; 1253 1254 /** 1255 * The library_file_extension instance variable is used to 1256 * remember the file extension of library files. 1257 * Defaults to "a". 1258 */ 1259 nstring library_file_extension; 1260 1261 /** 1262 * The object_file_extension instance variable is used to 1263 * remember the file extension of object files. 1264 * Defaults to "o". 1265 */ 1266 nstring object_file_extension; 1267 1268 typedef std::map<nstring, nstring_list> source_list_t; 1269 1270 /** 1271 * The source_list instance variable is used to remember the list 1272 * of source files associated with each top-level directory. 1273 */ 1274 source_list_t source_list; 1275 1276 typedef std::map<nstring, nstring_list> include_list_t; 1277 1278 /** 1279 * The include_list instance variable is used to remember the list 1280 * of include files associated with each top-level directory. 1281 */ 1282 include_list_t include_list; 1283 1284 typedef std::map<nstring, nstring_list> object_list_t; 1285 1286 /** 1287 * The object_list instance variable is used to remember the list 1288 * of object files associated with each top-level directory. 1289 */ 1290 object_list_t object_list; 1291 1292 typedef std::map<nstring, nstring_list> library_list_t; 1293 1294 /** 1295 * The library_list instance variable is used to remember the list 1296 * of library files associated with each program. 1297 */ 1298 library_list_t library_list; 1299 1300 /** 1301 * The progdirs instance variable is used to rememeber the list of 1302 * directorirs that contain program sources and objects that need 1303 * to be linked from object files to build an executable (i.e. not 1304 * a script). 1305 */ 1306 nstring_list progdirs; 1307 1308 /** 1309 * The install_script_macro instance variable is used to remember 1310 * whether or not a script has been seen. This is used to decide 1311 * whether or not to emit the "INSTALL_SCRIPT = @INSTALL_SCRIPT@" 1312 * line in the Makefile.in file. 1313 */ 1314 bool install_script_macro; 1315 1316 /** 1317 * The all_bin instance variable is used to remember the list of 1318 * executable files to be constructed by the "all-bin" target. 1319 */ 1320 nstring_list all_bin; 1321 1322 /** 1323 * The install_bin instance variable is used to remember the list of 1324 * executable files to be installed by the "install-bin" target. 1325 */ 1326 nstring_list install_bin; 1327 1328 /** 1329 * The etc_test_sh_flag is used to remember whether or not the 1330 * "etc/test.sh" source file has been seen. This is used to write 1331 * test rules. 1332 * This will be used to run tests, if it is present. 1333 */ 1334 bool etc_test_sh_flag; 1335 1336 /** 1337 * The test_sources instance variable is used to remember the test 1338 * source files, for use in the Automake TESTS definition. 1339 */ 1340 nstring_list test_sources; 1341 1342 /** 1343 * The test_files instance variable is used to remember the test 1344 * output files, for use in the "make sure" rule. 1345 */ 1346 nstring_list test_files; 1347 1348 /** 1349 * The have_groff_flag instance variable is used to remember 1350 * whether or not we have seen GROFF mentioned in the configure.ac 1351 * file. If this is the case, we emit more rules which use groff. 1352 */ 1353 bool have_groff_flag; 1354 1355 /** 1356 * The need_groff_flag instance variable is used to remember 1357 * whether or not we have seen source files that require groff to 1358 * build them. 1359 */ 1360 bool need_groff_flag; 1361 1362 /** 1363 * The have_soelim_flag instance variable is used to remember 1364 * whether or not there is a "AC_CHECK_PROGS(SOELIM, gsoelim 1365 * soelim)" line in the "configure.ac" file. 1366 */ 1367 bool have_soelim_flag; 1368 1369 /** 1370 * The need_soelim_flag instance variable is used to remember 1371 * whether or not ther are source files that required soelim(1) to 1372 * build. 1373 */ 1374 bool need_soelim_flag; 1375 1376 /** 1377 * The seen_datadir_flag instance variable is used to remember 1378 * whether or not we have seen content to be installed from 1379 * datadir/ into ${prefix}/share/<progname>/ 1380 */ 1381 bool seen_datadir_flag; 1382 1383 /** 1384 * The install_datadir instance variable is used to remember 1385 * the name of files to be installed below $(datadir)/<progname>/ 1386 * 1387 * This also includes files to be installed below $(datarootdir) 1388 */ 1389 nstring_list install_datadir; 1390 1391 /** 1392 * The seen_datarootdir_flag instance variable is used to remember whether 1393 * or not we have seen content to be installed from libdir/ into 1394 * ${prefix}/share/ and is usually for other applications' use. 1395 */ 1396 bool seen_datarootdir_flag; 1397 1398 /** 1399 * The seen_libdir_flag instance variable is used to remember 1400 * whether or not we have seen content to be installed from libdir/ 1401 * into ${prefix}/lib/<progname>/ 1402 */ 1403 bool seen_libdir_flag; 1404 1405 /** 1406 * The pkgconfig_sources instance variable is used to remember the 1407 * names of the source files to be installed below $(libdir)/pkgconfig/ 1408 */ 1409 nstring_list pkgconfig_sources; 1410 1411 /** 1412 * The install_libdir instance variable is used to remember the 1413 * names of the files to be installed under $(libdir)/ 1414 */ 1415 nstring_list install_libdir; 1416 1417 /** 1418 * The seen_sysconfdir_flag instance variable is used to 1419 * remember whether or not we have seen content to be 1420 * installed from libdir/ into /etc/ 1421 */ 1422 bool seen_sysconfdir_flag; 1423 1424 /** 1425 * The man_sources instance variable is used to remember the set 1426 * of sourcfe files of man pages. 1427 */ 1428 nstring_list man_sources; 1429 1430 /** 1431 * The install_mandir instance variable is used to remember the set 1432 * of files to be installed into $(mandir)/ 1433 */ 1434 nstring_list install_mandir; 1435 1436 /** 1437 * The all_doc instance variable is used to remember the list of 1438 * documentation files to be constructed by the "all-doc" target. 1439 */ 1440 nstring_list all_doc; 1441 1442 /** 1443 * The install_doc instance variable is used to remember the list 1444 * of documentation files to be installed by the "install-doc" 1445 * target. 1446 */ 1447 nstring_list install_doc; 1448 1449 /** 1450 * The program_prefix instance variable is used to remember 1451 * the prefix string to add to program names when installing. 1452 * Defaults to the empty string. 1453 */ 1454 nstring program_prefix; 1455 1456 /** 1457 * The program_suffix instance variable is used to remember 1458 * the suffix string to add to program names when installing. 1459 * Defaults to the empty string. 1460 */ 1461 nstring program_suffix; 1462 1463 /** 1464 * The all_i18n instance variable is used to remember set set 1465 * of i18n files to be built (*.po => *.mo). 1466 */ 1467 nstring_list all_i18n; 1468 1469 /** 1470 * The install_i18n instance variable is used to remember set set 1471 * of files to be installed under $(NLSDIR)/ 1472 */ 1473 nstring_list install_i18n; 1474 1475 /** 1476 * The have_nlsdir_flag instance is used to remember whether or not 1477 * a line of the form AC_SUBST(NLSDIR) appears in the configure.ac 1478 * file. 1479 */ 1480 bool have_nlsdir_flag; 1481 1482 /** 1483 * The etc_msgfmt_sh_flag instance variable is used to remember whether 1484 * or not an "etc/msgfmt.sh" source file has been seen. If present, this 1485 * will be used in preference to raw msgfmt(1) command. 1486 */ 1487 bool etc_msgfmt_sh_flag; 1488 1489 /** 1490 * The install_include_sources instance variable is used to rememebr 1491 * the list of include source files. 1492 */ 1493 nstring_list install_include_sources; 1494 1495 /** 1496 * The install_include instance variable is used to rememebr 1497 * the list of include files to be installed into $(includedir). 1498 * The filename all include "$(includedir)" as the first component. 1499 */ 1500 nstring_list install_include; 1501 1502 /** 1503 * The groff_macro_flag is used to remember whether or not 1504 * groff -ms or groff -mm flags have been seen during preprocessing. 1505 */ 1506 bool groff_macro_flag; 1507 1508 /** 1509 * The built_source instance variable i sused to remember the set of 1510 * catch-22 non-source files that need to be built early in the build. 1511 */ 1512 nstring_list built_sources; 1513 1514 /** 1515 * The extra_dist instance variable is used to remember the set 1516 * of source files that are also to be added to the tarball, even 1517 * though they appear on no other source file list. 1518 */ 1519 nstring_list extra_dist; 1520 1521 /** 1522 * The install_data_macro instance variable is used to remember 1523 * whether or not the INSTALL_DATA macro needs to be defined. 1524 */ 1525 bool install_data_macro; 1526 1527 typedef std::map<nstring, int> install_directories_t; 1528 1529 /** 1530 * The install_directories instance variable is used to remember 1531 * the set of install directories as mentioned by other 1532 * remember_install_<i>something</i> methods. 1533 */ 1534 install_directories_t install_directories; 1535 1536 /** 1537 * The remember_install_directory_for method 1538 * is used to remember the directory to be installed. 1539 * 1540 * @param install_file 1541 * The path of the file to be installed. It will rip off the 1542 * final component to construct the directory name. 1543 */ 1544 void remember_install_directory_for(const nstring &install_file); 1545 1546 /** 1547 * The have_ar_flag is used to remember whether or not there is a 1548 * "AC_CHECK_PROGS(AR, ar)" line in the configure.ac source file. 1549 */ 1550 bool have_ar_flag; 1551 1552 /** 1553 * The have_ranlib_flag is used to remember whether or not there is a 1554 * "AC_PROG_RANLIB" line in the configure.ac source file. 1555 */ 1556 bool have_ranlib_flag; 1557 1558 /** 1559 * The need_ghostscript_flag instance variable is used to remember 1560 * whether or not the build depends on the ghostscript package. 1561 */ 1562 bool need_ghostscript_flag; 1563 1564 /** 1565 * The am_data_data instance variable is used to remmeber the set 1566 * of files to be installed as data by automake. 1567 */ 1568 nstring_list am_data_data; 1569 1570 /** 1571 * The read_only instance variable is used to remember whether or 1572 * not the preprocessing stage has finished, at which point no more 1573 * changes to any instance variable should be occuring. 1574 */ 1575 bool read_only; // MUST BE LAST 1576 1577 /** 1578 * The check_read_write method is used by all methods that 1579 * change this instance's state, to be sure that modification is 1580 * appropriate. This is a debugging technique, not a public method. 1581 */ 1582 void check_read_write(const char *method_name); 1583 1584 /** 1585 * The copy constructor. Do not use. 1586 */ 1587 process_data(const process_data &); 1588 1589 /** 1590 * The assignment operator. Do not use. 1591 */ 1592 process_data &operator=(const process_data &); 1593 }; 1594 1595 // vim: set ts=8 sw=4 et : 1596 #endif // AEMAKEGEN_PROCESS_DATA_H 1597