Follow-up Comment #5, bug #15757 (project make): tower% pstack 16636 16636: /home/normanw/sparc-SunOS-5.8/bin/make --warn-undefined-variables ever 0004bea4 target_environment (8b5b90, 2, 1, 0, 2f736800, 85698) + 1b4 00032704 start_job_command (2bb8ed8, 0, ffffffff, fffffff8, 0, 2bb8e09) + 664 00032af8 start_waiting_job (2bb8ed8, 0, ffffffff, fffffff8, 0, 2bb8f05) + c0 000334c4 new_job (8b5b90, 0, a, 1, 2bb8ed8, 96a40) + 80c 00021810 execute_file_commands (8b5b90, 745f0, 21d90, ff33c000, 4, 9e319) + f0 00046e7c remake_file (8b5b90, 9, 14, 0, 2f686f73, 0) + f4 00045914 update_file_1 (8b5b90, 8, 0, 0, 0, 1) + 192c 00043d10 update_file (8b5b90, 8, 0, 1, 8b5b90, 0) + 118 00044cf0 update_file_1 (2bba1b8, 0, d2cf8, 2baa640, 0, 1) + d08 00043d10 update_file (2bba1b8, 7, 1a, 1a, 2bba1b8, 0) + 118 00046274 check_dep (2bba1b8, 6, 0, 1, ffbfe4a8, ffbfdf30) + cc 00046878 check_dep (91c8c8, 5, 0, 1, ffbfe548, 0) + 6d0 00046878 check_dep (71c178, 4, 0, 1, ffbfe5fc, ff0000) + 6d0 00044958 update_file_1 (71c0f8, 3, 0, ad03e8, 0, 1) + 970 00043d10 update_file (71c0f8, 3, 26, 26, 71c0f8, 0) + 118 00046274 check_dep (71c0f8, 2, 0, 1, ffbfe7a8, 6bb2b0) + cc 00046878 check_dep (11be20, 1, 0, 1, ffbfe85c, ace1b9) + 6d0 00044958 update_file_1 (94818, 0, a14d28, 21d140, 0, 1) + 970 00043d10 update_file (94818, 0, ffbfe931, 2, 94818, 0) + 118 0004361c update_goal_chain (92ab0, 0, d702a0, 0, 0, ace1a0) + 204 00037b18 main (4, ffbff6d4, 9aaf0, 95478, 0, 0) + 2b58 0001f0e8 _start (0, 0, 0, 0, 0, 0) + 108
(dbx) print *file *file = { (*file).name = 0xb70ff0 "/bld/tower/normanw_9.1/share/host/gateways/src/.mkdir" (*file).hname = 0xb70ff0 "/bld/tower/normanw_9.1/share/host/gateways/src/.mkdir" (*file).vpath = (nil) (*file).deps = (nil) (*file).cmds = 0x96a40 command_flags = 0 (*file).stem = 0x2b83e38 "/bld/tower/normanw_9.1/share/host/gateways/src" (*file).also_make = (nil) last_mtime = 1ULL mtime_before_update = 0 (*file).prev = (nil) (*file).renamed = (nil) (*file).variables = 0x2b83778 (*file).pat_variables = (nil) (*file).parent = 0x71d450 (*file).double_colon = (nil) update_status = -1 command_state = cs_not_started precious = 0 low_resolution_time = 0 tried_implicit = 1U updating = 0 updated = 0 is_target = 1U cmd_target = 0 phony = 0 intermediate = 1U secondary = 0 dontcare = 0 ignore_vpath = 0 pat_searched = 1U considered = 1U } (dbx) print *file->variables *file->variables = { (*file->variables).next = 0x2bb9220 (*file->variables).set = 0x2b83710 } (dbx) print *file->variables->next *file->variables->next = { (*file->variables->next).next = 0x85698 (*file->variables->next).set = 0x2bb8aa0 } (dbx) print *file->variables->next->next *file->variables->next->next = { (*file->variables->next->next).next = 0x1dbed08 (*file->variables->next->next).set = 0x8aed8 } (dbx) print *file->variables->next->next->next *file->variables->next->next->next = { (*file->variables->next->next->next).next = 0x85698 (*file->variables->next->next->next).set = 0xacd9b8 } (dbx) print global_setlist global_setlist = { global_setlist.next = 0x1dbed08 global_setlist.set = 0x8aed8 } (dbx) print &global_setlist &global_setlist = 0x85698 (dbx) print current_variable_set_list current_variable_set_list = 0x85698 (dbx) print *current_variable_set_list *current_variable_set_list = { (*current_variable_set_list).next = 0x1dbed08 (*current_variable_set_list).set = 0x8aed8 } The target file is a dummy file used to force directory creation. I have a pattern rules something like: %/.mkdir: mkdir -p $(@D) && touch $(@) I use this technique for creating directories absolutely everywhere. The actual chain of dependencies looks like: everything: /bld/tower/normanw_9.1/sparc-SunOS-5.9/dyn_dbg/CONNECT_ROOT/FSSGateway/src/FSSGateway /bld/tower/normanw_9.1/sparc-SunOS-5.9/dyn_dbg/CONNECT_ROOT/FSSGateway/src/FSSGateway: -lhostgateways -lhostgateways: /bld/tower/normanw_9.1/sparc-SunOS-5.9/dyn_dbg/lib/libhostgateways.so /bld/tower/normanw_9.1/sparc-SunOS-5.9/dyn_dbg/host/gateways/src/manifest.o: host/gateways/src/manifest.cpp host/gateways/src/manifest.cpp: /bld/tower/normanw_9.1/share/host/gateways/src/.mkdir everything is a phony target to build everything in the tree. The -l target is another phony target which depends on the actual library file. There is a target specific variable defined on the library basically setting up its linker options. The library depends on the dot-o files which are platform specific. There are pattern specific variables set up to set compilation options at a source directory level. The manifest.cpp target is a generated file listing the versions to be built. It's built by a pattern rule looking something like: $(shr_root)/%/manifest.cpp: \ $(shr_root)/%/.mkdir Where $(shr_root) is the root for shared targets under the build tree (we build for different architectures with different variants, the shr_root contains platfrom independent targets). However, having said all that I don't think this particular combination of dependencies is special since every source directory has a manifest.cpp file defined in exactly the same way, and make happily get through building about half the source before getting stuck. I could try just building the directory which is causing the problems. _______________________________________________________ Reply to this item at: <http://savannah.gnu.org/bugs/?func=detailitem&item_id=15757> _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ _______________________________________________ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make