summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Schuff <dschuff@chromium.org>2016-05-07 10:41:41 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-05-07 10:41:41 -0700
commitb80ff5c73351d0e6762d8122914bb6c10bcd8d9f (patch)
tree7ae4722ca2fb97461d287fa104d6795503cc14d2
parent40068a9f3c614ba15131a8a90d8586816799f11a (diff)
downloadbinaryen-b80ff5c73351d0e6762d8122914bb6c10bcd8d9f.tar.gz
binaryen-b80ff5c73351d0e6762d8122914bb6c10bcd8d9f.tar.bz2
binaryen-b80ff5c73351d0e6762d8122914bb6c10bcd8d9f.zip
Use more static libraries in the CMake build (#451)
* Factor passes and emscripten-optimizer into static libs This removes the redundancies from the source sets in the main CMakeLists.txt. * Make passes an object lib * Use static libs with --whole-archive because Travis has old cmake
-rw-r--r--CMakeLists.txt83
-rwxr-xr-xauto_update_tests.py4
-rwxr-xr-xcheck.py4
-rw-r--r--src/emscripten-optimizer/CMakeLists.txt6
-rw-r--r--src/passes/CMakeLists.txt17
-rw-r--r--src/passes/pass.cpp (renamed from src/pass.cpp)0
-rw-r--r--src/support/CMakeLists.txt10
7 files changed, 53 insertions, 71 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)
diff --git a/auto_update_tests.py b/auto_update_tests.py
index 5380fc737..5fa106747 100755
--- a/auto_update_tests.py
+++ b/auto_update_tests.py
@@ -100,14 +100,14 @@ for t in sorted(os.listdir(os.path.join('test', 'example'))):
cmd = ['-Isrc', '-g', '-lasmjs', '-lsupport', '-Llib/.', '-pthread', '-o', output_file]
if t.endswith('.cpp'):
cmd = [os.path.join('test', 'example', t),
- os.path.join('src', 'pass.cpp'),
+ os.path.join('src', 'passes', 'pass.cpp'),
os.path.join('src', 'wasm.cpp'),
os.path.join('src', 'passes', 'Print.cpp')] + cmd
elif t.endswith('.c'):
# build the C file separately
extra = [os.environ.get('CC') or 'gcc',
os.path.join('test', 'example', t), '-c', '-o', 'example.o',
- '-Isrc', '-g', '-lasmjs', '-lsupport', '-Llib/.', '-pthread']
+ '-Isrc', '-g', '-Llib/.', '-pthread']
print ' '.join(extra)
subprocess.check_call(extra)
# Link against the binaryen C library DSO, using an executable-relative rpath
diff --git a/check.py b/check.py
index 57d5a4290..9f59ea025 100755
--- a/check.py
+++ b/check.py
@@ -599,14 +599,14 @@ for t in sorted(os.listdir(os.path.join('test', 'example'))):
cmd = ['-Isrc', '-g', '-lasmjs', '-lsupport', '-Llib/.', '-pthread', '-o', output_file]
if t.endswith('.cpp'):
cmd = [os.path.join('test', 'example', t),
- os.path.join('src', 'pass.cpp'),
+ os.path.join('src', 'passes', 'pass.cpp'),
os.path.join('src', 'wasm.cpp'),
os.path.join('src', 'passes', 'Print.cpp')] + cmd
elif t.endswith('.c'):
# build the C file separately
extra = [os.environ.get('CC') or 'gcc',
os.path.join('test', 'example', t), '-c', '-o', 'example.o',
- '-Isrc', '-g', '-lasmjs', '-lsupport', '-Llib/.', '-pthread']
+ '-Isrc', '-g', '-Llib/.', '-pthread']
print ' '.join(extra)
subprocess.check_call(extra)
# Link against the binaryen C library DSO, using an executable-relative rpath
diff --git a/src/emscripten-optimizer/CMakeLists.txt b/src/emscripten-optimizer/CMakeLists.txt
new file mode 100644
index 000000000..6c302b991
--- /dev/null
+++ b/src/emscripten-optimizer/CMakeLists.txt
@@ -0,0 +1,6 @@
+SET(emscripten-optimizer_SOURCES
+ optimizer-shared.cpp
+ parser.cpp
+ simple_ast.cpp
+)
+ADD_LIBRARY(emscripten-optimizer STATIC ${emscripten-optimizer_SOURCES})
diff --git a/src/passes/CMakeLists.txt b/src/passes/CMakeLists.txt
new file mode 100644
index 000000000..460910978
--- /dev/null
+++ b/src/passes/CMakeLists.txt
@@ -0,0 +1,17 @@
+SET(passes_SOURCES
+ pass.cpp
+ LowerIfElse.cpp
+ MergeBlocks.cpp
+ Metrics.cpp
+ NameManager.cpp
+ OptimizeInstructions.cpp
+ PostEmscripten.cpp
+ Print.cpp
+ RemoveImports.cpp
+ RemoveUnusedBrs.cpp
+ RemoveUnusedNames.cpp
+ ReorderLocals.cpp
+ SimplifyLocals.cpp
+ Vacuum.cpp
+)
+ADD_LIBRARY(passes STATIC ${passes_SOURCES})
diff --git a/src/pass.cpp b/src/passes/pass.cpp
index e4cc35554..e4cc35554 100644
--- a/src/pass.cpp
+++ b/src/passes/pass.cpp
diff --git a/src/support/CMakeLists.txt b/src/support/CMakeLists.txt
new file mode 100644
index 000000000..08546e3ee
--- /dev/null
+++ b/src/support/CMakeLists.txt
@@ -0,0 +1,10 @@
+SET(support_SOURCES
+ archive.cpp
+ bits.cpp
+ colors.cpp
+ command-line.cpp
+ file.cpp
+ safe_integer.cpp
+ threads.cpp
+)
+ADD_LIBRARY(support STATIC ${support_SOURCES})