Artifact
41a049468c8155433e37e656ba5bae063a000768b1d627025f277732c4e7c4a4 :
File
tools/emcc.sh.in
— part of check-in
[a3843d41]
at
2025-01-31 12:13:54
on branch trunk
— Bring the configure/build Emscripten support in sync with its counterpart in the sqlite tree.
(user:
stephan
size: 2112)
[more...]
0000: 23 21 2f 62 69 6e 2f 73 68 0a 23 20 5e 5e 5e 5e #!/bin/sh.# ^^^^
0010: 5e 5e 5e 20 50 6c 65 61 73 65 20 74 72 79 20 74 ^^^ Please try t
0020: 6f 20 6b 65 65 70 20 74 68 69 73 20 73 63 72 69 o keep this scri
0030: 70 74 20 42 6f 75 72 6e 65 2d 63 6f 6d 70 61 74 pt Bourne-compat
0040: 69 62 6c 65 2e 0a 23 23 23 23 23 23 23 23 23 23 ible..##########
0050: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0060: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0070: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0080: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 ##############.#
0090: 20 57 41 52 4e 49 4e 47 3a 20 65 6d 63 63 2e 73 WARNING: emcc.s
00a0: 68 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 66 h is generated f
00b0: 72 6f 6d 20 65 6d 63 63 2e 73 68 2e 69 6e 20 62 rom emcc.sh.in b
00c0: 79 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65 0a y the configure.
00d0: 23 20 70 72 6f 63 65 73 73 2e 20 44 6f 20 6e 6f # process. Do no
00e0: 74 20 65 64 69 74 20 65 6d 63 63 2e 73 68 20 64 t edit emcc.sh d
00f0: 69 72 65 63 74 6c 79 2c 20 61 73 20 69 74 20 6d irectly, as it m
0100: 61 79 20 62 65 20 64 65 6c 65 74 65 64 20 6f 72 ay be deleted or
0110: 0a 23 20 6f 76 65 72 77 72 69 74 74 65 6e 20 62 .# overwritten b
0120: 79 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65 20 y the configure
0130: 73 63 72 69 70 74 2e 0a 23 0a 23 20 41 20 77 72 script..#.# A wr
0140: 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 apper around the
0150: 20 65 6d 63 63 20 63 6f 6d 70 69 6c 65 72 20 77 emcc compiler w
0160: 68 69 63 68 20 75 73 65 73 20 63 6f 6e 66 69 67 hich uses config
0170: 75 72 65 2d 74 69 6d 65 20 73 74 61 74 65 0a 23 ure-time state.#
0180: 20 74 6f 20 6c 6f 63 61 74 65 20 74 68 65 20 45 to locate the E
0190: 6d 73 63 72 69 70 74 65 6e 20 53 44 4b 20 61 6e mscripten SDK an
01a0: 64 20 69 6d 70 6f 72 74 20 74 68 65 20 53 44 4b d import the SDK
01b0: 27 73 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0a 23 's environment.#
01c0: 20 73 63 72 69 70 74 2c 20 69 66 20 6e 65 65 64 script, if need
01d0: 65 64 2e 0a 23 23 23 23 23 23 23 23 23 23 23 23 ed..############
01e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
01f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0200: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0210: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 45 ############.# E
0220: 4d 53 44 4b 5f 48 4f 4d 45 20 63 6f 6d 65 73 20 MSDK_HOME comes
0230: 66 72 6f 6d 20 74 68 65 20 63 6f 6e 66 69 67 75 from the configu
0240: 72 65 20 2d 2d 77 69 74 68 2d 65 6d 73 64 6b 3d re --with-emsdk=
0250: 2f 64 69 72 20 66 6c 61 67 2e 0a 23 20 45 4d 53 /dir flag..# EMS
0260: 44 4b 5f 45 4e 56 5f 53 48 20 69 73 20 24 7b 74 DK_ENV_SH is ${t
0270: 68 61 74 44 69 72 7d 2f 65 6d 73 64 6b 5f 65 6e hatDir}/emsdk_en
0280: 76 2e 73 68 20 61 6e 64 20 69 73 20 61 6c 73 6f v.sh and is also
0290: 20 73 65 74 20 62 79 20 74 68 65 0a 23 20 63 6f set by the.# co
02a0: 6e 66 69 67 75 72 65 20 70 72 6f 63 65 73 73 2e nfigure process.
02b0: 0a 45 4d 53 44 4b 5f 48 4f 4d 45 3d 22 40 45 4d .EMSDK_HOME="@EM
02c0: 53 44 4b 5f 48 4f 4d 45 40 22 0a 45 4d 53 44 4b SDK_HOME@".EMSDK
02d0: 5f 45 4e 56 5f 53 48 3d 22 40 45 4d 53 44 4b 5f _ENV_SH="@EMSDK_
02e0: 45 4e 56 5f 53 48 40 22 0a 65 6d 63 63 3d 22 40 ENV_SH@".emcc="@
02f0: 42 49 4e 5f 45 4d 43 43 40 22 0a 0a 69 66 20 5b BIN_EMCC@"..if [
0300: 20 78 20 3d 20 22 78 24 7b 65 6d 63 63 7d 22 20 x = "x${emcc}"
0310: 5d 3b 20 74 68 65 6e 0a 20 20 20 20 65 6d 63 63 ]; then. emcc
0320: 3d 60 77 68 69 63 68 20 65 6d 63 63 20 32 3e 2f =`which emcc 2>/
0330: 64 65 76 2f 6e 75 6c 6c 60 0a 66 69 0a 0a 69 66 dev/null`.fi..if
0340: 20 5b 20 78 20 3d 20 22 78 24 7b 65 6d 63 63 7d [ x = "x${emcc}
0350: 22 20 5d 3b 20 74 68 65 6e 0a 20 20 23 20 49 66 " ]; then. # If
0360: 20 65 6d 63 63 20 69 73 20 6e 6f 74 20 66 6f 75 emcc is not fou
0370: 6e 64 20 69 6e 20 74 68 65 20 70 61 74 68 2c 20 nd in the path,
0380: 74 72 79 20 74 6f 20 66 69 6e 64 20 69 74 20 76 try to find it v
0390: 69 61 20 61 6e 20 65 6d 73 64 6b 0a 20 20 23 20 ia an emsdk. #
03a0: 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 2e 20 54 68 installation. Th
03b0: 65 20 53 44 4b 20 76 61 72 69 61 6e 74 20 69 73 e SDK variant is
03c0: 20 74 68 65 20 6f 66 66 69 63 69 61 6c 20 69 6e the official in
03d0: 73 74 61 6c 6c 61 74 69 6f 6e 20 73 74 79 6c 65 stallation style
03e0: 0a 20 20 23 20 73 75 70 70 6f 72 74 65 64 20 62 . # supported b
03f0: 79 20 74 68 65 20 45 6d 73 63 72 69 70 74 65 6e y the Emscripten
0400: 20 70 72 6f 6a 65 63 74 2c 20 62 75 74 20 65 6d project, but em
0410: 63 63 20 69 73 20 61 6c 73 6f 20 61 76 61 69 6c cc is also avail
0420: 61 62 6c 65 0a 20 20 23 20 76 69 61 20 70 61 63 able. # via pac
0430: 6b 61 67 65 20 6d 61 6e 61 67 65 72 73 20 6f 6e kage managers on
0440: 20 73 6f 6d 65 20 4f 53 65 73 2e 0a 20 20 69 66 some OSes.. if
0450: 20 5b 20 78 20 3d 20 22 78 24 7b 45 4d 53 44 4b [ x = "x${EMSDK
0460: 5f 48 4f 4d 45 7d 22 20 5d 3b 20 74 68 65 6e 0a _HOME}" ]; then.
0470: 20 20 20 20 65 63 68 6f 20 22 45 4d 53 44 4b 5f echo "EMSDK_
0480: 48 4f 4d 45 20 69 73 20 6e 6f 74 20 73 65 74 2e HOME is not set.
0490: 20 50 61 73 73 20 2d 2d 77 69 74 68 2d 65 6d 73 Pass --with-ems
04a0: 64 6b 3d 2f 70 61 74 68 2f 74 6f 2f 65 6d 73 64 dk=/path/to/emsd
04b0: 6b 22 20 5c 0a 20 20 20 20 20 20 20 20 20 22 74 k" \. "t
04c0: 6f 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65 20 o the configure
04d0: 73 63 72 69 70 74 2e 22 20 31 3e 26 32 0a 20 20 script." 1>&2.
04e0: 20 20 65 78 69 74 20 31 0a 20 20 66 69 0a 0a 20 exit 1. fi..
04f0: 20 69 66 20 5b 20 78 20 3d 20 22 78 24 7b 45 4d if [ x = "x${EM
0500: 53 44 4b 5f 45 4e 56 5f 53 48 7d 22 20 5d 3b 20 SDK_ENV_SH}" ];
0510: 74 68 65 6e 0a 20 20 20 20 69 66 20 5b 20 2d 66 then. if [ -f
0520: 20 22 24 7b 45 4d 53 44 4b 5f 48 4f 4d 45 7d 2f "${EMSDK_HOME}/
0530: 65 6d 73 64 6b 5f 65 6e 76 2e 73 68 22 20 5d 3b emsdk_env.sh" ];
0540: 20 74 68 65 6e 0a 20 20 20 20 20 20 45 4d 53 44 then. EMSD
0550: 4b 5f 45 4e 56 5f 53 48 3d 22 24 7b 45 4d 53 44 K_ENV_SH="${EMSD
0560: 4b 5f 48 4f 4d 45 7d 2f 65 6d 73 64 6b 5f 65 6e K_HOME}/emsdk_en
0570: 76 2e 73 68 22 0a 20 20 20 20 65 6c 73 65 0a 20 v.sh". else.
0580: 20 20 20 20 20 65 63 68 6f 20 22 45 4d 53 44 4b echo "EMSDK
0590: 5f 45 4e 56 5f 53 48 20 69 73 20 6e 6f 74 20 73 _ENV_SH is not s
05a0: 65 74 2e 20 45 78 70 65 63 74 69 6e 67 20 63 6f et. Expecting co
05b0: 6e 66 69 67 75 72 65 20 73 63 72 69 70 74 20 74 nfigure script t
05c0: 6f 20 73 65 74 20 69 74 2e 22 20 31 3e 26 32 0a o set it." 1>&2.
05d0: 20 20 20 20 20 20 65 78 69 74 20 32 0a 20 20 20 exit 2.
05e0: 20 66 69 0a 20 20 66 69 0a 0a 20 20 69 66 20 5b fi. fi.. if [
05f0: 20 21 20 2d 66 20 22 24 7b 45 4d 53 44 4b 5f 45 ! -f "${EMSDK_E
0600: 4e 56 5f 53 48 7d 22 20 5d 3b 20 74 68 65 6e 0a NV_SH}" ]; then.
0610: 20 20 20 20 65 63 68 6f 20 22 65 6d 73 64 6b 5f echo "emsdk_
0620: 65 6e 76 20 73 63 72 69 70 74 20 6e 6f 74 20 66 env script not f
0630: 6f 75 6e 64 3a 20 24 45 4d 53 44 4b 5f 45 4e 56 ound: $EMSDK_ENV
0640: 5f 53 48 22 20 31 3e 26 32 0a 20 20 20 20 65 78 _SH" 1>&2. ex
0650: 69 74 20 33 0a 20 20 66 69 0a 0a 20 20 23 20 24 it 3. fi.. # $
0660: 45 4d 53 44 4b 20 69 73 20 70 61 72 74 20 6f 66 EMSDK is part of
0670: 20 74 68 65 20 73 74 61 74 65 20 73 65 74 20 62 the state set b
0680: 79 20 65 6d 73 64 6b 5f 65 6e 76 2e 73 68 2e 0a y emsdk_env.sh..
0690: 20 20 69 66 20 5b 20 78 20 3d 20 22 78 24 7b 45 if [ x = "x${E
06a0: 4d 53 44 4b 7d 22 20 5d 3b 20 74 68 65 6e 0a 20 MSDK}" ]; then.
06b0: 20 20 20 45 4d 53 44 4b 5f 51 55 49 45 54 3d 31 EMSDK_QUIET=1
06c0: 0a 20 20 20 20 65 78 70 6f 72 74 20 45 4d 53 44 . export EMSD
06d0: 4b 5f 51 55 49 45 54 0a 20 20 20 20 23 20 5e 5e K_QUIET. # ^^
06e0: 5e 20 53 71 75 65 6c 63 68 65 73 20 69 6e 66 6f ^ Squelches info
06f0: 72 6d 61 74 69 6f 6e 61 6c 20 6f 75 74 70 75 74 rmational output
0700: 20 66 72 6f 6d 20 24 7b 45 4d 53 44 4b 5f 45 4e from ${EMSDK_EN
0710: 56 5f 53 48 7d 2e 0a 20 20 20 20 73 6f 75 72 63 V_SH}.. sourc
0720: 65 20 22 24 7b 45 4d 53 44 4b 5f 45 4e 56 5f 53 e "${EMSDK_ENV_S
0730: 48 7d 22 20 7c 7c 20 7b 0a 20 20 20 20 20 20 72 H}" || {. r
0740: 63 3d 24 3f 0a 20 20 20 20 20 20 65 63 68 6f 20 c=$?. echo
0750: 22 45 72 72 6f 72 20 73 6f 75 72 63 69 6e 67 20 "Error sourcing
0760: 24 7b 45 4d 53 44 4b 5f 45 4e 56 5f 53 48 7d 22 ${EMSDK_ENV_SH}"
0770: 0a 20 20 20 20 20 20 65 78 69 74 20 24 72 63 0a . exit $rc.
0780: 20 20 20 20 7d 0a 20 20 66 69 0a 20 20 65 6d 63 }. fi. emc
0790: 63 3d 60 77 68 69 63 68 20 65 6d 63 63 20 32 3e c=`which emcc 2>
07a0: 2f 64 65 76 2f 6e 75 6c 6c 60 0a 20 20 69 66 20 /dev/null`. if
07b0: 5b 20 78 20 3d 20 22 78 24 7b 65 6d 63 63 7d 22 [ x = "x${emcc}"
07c0: 20 5d 3b 20 74 68 65 6e 0a 20 20 20 20 65 63 68 ]; then. ech
07d0: 6f 20 22 65 6d 63 63 20 6e 6f 74 20 66 6f 75 6e o "emcc not foun
07e0: 64 20 69 6e 20 50 41 54 48 2e 20 4e 6f 72 6d 61 d in PATH. Norma
07f0: 6c 6c 79 20 74 68 61 74 27 73 20 73 65 74 20 75 lly that's set u
0800: 70 20 62 79 20 24 7b 45 4d 53 44 4b 5f 45 4e 56 p by ${EMSDK_ENV
0810: 5f 53 48 7d 2e 22 20 31 3e 26 32 0a 20 20 20 20 _SH}." 1>&2.
0820: 65 78 69 74 20 34 0a 20 20 66 69 0a 66 69 0a 0a exit 4. fi.fi..
0830: 65 78 65 63 20 24 65 6d 63 63 20 22 24 40 22 0a exec $emcc "$@".