@@ -69,9 +69,37 @@ function(ADD_LINK_FLAG value)
6969 ENDFOREACH (variable )
7070endfunction ()
7171
72+ function (binaryen_setup_rpath name )
73+ if (CMAKE_INSTALL_RPATH )
74+ return ()
75+ endif ()
76+
77+ if (APPLE )
78+ set (_install_name_dir INSTALL_NAME_DIR "@rpath" )
79+ set (_install_rpath "@loader_path/../lib" )
80+ elseif (UNIX )
81+ set (_install_rpath "\$ ORIGIN/../lib" )
82+ if (${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)" )
83+ set_property (TARGET ${name} APPEND_STRING PROPERTY
84+ LINK_FLAGS " -Wl,-z,origin " )
85+ endif ()
86+ else ()
87+ return ()
88+ endif ()
89+
90+ set_target_properties (${name} PROPERTIES
91+ BUILD_WITH_INSTALL_RPATH On
92+ INSTALL_RPATH "${_install_rpath} "
93+ ${_install_name_dir} )
94+ endfunction ()
95+
7296# Options
7397
7498option (BUILD_STATIC_LIB "Build as a static library" OFF )
99+ if (MSVC )
100+ # We don't have dllexport declarations set up for windows yet.
101+ set (BUILD_STATIC_LIB ON )
102+ endif ()
75103
76104# For now, don't include full DWARF support in JS builds, for size.
77105if (NOT EMSCRIPTEN)
@@ -280,95 +308,27 @@ install(TARGETS binaryen
280308
281309install (FILES src/binaryen-c.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
282310
283- set (wasm-shell_SOURCES
284- src/tools/wasm-shell.cpp
285- )
286- add_executable (wasm-shell ${wasm-shell_SOURCES} ${binaryen_objs} )
287- target_link_libraries (wasm-shell ${CMAKE_THREAD_LIBS_INIT} )
288- set_property (TARGET wasm-shell PROPERTY CXX_STANDARD 14)
289- set_property (TARGET wasm-shell PROPERTY CXX_STANDARD_REQUIRED ON )
290- install (TARGETS wasm-shell DESTINATION ${CMAKE_INSTALL_BINDIR} )
291-
292- set (wasm-opt_SOURCES
293- src/tools/wasm-opt.cpp
294- )
295- add_executable (wasm-opt ${wasm-opt_SOURCES} ${binaryen_objs} )
296- target_link_libraries (wasm-opt ${CMAKE_THREAD_LIBS_INIT} )
297- set_property (TARGET wasm-opt PROPERTY CXX_STANDARD 14)
298- set_property (TARGET wasm-opt PROPERTY CXX_STANDARD_REQUIRED ON )
299- install (TARGETS wasm-opt DESTINATION ${CMAKE_INSTALL_BINDIR} )
300-
301- set (wasm-metadce_SOURCES
302- src/tools/wasm-metadce.cpp
303- )
304- add_executable (wasm-metadce ${wasm-metadce_SOURCES} ${binaryen_objs} )
305- target_link_libraries (wasm-metadce ${CMAKE_THREAD_LIBS_INIT} )
306- set_property (TARGET wasm-metadce PROPERTY CXX_STANDARD 14)
307- set_property (TARGET wasm-metadce PROPERTY CXX_STANDARD_REQUIRED ON )
308- install (TARGETS wasm-metadce DESTINATION ${CMAKE_INSTALL_BINDIR} )
309-
310- set (asm2wasm_SOURCES
311- src/tools/asm2wasm.cpp
312- )
313- add_executable (asm2wasm ${asm2wasm_SOURCES} ${binaryen_objs} )
314- target_link_libraries (asm2wasm ${CMAKE_THREAD_LIBS_INIT} )
315- set_property (TARGET asm2wasm PROPERTY CXX_STANDARD 14)
316- set_property (TARGET asm2wasm PROPERTY CXX_STANDARD_REQUIRED ON )
317- install (TARGETS asm2wasm DESTINATION ${CMAKE_INSTALL_BINDIR} )
318-
319- set (wasm2js_SOURCES
320- src/tools/wasm2js.cpp
321- )
322- add_executable (wasm2js ${wasm2js_SOURCES} ${binaryen_objs} )
323- target_link_libraries (wasm2js ${CMAKE_THREAD_LIBS_INIT} )
324- set_property (TARGET wasm2js PROPERTY CXX_STANDARD 14)
325- set_property (TARGET wasm2js PROPERTY CXX_STANDARD_REQUIRED ON )
326- install (TARGETS wasm2js DESTINATION ${CMAKE_INSTALL_BINDIR} )
327-
328- set (wasm-emscripten-finalize_SOURCES
329- src/tools/wasm-emscripten-finalize.cpp
330- )
331- add_executable (wasm-emscripten-finalize ${wasm-emscripten-finalize_SOURCES} ${binaryen_objs} )
332- target_link_libraries (wasm-emscripten-finalize ${CMAKE_THREAD_LIBS_INIT} )
333- set_property (TARGET wasm-emscripten-finalize PROPERTY CXX_STANDARD 14)
334- set_property (TARGET wasm-emscripten-finalize PROPERTY CXX_STANDARD_REQUIRED ON )
335- install (TARGETS wasm-emscripten-finalize DESTINATION ${CMAKE_INSTALL_BINDIR} )
336-
337- set (wasm_as_SOURCES
338- src/tools/wasm-as.cpp
339- )
340- add_executable (wasm-as ${wasm_as_SOURCES} ${binaryen_objs} )
341- target_link_libraries (wasm-as ${CMAKE_THREAD_LIBS_INIT} )
342- set_property (TARGET wasm-as PROPERTY CXX_STANDARD 14)
343- set_property (TARGET wasm-as PROPERTY CXX_STANDARD_REQUIRED ON )
344- install (TARGETS wasm-as DESTINATION ${CMAKE_INSTALL_BINDIR} )
345-
346- set (wasm_dis_SOURCES
347- src/tools/wasm-dis.cpp
348- )
349- add_executable (wasm-dis ${wasm_dis_SOURCES} ${binaryen_objs} )
350- target_link_libraries (wasm-dis ${CMAKE_THREAD_LIBS_INIT} )
351- set_property (TARGET wasm-dis PROPERTY CXX_STANDARD 14)
352- set_property (TARGET wasm-dis PROPERTY CXX_STANDARD_REQUIRED ON )
353- install (TARGETS wasm-dis DESTINATION ${CMAKE_INSTALL_BINDIR} )
354-
355- set (wasm-ctor-eval_SOURCES
356- src/tools/wasm-ctor-eval.cpp
357- )
358- add_executable (wasm-ctor-eval ${wasm-ctor-eval_SOURCES} ${binaryen_objs} )
359- target_link_libraries (wasm-ctor-eval ${CMAKE_THREAD_LIBS_INIT} )
360- set_property (TARGET wasm-ctor-eval PROPERTY CXX_STANDARD 14)
361- set_property (TARGET wasm-ctor-eval PROPERTY CXX_STANDARD_REQUIRED ON )
362- install (TARGETS wasm-ctor-eval DESTINATION ${CMAKE_INSTALL_BINDIR} )
363-
364- set (wasm-reduce_SOURCES
365- src/tools/wasm-reduce.cpp
366- )
367- add_executable (wasm-reduce ${wasm-reduce_SOURCES} ${binaryen_objs} )
368- target_link_libraries (wasm-reduce ${CMAKE_THREAD_LIBS_INIT} )
369- set_property (TARGET wasm-reduce PROPERTY CXX_STANDARD 14)
370- set_property (TARGET wasm-reduce PROPERTY CXX_STANDARD_REQUIRED ON )
371- install (TARGETS wasm-reduce DESTINATION ${CMAKE_INSTALL_BINDIR} )
311+ function (binaryen_add_executable name sources )
312+ add_executable (${name} ${sources} )
313+ target_link_libraries (${name} ${CMAKE_THREAD_LIBS_INIT} )
314+ target_link_libraries (${name} binaryen)
315+ set_property (TARGET ${name} PROPERTY CXX_STANDARD 14)
316+ set_property (TARGET ${name} PROPERTY CXX_STANDARD_REQUIRED ON )
317+ binaryen_setup_rpath(${name} )
318+ install (TARGETS ${name} DESTINATION ${CMAKE_INSTALL_BINDIR} )
319+ endfunction ()
320+
321+ binaryen_add_executable(wasm-opt src/tools/wasm-opt.cpp)
322+ binaryen_add_executable(wasm-shell src/tools/wasm-shell.cpp)
323+ binaryen_add_executable(wasm-metadce src/tools/wasm-metadce.cpp)
324+ binaryen_add_executable(asm2wasm src/tools/asm2wasm.cpp)
325+ binaryen_add_executable(wasm2js src/tools/wasm2js.cpp)
326+ binaryen_add_executable(wasm-emscripten-finalize src/tools/wasm-emscripten-finalize.cpp)
327+ binaryen_add_executable(wasm-as src/tools/wasm-as.cpp)
328+ binaryen_add_executable(wasm-dis src/tools/wasm-dis.cpp)
329+ binaryen_add_executable(wasm-ctor-eval src/tools/wasm-ctor-eval.cpp)
330+ binaryen_add_executable(wasm-reduce src/tools/wasm-reduce.cpp)
331+
372332
373333# binaryen.js
374334#
0 commit comments