root/branches/Dirk_RenderTraversalWork/Common/DefaultRules.mk

Revision 85, 28.3 kB (checked in by vossg, 2 years ago)

fixed : missing cptr mt code
fixed : compile problems (collada on without the correct path)

changed : improved vertex data handling
fixed : get_pointer overload (was to broad, initial fix allen)
added : transform handling start to work on texture support
added : collada loader (by far not complete)

  • Property svn:eol-style set to native
Line 
1
2 #########################################################################
3 # Build Rules
4 #########################################################################
5
6 .SUFFIXES:      .src $(OBJ_SUFFIX) .cpp .c .hpp .l .yy .tab.cpp .tab.h .s       \
7                         $(SO_SUFFIX) _moc.o _moc.cpp _qt.hpp .inl _as.s _ias.s .ins
8
9 cnvUnix2Win = "$(shell cygpath -w $(1))"
10
11 ifneq ($(IN_TEST_DIR),1)
12 STRIP_CURRENT_LIB_DEF=$(strip $(CURRENT_LIB_DEF))
13
14 ifneq ($(STRIP_CURRENT_LIB_DEF),)
15         LIB_CDEF = -D$(STRIP_CURRENT_LIB_DEF)
16 else
17         LIB_CDEF =
18 endif
19 else
20 LIB_CDEF =
21 endif
22
23 ifeq ($(OS_BASE), cygwin)
24 ifeq ($(OS_CMPLR),g++)
25 BD := $(OSGPOOL)/Source
26 else
27 BD     := $(shell cygpath -w $(OSGPOOL)/Source)
28 BD_DEP := $(OSGPOOL)/Source
29 endif
30 else
31 BD := $(OSGPOOL)/Source
32 endif
33
34 export BD
35 export BD_DEP
36
37 ifeq ($(OS_BASE), cygwin)
38 ifeq ($(OS_CMPLR),bcc)
39 $(OBJDIR)/%$(OBJ_SUFFIX): %.cpp
40         @echo using BD := $$BD
41         $(CC) $(CCFLAGS) $(CCLOCALFLAGS) $(COMPONLY_OPTION) $(INCL) \
42         $(LIB_CDEF) $(INC_OPTION)"$(OBJDIR)" $(INC_OPTION)"."           \
43         $(OBJ_OPTION)$(call cnvUnix2Win,$@) $(call cnvUnix2Win,$<)
44 $(OBJDIR)/%$(OBJ_SUFFIX): %.c
45         @echo using BD := $$BD
46         $(CC) $(CCFLAGS) $(CCLOCALFLAGS) $(COMPONLY_OPTION) $(INCL) \
47         $(LIB_CDEF) $(INC_OPTION)"$(OBJDIR)" $(INC_OPTION)"."           \
48          $(OBJ_OPTION) $(call cnvUnix2Win,$@) $(call cnvUnix2Win,$<)
49 else
50 ifeq ($(OS_CMPLR),g++)
51 $(OBJDIR)/%$(OBJ_SUFFIX): %.cpp
52         @echo using BD := $$BD
53         $(CC) $(CCFLAGS) $(CCLOCALFLAGS) $(COMPONLY_OPTION) $(INCL) \
54         $(LIB_CDEF) $(INC_OPTION)$(OBJDIR) $(INC_OPTION).                       \
55          $(OBJ_OPTION) $@ $< $($(PROJ)SODEF)
56 $(OBJDIR)/%$(OBJ_SUFFIX): %.c
57         @echo using BD := $$BD
58         $(CC) $(CCFLAGS) $(CCLOCALFLAGS) $(COMPONLY_OPTION) $(INCL) \
59         $(LIB_CDEF) $(INC_OPTION)$(OBJDIR) $(INC_OPTION).                       \
60         $(OBJ_OPTION) $@ $< $($(PROJ)SODEF)
61 else
62 $(OBJDIR)/%$(OBJ_SUFFIX): %.cpp
63         @echo using BD := $$BD
64         $(CC) $(CCFLAGS) $(CCLOCALFLAGS) $(COMPONLY_OPTION) $(INCL) \
65         $(LIB_CDEF) $(INC_OPTION)"$(OBJDIR)" $(INC_OPTION)"."           \
66         $(OBJ_OPTION)"$(OBJDIR)\\" $(call cnvUnix2Win,$<)
67 $(OBJDIR)/%$(OBJ_SUFFIX): %.c
68         @echo using BD := $$BD
69         $(CC) $(CCFLAGS) $(CCLOCALFLAGS) $(COMPONLY_OPTION) $(INCL) \
70         $(LIB_CDEF) $(INC_OPTION)"$(OBJDIR)" $(INC_OPTION)"."           \
71          $(OBJ_OPTION)"$(OBJDIR)\\" $(call cnvUnix2Win,$<)
72 endif
73 endif
74 else
75 $(OBJDIR)/%$(OBJ_SUFFIX): %.cpp
76         @echo using BD = $$BD
77         $(CC) $(CCFLAGS) $(CCLOCALFLAGS) $(COMPONLY_OPTION) $(INCL) \
78         $(INC_OPTION)$(OBJDIR) $(INC_OPTION).                                           \
79          $(OBJ_OPTION) $@ $< $($(PROJ)SODEF)
80 $(OBJDIR)/%$(OBJ_SUFFIX): %.c
81         @echo using BD := $$BD
82         $(CC) $(CCFLAGS) $(CCLOCALFLAGS) $(COMPONLY_OPTION) $(INCL) \
83         $(INC_OPTION)$(OBJDIR) $(INC_OPTION).                                           \
84         $(OBJ_OPTION) $@ $< $($(PROJ)SODEF)
85 endif
86
87 ifeq ($(OS_BASE), cygwin)
88 ifeq ($(OS_CMPLR),g++)
89 $(OBJDIR)/%$(OBJ_SUFFIX): $(OBJDIR)/%.cpp
90         @echo using BD := $$BD
91         $(CC) $(CCFLAGS) $(CCLOCALFLAGS) $(COMPONLY_OPTION) $(INCL) \
92         $(LIB_CDEF) $(INC_OPTION)$(OBJDIR) $(INC_OPTION).                       \
93         $(OBJ_OPTION) $@ $< $($(PROJ)SODEF)
94 else
95 $(OBJDIR)/%$(OBJ_SUFFIX): $(OBJDIR)/%.cpp
96         @echo using BD := $$BD
97         $(CC) $(CCFLAGS) $(CCLOCALFLAGS) $(COMPONLY_OPTION) $(INCL) \
98         $(LIB_CDEF) $(INC_OPTION)"$(OBJDIR)" $(INC_OPTION)"."           \
99         $(OBJ_OPTION)"$(OBJDIR)\\" $<
100 endif
101 else
102 $(OBJDIR)/%$(OBJ_SUFFIX): $(OBJDIR)/%.cpp
103         @echo using BD := $$BD
104         $(CC) $(CCFLAGS) $(CCLOCALFLAGS) $(COMPONLY_OPTION) $(INCL) \
105         $(INC_OPTION)$(OBJDIR) $(INC_OPTION).                                           \
106         $(OBJ_OPTION) $@ $< $($(PROJ)SODEF)
107
108 $(OBJDIR)/%_ias.s: %.cpp
109         @echo using BD := $$BD
110         $(CC) $(CCFLAGS) $(CCLOCALFLAGS) $(ASONLY_OPTION) $(INCL) \
111         $(INC_OPTION)$(OBJDIR) $(INC_OPTION).                                           \
112         $(OBJ_OPTION) $@ $< $($(PROJ)SODEF)
113
114 $(OBJDIR)/%_as.s: $(OBJDIR)/%_ias.s
115         cat $< > $@
116 #       cat $< |                                                                                                                \
117 #       $(SED) -e 's/private_extern _getClassType/globl _getClassType/' \
118 #                  -e 's/private_extern _getType__CQ/globl _getType__CQ/'       \
119 #       > $@
120
121 $(OBJDIR)/%$(OBJ_SUFFIX): $(OBJDIR)/%.s
122         @echo using BD := $$BD
123         $(CC) $(CCFLAGS) $(CCLOCALFLAGS) $(COMPONLY_OPTION) $(INCL) \
124         $(INC_OPTION)$(OBJDIR) $(INC_OPTION).                                           \
125         $(OBJ_OPTION) $@ $< $($(PROJ)SODEF)
126 endif
127
128 ifeq ($(OS_BASE), cygwin)
129 $(EXEDIR)/%.exe: $(OBJDIR)/%.obj
130         $(LD) $< $(LD_FLAGS) $(LDLOCALFLAGS) \
131                      $(LIBPATHS) $(LIBS) /out:$@
132 else
133 $(EXEDIR)/%: $(OBJDIR)/%.o
134         $(LD) $(LD_OUTOPT)$(LD_OUTSPACE)$@ $(LD_FLAGS) $(LDLOCALFLAGS) \
135                 $(call cnvSubDirsUnix2Win,$<) $(LIBPATHS) $(LIBS) $(DEBUG_LIBS)
136 endif
137
138
139 define win_make_depend 
140         @echo "# Building dependency $(@F) from $(<F)"                         
141         @-rm -f $@;                                                                                                     
142         @echo '# Module dependencies' > $@                                                     
143         @$(CC) $(DEPEND_OPTION) $(call cnvUnix2Win,$<) $(CCFLAGS) $(INC_OPTION)"."\
144          $(CCLOCALFLAGS) $(COMPONLYFLAG) $(INCL) $(INC_OPTION)"$(OBJDIR)" |     \
145          $(SED) -e '/:.*\\Microsoft /d'                                 \
146                         -e '/:.*\\Intel\\/d'                                    \
147                         -e '/:.*\\stdlib/d'                                     \
148                         -e 's/\([A-Z]\):/\\cygdrive\\\1/'                               \
149                         -e 's/\\/\//g'                                                  \
150                         -e 's/ /\\ /g'                                                  \
151                         -e 's/:\\ /: /1'                                                \
152                         -e 's///'                                                               \
153                         -e '/:.*\.\.\/Base\//d'                                 \
154                         -e 's/^\([^\.]*\)$(OBJ_SUFFIX):/$(OBJDIR)\/\1$(DEP_SUFFIX) $(OBJDIR)\/\1$(OBJ_SUFFIX):/1'               \
155                         >> $@
156 endef
157
158 define linux_make_depend
159         @echo "# Building dependency $(@F) from $(<F)"
160         @-rm -f $@
161         @echo '# Module dependencies' > $@
162         @$(CC) $(DEPEND_OPTION) $< $(CCFLAGS) $(CCLOCALFLAGS) $(INCL)   \
163          $(INC_OPTION)$(OBJDIR) $(INC_OPTION).                                                  \
164          | $(SED) -e 's/^\([^:]*:\)/$(OBJDIR)\/\1/1'                                    \
165                           -e 's/\/usr\/include\/[^ ]*//g'                                               \
166                           -e 's/\/usr\/Software\/[^ ]*//g'                                              \
167                           -e 's/\/igd\/a4\/software\/[^ ]*//g'                                  \
168                           -e 's/.*\.\.\/Base\/[^ ]*//g'                                                 \
169                           -e 's/^\([^\.]*\)$(OBJ_SUFFIX):/\1$(DEP_SUFFIX) \1$(OBJ_SUFFIX):/1' \
170                         >> $@
171 endef
172
173 define solaris_make_depend
174         @echo "# Building dependency $(@F) from $(<F)"
175         @-rm -f $@
176         @echo '# Module dependencies' > $@
177         @cpp $(DEPEND_OPTION) $< $(CCDEPFLAGS) $(CCLOCALFLAGS) $(INCL)  \
178          $(INC_OPTION)$(OBJDIR) $(INC_OPTION).                                                  \
179          | $(SED) -e 's/^\([^:]*:\)/$(OBJDIR)\/\1/1'                                    \
180                           -e 's/\/usr\/include\/[^ ]*//g'                                               \
181                           -e 's/\/usr\/local\/[^ ]*//g'                                                 \
182                           -e 's/\/usr\/Software\/[^ ]*//g'                                              \
183                           -e 's/.*\.\.\/Base\/[^ ]*//g'                                                 \
184                           -e 's/^\([^\.]*\)$(OBJ_SUFFIX):/\1$(DEP_SUFFIX) \1$(OBJ_SUFFIX):/1' \
185                         >> $@
186 endef
187
188 define hpux_make_depend
189         @echo "# Building dependency $(@F) from $(<F)"
190         @-rm -f $@
191         @echo '# Module dependencies' > $@
192         @$(CC) $(DEPEND_OPTION) $< $(CCFLAGS) $(DEPFLAGS) $(CCLOCALFLAGS) \
193          $(INCL) $(INC_OPTION)$(OBJDIR) $(INC_OPTION).                                    \
194          | $(SED) -e 's/^\([^:]*:\)/$(OBJDIR)\/\1/1'                                      \
195                           -e 's/\/usr\/include\/[^ ]*//g'                                                 \
196                           -e 's/\/usr\/Software\/[^ ]*//g'                                                \
197                           -e 's/\/opt\/[^ ]*//g'                                                                  \
198                           -e 's/.*\.\.\/Base\/[^ ]*//g'                                                   \
199                           -e 's/^\([^\.]*\)$(OBJ_SUFFIX):/\1$(DEP_SUFFIX) \1$(OBJ_SUFFIX):/1' \
200                         >> $@
201 endef
202
203 define irix_make_depend
204         @echo "# Building dependency $(@F) from $(<F) "
205         @-rm -f $@
206         @echo '# Module dependencies' > $@
207         @makedepend -f- $(DEFINES) $(INCL) $(INC_OPTION)$(OBJDIR)               \
208                            $(INC_OPTION). $(INC_OPTION)/usr/include/CC                  \
209                            -- $(CCDEPFLAGS) -- $< 2> /dev/null                                                          \
210          | $(SED)       -e 's/^\/\([A-Za-z0-9\.-_]*\/\)*/$(OBJDIR)\//'          \
211                                 -e '/:.*\/stdlib\//d'                                                           \
212                                 -e '/:.*\.\.\/Base\//d'                                                         \
213                                 -e 's/^\([^\.]*\)$(OBJ_SUFFIX):/\1$(DEP_SUFFIX) \1$(OBJ_SUFFIX):/1' \
214                                 -e '/:[     ]*\/usr\/include\//d'                                       \
215                         >> $@
216 endef
217
218 define darwin_make_depend
219         @echo "# Building dependency $(@F) from $(<F)"
220         @-rm -f $@
221         @echo '# Module dependencies' > $@
222         @$(CC) $(DEPEND_OPTION) $< $(CCFLAGS) $(CCLOCALFLAGS) $(INCL)   \
223          $(INC_OPTION)$(OBJDIR) $(INC_OPTION).                                                  \
224          | $(SED) -e 's/^\([^:]*:\)/$(OBJDIR)\/\1/1'                                    \
225                           -e 's/\/usr\/include\/[^ ]*//g'                                               \
226                           -e 's/.*\.\.\/Base\/[^ ]*//g'                                                 \
227                           -e 's/^\([^\.]*\)$(OBJ_SUFFIX):/\1$(DEP_SUFFIX) \1$(OBJ_SUFFIX):/1' \
228                           -e 's/^[ \t]*\\/\\/g' \
229          >> $@
230 endef
231
232 define win_x11_make_depend
233         @echo "# Building dependency $(@F) from $(<F) "
234         @-rm -f $@
235         @echo '# Module dependencies' > $@
236         @makedepend -f- $(DEFINES) $(INCL_DEP) $(INC_OPTION)$(OBJDIR)            \
237                            $(INC_OPTION).                                                    \
238                            -- $(CCDEPFLAGS) -- $< 2> /dev/null                                       \
239          | $(SED)       -e 's/^\/\([A-Za-z0-9\.-_]*\/\)*/$(OBJDIR)\//'               \
240                                 -e '/:.*\/stdlib\//d'                                                                \
241                                 -e '/:.*\.\.\/Base\//d'                                                              \
242                                 -e '/:.*\.\.\\Base\//d'                                                              \
243                                 -e 's/^\([^\.]*\).o:/\1$(DEP_SUFFIX) \1$(OBJ_SUFFIX):/1' \
244                                 -e '/:[     ]*\/usr\/include\//d'                                            \
245                         >> $@
246 endef
247
248 ifeq ($(OS_BASE), cygwin)
249 $(OBJDIR)/%$(DEP_SUFFIX): %.cpp
250 ifneq ($(OSGNODEPSREBUILD),1)
251         $(win_x11_make_depend)
252 else
253         @echo "# Skipping dependency $(@F) from $(<F) "
254 endif
255
256 $(OBJDIR)/%$(DEP_SUFFIX): $(OBJDIR)/%.cpp
257 ifneq ($(OSGNODEPSREBUILD),1)
258         $(win_x11_make_depend)
259 else
260         @echo "# Skipping dependency $(@F) from $(<F) "
261 endif
262
263 $(OBJDIR)/%$(DEP_SUFFIX): %.c
264 ifneq ($(OSGNODEPSREBUILD),1)
265         $(win_x11_make_depend)
266 else
267         @echo "# Skipping dependency $(@F) from $(<F) "
268 endif
269 endif
270
271 ifeq ($(OS_BASE), irix6.5)
272 $(OBJDIR)/%$(DEP_SUFFIX): %.cpp
273 ifneq ($(OSGNODEPSREBUILD),1)
274         $(irix_make_depend)
275 else
276         @echo "# Skipping dependency $(@F) from $(<F) "
277 endif
278
279 $(OBJDIR)/%$(DEP_SUFFIX): $(OBJDIR)/%.cpp
280 ifneq ($(OSGNODEPSREBUILD),1)
281         $(irix_make_depend)
282 else
283         @echo "# Skipping dependency $(@F) from $(<F) "
284 endif
285
286 $(OBJDIR)/%$(DEP_SUFFIX): %.c
287 ifneq ($(OSGNODEPSREBUILD),1)
288         $(irix_make_depend)
289 else
290         @echo "# Skipping dependency $(@F) from $(<F) "
291 endif
292 endif
293
294 ifeq ($(OS_BASE),solaris2.9)
295 $(OBJDIR)/%$(DEP_SUFFIX): %.cpp
296 ifneq ($(OSGNODEPSREBUILD),1)
297         $(solaris_make_depend)
298 else
299         @echo "# Skipping dependency $(@F) from $(<F) "
300 endif
301
302 $(OBJDIR)/%$(DEP_SUFFIX): $(OBJDIR)/%.cpp
303 ifneq ($(OSGNODEPSREBUILD),1)
304         $(solaris_make_depend)
305 else
306         @echo "# Skipping dependency $(@F) from $(<F) "
307 endif
308
309 $(OBJDIR)/%$(DEP_SUFFIX): %.c
310 ifneq ($(OSGNODEPSREBUILD),1)
311         $(solaris_make_depend)
312 else
313         @echo "# Skipping dependency $(@F) from $(<F) "
314 endif
315 endif
316
317 ifeq ($(OS_BASE), linux-gnu)
318 $(OBJDIR)/%$(DEP_SUFFIX): %.cpp
319 ifneq ($(OSGNODEPSREBUILD),1)
320         $(linux_make_depend)
321 else
322         @echo "# Skipping dependency $(@F) from $(<F) "
323 endif
324
325 $(OBJDIR)/%$(DEP_SUFFIX): $(OBJDIR)/%.cpp
326 ifneq ($(OSGNODEPSREBUILD),1)
327         $(linux_make_depend)
328 else
329         @echo "# Skipping dependency $(@F) from $(<F) "
330 endif
331
332 $(OBJDIR)/%$(DEP_SUFFIX): %.c
333 ifneq ($(OSGNODEPSREBUILD),1)
334         $(linux_make_depend)
335 else
336         @echo "# Skipping dependency $(@F) from $(<F) "
337 endif
338 endif
339
340 ifeq ($(OS_BASE), hpux11.00)
341 $(OBJDIR)/%$(DEP_SUFFIX): %.cpp
342 ifneq ($(OSGNODEPSREBUILD),1)
343         $(hpux_make_depend)
344 else
345         @echo "# Skipping dependency $(@F) from $(<F) "
346 endif
347
348 $(OBJDIR)/%$(DEP_SUFFIX): $(OBJDIR)/%.cpp
349 ifneq ($(OSGNODEPSREBUILD),1)
350         $(hpux_make_depend)
351 else
352         @echo "# Skipping dependency $(@F) from $(<F) "
353 endif
354
355 $(OBJDIR)/%$(DEP_SUFFIX): %.c
356 ifneq ($(OSGNODEPSREBUILD),1)
357         $(hpux_make_depend)
358 else
359         @echo "# Skipping dependency $(@F) from $(<F) "
360 endif
361 endif
362
363 ifeq ($(OS_BASE), darwin)
364 $(OBJDIR)/%$(DEP_SUFFIX): %.cpp
365 ifneq ($(OSGNODEPSREBUILD),1)
366         $(darwin_make_depend)
367 else
368         @echo "# Skipping dependency $(@F) from $(<F) "
369 endif
370
371 $(OBJDIR)/%$(DEP_SUFFIX): $(OBJDIR)/%.cpp
372 ifneq ($(OSGNODEPSREBUILD),1)
373         $(darwin_make_depend)
374 else
375         @echo "# Skipping dependency $(@F) from $(<F) "
376 endif
377
378 $(OBJDIR)/%$(DEP_SUFFIX): %.c
379 ifneq ($(OSGNODEPSREBUILD),1)
380         $(darwin_make_depend)
381 else
382         @echo "# Skipping dependency $(@F) from $(<F) "
383 endif
384 endif
385
386 ifeq ($(OS_BASE), cygwin)
387 $(OBJDIR)/%_qt_moc.cpp: %_qt.h
388         $(MOC) $(call cnvUnix2Win,$<) -i -o $@
389
390 $(OBJDIR)/%_qt_moc.cpp: %_qt.cpp
391         $(MOC) $(call cnvUnix2Win,$<) -i -o $@
392 else
393 $(OBJDIR)/%_qt_moc.cpp: %_qt.h
394         $(MOC) $< -i -o $@
395
396 $(OBJDIR)/%_qt_moc.cpp: %_qt.cpp
397         $(MOC) $< -i -o $@
398 endif
399
400 #########################################################################
401 # Automatic Targets Lib Toplevel
402 #########################################################################
403
404 ifeq ($(OS_BASE), cygwin)
405 SO_INIT_FLAGS =
406 else
407 ifeq ($(SO_NEEDS_INIT),1)
408 SO_INIT_FLAGS = #$(LINKER_INIT_FLAG) -Wl,osgInitSharedObject$(PACKAGE_NAME)
409 else
410 SO_INIT_FLAGS =
411 endif
412 endif
413
414 $(PROJ)SUBPRELINKPAR :=
415
416 ifeq ($(OS_BASE), irix6.5)
417 ifneq ($($(PROJ)SUBPARJOBS),)
418 ifneq ($($(PROJ)SUBPARJOBS),0)
419 $(PROJ)SUBPRELINKPAR = -J $($(PROJ)SUBPARJOBS)
420 endif
421 endif
422 endif
423
424 ifeq ($(OS_BASE), cygwin)
425 ifneq ($(SUB_SO_DEF),)
426 SO_DEF_FLAGS=-Def:$(SUB_SO_DEF)
427 else
428 SO_DEF_FLAGS=
429 endif
430 else
431 SO_DEF_FLAG=
432 endif
433
434 ifneq ($(SUB_SO),)
435
436 SubLib: $(LIBS_DEP) $(SUB_SO)
437         @echo "LASTDBG=$(DBG)" > .lastdbg
438
439 ifeq ($(OS_BASE), darwin)
440 STORE_SO_NAME := -install_name $(notdir $(SUB_SO))
441 else
442 STORE_SO_NAME :=
443 endif
444
445 $(SUB_SO): $(LIBS_DEP) $(LIB_QTTARGET_CPP) $(LIB_OBJECTS) $(SUB_SO_DEF)
446         $(LD_SHARED) $($(PROJ)SUBPRELINKPAR) $(LD_OUTOPT)$(LD_OUTSPACE)$(SUB_SO) \
447                 $(LIBPATHS) $(call cnvSubDirsUnix2Win,$(LIB_OBJECTS)) $(LIBS)            \
448                 $(SO_INIT_FLAGS) $(LD_FLAGS) $(SO_DEF_FLAGS) $(STORE_SO_NAME)
449 ifeq ($(OS_BASE),hpux11.00)
450         chatr +s enable $(SUB_SO)
451 endif
452
453 $(LIB_QT_TARGET)
454
455 ifneq ($(OSGNODEPS),1)
456 $(LIB_QTTARGET_DEPS): $(LIB_QTTARGET_CPP)
457 endif
458
459 endif
460
461 ifneq ($(SUB_LNK_LIB),)
462 SubLnkLib: $(SUB_LNK_LIB)
463         @echo "Done SubLib (LIB|$(SUB_LNK_LIB)"
464
465 $(SUB_LNK_LIB): $(LIB_QTTARGET_CPP) $(LIB_OBJECTS)
466         @-rm -f $(SUB_LNK_LIB)                                                                                 
467         $(LD_LNK) $($(PROJ)SUBPRELINKPAR)                                                               \
468                 $(LNK_LD_OUTOPT)$(LD_OUTSPACE)$(SUB_LNK_LIB)                            \
469                 $(call cnvSubDirsUnix2Win,$(LIB_OBJECTS))
470 ifneq ($(RANLIB),)
471         $(RANLIB) $(SUB_LNK_LIB)
472 endif
473 endif
474
475 ifeq ($(OS_BASE),darwin)
476 $(MACHACK_I_TARGETS)
477 $(MACHACK_TARGETS)
478 endif
479
480
481 #########################################################################
482 # Automatic Targets Test Toplevel
483 #########################################################################
484
485 Test: $(TEST_TARGETS_IN)
486         @echo Tests done 
487
488 TestOpt: $(TEST_TARGETS_IN)
489         @echo Tests done 
490
491 TestLnk: $(TEST_TARGETS_IN)
492         @echo Tests done 
493
494 $(TEST_TARGETS_IN):  $(LIB_TESTQTTARGET_CPP) $(TEST_TARGETS)
495         @for file in $@; do                \
496                 echo $$file;                   \
497                 rm -f $$file;                  \
498                 ln -s $(EXEDIR)/$$file $$file; \
499         done
500
501 $(TEST_TARGETS): $(TEST_OBJS) $(LIBS_DEP) $(TEST_DEPS
502
503 $(LIB_TESTQT_TARGET)
504
505 ifeq ($(IN_TEST_DIR),1)
506 $(LIB_TESTQTTARGET_DEPS): $(LIB_TESTQTTARGET_CPP)
507
508 ifeq ($(TEST_TARGETS_LIST),)
509 list: 
510         @echo "No tests available!"
511 else
512 list: 
513         @echo
514         @echo " available test cases :"
515         @echo " ======================"
516         @(for file in $(TEST_TARGETS_LIST); do  \
517                 echo "          $(MAKE) $$file"; \
518         done) | sort
519         @echo
520         @echo
521 endif
522
523 endif
524
525 #########################################################################
526 # Automatic Targets Flex
527 #########################################################################
528
529 ifneq ($(LIB_FLEXTARGET_CPP),)
530 $(OBJDIR)/%.lex.cpp: %.l
531         $(FLEX) -l -P$(call flex_int,$<) $<
532         cat lex.$(call flex_int,$<).c |                                                                 \
533                 sed -e 's/\(yy\)\(text_ptr\)/$(call flex_int,$<)\2/g'           \
534                 > $(OBJDIR)/$(call flex_ext,$<).lex.cpp
535         -rm lex.$(call flex_int,$<).c
536
537 $(LIB_FLEXTARGET_CPP) : $(LIB_FLEXSOURCES)
538
539 ifneq ($(OSGNODEPS),1)
540 $(LIB_FLEXTARGET_DEPS): $(LIB_FLEXTARGET_CPP)
541 endif
542
543 endif
544
545 ifeq ($(OS_BASE), cygwin)
546 FLEXLEXER_H_DEP := ../Base/FlexLexer.h
547
548 ../Base/FlexLexer.h: /usr/include/FlexLexer.h
549         cat /usr/include/FlexLexer.h |                                                                  \
550         sed -e 's/iostream.h/iostream/g'                                                                \
551                 -e 's/istream\*/\std::istream\*/g'                                                      \
552                 -e 's/ostream\*/\std::ostream\*/g'                                                      \
553                 -e 's/std::std::/std::/g'                                                               \
554         > ../Base/FlexLexer.h
555 else
556 FLEXLEXER_H_DEP :=
557 endif
558
559 define fix_lexer
560         cat lex.$(call flex_int,$<).cc |                                                                        \
561                 sed -e 's/\(yy\)\(text_ptr\)/$(call flex_int,$<)\2/g'                   \
562                         -e 's/\&cin/\&std::cin/g'                                                                       \
563                         -e 's/\&cout/\&std::cout/g'                                                                     \
564                         -e 's/cerr/std::cerr/g'                                                                         \
565                         -e 's/class istream;/#include <iosfwd>/g'                                       \
566                         -e 's/istream\*/\std::istream\*/g'                                                      \
567                         -e 's/ostream\*/\std::ostream\*/g'                                                      \
568                         -e 's/std::std::/std::/g'                                                               \
569                 > $(OBJDIR)/$(call flex_ext,$<).lex.cpp
570 endef
571
572 OSG_FIX_LEXER := 0
573
574 ifeq ($(OS_BASE),irix6.5)
575 OSG_FIX_LEXER := 1
576 endif
577
578 ifeq ($(OS_BASE), cygwin)
579 OSG_FIX_LEXER := 1
580 endif
581
582 ifeq ($(OS_BASE), solaris2.9)
583 OSG_FIX_LEXER := 1
584 endif
585
586 ifeq ($(OS_BASE), hpux11.00)
587 OSG_FIX_LEXER := 1
588 endif
589
590 ifeq ($(OS_BASE), darwin)
591 OSG_FIX_LEXER := 1
592 endif
593
594 ifeq ($(OS_BUILD_BASE), ia64-unknown-linux-gnu)
595 OSG_FIX_LEXER := 1
596 endif
597
598 ifneq ($(LIB_FLEXPPTARGET_CPP),)
599 $(OBJDIR)/%.lex.cpp: %.lpp $(FLEXLEXER_H_DEP)
600         $(FLEX) -+ -P$(call flex_int,$<) $<
601
602 ifeq ($(OSG_FIX_LEXER),1)
603         cat lex.$(call flex_int,$<).cc |                                                                        \
604                 sed -e 's/\(yy\)\(text_ptr\)/$(call flex_int,$<)\2/g'                   \
605                         -e 's/\&cin/\&std::cin/g'                                                                       \
606                         -e 's/\&cout/\&std::cout/g'                                                                     \
607                         -e 's/cerr/std::cerr/g'                                                                         \
608                         -e 's/class istream;/#include <iosfwd>/g'                                       \
609                         -e 's/istream\*/\std::istream\*/g'                                                      \
610                         -e 's/ostream\*/\std::ostream\*/g'                                                      \
611                         -e 's/std::std::/std::/g'                                                               \
612                 > $(OBJDIR)/$(call flex_ext,$<).lex.cpp
613 else
614         cat lex.$(call flex_int,$<).cc |                                                                \
615                 sed -e 's/\(yy\)\(text_ptr\)/$(call flex_int,$<)\2/g'           \
616                 > $(OBJDIR)/$(call flex_ext,$<).lex.cpp
617 endif
618
619         -rm lex.$(call flex_int,$<).cc
620
621 $(LIB_FLEXPPTARGET_CPP) : $(LIB_FLEXPPSOURCES)
622
623 ifneq ($(OSGNODEPS),1)
624 $(LIB_FLEXPPTARGET_DEPS): $(LIB_FLEXPPTARGET_CPP)
625 endif
626
627 endif
628
629 #########################################################################
630 # Automatic Targets Bison
631 #########################################################################
632
633 ifneq ($(LIB_BISONTARGET_CPP),)
634
635 $(OBJDIR)/%.tab.cpp: %.yy
636         $(BISON) -d -v -p$(call bison_int,$<) -b$(call bison_int,$<) $<
637         mv $(call bison_int,$<).tab.cc $(OBJDIR)/$(call bison_ext,$<).tab.cpp
638         mv $(call bison_int,$<).tab.hh           $(call bison_ext,$<).tab.h
639         mv $(call bison_int,$<).output $(OBJDIR)/$(call bison_ext,$<).output
640
641 %.tab.h: %.yy
642         $(BISON) -d -v -p$(call bison_int,$<) -b$(call bison_int,$<) $<
643         mv $(call bison_int,$<).tab.cc $(OBJDIR)/$(call bison_ext,$<).tab.cpp
644         mv $(call bison_int,$<).tab.hh           $(call bison_ext,$<).tab.h
645         mv $(call bison_int,$<).output $(OBJDIR)/$(call bison_ext,$<).output
646
647 $(LIB_BISONTARGET_CPP) : $(LIB_BISONSOURCES)
648 $(LIB_BISONTARGET_HPP) : $(LIB_BISONSOURCES)
649 $(LIB_BISONTARGET_OBJ) : $(LIB_BISONTARGET_HPP)
650
651 ifneq ($(OSGNODEPS),1)
652 $(LIB_BISONTARGET_DEPS): $(LIB_BISONTARGET_CPP)
653 endif
654
655
656 endif
657
658
659 #########################################################################
660 # Normal lib Targets
661 #########################################################################
662
663 ifneq ($(IN_TEST_DIR),1)
664 dbg: DBG := dbg
665 dbg: SubLib
666         @echo "LASTDBG=dbg" > .lastdbg
667
668 dbgLnk: DBG := dbglnk
669 dbgLnk: SubLnkLib
670         @echo "Done dbg (SubLibLnk)"
671
672 opt: DBG := opt
673 opt: SubLib
674         @echo "LASTDBG=dbg" > .lastdbg
675
676 optLnk: DBG := optlnk
677 optLnk: SubLnkLib
678         @echo "Done opt (SubLibLnk)"
679
680 else
681 dbg: Test
682         @echo "LASTDBG=dbg" > .lastdbg
683 opt: Test
684         @echo "LASTDBG=dbg" > .lastdbg
685
686 dbgLnk: TestLnk
687         @echo "LASTDBG=dbg" > .lastdbg
688
689 optLnk: TestLnk
690         @echo "LASTDBG=dbg" > .lastdbg
691
692 endif
693
694 #########################################################################
695 # lib.def
696 #########################################################################
697
698 ifneq ($(LIB_DEF_SRC),)
699
700 ifneq ($(LIB_HEADER_SRC),)
701
702 lib.$(DBG).def: $(LIB_DEF_SRC) $(LIB_HEADER_SRC)
703         cp  $(LIB_HEADER_SRC) ./lib.$(DBG).def
704         cat $(LIB_DEF_SRC) >> ./lib.$(DBG).def
705 else
706 lib.$(DBG).def:
707 endif
708
709 else
710
711 lib.$(DBG).def:
712
713 endif
714
715 #########################################################################
716 # depend
717 #########################################################################
718
719 getHeaderFiles     = \
720                                          $(wildcard $(1)/*.hpp)                 \
721                                          $(wildcard $(1)/*.h)
722
723 getProjHeaderFiles = $(foreach dir,$(1),$(call getHeaderFiles,$(dir))) \
724                                          $(wildcard ./*.hpp)                                                       \
725                                          $(wildcard ./*.h)
726
727 INSTALL_HEADER := $(call getProjHeaderFiles,$(LIB_ABSSOURCEDIRS))
728
729 getInlineFiles     = \
730                                          $(wildcard $(1)/*.inl)                                                         \
731                                          $(wildcard $(1)/*.ins)
732
733 getProjInlineFiles = $(foreach dir,$(1),$(call getInlineFiles,$(dir))) \
734                                          $(wildcard ./*.inl)                                                       \
735                                          $(wildcard ./*.ins)
736
737 INSTALL_INLINE := $(call getProjInlineFiles,$(LIB_ABSSOURCEDIRS))
738
739 #$(warning $(LIB_ABSSOURCEDIRS))
740 #$(warning $(INSTALL_HEADER))
741 #$(error   $(INSTALL_INLINE))
742
743 .PHONY: install install-includes install-includes_cp
744
745 INSTALL_EXISTS   := \
746         $(shell if test ! -d $(INSTALL_DIR); then echo "not"; fi  )
747 INSTALL_WRITABLE := \
748         $(shell if test ! -w $(INSTALL_DIR) ; t