From 0737086ae9db2550a36c799f38fe09f9ebd548a8 Mon Sep 17 00:00:00 2001 From: Immanuel Haffner Date: Fri, 22 Nov 2019 08:21:32 +0100 Subject: [PATCH 1/2] Transform libraries created in subdirectories from statically linked libraries to CMake object libraries. --- src/asmjs/CMakeLists.txt | 2 +- src/cfg/CMakeLists.txt | 2 +- src/emscripten-optimizer/CMakeLists.txt | 2 +- src/ir/CMakeLists.txt | 2 +- src/passes/CMakeLists.txt | 2 +- src/support/CMakeLists.txt | 2 +- src/wasm/CMakeLists.txt | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/asmjs/CMakeLists.txt b/src/asmjs/CMakeLists.txt index 0252ed9115e..e9fa3d12f33 100644 --- a/src/asmjs/CMakeLists.txt +++ b/src/asmjs/CMakeLists.txt @@ -3,4 +3,4 @@ SET(asmjs_SOURCES asmangle.cpp shared-constants.cpp ) -ADD_LIBRARY(asmjs STATIC ${asmjs_SOURCES}) \ No newline at end of file +ADD_LIBRARY(asmjs OBJECT ${asmjs_SOURCES}) diff --git a/src/cfg/CMakeLists.txt b/src/cfg/CMakeLists.txt index f0825b454d3..feb4186afbc 100644 --- a/src/cfg/CMakeLists.txt +++ b/src/cfg/CMakeLists.txt @@ -1,4 +1,4 @@ SET(cfg_SOURCES Relooper.cpp ) -ADD_LIBRARY(cfg STATIC ${cfg_SOURCES}) +ADD_LIBRARY(cfg OBJECT ${cfg_SOURCES}) diff --git a/src/emscripten-optimizer/CMakeLists.txt b/src/emscripten-optimizer/CMakeLists.txt index 6c302b99199..a2bb7d80244 100644 --- a/src/emscripten-optimizer/CMakeLists.txt +++ b/src/emscripten-optimizer/CMakeLists.txt @@ -3,4 +3,4 @@ SET(emscripten-optimizer_SOURCES parser.cpp simple_ast.cpp ) -ADD_LIBRARY(emscripten-optimizer STATIC ${emscripten-optimizer_SOURCES}) +ADD_LIBRARY(emscripten-optimizer OBJECT ${emscripten-optimizer_SOURCES}) diff --git a/src/ir/CMakeLists.txt b/src/ir/CMakeLists.txt index e89ece6a2a9..3f4a7733756 100644 --- a/src/ir/CMakeLists.txt +++ b/src/ir/CMakeLists.txt @@ -4,4 +4,4 @@ SET(ir_SOURCES LocalGraph.cpp ReFinalize.cpp ) -ADD_LIBRARY(ir STATIC ${ir_SOURCES}) +ADD_LIBRARY(ir OBJECT ${ir_SOURCES}) diff --git a/src/passes/CMakeLists.txt b/src/passes/CMakeLists.txt index d2b7e22bce2..313c0f5a76d 100644 --- a/src/passes/CMakeLists.txt +++ b/src/passes/CMakeLists.txt @@ -72,4 +72,4 @@ SET(passes_SOURCES Vacuum.cpp ${CMAKE_CURRENT_BINARY_DIR}/WasmIntrinsics.cpp ) -ADD_LIBRARY(passes STATIC ${passes_SOURCES}) +ADD_LIBRARY(passes OBJECT ${passes_SOURCES}) diff --git a/src/support/CMakeLists.txt b/src/support/CMakeLists.txt index b3373d07648..eaf608d5896 100644 --- a/src/support/CMakeLists.txt +++ b/src/support/CMakeLists.txt @@ -8,5 +8,5 @@ SET(support_SOURCES safe_integer.cpp threads.cpp ) -ADD_LIBRARY(support STATIC ${support_SOURCES}) +ADD_LIBRARY(support OBJECT ${support_SOURCES}) TARGET_LINK_LIBRARIES(support ${CMAKE_THREAD_LIBS_INIT}) diff --git a/src/wasm/CMakeLists.txt b/src/wasm/CMakeLists.txt index f4441953a93..984441c6cf9 100644 --- a/src/wasm/CMakeLists.txt +++ b/src/wasm/CMakeLists.txt @@ -10,4 +10,4 @@ SET(wasm_SOURCES wasm-type.cpp wasm-validator.cpp ) -ADD_LIBRARY(wasm STATIC ${wasm_SOURCES}) +ADD_LIBRARY(wasm OBJECT ${wasm_SOURCES}) From 0d441efe20a304138bdb65546a09454f0693963a Mon Sep 17 00:00:00 2001 From: Immanuel Haffner Date: Fri, 22 Nov 2019 08:37:52 +0100 Subject: [PATCH 2/2] Link object libraries as `PRIVATE` to `libbinaryen`. According to CMake documentation: "Libraries and targets following PRIVATE are linked to, but are not made part of the link interface." This is exactly what we want, as we only want the C API to be part of the interface. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4acf703e156..e987ba311dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -196,7 +196,7 @@ IF(BUILD_STATIC_LIB) ELSE() ADD_LIBRARY(binaryen SHARED ${binaryen_SOURCES}) ENDIF() -TARGET_LINK_LIBRARIES(binaryen passes wasm asmjs emscripten-optimizer ir cfg support) +TARGET_LINK_LIBRARIES(binaryen PRIVATE passes wasm asmjs emscripten-optimizer ir cfg support) INSTALL(TARGETS binaryen DESTINATION ${CMAKE_INSTALL_LIBDIR}) INSTALL(FILES src/binaryen-c.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})