11# Version set according the the cmake versions available in Ubuntu/Bionic:
2- # https://packages.ubuntu.com/bionic /cmake
3- cmake_minimum_required (VERSION 3.10.2 )
2+ # https://packages.ubuntu.com/focal /cmake
3+ cmake_minimum_required (VERSION 3.16.3 )
44
55# Needed for C++17 (std::variant)
66# TODO(https://github.com/WebAssembly/binaryen/issues/4299): We need
@@ -172,12 +172,12 @@ if(NOT EMSCRIPTEN)
172172 endif ()
173173endif ()
174174
175- # Compiler setup.
175+ # Compiler setup. Use SYSTEM to avoid warnings and errors from third-party headers.
176176
177177include_directories (${CMAKE_CURRENT_SOURCE_DIR} /src)
178- include_directories (${CMAKE_CURRENT_SOURCE_DIR} /third_party/FP16/include )
178+ include_directories (SYSTEM ${CMAKE_CURRENT_SOURCE_DIR} /third_party/FP16/include )
179179if (BUILD_LLVM_DWARF)
180- include_directories (${CMAKE_CURRENT_SOURCE_DIR} /third_party/llvm-project/include )
180+ include_directories (SYSTEM ${CMAKE_CURRENT_SOURCE_DIR} /third_party/llvm-project/include )
181181endif ()
182182
183183# Add output directory to include path so config.h can be found
@@ -400,10 +400,15 @@ if(UNIX AND CMAKE_GENERATOR STREQUAL "Ninja")
400400 endif ()
401401endif ()
402402
403- # Static libraries
404- # Current (partial) dependency structure is as follows:
405- # tools -> passes -> wasm -> asmjs -> support
406- # TODO: It's odd that wasm should depend on asmjs, maybe we should fix that.
403+ if (BUILD_STATIC_LIB)
404+ message (STATUS "Building libbinaryen as statically linked library." )
405+ add_library (binaryen STATIC )
406+ add_definitions (-DBUILD_STATIC_LIBRARY)
407+ else ()
408+ message (STATUS "Building libbinaryen as shared library." )
409+ add_library (binaryen SHARED)
410+ endif ()
411+
407412add_subdirectory (src/ir)
408413add_subdirectory (src/asmjs)
409414add_subdirectory (src/cfg)
@@ -430,39 +435,16 @@ if(BUILD_TESTS)
430435 add_subdirectory (test /gtest)
431436endif ()
432437
433- # Object files
434- set (binaryen_objs
435- $<TARGET_OBJECTS:passes>
436- $<TARGET_OBJECTS:wasm>
437- $<TARGET_OBJECTS:asmjs>
438- $<TARGET_OBJECTS:emscripten-optimizer>
439- $<TARGET_OBJECTS:ir>
440- $<TARGET_OBJECTS:cfg>
441- $<TARGET_OBJECTS:support>
442- $<TARGET_OBJECTS:analysis>
443- $<TARGET_OBJECTS:parser>
444- $<TARGET_OBJECTS:interpreter>)
445-
446- if (BUILD_LLVM_DWARF)
447- SET (binaryen_objs ${binaryen_objs} $<TARGET_OBJECTS:llvm_dwarf>)
448- endif ()
449-
450438# Sources.
451439
452440file (GLOB binaryen_HEADERS src/*.h)
453441set (binaryen_SOURCES
454442 src/binaryen-c.cpp
455443 ${binaryen_HEADERS}
456444)
457- if (BUILD_STATIC_LIB)
458- message (STATUS "Building libbinaryen as statically linked library." )
459- add_library (binaryen STATIC ${binaryen_SOURCES} ${binaryen_objs} )
460- add_definitions (-DBUILD_STATIC_LIBRARY)
461- else ()
462- message (STATUS "Building libbinaryen as shared library." )
463- add_library (binaryen SHARED ${binaryen_SOURCES} ${binaryen_objs} )
464- endif ()
445+ target_sources (binaryen PRIVATE ${binaryen_SOURCES} )
465446target_link_libraries (binaryen ${CMAKE_THREAD_LIBS_INIT} )
447+
466448if (INSTALL_LIBS OR NOT BUILD_STATIC_LIB)
467449 install (TARGETS binaryen
468450 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
@@ -483,7 +465,7 @@ if(EMSCRIPTEN)
483465 # binaryen.js WebAssembly variant
484466 add_executable (binaryen_wasm
485467 ${binaryen_SOURCES} )
486- target_link_libraries (binaryen_wasm wasm asmjs emscripten-optimizer passes ir cfg support analysis parser interpreter wasm )
468+ target_link_libraries (binaryen_wasm binaryen )
487469 target_link_libraries (binaryen_wasm "-sFILESYSTEM" )
488470 target_link_libraries (binaryen_wasm "-sEXPORT_NAME=Binaryen" )
489471 target_link_libraries (binaryen_wasm "-sNODERAWFS=0" )
@@ -513,7 +495,7 @@ if(EMSCRIPTEN)
513495 # binaryen.js JavaScript variant
514496 add_executable (binaryen_js
515497 ${binaryen_SOURCES} )
516- target_link_libraries (binaryen_js wasm asmjs emscripten-optimizer passes ir cfg support analysis parser interpreter wasm )
498+ target_link_libraries (binaryen_js binaryen )
517499 target_link_libraries (binaryen_js "-sWASM=0" )
518500 target_link_libraries (binaryen_js "-sWASM_ASYNC_COMPILATION=0" )
519501 if (${CMAKE_CXX_COMPILER_VERSION} STREQUAL "6.0.1" )
0 commit comments