1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4; coding: utf-8 -*- */
4 * Copyright (C) 2010 Sébastien Granjoux
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation; either version 2 of the
9 * License, or (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
16 * You should have received a copy of the GNU General Public
17 * License along with this program; if not, write to the
18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 * Boston, MA 02111-1307, USA.
27 #include "am-properties.h"
29 #include "am-project-private.h"
31 #include "ac-scanner.h"
32 #include "am-scanner.h"
33 #include "ac-writer.h"
35 #include <glib/gi18n.h>
40 *---------------------------------------------------------------------------*/
43 *---------------------------------------------------------------------------*/
45 static AmpProperty AmpProjectProperties
[] =
50 ANJUTA_PROJECT_PROPERTY_STRING
,
51 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
52 N_("Project name, it can contain spaces by example 'GNU Autoconf'")},
53 AC_TOKEN_AC_INIT
, 0, NULL
,
54 AM_PROPERTY_IN_CONFIGURE
59 ANJUTA_PROJECT_PROPERTY_STRING
,
60 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
61 N_("Project version, typically a few numbers separated by dot by example '1.0.0'")},
62 AC_TOKEN_AC_INIT
, 1, NULL
,
63 AM_PROPERTY_IN_CONFIGURE
67 N_("Bug report URL:"),
68 ANJUTA_PROJECT_PROPERTY_STRING
,
69 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
70 N_("An email address or a link to a web page where the user can report bug. It is optional.")},
71 AC_TOKEN_AC_INIT
, 2, NULL
,
72 AM_PROPERTY_IN_CONFIGURE
77 ANJUTA_PROJECT_PROPERTY_STRING
,
78 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
79 N_("Package name, it can contains only alphanumerics and underscore characters."
80 "It is generated from the project name if not provided.")},
81 AC_TOKEN_AC_INIT
, 3, NULL
,
82 AM_PROPERTY_IN_CONFIGURE
87 ANJUTA_PROJECT_PROPERTY_STRING
,
88 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
89 N_("An link to the project web page if provided.")},
90 AC_TOKEN_AC_INIT
, 4, NULL
,
91 AM_PROPERTY_IN_CONFIGURE
96 ANJUTA_PROJECT_PROPERTY_LIST
,
97 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
98 N_("Common additional linker flags for all targets in this group.")},
99 AM_TOKEN__LDFLAGS
, 0, "AM_LDFLAGS",
100 AM_PROPERTY_IN_MAKEFILE
104 N_("C preprocessor flags:"),
105 ANJUTA_PROJECT_PROPERTY_LIST
,
106 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
107 N_("Common additional C preprocessor flags for all targets in this group.")},
108 AM_TOKEN__CPPFLAGS
, 0, "AM_CPPFLAGS",
109 AM_PROPERTY_IN_MAKEFILE
113 N_("C compiler flags:"),
114 ANJUTA_PROJECT_PROPERTY_LIST
,
115 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
116 N_("Common additional C compiler flags for all targets in this group.")},
117 AM_TOKEN__CFLAGS
, 0, "AM_CFLAGS",
118 AM_PROPERTY_IN_MAKEFILE
122 N_("C++ compiler flags:"),
123 ANJUTA_PROJECT_PROPERTY_LIST
,
124 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
125 N_("Common additional C++ compiler flags for all targets in this group.")},
126 AM_TOKEN__CXXFLAGS
, 0, "AM_CXXFLAGS",
127 AM_PROPERTY_IN_MAKEFILE
131 N_("Java compiler flags:"),
132 ANJUTA_PROJECT_PROPERTY_LIST
,
133 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
134 N_("Common additional Java compiler flags for all targets in this group.")},
135 AM_TOKEN__JAVACFLAGS
, 0, "AM_JAVAFLAGS",
136 AM_PROPERTY_IN_MAKEFILE
140 N_("Vala compiler flags:"),
141 ANJUTA_PROJECT_PROPERTY_LIST
,
142 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
143 N_("Common additional Vala compiler flags for all targets in this group.")},
144 AM_TOKEN__VALAFLAGS
, 0, "AM_VALAFLAGS",
145 AM_PROPERTY_IN_MAKEFILE
149 N_("Fortran compiler flags:"),
150 ANJUTA_PROJECT_PROPERTY_LIST
,
151 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
152 N_("Common additional Fortran compiler flags for all targets in this group.")},
153 AM_TOKEN__FCFLAGS
, 0, "AM_FCFLAGS",
154 AM_PROPERTY_IN_MAKEFILE
158 N_("Objective C compiler flags:"),
159 ANJUTA_PROJECT_PROPERTY_LIST
,
160 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
161 N_("Common additional Objective C compiler flags for all targets in this group.")},
162 AM_TOKEN__OBJCFLAGS
, 0, "AM_OBJCFLAGS",
163 AM_PROPERTY_IN_MAKEFILE
167 N_("Lex/Flex flags:"),
168 ANJUTA_PROJECT_PROPERTY_LIST
,
169 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
170 N_("Common additional Lex or Flex lexical analyser generator flags for all targets in this group.")},
171 AM_TOKEN__LFLAGS
, 0, "AM_LFLAGS",
172 AM_PROPERTY_IN_MAKEFILE
176 N_("Yacc/Bison flags:"),
177 ANJUTA_PROJECT_PROPERTY_LIST
,
178 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
179 N_("Common additional Yacc or Bison parser generator flags for all targets in this group.")},
180 AM_TOKEN__YFLAGS
, 0, "AM_YFLAGS",
181 AM_PROPERTY_IN_MAKEFILE
185 N_("Installation directories:"),
186 ANJUTA_PROJECT_PROPERTY_MAP
,
187 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
188 N_("List of custom installation directories used by targets in this group.")},
189 AM_TOKEN_DIR
, 0, NULL
,
190 AM_PROPERTY_IN_MAKEFILE
195 static GList
* AmpProjectPropertyList
= NULL
;
198 static AmpProperty AmpGroupNodeProperties
[] =
203 ANJUTA_PROJECT_PROPERTY_LIST
,
204 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
205 N_("Common additional linker flags for all targets in this group.")},
206 AM_TOKEN__LDFLAGS
, 0, "AM_LDFLAGS",
207 AM_PROPERTY_IN_MAKEFILE
211 N_("C preprocessor flags:"),
212 ANJUTA_PROJECT_PROPERTY_LIST
,
213 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
214 N_("Common additional C preprocessor flags for all targets in this group.")},
215 AM_TOKEN__CPPFLAGS
, 0, "AM_CPPFLAGS",
216 AM_PROPERTY_IN_MAKEFILE
220 N_("C compiler flags:"),
221 ANJUTA_PROJECT_PROPERTY_LIST
,
222 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
223 N_("Common additional C compiler flags for all targets in this group.")},
224 AM_TOKEN__CFLAGS
, 0, "AM_CFLAGS",
225 AM_PROPERTY_IN_MAKEFILE
229 N_("C++ compiler flags:"),
230 ANJUTA_PROJECT_PROPERTY_LIST
,
231 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
232 N_("Common additional C++ compiler flags for all targets in this group.")},
233 AM_TOKEN__CXXFLAGS
, 0, "AM_CXXFLAGS",
234 AM_PROPERTY_IN_MAKEFILE
238 N_("Java compiler flags:"),
239 ANJUTA_PROJECT_PROPERTY_LIST
,
240 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
241 N_("Common additional Java compiler flags for all targets in this group.")},
242 AM_TOKEN__JAVACFLAGS
, 0, "AM_JAVAFLAGS",
243 AM_PROPERTY_IN_MAKEFILE
247 N_("Vala compiler flags:"),
248 ANJUTA_PROJECT_PROPERTY_LIST
,
249 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
250 N_("Common additional Vala compiler flags for all targets in this group.")},
251 AM_TOKEN__VALAFLAGS
, 0, "AM_VALAFLAGS",
252 AM_PROPERTY_IN_MAKEFILE
256 N_("Fortran compiler flags:"),
257 ANJUTA_PROJECT_PROPERTY_LIST
,
258 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
259 N_("Common additional Fortran compiler flags for all targets in this group.")},
260 AM_TOKEN__FCFLAGS
, 0, "AM_FCFLAGS",
261 AM_PROPERTY_IN_MAKEFILE
265 N_("Objective C compiler flags:"),
266 ANJUTA_PROJECT_PROPERTY_LIST
,
267 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
268 N_("Common additional Objective C compiler flags for all targets in this group.")},
269 AM_TOKEN__OBJCFLAGS
, 0, "AM_OBJCFLAGS",
270 AM_PROPERTY_IN_MAKEFILE
274 N_("Lex/Flex flags:"),
275 ANJUTA_PROJECT_PROPERTY_LIST
,
276 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
277 N_("Common additional Lex or Flex lexical analyser generator flags for all targets in this group.")},
278 AM_TOKEN__LFLAGS
, 0, "AM_LFLAGS",
279 AM_PROPERTY_IN_MAKEFILE
283 N_("Yacc/Bison flags:"),
284 ANJUTA_PROJECT_PROPERTY_LIST
,
285 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
286 N_("Common additional Yacc or Bison parser generator flags for all targets in this group.")},
287 AM_TOKEN__YFLAGS
, 0, "AM_YFLAGS",
288 AM_PROPERTY_IN_MAKEFILE
292 N_("Installation directories:"),
293 ANJUTA_PROJECT_PROPERTY_MAP
,
294 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
295 N_("List of custom installation directories used by targets in this group.")},
296 AM_TOKEN_DIR
, 0, NULL
,
297 AM_PROPERTY_IN_MAKEFILE
302 static GList
* AmpGroupNodePropertyList
= NULL
;
305 static AmpProperty AmpTargetNodeProperties
[] = {
308 N_("Do not install:"),
309 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
310 ANJUTA_PROJECT_PROPERTY_READ_ONLY
,
311 N_("Build but do not install the target."),
313 AM_TOKEN__PROGRAMS
, 3, NULL
,
314 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_DISABLE_FOLLOWING
318 N_("Installation directory:"),
319 ANJUTA_PROJECT_PROPERTY_STRING
,
320 ANJUTA_PROJECT_PROPERTY_READ_ONLY
,
321 N_("It has to be a standard directory or a custom one defined in group properties.")},
322 AM_TOKEN__PROGRAMS
, 6, "bin",
323 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_DIRECTORY
328 ANJUTA_PROJECT_PROPERTY_LIST
,
329 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
330 N_("Additional linker flags for this target.")},
331 AM_TOKEN_TARGET_LDFLAGS
, 0, "_LDFLAGS",
332 AM_PROPERTY_IN_MAKEFILE
336 N_("Additional libraries:"),
337 ANJUTA_PROJECT_PROPERTY_LIST
,
338 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
339 N_("Additional libraries for this target.")},
340 AM_TOKEN_TARGET_LIBADD
, 0, "_LIBADD",
341 AM_PROPERTY_IN_MAKEFILE
345 N_("Additional objects:"),
346 ANJUTA_PROJECT_PROPERTY_LIST
,
347 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
348 N_("Additional object files for this target.")},
349 AM_TOKEN_TARGET_LDADD
, 0, "_LDADD",
350 AM_PROPERTY_IN_MAKEFILE
354 N_("C preprocessor flags:"),
355 ANJUTA_PROJECT_PROPERTY_LIST
,
356 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
357 N_("Additional C preprocessor flags for this target.")},
358 AM_TOKEN_TARGET_CPPFLAGS
, 0, "_CPPFLAGS",
359 AM_PROPERTY_IN_MAKEFILE
363 N_("C compiler flags:"),
364 ANJUTA_PROJECT_PROPERTY_LIST
,
365 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
366 N_("Additional C compiler flags for this target.")},
367 AM_TOKEN_TARGET_CFLAGS
, 0, "_CFLAGS",
368 AM_PROPERTY_IN_MAKEFILE
372 N_("C++ compiler flags:"),
373 ANJUTA_PROJECT_PROPERTY_LIST
,
374 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
375 N_("Additional C++ compiler flags for this target.")},
376 AM_TOKEN_TARGET_CXXFLAGS
, 0, "_CXXFLAGS",
377 AM_PROPERTY_IN_MAKEFILE
381 N_("Java compiler flags:"),
382 ANJUTA_PROJECT_PROPERTY_LIST
,
383 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
384 N_("Additional Java compiler flags for this target.")},
385 AM_TOKEN_TARGET_JAVACFLAGS
, 0, "_JAVACFLAGS",
386 AM_PROPERTY_IN_MAKEFILE
390 N_("Vala compiler flags:"),
391 ANJUTA_PROJECT_PROPERTY_LIST
,
392 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
393 N_("Additional Vala compiler flags for this target.")},
394 AM_TOKEN_TARGET_VALAFLAGS
,0, "_VALAFLAGS",
395 AM_PROPERTY_IN_MAKEFILE
399 N_("Fortran compiler flags:"),
400 ANJUTA_PROJECT_PROPERTY_LIST
,
401 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
402 N_("Additional Fortran compiler flags for this target.")},
403 AM_TOKEN_TARGET_FCFLAGS
, 0, "_FCFLAGS",
404 AM_PROPERTY_IN_MAKEFILE
408 N_("Objective C compiler flags:"),
409 ANJUTA_PROJECT_PROPERTY_LIST
,
410 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
411 N_("Additional Objective C compiler flags for this target.")},
412 AM_TOKEN_TARGET_OBJCFLAGS
, 0, "_OBJCFLAGS",
413 AM_PROPERTY_IN_MAKEFILE
417 N_("Lex/Flex flags:"),
418 ANJUTA_PROJECT_PROPERTY_LIST
,
419 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
420 N_("Additional Lex or Flex lexical analyser generator flags for this target.")},
421 AM_TOKEN_TARGET_LFLAGS
, 0, "_LFLAGS",
422 AM_PROPERTY_IN_MAKEFILE
426 N_("Yacc/Bison flags:"),
427 ANJUTA_PROJECT_PROPERTY_LIST
,
428 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
429 N_("Additional Yacc or Bison parser generator flags for this target.")},
430 AM_TOKEN_TARGET_YFLAGS
, 0, "_YFLAGS",
431 AM_PROPERTY_IN_MAKEFILE
435 N_("Additional dependencies:"),
436 ANJUTA_PROJECT_PROPERTY_LIST
,
437 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
438 N_("Additional dependencies for this target.")},
439 AM_TOKEN_TARGET_DEPENDENCIES
, 0, "EXTRA_DIST",
440 AM_PROPERTY_IN_MAKEFILE
444 N_("Include in distribution:"),
445 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
446 ANJUTA_PROJECT_PROPERTY_READ_ONLY
,
447 N_("Include this target in the distributed package."),
449 AM_TOKEN__PROGRAMS
, 2, NULL
,
450 AM_PROPERTY_IN_MAKEFILE
454 N_("Build for check only:"),
455 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
456 ANJUTA_PROJECT_PROPERTY_READ_ONLY
,
457 N_("Build this target only when running automatic tests."),
459 AM_TOKEN__PROGRAMS
, 4, NULL
,
460 AM_PROPERTY_IN_MAKEFILE
464 N_("Do not use prefix:"),
465 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
466 ANJUTA_PROJECT_PROPERTY_READ_ONLY
,
467 N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. "),
469 AM_TOKEN__PROGRAMS
, 1, NULL
,
470 AM_PROPERTY_IN_MAKEFILE
474 N_("Keep target path:"),
475 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
476 ANJUTA_PROJECT_PROPERTY_READ_ONLY
,
477 N_("Keep relative target path for installing it. "
478 "By example if you have a program subdir/app installed in bin directory it will be installed in bin/subdir/app not in bin/app."),
480 AM_TOKEN__PROGRAMS
, 0, NULL
,
481 AM_PROPERTY_IN_MAKEFILE
486 static GList
* AmpTargetNodePropertyList
= NULL
;
489 static AmpProperty AmpProgramTargetProperties
[] = {
492 N_("Do not install:"),
493 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
494 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
495 N_("Build but do not install the target."),
497 AM_TOKEN__PROGRAMS
, 3, "noinst_",
498 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_DISABLE_FOLLOWING
502 N_("Installation directory:"),
503 ANJUTA_PROJECT_PROPERTY_STRING
,
504 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
505 N_("It has to be a standard directory or a custom one defined in group properties.")},
506 AM_TOKEN__PROGRAMS
, 6, "bin",
507 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_DIRECTORY
512 ANJUTA_PROJECT_PROPERTY_LIST
,
513 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
514 N_("Additional linker flags for this target.")},
515 AM_TOKEN_TARGET_LDFLAGS
, 0, "_LDFLAGS",
516 AM_PROPERTY_IN_MAKEFILE
521 ANJUTA_PROJECT_PROPERTY_LIST
,
522 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
523 N_("Additional libraries for this target.")},
524 AM_TOKEN_TARGET_LDADD
, 0, "_LDADD",
525 AM_PROPERTY_IN_MAKEFILE
529 N_("C preprocessor flags:"),
530 ANJUTA_PROJECT_PROPERTY_LIST
,
531 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
532 N_("Additional C preprocessor flags for this target.")},
533 AM_TOKEN_TARGET_CPPFLAGS
, 0, "_CPPFLAGS",
534 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
538 N_("C compiler flags:"),
539 ANJUTA_PROJECT_PROPERTY_LIST
,
540 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
541 N_("Additional C compiler flags for this target.")},
542 AM_TOKEN_TARGET_CFLAGS
, 0, "_CFLAGS",
543 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
547 N_("C++ compiler flags:"),
548 ANJUTA_PROJECT_PROPERTY_LIST
,
549 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
550 N_("Additional C++ compiler flags for this target.")},
551 AM_TOKEN_TARGET_CXXFLAGS
, 0, "_CXXFLAGS",
552 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
556 N_("Java compiler flags:"),
557 ANJUTA_PROJECT_PROPERTY_LIST
,
558 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
559 N_("Additional Java compiler flags for this target.")},
560 AM_TOKEN_TARGET_JAVACFLAGS
, 0, "_JAVACFLAGS",
561 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
565 N_("Vala compiler flags:"),
566 ANJUTA_PROJECT_PROPERTY_LIST
,
567 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
568 N_("Additional Vala compiler flags for this target.")},
569 AM_TOKEN_TARGET_VALAFLAGS
,0, "_VALAFLAGS",
570 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
574 N_("Fortran compiler flags:"),
575 ANJUTA_PROJECT_PROPERTY_LIST
,
576 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
577 N_("Additional Fortran compiler flags for this target.")},
578 AM_TOKEN_TARGET_FCFLAGS
, 0, "_FCFLAGS",
579 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
583 N_("Objective C compiler flags:"),
584 ANJUTA_PROJECT_PROPERTY_LIST
,
585 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
586 N_("Additional Objective C compiler flags for this target.")},
587 AM_TOKEN_TARGET_OBJCFLAGS
, 0, "_OBJCFLAGS",
588 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
592 N_("Lex/Flex flags:"),
593 ANJUTA_PROJECT_PROPERTY_LIST
,
594 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
595 N_("Additional Lex or Flex lexical analyser generator flags for this target.")},
596 AM_TOKEN_TARGET_LFLAGS
, 0, "_LFLAGS",
597 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
601 N_("Yacc/Bison flags:"),
602 ANJUTA_PROJECT_PROPERTY_LIST
,
603 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
604 N_("Additional Yacc or Bison parser generator flags for this target.")},
605 AM_TOKEN_TARGET_YFLAGS
, 0, "_YFLAGS",
606 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
610 N_("Additional dependencies:"),
611 ANJUTA_PROJECT_PROPERTY_LIST
,
612 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
613 N_("Additional dependencies for this target.")},
614 AM_TOKEN_TARGET_DEPENDENCIES
, 0, "EXTRA_DIST",
615 AM_PROPERTY_IN_MAKEFILE
619 N_("Include in distribution:"),
620 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
621 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
622 N_("Include this target in the distributed package."),
624 AM_TOKEN__PROGRAMS
, 2, "nodist_",
625 AM_PROPERTY_IN_MAKEFILE
629 N_("Build for check only:"),
630 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
631 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
632 N_("Build this target only when running automatic tests."),
634 AM_TOKEN__PROGRAMS
, 4, "check_",
635 AM_PROPERTY_IN_MAKEFILE
639 N_("Do not use prefix:"),
640 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
641 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
642 N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. "),
644 AM_TOKEN__PROGRAMS
, 1, "notrans_",
645 AM_PROPERTY_IN_MAKEFILE
649 N_("Keep target path:"),
650 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
651 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
652 N_("Keep relative target path for installing it. "
653 "By example if you have a program subdir/app installed in bin directory it will be installed in bin/subdir/app not in bin/app."),
655 AM_TOKEN__PROGRAMS
, 0, "nobase_",
656 AM_PROPERTY_IN_MAKEFILE
661 static GList
* AmpProgramTargetPropertyList
= NULL
;
664 static AmpProperty AmpLibraryTargetProperties
[] = {
667 N_("Do not install:"),
668 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
669 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
670 N_("Build but do not install the target."),
672 AM_TOKEN__PROGRAMS
, 3, "noinst_",
673 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_DISABLE_FOLLOWING
677 N_("Installation directory:"),
678 ANJUTA_PROJECT_PROPERTY_STRING
,
679 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
680 N_("It has to be a standard directory or a custom one defined in group properties.")},
681 AM_TOKEN__PROGRAMS
, 6, "lib",
682 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_DIRECTORY
687 ANJUTA_PROJECT_PROPERTY_LIST
,
688 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
689 N_("Additional linker flags for this target.")},
690 AM_TOKEN_TARGET_LDFLAGS
, 0, "_LDFLAGS",
691 AM_PROPERTY_IN_MAKEFILE
696 ANJUTA_PROJECT_PROPERTY_LIST
,
697 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
698 N_("Additional libraries for this target.")},
699 AM_TOKEN_TARGET_LIBADD
, 0, "_LIBADD",
700 AM_PROPERTY_IN_MAKEFILE
704 N_("C preprocessor flags:"),
705 ANJUTA_PROJECT_PROPERTY_LIST
,
706 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
707 N_("Additional C preprocessor flags for this target.")},
708 AM_TOKEN_TARGET_CPPFLAGS
, 0, "_CPPFLAGS",
709 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
713 N_("C compiler flags:"),
714 ANJUTA_PROJECT_PROPERTY_LIST
,
715 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
716 N_("Additional C compiler flags for this target.")},
717 AM_TOKEN_TARGET_CFLAGS
, 0, "_CFLAGS",
718 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
722 N_("C++ compiler flags:"),
723 ANJUTA_PROJECT_PROPERTY_LIST
,
724 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
725 N_("Additional C++ compiler flags for this target.")},
726 AM_TOKEN_TARGET_CXXFLAGS
, 0, "_CXXFLAGS",
727 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
731 N_("Java compiler flags:"),
732 ANJUTA_PROJECT_PROPERTY_LIST
,
733 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
734 N_("Additional Java compiler flags for this target.")},
735 AM_TOKEN_TARGET_JAVACFLAGS
, 0, "_JAVACFLAGS",
736 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
740 N_("Vala compiler flags:"),
741 ANJUTA_PROJECT_PROPERTY_LIST
,
742 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
743 N_("Additional Vala compiler flags for this target.")},
744 AM_TOKEN_TARGET_VALAFLAGS
,0, "_VALAFLAGS",
745 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
749 N_("Fortran compiler flags:"),
750 ANJUTA_PROJECT_PROPERTY_LIST
,
751 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
752 N_("Additional Fortran compiler flags for this target.")},
753 AM_TOKEN_TARGET_FCFLAGS
, 0, "_FCFLAGS",
754 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
758 N_("Objective C compiler flags:"),
759 ANJUTA_PROJECT_PROPERTY_LIST
,
760 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
761 N_("Additional Objective C compiler flags for this target.")},
762 AM_TOKEN_TARGET_OBJCFLAGS
, 0, "_OBJCFLAGS",
763 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
767 N_("Lex/Flex flags:"),
768 ANJUTA_PROJECT_PROPERTY_LIST
,
769 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
770 N_("Additional Lex or Flex lexical analyser generator flags for this target.")},
771 AM_TOKEN_TARGET_LFLAGS
, 0, "_LFLAGS",
772 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
776 N_("Yacc/Bison flags:"),
777 ANJUTA_PROJECT_PROPERTY_LIST
,
778 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
779 N_("Additional Yacc or Bison parser generator flags for this target.")},
780 AM_TOKEN_TARGET_YFLAGS
, 0, "_YFLAGS",
781 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_COMPILATION_FLAG
785 N_("Additional dependencies:"),
786 ANJUTA_PROJECT_PROPERTY_LIST
,
787 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
788 N_("Additional dependencies for this target.")},
789 AM_TOKEN_TARGET_DEPENDENCIES
, 0, "EXTRA_DIST",
790 AM_PROPERTY_IN_MAKEFILE
794 N_("Include in distribution:"),
795 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
796 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
797 N_("Include this target in the distributed package."),
799 AM_TOKEN__PROGRAMS
, 2, "nodist_",
800 AM_PROPERTY_IN_MAKEFILE
804 N_("Build for check only:"),
805 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
806 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
807 N_("Build this target only when running automatic tests."),
809 AM_TOKEN__PROGRAMS
, 4, "check_",
810 AM_PROPERTY_IN_MAKEFILE
814 N_("Do not use prefix:"),
815 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
816 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
817 N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. "),
819 AM_TOKEN__PROGRAMS
, 1, "notrans_",
820 AM_PROPERTY_IN_MAKEFILE
824 N_("Keep target path:"),
825 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
826 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
827 N_("Keep relative target path for installing it. "
828 "By example if you have a program subdir/app installed in bin directory it will be installed in bin/subdir/app not in bin/app."),
830 AM_TOKEN__PROGRAMS
, 0, "nobase_",
831 AM_PROPERTY_IN_MAKEFILE
836 static GList
* AmpLibraryTargetPropertyList
= NULL
;
839 static AmpProperty AmpManTargetProperties
[] = {
842 N_("Additional dependencies:"),
843 ANJUTA_PROJECT_PROPERTY_LIST
,
844 ANJUTA_PROJECT_PROPERTY_READ_ONLY
,
845 N_("Additional dependencies for this target.")},
847 AM_PROPERTY_IN_MAKEFILE
851 N_("Do not use prefix:"),
852 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
853 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
854 N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. "),
856 AM_TOKEN__PROGRAMS
, 1, "notrans_",
857 AM_PROPERTY_IN_MAKEFILE
861 N_("Manual section:"),
862 ANJUTA_PROJECT_PROPERTY_STRING
,
863 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
864 N_("Section where are installed the man pages. Valid section names are the digits ‘0’ through ‘9’, and the letters ‘l’ and ‘n’. ")},
865 AM_TOKEN__PROGRAMS
, 5, "man_",
866 AM_PROPERTY_IN_MAKEFILE
871 static GList
* AmpManTargetPropertyList
= NULL
;
874 static AmpProperty AmpDataTargetProperties
[] = {
877 N_("Do not install:"),
878 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
879 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
880 N_("Build but do not install the target."),
882 AM_TOKEN__PROGRAMS
, 3, "noinst_",
883 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_DISABLE_FOLLOWING
887 N_("Installation directory:"),
888 ANJUTA_PROJECT_PROPERTY_STRING
,
889 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
890 N_("It has to be a standard directory or a custom one defined in group properties.")},
891 AM_TOKEN__PROGRAMS
, 6, "data",
892 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_DIRECTORY
896 N_("Additional dependencies:"),
897 ANJUTA_PROJECT_PROPERTY_LIST
,
898 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
899 N_("Additional dependencies for this target.")},
900 AM_TOKEN_TARGET_DEPENDENCIES
, 0, "EXTRA_DIST",
901 AM_PROPERTY_IN_MAKEFILE
905 N_("Include in distribution:"),
906 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
907 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
908 N_("Include this target in the distributed package."),
910 AM_TOKEN__PROGRAMS
, 2, "nodist_",
911 AM_PROPERTY_IN_MAKEFILE
915 N_("Build for check only:"),
916 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
917 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
918 N_("Build this target only when running automatic tests."),
920 AM_TOKEN__PROGRAMS
, 4, "check_",
921 AM_PROPERTY_IN_MAKEFILE
925 N_("Do not use prefix:"),
926 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
927 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
928 N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. "),
930 AM_TOKEN__PROGRAMS
, 1, "notrans_",
931 AM_PROPERTY_IN_MAKEFILE
935 N_("Keep target path:"),
936 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
937 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
938 N_("Keep relative target path for installing it. "
939 "By example if you have a program subdir/app installed in bin directory it will be installed in bin/subdir/app not in bin/app."),
941 AM_TOKEN__PROGRAMS
, 0, "nobase_",
942 AM_PROPERTY_IN_MAKEFILE
947 static GList
* AmpDataTargetPropertyList
= NULL
;
950 static AmpProperty AmpScriptTargetProperties
[] = {
953 N_("Do not install:"),
954 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
955 ANJUTA_PROJECT_PROPERTY_READ_ONLY
,
956 N_("Build but do not install the target.")},
957 AM_TOKEN__PROGRAMS
, 3, "noinst_",
958 AM_PROPERTY_IN_MAKEFILE
| AM_PROPERTY_DISABLE_FOLLOWING
962 N_("Installation directory:"),
963 ANJUTA_PROJECT_PROPERTY_STRING
,
964 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
965 N_("It has to be a standard directory or a custom one defined in group properties.")},
966 AM_TOKEN__PROGRAMS
, 6, "bin",
967 AM_PROPERTY_IN_MAKEFILE
971 N_("Additional dependencies:"),
972 ANJUTA_PROJECT_PROPERTY_LIST
,
973 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
974 N_("Additional dependencies for this target.")},
975 AM_TOKEN_TARGET_DEPENDENCIES
, 0, "EXTRA_DIST",
976 AM_PROPERTY_IN_MAKEFILE
980 N_("Include in distribution:"),
981 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
982 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
983 N_("Include this target in the distributed package.")},
984 AM_TOKEN__PROGRAMS
, 2, "nodist_",
985 AM_PROPERTY_IN_MAKEFILE
989 N_("Build for check only:"),
990 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
991 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
992 N_("Build this target only when running automatic tests.")},
993 AM_TOKEN__PROGRAMS
, 4, "check_",
994 AM_PROPERTY_IN_MAKEFILE
998 N_("Do not use prefix:"),
999 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
1000 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
1001 N_("Do not rename the target with an optional prefix, used to avoid overwritting system program. ")},
1002 AM_TOKEN__PROGRAMS
, 1, "notrans_",
1003 AM_PROPERTY_IN_MAKEFILE
1007 N_("Keep target path:"),
1008 ANJUTA_PROJECT_PROPERTY_BOOLEAN
,
1009 ANJUTA_PROJECT_PROPERTY_READ_WRITE
,
1010 N_("Keep relative target path for installing it. "
1011 "By example if you have a program subdir/app installed in bin directory it will be installed in bin/subdir/app not in bin/app.")},
1012 AM_TOKEN__PROGRAMS
, 0, "nobase_",
1013 AM_PROPERTY_IN_MAKEFILE
1018 static GList
* AmpScriptTargetPropertyList
= NULL
;
1022 *---------------------------------------------------------------------------*/
1024 /* Private functions
1025 *---------------------------------------------------------------------------*/
1028 amp_create_property_list (GList
**list
, AmpProperty
*properties
)
1033 AmpProperty
*link
= NULL
;
1035 for (prop
= properties
; prop
->base
.name
!= NULL
; prop
++)
1038 *list
= g_list_prepend (*list
, prop
);
1039 link
= prop
->flags
& AM_PROPERTY_DISABLE_FOLLOWING
? prop
: NULL
;
1041 *list
= g_list_reverse (*list
);
1048 *---------------------------------------------------------------------------*/
1051 /* Properties objects
1052 *---------------------------------------------------------------------------*/
1054 AnjutaProjectProperty
*
1055 amp_property_new (const gchar
*name
, AnjutaTokenType type
, gint position
, const gchar
*value
, AnjutaToken
*token
)
1059 prop
= g_slice_new0(AmpProperty
);
1060 prop
->base
.name
= g_strdup (name
);
1061 prop
->base
.value
= g_strdup (value
);
1062 prop
->token
= token
;
1063 prop
->token_type
= type
;
1064 prop
->position
= position
;
1066 return (AnjutaProjectProperty
*)prop
;
1070 amp_property_free (AnjutaProjectProperty
*prop
)
1072 if (prop
->native
== NULL
) return;
1074 if ((prop
->name
!= NULL
) && (prop
->name
!= prop
->native
->name
))
1076 g_free (prop
->name
);
1078 if ((prop
->value
!= NULL
) && (prop
->value
!= prop
->native
->value
))
1080 g_free (prop
->value
);
1082 g_slice_free (AmpProperty
, (AmpProperty
*)prop
);
1085 /* Set property list
1086 *---------------------------------------------------------------------------*/
1089 amp_node_property_load (AnjutaProjectNode
*node
, gint token_type
, gint position
, const gchar
*value
, AnjutaToken
*token
)
1092 gboolean set
= FALSE
;
1094 for (item
= anjuta_project_node_get_native_properties (node
); item
!= NULL
; item
= g_list_next (item
))
1096 AmpProperty
*prop
= (AmpProperty
*)item
->data
;
1098 if ((prop
->token_type
== token_type
) && (prop
->position
== position
))
1100 AnjutaProjectProperty
*new_prop
;
1102 new_prop
= anjuta_project_node_get_property (node
, (AnjutaProjectProperty
*)prop
);
1103 if (new_prop
->native
== NULL
)
1105 new_prop
= anjuta_project_node_insert_property (node
, new_prop
, amp_property_new (NULL
, token_type
, position
, NULL
, token
));
1108 if ((new_prop
->value
!= NULL
) && (new_prop
->value
!= prop
->base
.value
)) g_free (new_prop
->value
);
1109 new_prop
->value
= g_strdup (value
);
1118 amp_node_property_add (AnjutaProjectNode
*node
, AnjutaProjectProperty
*new_prop
)
1121 gboolean set
= FALSE
;
1123 for (item
= anjuta_project_node_get_native_properties (node
); item
!= NULL
; item
= g_list_next (item
))
1125 AmpProperty
*prop
= (AmpProperty
*)item
->data
;
1129 if ((prop
->token_type
== ((AmpProperty
*)new_prop
)->token_type
) && (prop
->position
== ((AmpProperty
*)new_prop
)->position
))
1131 if (prop
->base
.type
!= ANJUTA_PROJECT_PROPERTY_MAP
)
1133 /* Replace property */
1134 AnjutaProjectProperty
*old_prop
;
1136 old_prop
= anjuta_project_node_remove_property (node
, (AnjutaProjectProperty
*)prop
);
1137 if (old_prop
!= NULL
)
1139 amp_property_free (old_prop
);
1142 anjuta_project_node_insert_property (node
, (AnjutaProjectProperty
*)prop
, new_prop
);
1144 switch (prop
->base
.type
)
1146 case ANJUTA_PROJECT_PROPERTY_LIST
:
1147 /* Re-evaluate token to remove useless space between item */
1149 list
= g_string_new (new_prop
->value
);
1150 g_string_assign (list
, "");
1151 for (arg
= anjuta_token_first_word (((AmpProperty
*)new_prop
)->token
); arg
!= NULL
; arg
= anjuta_token_next_word (arg
))
1153 gchar
*value
= anjuta_token_evaluate (arg
);
1157 if (list
->len
!= 0) g_string_append_c (list
, ' ');
1158 g_string_append (list
, value
);
1161 if (new_prop
->value
!= prop
->base
.value
) g_free (new_prop
->value
);
1162 new_prop
->value
= g_string_free (list
, FALSE
);
1164 case ANJUTA_PROJECT_PROPERTY_MAP
:
1165 case ANJUTA_PROJECT_PROPERTY_STRING
:
1166 /* Strip leading and trailing space */
1167 if (new_prop
->value
!= prop
->base
.value
)
1169 new_prop
->value
= g_strstrip (new_prop
->value
);
1181 if (!set
) amp_property_free (new_prop
);
1186 AnjutaProjectProperty
*
1187 amp_node_property_set (AnjutaProjectNode
*node
, AnjutaProjectProperty
*prop
, const gchar
* value
)
1189 AnjutaProjectProperty
*new_prop
;
1193 if ((value
!= NULL
) && (prop
->type
== ANJUTA_PROJECT_PROPERTY_MAP
))
1195 name
= strchr (value
, '=');
1198 gsize len
= name
- value
;
1200 name
= g_strndup (value
, len
);
1209 new_prop
= anjuta_project_node_get_map_property (node
, prop
, name
);
1210 if (new_prop
!= NULL
)
1212 if (new_prop
->native
!= NULL
)
1214 /* Custom property already exist, replace value */
1215 if ((new_prop
->value
!= NULL
) && (new_prop
->value
!= new_prop
->native
->value
)) g_free (new_prop
->value
);
1216 new_prop
->value
= g_strdup (value
);
1220 /* Add new custom property */
1221 new_prop
= amp_property_new (name
, ((AmpProperty
*)new_prop
)->token_type
, ((AmpProperty
*)prop
)->position
, value
, NULL
);
1222 anjuta_project_node_insert_property (node
, prop
, new_prop
);
1230 AnjutaProjectProperty
*
1231 amp_node_get_property_from_token (AnjutaProjectNode
*node
, gint token
, gint pos
)
1235 for (item
= anjuta_project_node_get_native_properties (node
); item
!= NULL
; item
= g_list_next (item
))
1237 AmpProperty
*prop
= (AmpProperty
*)item
->data
;
1239 if ((prop
->token_type
== token
) && (prop
->position
== pos
))
1241 return anjuta_project_node_get_property (node
, (AnjutaProjectProperty
*)prop
);
1250 /* Modify flags value
1251 *---------------------------------------------------------------------------*/
1253 static const gchar
*
1254 am_node_property_find_flags (AnjutaProjectProperty
*prop
, const gchar
*value
, gsize len
)
1258 g_return_val_if_fail (prop
!= NULL
, NULL
);
1260 for (found
= prop
->value
; found
!= NULL
;)
1262 found
= strstr (found
, value
);
1265 /* Check that flags is alone */
1266 if (((found
== prop
->value
) || isspace (*(found
- 1))) &&
1267 ((*(found
+ len
) == '\0') || isspace (*(found
+ len
))))
1279 amp_node_property_has_flags (AnjutaProjectNode
*node
, AnjutaProjectProperty
*prop
, const gchar
*value
)
1281 return am_node_property_find_flags (prop
, value
, strlen (value
)) != NULL
? TRUE
: FALSE
;
1284 AnjutaProjectProperty
*
1285 amp_node_property_remove_flags (AnjutaProjectNode
*node
, AnjutaProjectProperty
*prop
, const gchar
*value
)
1287 AnjutaProjectProperty
*new_prop
= NULL
;
1289 gsize len
= strlen (value
);
1291 found
= am_node_property_find_flags (prop
, value
, len
);
1297 if (found
== prop
->value
)
1299 while (isspace (*(found
+ len
))) len
++;
1301 else if (*(found
+ len
) == '\0')
1303 while ((found
!= prop
->value
) && isspace(*(found
- 1)))
1311 while (isspace (*(found
+ len
))) len
++;
1314 new_len
= strlen (prop
->value
) - len
;
1318 new_prop
= amp_node_property_set (node
, prop
, NULL
);
1324 new_value
= g_new(gchar
, new_len
+ 1);
1326 if (found
!= prop
->value
) memcpy (new_value
, prop
->value
, found
- prop
->value
);
1327 memcpy (new_value
+ (found
- prop
->value
), found
+ len
, new_len
+ 1 - (found
- prop
->value
));
1328 new_prop
= amp_node_property_set (node
, prop
, new_value
);
1336 AnjutaProjectProperty
*
1337 amp_node_property_add_flags (AnjutaProjectNode
*node
, AnjutaProjectProperty
*prop
, const gchar
*value
)
1339 AnjutaProjectProperty
*new_prop
;
1341 if (prop
->value
== NULL
)
1343 new_prop
= amp_node_property_set (node
, prop
, value
);
1349 new_value
= g_strconcat (prop
->value
, " ", value
, NULL
);
1350 new_prop
= amp_node_property_set (node
, prop
, new_value
);
1359 /* Get property list
1360 *---------------------------------------------------------------------------*/
1363 amp_get_project_property_list (void)
1365 return amp_create_property_list (&AmpProjectPropertyList
, AmpProjectProperties
);
1369 amp_get_group_property_list (void)
1371 return amp_create_property_list (&AmpGroupNodePropertyList
, AmpGroupNodeProperties
);
1375 amp_get_target_property_list (AnjutaProjectNodeType type
)
1377 switch (type
& ANJUTA_PROJECT_ID_MASK
)
1379 case ANJUTA_PROJECT_PROGRAM
:
1380 return amp_create_property_list (&AmpProgramTargetPropertyList
, AmpProgramTargetProperties
);
1381 case ANJUTA_PROJECT_SHAREDLIB
:
1382 case ANJUTA_PROJECT_STATICLIB
:
1383 return amp_create_property_list (&AmpLibraryTargetPropertyList
, AmpLibraryTargetProperties
);
1384 case ANJUTA_PROJECT_MAN
:
1385 return amp_create_property_list (&AmpManTargetPropertyList
, AmpManTargetProperties
);
1386 case ANJUTA_PROJECT_DATA
:
1387 return amp_create_property_list (&AmpDataTargetPropertyList
, AmpDataTargetProperties
);
1388 case ANJUTA_PROJECT_SCRIPT
:
1389 return amp_create_property_list (&AmpScriptTargetPropertyList
, AmpScriptTargetProperties
);
1391 return amp_create_property_list (&AmpTargetNodePropertyList
, AmpTargetNodeProperties
);
1396 amp_get_source_property_list (void)
1402 amp_get_module_property_list (void)
1408 amp_get_package_property_list (void)