diff --git a/lib/elinux_build_target.dart b/lib/elinux_build_target.dart index 1ffb44b..030d0f0 100644 --- a/lib/elinux_build_target.dart +++ b/lib/elinux_build_target.dart @@ -384,12 +384,7 @@ class NativeBundle { eLinuxDir.path, ], workingDirectory: outputDir.path, - environment: (targetToolchain == null) - ? {'CC': 'clang', 'CXX': 'clang++'} - : { - 'CC': '$targetToolchain/bin/clang', - 'CXX': '$targetToolchain/bin/clang++' - }, + environment: _buildCMakeEnvironment(targetToolchain), ); if (result.exitCode != 0) { throwToolExit('Failed to cmake:\n$result'); @@ -432,6 +427,18 @@ class NativeBundle { } } +Map _buildCMakeEnvironment(String? targetToolchain) { + final String? ccEnv = Platform.environment['CC']; + final String? cxxEnv = Platform.environment['CXX']; + + final String cc = ccEnv ?? + (targetToolchain != null ? '$targetToolchain/bin/clang' : 'clang'); + final String cxx = cxxEnv ?? + (targetToolchain != null ? '$targetToolchain/bin/clang++' : 'clang++'); + + return {'CC': cc, 'CXX': cxx}; +} + String _getCurrentHostPlatformArchName() { final HostPlatform hostPlatform = getCurrentHostPlatform(); return hostPlatform.platformName; diff --git a/templates/app/flutter/CMakeLists.txt b/templates/app/flutter/CMakeLists.txt index f141a3c..fc327ab 100644 --- a/templates/app/flutter/CMakeLists.txt +++ b/templates/app/flutter/CMakeLists.txt @@ -54,6 +54,35 @@ target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") target_link_libraries(flutter INTERFACE "${FLUTTER_EMBEDDER_LIBRARY}") add_dependencies(flutter flutter_assemble) +# === Find Dependencies === +find_package(Fontconfig REQUIRED) +find_package(X11 REQUIRED xkbcommon) +find_package(OpenGL REQUIRED COMPONENTS EGL) + +# Use pkg-config to find Wayland libraries +find_package(PkgConfig REQUIRED) +pkg_check_modules(WAYLAND_EGL REQUIRED wayland-egl) +pkg_check_modules(WAYLAND_CLIENT REQUIRED wayland-client) +pkg_check_modules(WAYLAND_CURSOR REQUIRED wayland-cursor) + +# Link the dependencies to the flutter target +target_link_libraries(flutter INTERFACE + Fontconfig::Fontconfig + X11::xkbcommon + OpenGL::EGL + ${WAYLAND_EGL_LIBRARIES} + ${WAYLAND_CLIENT_LIBRARIES} + ${WAYLAND_CURSOR_LIBRARIES} +) + +# Include directories for the dependencies +target_include_directories(flutter INTERFACE + ${X11_INCLUDE_DIR} + ${WAYLAND_EGL_INCLUDE_DIRS} + ${WAYLAND_CLIENT_INCLUDE_DIRS} + ${WAYLAND_CURSOR_INCLUDE_DIRS} +) + # === Wrapper === list(APPEND CPP_WRAPPER_SOURCES_CORE "core_implementations.cc"