Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
186 changes: 0 additions & 186 deletions build-js.sh

This file was deleted.

155 changes: 155 additions & 0 deletions js/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
#
# This file builds the js components using emscripten. You normally don't need
# to run this, as the builds are bundled in the repo in bin/. Running this is
# useful if you are a developer and want to update those builds.
#
# Usage: Enter this directory and run
#
# emmake make
#
# Emscripten's em++ etc. will be accessed through the
# env var $(CXX).
#
# To build a debug build, build binaryen.debug.js. The default target is
# release.
#
# You can get emscripten from
# http://kripken.github.io/emscripten-site/docs/getting_started/downloads.html
#

MAKEFILE_DIR = $(shell pwd)

BINARYEN_SCRIPTS = $(MAKEFILE_DIR)/../scripts

OUT = $(MAKEFILE_DIR)/../out

BINARYEN_SRC = $(MAKEFILE_DIR)/../src

CFLAGS = -O2 \
-std=gnu++14

LINKFLAGS = -s MODULARIZE_INSTANCE=1 \
-s 'EXPORT_NAME="Binaryen"' \
-s SINGLE_FILE \
-s ALLOW_MEMORY_GROWTH \
-s BINARYEN_ASYNC_COMPILATION=0 \
-fexceptions \
--post-js $(BINARYEN_SRC)/js/binaryen.js-post.js

LINKFLAGS_DEBUG = -O2 --profiling -s DEMANGLE_SUPPORT=1

LINKFLAGS_RELEASE = -Oz --closure 1

OBJECTS = \
$(BINARYEN_SRC)/asmjs/asm_v_wasm.o \
$(BINARYEN_SRC)/asmjs/asmangle.o \
$(BINARYEN_SRC)/asmjs/shared-constants.o \
$(BINARYEN_SRC)/cfg/Relooper.o \
$(BINARYEN_SRC)/emscripten-optimizer/optimizer-shared.o \
$(BINARYEN_SRC)/emscripten-optimizer/parser.o \
$(BINARYEN_SRC)/emscripten-optimizer/simple_ast.o \
$(BINARYEN_SRC)/ir/ExpressionAnalyzer.o \
$(BINARYEN_SRC)/ir/ExpressionManipulator.o \
$(BINARYEN_SRC)/ir/LocalGraph.o \
$(BINARYEN_SRC)/ir/ReFinalize.o \
$(BINARYEN_SRC)/passes/pass.o \
$(BINARYEN_SRC)/passes/AlignmentLowering.o \
$(BINARYEN_SRC)/passes/Asyncify.o \
$(BINARYEN_SRC)/passes/AvoidReinterprets.o \
$(BINARYEN_SRC)/passes/CoalesceLocals.o \
$(BINARYEN_SRC)/passes/DeadArgumentElimination.o \
$(BINARYEN_SRC)/passes/CodeFolding.o \
$(BINARYEN_SRC)/passes/CodePushing.o \
$(BINARYEN_SRC)/passes/ConstHoisting.o \
$(BINARYEN_SRC)/passes/DataFlowOpts.o \
$(BINARYEN_SRC)/passes/DeadCodeElimination.o \
$(BINARYEN_SRC)/passes/Directize.o \
$(BINARYEN_SRC)/passes/DuplicateImportElimination.o \
$(BINARYEN_SRC)/passes/DuplicateFunctionElimination.o \
$(BINARYEN_SRC)/passes/ExtractFunction.o \
$(BINARYEN_SRC)/passes/Flatten.o \
$(BINARYEN_SRC)/passes/FuncCastEmulation.o \
$(BINARYEN_SRC)/passes/I64ToI32Lowering.o \
$(BINARYEN_SRC)/passes/Inlining.o \
$(BINARYEN_SRC)/passes/InstrumentLocals.o \
$(BINARYEN_SRC)/passes/InstrumentMemory.o \
$(BINARYEN_SRC)/passes/LegalizeJSInterface.o \
$(BINARYEN_SRC)/passes/LimitSegments.o \
$(BINARYEN_SRC)/passes/LocalCSE.o \
$(BINARYEN_SRC)/passes/LogExecution.o \
$(BINARYEN_SRC)/passes/LoopInvariantCodeMotion.o \
$(BINARYEN_SRC)/passes/MemoryPacking.o \
$(BINARYEN_SRC)/passes/MergeBlocks.o \
$(BINARYEN_SRC)/passes/MergeLocals.o \
$(BINARYEN_SRC)/passes/Metrics.o \
$(BINARYEN_SRC)/passes/MinifyImportsAndExports.o \
$(BINARYEN_SRC)/passes/NameList.o \
$(BINARYEN_SRC)/passes/NoExitRuntime.o \
$(BINARYEN_SRC)/passes/OptimizeAddedConstants.o \
$(BINARYEN_SRC)/passes/OptimizeInstructions.o \
$(BINARYEN_SRC)/passes/PickLoadSigns.o \
$(BINARYEN_SRC)/passes/PostEmscripten.o \
$(BINARYEN_SRC)/passes/Precompute.o \
$(BINARYEN_SRC)/passes/Print.o \
$(BINARYEN_SRC)/passes/PrintFeatures.o \
$(BINARYEN_SRC)/passes/PrintFunctionMap.o \
$(BINARYEN_SRC)/passes/PrintCallGraph.o \
$(BINARYEN_SRC)/passes/RedundantSetElimination.o \
$(BINARYEN_SRC)/passes/RelooperJumpThreading.o \
$(BINARYEN_SRC)/passes/RemoveNonJSOps.o \
$(BINARYEN_SRC)/passes/RemoveImports.o \
$(BINARYEN_SRC)/passes/RemoveMemory.o \
$(BINARYEN_SRC)/passes/RemoveUnusedBrs.o \
$(BINARYEN_SRC)/passes/RemoveUnusedModuleElements.o \
$(BINARYEN_SRC)/passes/RemoveUnusedNames.o \
$(BINARYEN_SRC)/passes/ReorderFunctions.o \
$(BINARYEN_SRC)/passes/ReorderLocals.o \
$(BINARYEN_SRC)/passes/ReReloop.o \
$(BINARYEN_SRC)/passes/SafeHeap.o \
$(BINARYEN_SRC)/passes/SimplifyGlobals.o \
$(BINARYEN_SRC)/passes/SimplifyLocals.o \
$(BINARYEN_SRC)/passes/Souperify.o \
$(BINARYEN_SRC)/passes/SpillPointers.o \
$(BINARYEN_SRC)/passes/SSAify.o \
$(BINARYEN_SRC)/passes/StackIR.o \
$(BINARYEN_SRC)/passes/Strip.o \
$(BINARYEN_SRC)/passes/StripTargetFeatures.o \
$(BINARYEN_SRC)/passes/TrapMode.o \
$(BINARYEN_SRC)/passes/Untee.o \
$(BINARYEN_SRC)/passes/Vacuum.o \
$(BINARYEN_SRC)/passes/WasmIntrinsics.o \
$(BINARYEN_SRC)/support/bits.o \
$(BINARYEN_SRC)/support/colors.o \
$(BINARYEN_SRC)/support/file.o \
$(BINARYEN_SRC)/support/safe_integer.o \
$(BINARYEN_SRC)/support/threads.o \
$(BINARYEN_SRC)/wasm/literal.o \
$(BINARYEN_SRC)/wasm/wasm-binary.o \
$(BINARYEN_SRC)/wasm/wasm-emscripten.o \
$(BINARYEN_SRC)/wasm/wasm-interpreter.o \
$(BINARYEN_SRC)/wasm/wasm-io.o \
$(BINARYEN_SRC)/wasm/wasm-s-parser.o \
$(BINARYEN_SRC)/wasm/wasm-stack.o \
$(BINARYEN_SRC)/wasm/wasm-type.o \
$(BINARYEN_SRC)/wasm/wasm-validator.o \
$(BINARYEN_SRC)/wasm/wasm.o \
$(BINARYEN_SRC)/binaryen-c.o

