diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 83 |
1 files changed, 16 insertions, 67 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 126bf3a6d..2ecc51a9c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,6 +49,7 @@ IF(MSVC) ELSE() ADD_COMPILE_FLAG("/O2") ENDIF() + SET(all_passes passes) ELSE() SET(THREADS_PREFER_PTHREAD_FLAG ON) SET(CMAKE_THREAD_PREFER_PTHREAD ON) @@ -72,6 +73,11 @@ ELSE() ADD_COMPILE_FLAG("-O2") ADD_DEFINITIONS("-UNDEBUG") # Keep asserts. ENDIF() + if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") + SET(all_passes "-force_load" passes) + ELSE() + SET(all_passes "-Wl,--whole-archive" passes "-Wl,-no-whole-archive") + ENDIF() ENDIF() # clang doesn't print colored diagnostics when invoked from Ninja @@ -83,141 +89,84 @@ ENDIF() # Static libraries ADD_SUBDIRECTORY(src/asmjs) +ADD_SUBDIRECTORY(src/emscripten-optimizer) +ADD_SUBDIRECTORY(src/passes) +ADD_SUBDIRECTORY(src/support) # Sources. -SET(support_SOURCES - src/support/archive.cpp - src/support/bits.cpp - src/support/colors.cpp - src/support/command-line.cpp - src/support/file.cpp - src/support/safe_integer.cpp - src/support/threads.cpp -) -ADD_LIBRARY(support STATIC ${support_SOURCES}) SET(binaryen_c_SOURCES src/binaryen-c.cpp src/cfg/Relooper.cpp - src/pass.cpp - src/passes/LowerIfElse.cpp - src/passes/MergeBlocks.cpp - src/passes/NameManager.cpp - src/passes/OptimizeInstructions.cpp - src/passes/PostEmscripten.cpp - src/passes/Print.cpp - src/passes/RemoveImports.cpp - src/passes/RemoveUnusedBrs.cpp - src/passes/RemoveUnusedNames.cpp - src/passes/SimplifyLocals.cpp - src/passes/ReorderLocals.cpp - src/passes/Vacuum.cpp - src/passes/Metrics.cpp src/wasm.cpp ) ADD_LIBRARY(binaryen-c SHARED ${binaryen_c_SOURCES}) -TARGET_LINK_LIBRARIES(binaryen-c asmjs support) +TARGET_LINK_LIBRARIES(binaryen-c asmjs ${all_passes} support) SET(binaryen-shell_SOURCES src/binaryen-shell.cpp - src/pass.cpp - src/passes/LowerIfElse.cpp - src/passes/MergeBlocks.cpp - src/passes/NameManager.cpp - src/passes/OptimizeInstructions.cpp - src/passes/PostEmscripten.cpp - src/passes/Print.cpp - src/passes/RemoveImports.cpp - src/passes/RemoveUnusedBrs.cpp - src/passes/RemoveUnusedNames.cpp - src/passes/SimplifyLocals.cpp - src/passes/ReorderLocals.cpp - src/passes/Vacuum.cpp - src/passes/Metrics.cpp src/wasm.cpp ) ADD_EXECUTABLE(binaryen-shell ${binaryen-shell_SOURCES}) -TARGET_LINK_LIBRARIES(binaryen-shell asmjs support) +TARGET_LINK_LIBRARIES(binaryen-shell asmjs emscripten-optimizer ${all_passes} support) SET_PROPERTY(TARGET binaryen-shell PROPERTY CXX_STANDARD 11) SET_PROPERTY(TARGET binaryen-shell PROPERTY CXX_STANDARD_REQUIRED ON) INSTALL(TARGETS binaryen-shell DESTINATION bin) SET(asm2wasm_SOURCES src/asm2wasm-main.cpp - src/pass.cpp - src/passes/MergeBlocks.cpp - src/passes/OptimizeInstructions.cpp - src/passes/PostEmscripten.cpp - src/passes/Print.cpp - src/passes/RemoveUnusedBrs.cpp - src/passes/RemoveUnusedNames.cpp - src/passes/SimplifyLocals.cpp - src/passes/ReorderLocals.cpp - src/passes/Vacuum.cpp - src/emscripten-optimizer/parser.cpp - src/emscripten-optimizer/simple_ast.cpp - src/emscripten-optimizer/optimizer-shared.cpp src/wasm.cpp ) ADD_EXECUTABLE(asm2wasm ${asm2wasm_SOURCES}) -TARGET_LINK_LIBRARIES(asm2wasm asmjs support) +TARGET_LINK_LIBRARIES(asm2wasm asmjs emscripten-optimizer ${all_passes} support) SET_PROPERTY(TARGET asm2wasm PROPERTY CXX_STANDARD 11) SET_PROPERTY(TARGET asm2wasm PROPERTY CXX_STANDARD_REQUIRED ON) INSTALL(TARGETS asm2wasm DESTINATION bin) SET(wasm2asm_SOURCES src/wasm2asm-main.cpp - src/emscripten-optimizer/parser.cpp - src/emscripten-optimizer/simple_ast.cpp - src/emscripten-optimizer/optimizer-shared.cpp src/wasm.cpp ) ADD_EXECUTABLE(wasm2asm ${wasm2asm_SOURCES}) -TARGET_LINK_LIBRARIES(wasm2asm asmjs support) +TARGET_LINK_LIBRARIES(wasm2asm asmjs emscripten-optimizer support) SET_PROPERTY(TARGET wasm2asm PROPERTY CXX_STANDARD 11) SET_PROPERTY(TARGET wasm2asm PROPERTY CXX_STANDARD_REQUIRED ON) INSTALL(TARGETS wasm2asm DESTINATION bin) SET(s2wasm_SOURCES - src/pass.cpp - src/passes/Print.cpp src/wasm-linker.cpp src/s2wasm-main.cpp src/wasm.cpp ) ADD_EXECUTABLE(s2wasm ${s2wasm_SOURCES}) -TARGET_LINK_LIBRARIES(s2wasm asmjs support) +TARGET_LINK_LIBRARIES(s2wasm asmjs passes support) SET_PROPERTY(TARGET s2wasm PROPERTY CXX_STANDARD 11) SET_PROPERTY(TARGET s2wasm PROPERTY CXX_STANDARD_REQUIRED ON) INSTALL(TARGETS s2wasm DESTINATION bin) SET(wasm_as_SOURCES - src/pass.cpp - src/passes/Print.cpp src/wasm-as.cpp src/wasm.cpp ) ADD_EXECUTABLE(wasm-as ${wasm_as_SOURCES}) -TARGET_LINK_LIBRARIES(wasm-as asmjs support) +TARGET_LINK_LIBRARIES(wasm-as asmjs passes support) SET_PROPERTY(TARGET wasm-as PROPERTY CXX_STANDARD 11) SET_PROPERTY(TARGET wasm-as PROPERTY CXX_STANDARD_REQUIRED ON) INSTALL(TARGETS wasm-as DESTINATION bin) SET(wasm_dis_SOURCES - src/pass.cpp - src/passes/Print.cpp src/wasm-dis.cpp src/wasm.cpp ) ADD_EXECUTABLE(wasm-dis ${wasm_dis_SOURCES}) -TARGET_LINK_LIBRARIES(wasm-dis support) +TARGET_LINK_LIBRARIES(wasm-dis passes support) SET_PROPERTY(TARGET wasm-dis PROPERTY CXX_STANDARD 11) SET_PROPERTY(TARGET wasm-dis PROPERTY CXX_STANDARD_REQUIRED ON) INSTALL(TARGETS wasm-dis DESTINATION bin) |