about summary refs log tree commit diff stats
path: root/translate_subx
blob: f52e964d235e4c8f95384ff56dadb450f1767c4b (plain) (blame)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/sh
# Translate SubX files to a bootable disk image.
#
# A couple of gotchas:
# * Many phases here have no error-checking. Perhaps I should use a
#   version of translate_subx_debug for baremetal.
# * Don't pass in numbered .subx files without translated .mu files. Our test
#   harness is in test.mu, and only Mu programs can run tests in baremetal.
#
# The top level is in general not as rigorous about avoiding dependency cycles
# as the lower-level tools in linux/

set -e

cat $*          |linux/braces                                   > a.braces

cat a.braces    |linux/calls                                    > a.calls

cat a.calls     |linux/sigils                                   > a.sigils

cat a.sigils    |linux/tests                                    > a.tests

# no assort since baremetal SubX doesn't have segments yet

cat a.tests     |linux/dquotes                                  > a.dquotes

cat a.dquotes   |linux/pack                                     > a.pack

cat a.pack      |linux/survey_baremetal   > labels
cat a.pack      |linux/labels_baremetal     labels              > a.survey

cat a.survey    |linux/hex                                      > a.bin

# Create code.img containing a.bin
dd if=/dev/zero of=code.img count=20160  # 20*16*63 512-byte sectors = almost 10MB
dd if=a.bin of=code.img conv=notrunc

if [ `stat --printf="%s" a.bin` -ge 387072 ]  # 12 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.subx)
then
  echo "a.bin won't all be loaded on boot"
  exit 1
fi

# Latter half of disk is for debug info.
dd if=labels of=code.img seek=10080 conv=notrunc  # keep this sync'd with abort.subx
if [ `stat --printf="%s" labels` -ge 524288 ]  # 4 reads * 256 sectors * 512 bytes per sector
then
  echo "labels won't all be loaded on abort"
  exit 1
fi

if [ `wc -l < labels` -gt 16384 ]  # 0x4000 stream capacity in abort.subx
then
  echo "abort will go into infinite regress"
  exit 1