all: binaryen.js

%.o: %.cpp
$(CXX) $(CFLAGS) -I$(BINARYEN_SRC) $< -o $@ -c

binaryen.js: $(OBJECTS)
mkdir -p $(OUT)
$(CXX) $(CFLAGS) $(LINKFLAGS) $(LINKFLAGS_RELEASE) $(OBJECTS) -o $(OUT)/binaryen.js

binaryen.debug.js: $(OBJECTS)
mkdir -p $(OUT)
$(CXX) $(CFLAGS) $(LINKFLAGS) $(LINKFLAGS_DEBUG) $(OBJECTS) -o $(OUT)/binaryen.debug.js

$(BINARYEN_SRC)/passes/WasmIntrinsics.cpp:
python3 $(BINARYEN_SCRIPTS)/embedwast.py $(BINARYEN_SRC)/passes/wasm-intrinsics.wast $(BINARYEN_SRC)/passes/WasmIntrinsics.cpp

clean:
rm $(OBJECTS) $(OUT)/binaryen.js $(OUT)/binaryen.debug.js WasmIntrinsics.cpp
2 changes: 1 addition & 1 deletion src/passes/SimplifyGlobals.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ struct SimplifyGlobals : public Pass {
}
}

// Constant propagation part 1: even an mutable global with a constant
// Constant propagation part 1: even a mutable global with a constant
// value can have that value propagated to another global that reads it,
// since we do know the value during startup, it can't be modified until
// code runs.
Expand Down
5 changes: 4 additions & 1 deletion travis-emcc-tests.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
set -e
echo "travis-test build"
./build-js.sh -g
cd js
emmake make binaryen.debug.js -j4
cd ..
cp out/binaryen.debug.js out/binaryen.js
echo "travis-test test"
python -m scripts.test.binaryenjs
echo "travis-test yay!"