From edfd47e1c69250903a417c729aa4a850d403fa53 Mon Sep 17 00:00:00 2001 From: ObserverOfTime Date: Sat, 5 Oct 2024 18:17:01 +0300 Subject: [PATCH] build(cmake): correct library scopes --- lib/CMakeLists.txt | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index ce93620e..5426552e 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -25,41 +25,45 @@ if(NOT MSVC) target_compile_options(tree-sitter PRIVATE -Wall -Wextra -Wshadow -Wno-unused-parameter -pedantic) endif() -if(NOT BUILD_SHARED_LIBS) - if(WIN32) - set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a) - else() - set(CMAKE_FIND_LIBRARY_SUFFIXES .a) - endif() -endif() - if(TREE_SITTER_FEATURE_WASM) if(NOT DEFINED CACHE{WASMTIME_INCLUDE_DIR}) message(CHECK_START "Looking for wasmtime headers") find_path(WASMTIME_INCLUDE_DIR wasmtime.h - PATHS ENV DEP_WASMTIME_C_API_INCLUDE - REQUIRED) + PATHS ENV DEP_WASMTIME_C_API_INCLUDE) + if(NOT ${WASMTIME_INCLUDE_DIR}) + unset(WASMTIME_INCLUDE_DIR CACHE) + message(FATAL_ERROR "Could not find wasmtime headers.\nDid you forget to set CMAKE_INCLUDE_PATH?") + endif() message(CHECK_PASS "found") endif() if(NOT DEFINED CACHE{WASMTIME_LIBRARY}) message(CHECK_START "Looking for wasmtime library") - find_library(WASMTIME_LIBRARY wasmtime - REQUIRED) + if(BUILD_SHARED_LIBS) + find_library(WASMTIME_LIBRARY wasmtime) + elseif(MSVC) + find_library(WASMTIME_LIBRARY wasmtime.lib) + else() + find_library(WASMTIME_LIBRARY libwasmtime.a) + endif() + if(NOT ${WASMTIME_LIBRARY}) + unset(WASMTIME_LIBRARY CACHE) + message(FATAL_ERROR "Could not find wasmtime library.\nDid you forget to set CMAKE_LIBRARY_PATH?") + endif() message(CHECK_PASS "found") endif() target_compile_definitions(tree-sitter PUBLIC TREE_SITTER_FEATURE_WASM) target_include_directories(tree-sitter SYSTEM PRIVATE "${WASMTIME_INCLUDE_DIR}") - target_link_libraries(tree-sitter PRIVATE "${WASMTIME_LIBRARY}") + target_link_libraries(tree-sitter PUBLIC "${WASMTIME_LIBRARY}") set_property(TARGET tree-sitter PROPERTY C_STANDARD_REQUIRED ON) if(NOT BUILD_SHARED_LIBS) if(WIN32) target_compile_definitions(tree-sitter PRIVATE WASM_API_EXTERN= WASI_API_EXTERN=) - target_link_libraries(tree-sitter PRIVATE ws2_32 advapi32 userenv ntdll shell32 ole32 bcrypt) + target_link_libraries(tree-sitter INTERFACE ws2_32 advapi32 userenv ntdll shell32 ole32 bcrypt) elseif(NOT APPLE) - target_link_libraries(tree-sitter PRIVATE pthread dl m) + target_link_libraries(tree-sitter INTERFACE pthread dl m) endif() endif() endif() @@ -69,7 +73,8 @@ set_target_properties(tree-sitter C_STANDARD 11 C_VISIBILITY_PRESET hidden POSITION_INDEPENDENT_CODE ON - SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") + SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" + DEFINE_SYMBOL "") configure_file(tree-sitter.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter.pc" @ONLY)