Fossil

Hex Artifact Content
Login

Artifact 41a049468c8155433e37e656ba5bae063a000768b1d627025f277732c4e7c4a4:


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 "$@".