Changes In Branch pure-c Through [ae8437b96b] Excluding Merge-Ins
This is equivalent to a diff from 992994189a to ae8437b96b
2020-03-25
| ||
00:24 | Integrate pure C version check-in: eebfe1f40f user: rkeene tags: trunk | |
2019-12-01
| ||
00:17 | Added the C file itself check-in: 20809b08ce user: rkeene tags: pure-c | |
00:16 | Started work on xvfs-create-c, a pure C version of the builder with no dependencies check-in: ae8437b96b user: rkeene tags: pure-c | |
2019-11-14
| ||
23:39 | Revert [ac58551e55], needs more work check-in: 992994189a user: rkeene tags: trunk | |
23:14 | Updated to use Tcl-computed mechanism for building shared objects check-in: ac58551e55 user: rkeene tags: trunk | |
Modified Makefile from [fa4437d0b1] to [b414b18e08].
1 2 3 4 5 6 7 8 9 10 11 | TCL_CONFIG_SH := /usr/lib64/tclConfig.sh XVFS_ROOT_MOUNTPOINT := //xvfs:/ CPPFLAGS := -DXVFS_ROOT_MOUNTPOINT='"$(XVFS_ROOT_MOUNTPOINT)"' -I. -DUSE_TCL_STUBS=1 -DXVFS_DEBUG $(shell . "${TCL_CONFIG_SH}" && echo "$${TCL_INCLUDE_SPEC}") $(XVFS_ADD_CPPFLAGS) CFLAGS := -fPIC -g3 -ggdb3 -Wall $(XVFS_ADD_CFLAGS) LDFLAGS := $(XVFS_ADD_LDFLAGS) LIBS := $(shell . "${TCL_CONFIG_SH}" && echo "$${TCL_STUB_LIB_SPEC}") TCLSH := tclsh LIB_SUFFIX := $(shell . "${TCL_CONFIG_SH}"; echo "$${TCL_SHLIB_SUFFIX:-.so}") all: example-standalone$(LIB_SUFFIX) example-client$(LIB_SUFFIX) example-flexible$(LIB_SUFFIX) xvfs$(LIB_SUFFIX) | | > > | > > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | TCL_CONFIG_SH := /usr/lib64/tclConfig.sh XVFS_ROOT_MOUNTPOINT := //xvfs:/ CPPFLAGS := -DXVFS_ROOT_MOUNTPOINT='"$(XVFS_ROOT_MOUNTPOINT)"' -I. -DUSE_TCL_STUBS=1 -DXVFS_DEBUG $(shell . "${TCL_CONFIG_SH}" && echo "$${TCL_INCLUDE_SPEC}") $(XVFS_ADD_CPPFLAGS) CFLAGS := -fPIC -g3 -ggdb3 -Wall $(XVFS_ADD_CFLAGS) LDFLAGS := $(XVFS_ADD_LDFLAGS) LIBS := $(shell . "${TCL_CONFIG_SH}" && echo "$${TCL_STUB_LIB_SPEC}") TCLSH := tclsh LIB_SUFFIX := $(shell . "${TCL_CONFIG_SH}"; echo "$${TCL_SHLIB_SUFFIX:-.so}") all: example-standalone$(LIB_SUFFIX) example-client$(LIB_SUFFIX) example-flexible$(LIB_SUFFIX) xvfs$(LIB_SUFFIX) example.c: $(shell find example -type f) $(shell find lib -type f) lib/xvfs/xvfs.c.rvt xvfs-create-c xvfs-create Makefile rm -f example.c.new.1 example.c.new.2 ./xvfs-create-c --directory example --name example > example.c.new.1 ./xvfs-create --directory example --name example > example.c.new.2 diff -u example.c.new.1 example.c.new.2 rm -f example.c.new.2 mv example.c.new.1 example.c example-standalone.o: example.c xvfs-core.h xvfs-core.c Makefile $(CC) $(CPPFLAGS) -DXVFS_MODE_STANDALONE $(CFLAGS) -o example-standalone.o -c example.c example-standalone$(LIB_SUFFIX): example-standalone.o Makefile $(CC) $(CFLAGS) $(LDFLAGS) -shared -o example-standalone$(LIB_SUFFIX) example-standalone.o $(LIBS) |
︙ | ︙ | |||
41 42 43 44 45 46 47 48 49 50 51 52 53 54 | # like lib/minirivet, xvfs-core.c, etc) version of "xvfs-create" xvfs-create-standalone: $(shell find lib -type f) xvfs-create xvfs-core.c xvfs-core.h lib/xvfs/xvfs.c.rvt Makefile rm -f xvfs-create-standalone.new xvfs-create-standalone ./xvfs-create --dump-tcl --remove-debug > xvfs-create-standalone.new chmod +x xvfs-create-standalone.new mv xvfs-create-standalone.new xvfs-create-standalone xvfs_random$(LIB_SUFFIX): $(shell find example -type f) $(shell find lib -type f) lib/xvfs/xvfs.c.rvt xvfs-create-random Makefile ./xvfs-create-random | $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -DXVFS_MODE_FLEXIBLE -x c - -shared -o xvfs_random$(LIB_SUFFIX) $(LIBS) xvfs_synthetic$(LIB_SUFFIX): $(shell find lib -type f) lib/xvfs/xvfs.c.rvt xvfs-create-synthetic Makefile ./xvfs-create-synthetic | $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -DXVFS_MODE_FLEXIBLE -x c - -shared -o xvfs_synthetic$(LIB_SUFFIX) $(LIBS) do-benchmark: | > > > > > > | 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | # like lib/minirivet, xvfs-core.c, etc) version of "xvfs-create" xvfs-create-standalone: $(shell find lib -type f) xvfs-create xvfs-core.c xvfs-core.h lib/xvfs/xvfs.c.rvt Makefile rm -f xvfs-create-standalone.new xvfs-create-standalone ./xvfs-create --dump-tcl --remove-debug > xvfs-create-standalone.new chmod +x xvfs-create-standalone.new mv xvfs-create-standalone.new xvfs-create-standalone xvfs-create-c: xvfs-create-c.o $(CC) $(CFLAGS) $(LDFLAGS) -o xvfs-create-c xvfs-create-c.o $(LIBS) xvfs-create-c.o: xvfs-create-c.c $(CC) $(CPPFLAGS) $(CFLAGS) -o xvfs-create-c.o -c xvfs-create-c.c xvfs_random$(LIB_SUFFIX): $(shell find example -type f) $(shell find lib -type f) lib/xvfs/xvfs.c.rvt xvfs-create-random Makefile ./xvfs-create-random | $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -DXVFS_MODE_FLEXIBLE -x c - -shared -o xvfs_random$(LIB_SUFFIX) $(LIBS) xvfs_synthetic$(LIB_SUFFIX): $(shell find lib -type f) lib/xvfs/xvfs.c.rvt xvfs-create-synthetic Makefile ./xvfs-create-synthetic | $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -DXVFS_MODE_FLEXIBLE -x c - -shared -o xvfs_synthetic$(LIB_SUFFIX) $(LIBS) do-benchmark: |
︙ | ︙ | |||
95 96 97 98 99 100 101 | ./profile-gperf gprof ./profile-gperf valgrind --tool=callgrind --callgrind-out-file=callgrind.out ./profile-bare 10 2 callgrind_annotate callgrind.out clean: rm -f xvfs-create-standalone.new xvfs-create-standalone | > | | 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | ./profile-gperf gprof ./profile-gperf valgrind --tool=callgrind --callgrind-out-file=callgrind.out ./profile-bare 10 2 callgrind_annotate callgrind.out clean: rm -f xvfs-create-standalone.new xvfs-create-standalone rm -f xvfs-create-c.o xvfs-create-c rm -f example.c example.c.new example.c.new.1 example.c.new.2 rm -f example-standalone$(LIB_SUFFIX) example-standalone.o rm -f example-client.o example-client$(LIB_SUFFIX) rm -f example-flexible.o example-flexible$(LIB_SUFFIX) rm -f xvfs.o xvfs$(LIB_SUFFIX) rm -f example-standalone.gcda example-standalone.gcno rm -f example-client.gcda example-client.gcno rm -f example-flexible.gcda example-flexible.gcno |
︙ | ︙ |
Modified lib/xvfs/xvfs.c.rvt from [ced159acac] to [becb8ac3f3].
1 2 | <? if {[info exists ::xvfs::xvfsCoreH]} { | > > > > > > > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <? # Care must be taken when editing this file as # it may be processed by either "xvfs-create" # which uses a full Tcl and Rivet parser # or by "xvfs-create-c" which uses a much # simpler one that only knows about printable # sections and ignores all Tcl sections if {[info exists ::xvfs::xvfsCoreH]} { ::minirivet::_emitOutput $::xvfs::xvfsCoreH } else { ?>#include <xvfs-core.h><? } ?> #include <sys/stat.h> #include <unistd.h> #include <string.h> #include <tcl.h> |
︙ | ︙ | |||
51 52 53 54 55 56 57 | } data; }; #endif <? package require xvfs | | | < | 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | } data; }; #endif <? package require xvfs set ::xvfs::fileInfoStruct [xvfs::main $::xvfs::argv] ?><?= $::xvfs::fileInfoStruct ?> static long xvfs_<?= $::xvfs::fsName ?>_nameToIndex(const char *path) { <? if {[llength $::xvfs::outputFiles] < 3} { set hashMode perfectHashFunction } else { set hashMode hashTable } |
︙ | ︙ |
Modified lib/xvfs/xvfs.tcl from [842e8c1c67] to [6afa223420].
1 2 3 4 5 6 7 8 9 | #! /usr/bin/env tclsh namespace eval ::xvfs {} namespace eval ::xvfs::callback {} set ::xvfs::_xvfsDir [file dirname [info script]] # Functions proc ::xvfs::_emitLine {line} { | < < < | < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #! /usr/bin/env tclsh namespace eval ::xvfs {} namespace eval ::xvfs::callback {} set ::xvfs::_xvfsDir [file dirname [info script]] # Functions proc ::xvfs::_emitLine {line} { lappend ::xvfs::_emitLine $line } proc ::xvfs::printHelp {channel {errors ""}} { if {[llength $errors] != 0} { foreach error $errors { puts $channel "error: $error" } |
︙ | ︙ | |||
278 279 280 281 282 283 284 285 286 287 288 289 290 291 | } ## 3. Start processing directory and producing initial output set ::xvfs::outputFiles [processDirectory $fsName $rootDirectory] set ::xvfs::fsName $fsName set ::xvfs::rootDirectory $rootDirectory } proc ::xvfs::run {args} { uplevel #0 { package require minirivet } set ::xvfs::argv $args ::minirivet::parse [file join $::xvfs::_xvfsDir xvfs.c.rvt] | > > > | 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 | } ## 3. Start processing directory and producing initial output set ::xvfs::outputFiles [processDirectory $fsName $rootDirectory] set ::xvfs::fsName $fsName set ::xvfs::rootDirectory $rootDirectory # Return the output return [join $::xvfs::_emitLine "\n"] } proc ::xvfs::run {args} { uplevel #0 { package require minirivet } set ::xvfs::argv $args ::minirivet::parse [file join $::xvfs::_xvfsDir xvfs.c.rvt] |
︙ | ︙ |