fi
s="w"> src/xmpp/presence.c src/xmpp/stanza.c \ src/xmpp/stanza.h src/xmpp/message.h src/xmpp/iq.h src/xmpp/presence.h \ src/xmpp/capabilities.h src/xmpp/connection.h \ src/xmpp/roster.c src/xmpp/roster.h \ src/xmpp/bookmark.c src/xmpp/bookmark.h \ src/xmpp/form.c src/xmpp/form.h \ src/event/server_events.c src/event/server_events.h \ src/event/client_events.c src/event/client_events.h \ src/ui/ui.h src/ui/window.c src/ui/window.h src/ui/core.c \ src/ui/titlebar.c src/ui/statusbar.c src/ui/inputwin.c \ src/ui/titlebar.h src/ui/statusbar.h src/ui/inputwin.h \ src/ui/console.c src/ui/notifier.c \ src/ui/win_types.h \ src/window_list.c src/window_list.h \ src/ui/rosterwin.c src/ui/occupantswin.c \ src/ui/buffer.c src/ui/buffer.h \ src/ui/chatwin.c \ src/ui/mucwin.c \ src/ui/privwin.c \ src/ui/mucconfwin.c \ src/ui/xmlwin.c \ src/command/command.h src/command/command.c \ src/command/commands.h src/command/commands.c \ src/tools/parser.c \ src/tools/parser.h \ src/tools/p_sha1.h src/tools/p_sha1.c \ src/tools/autocomplete.c src/tools/autocomplete.h \ src/tools/tinyurl.c src/tools/tinyurl.h \ src/config/conflists.c src/config/conflists.h \ src/config/accounts.c src/config/accounts.h \ src/config/tlscerts.c src/config/tlscerts.h \ src/config/account.c src/config/account.h \ src/config/preferences.c src/config/preferences.h \ src/config/theme.c src/config/theme.h \ src/config/scripts.c src/config/scripts.h unittest_sources = \ src/contact.c src/contact.h src/common.c \ src/log.h src/profanity.c src/common.h \ src/profanity.h src/chat_session.c \ src/chat_session.h src/muc.c src/muc.h src/jid.h src/jid.c \ src/resource.c src/resource.h \ src/chat_state.h src/chat_state.c \ src/roster_list.c src/roster_list.h \ src/xmpp/xmpp.h src/xmpp/form.c \ src/ui/ui.h \ src/otr/otr.h \ src/pgp/gpg.h \ src/command/command.h src/command/command.c \ src/command/commands.h src/command/commands.c \ src/tools/parser.c \ src/tools/parser.h \ src/tools/p_sha1.h src/tools/p_sha1.c \ src/tools/autocomplete.c src/tools/autocomplete.h \ src/tools/tinyurl.c src/tools/tinyurl.h \ src/config/accounts.h \ src/config/account.c src/config/account.h \ src/config/tlscerts.c src/config/tlscerts.h \ src/config/preferences.c src/config/preferences.h \ src/config/theme.c src/config/theme.h \ src/config/scripts.c src/config/scripts.h \ src/config/conflists.c src/config/conflists.h \ src/window_list.c src/window_list.h \ src/event/server_events.c src/event/server_events.h \ src/event/client_events.c src/event/client_events.h \ tests/unittests/xmpp/stub_xmpp.c \ tests/unittests/ui/stub_ui.c \ tests/unittests/log/stub_log.c \ tests/unittests/config/stub_accounts.c \ tests/unittests/helpers.c tests/unittests/helpers.h \ tests/unittests/test_form.c tests/unittests/test_form.h \ tests/unittests/test_common.c tests/unittests/test_common.h \ tests/unittests/test_autocomplete.c tests/unittests/test_autocomplete.h \ tests/unittests/test_jid.c tests/unittests/test_jid.h \ tests/unittests/test_parser.c tests/unittests/test_parser.h \ tests/unittests/test_roster_list.c tests/unittests/test_roster_list.h \ tests/unittests/test_chat_session.c tests/unittests/test_chat_session.h \ tests/unittests/test_contact.c tests/unittests/test_contact.h \ tests/unittests/test_preferences.c tests/unittests/test_preferences.h \ tests/unittests/test_server_events.c tests/unittests/test_server_events.h \ tests/unittests/test_muc.c tests/unittests/test_muc.h \ tests/unittests/test_cmd_statuses.c tests/unittests/test_cmd_statuses.h \ tests/unittests/test_cmd_alias.c tests/unittests/test_cmd_alias.h \ tests/unittests/test_cmd_connect.c tests/unittests/test_cmd_connect.h \ tests/unittests/test_cmd_rooms.c tests/unittests/test_cmd_rooms.h \ tests/unittests/test_cmd_account.c tests/unittests/test_cmd_account.h \ tests/unittests/test_cmd_sub.c tests/unittests/test_cmd_sub.h \ tests/unittests/test_cmd_bookmark.c tests/unittests/test_cmd_bookmark.h \ tests/unittests/test_cmd_otr.c tests/unittests/test_cmd_otr.h \ tests/unittests/test_cmd_pgp.c tests/unittests/test_cmd_pgp.h \ tests/unittests/test_cmd_join.c tests/unittests/test_cmd_join.h \ tests/unittests/test_cmd_roster.c tests/unittests/test_cmd_roster.h \ tests/unittests/test_cmd_disconnect.c tests/unittests/test_cmd_disconnect.h \ tests/unittests/unittests.c functionaltest_sources = \ tests/functionaltests/proftest.c tests/functionaltests/proftest.h \ tests/functionaltests/test_connect.c tests/functionaltests/test_connect.h \ tests/functionaltests/test_ping.c tests/functionaltests/test_ping.h \ tests/functionaltests/test_rooms.c tests/functionaltests/test_rooms.h \ tests/functionaltests/test_presence.c tests/functionaltests/test_presence.h \ tests/functionaltests/test_message.c tests/functionaltests/test_message.h \ tests/functionaltests/test_chat_session.c tests/functionaltests/test_chat_session.h \ tests/functionaltests/test_carbons.c tests/functionaltests/test_carbons.h \ tests/functionaltests/test_receipts.c tests/functionaltests/test_receipts.h \ tests/functionaltests/test_roster.c tests/functionaltests/test_roster.h \ tests/functionaltests/test_software.c tests/functionaltests/test_software.h \ tests/functionaltests/test_muc.c tests/functionaltests/test_muc.h \ tests/functionaltests/functionaltests.c main_source = src/main.c git_include = src/gitversion.h pgp_sources = \ src/pgp/gpg.h src/pgp/gpg.c pgp_unittest_sources = \ tests/unittests/pgp/stub_gpg.c otr3_sources = \ src/otr/otrlib.h src/otr/otrlibv3.c src/otr/otr.h src/otr/otr.c otr4_sources = \ src/otr/otrlib.h src/otr/otrlibv4.c src/otr/otr.h src/otr/otr.c otr_unittest_sources = \ tests/unittests/otr/stub_otr.c themes_sources = themes/* script_sources = bootstrap.sh configure-debug install-all.sh man_sources = docs/profanity.1 if BUILD_PGP core_sources += $(pgp_sources) unittest_sources += $(pgp_unittest_sources) endif if BUILD_OTR unittest_sources += $(otr_unittest_sources) if BUILD_OTR3 core_sources += $(otr3_sources) endif if BUILD_OTR4 core_sources += $(otr4_sources) endif endif bin_PROGRAMS = profanity profanity_SOURCES = $(core_sources) $(main_source) if THEMES_INSTALL profanity_themesdir = @THEMES_PATH@ profanity_themes_DATA = $(themes_sources) endif if INCLUDE_GIT_VERSION BUILT_SOURCES = $(git_include) endif TESTS = tests/unittests/unittests check_PROGRAMS = tests/unittests/unittests tests_unittests_unittests_SOURCES = $(unittest_sources) tests_unittests_unittests_CFLAGS = -w tests_unittests_unittests_LDADD = -lcmocka if HAVE_STABBER if HAVE_EXPECT TESTS += tests/functionaltests/functionaltests check_PROGRAMS += tests/functionaltests/functionaltests tests_functionaltests_functionaltests_SOURCES = $(functionaltest_sources) tests_functionaltests_functionaltests_CFLAGS = -I/usr/include/tcl8.6 -I/usr/include/tcl8.5 tests_functionaltests_functionaltests_LDADD = -lcmocka -lstabber -lexpect -ltcl endif endif man_MANS = $(man_sources) EXTRA_DIST = $(man_sources) $(themes_sources) $(script_sources) profrc.example LICENSE.txt if INCLUDE_GIT_VERSION EXTRA_DIST += .git/HEAD .git/index $(git_include).in: .git/HEAD .git/index rm -f $@ echo "#ifndef PROF_GIT_BRANCH" >> $@ echo "#define PROF_GIT_BRANCH \"$(shell git rev-parse --symbolic-full-name --abbrev-ref HEAD)\"" >> $@ echo "#endif" >> $@ echo "#ifndef PROF_GIT_REVISION" >> $@ echo "#define PROF_GIT_REVISION \"$(shell git log --pretty=format:'%h' -n 1)\"" >> $@ echo "#endif" >> $@ # # Create $(git_include) atomically to catch possible race. The race can occur # when $(git_include) is generated in parallel with building of src/profanity.c. # So this hack allows to find and fix the problem earlier. # $(git_include): $(git_include).in cp $< $@ clean-local: rm -f $(git_include) $(git_include).in endif check-unit: tests/unittests/unittests tests/unittests/unittests