diff --git a/CMakeLists.txt b/CMakeLists.txt index a040adc554..dfc7637dbd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -71,6 +71,15 @@ if(NOT APPLE AND NOT WIN32) message(STATUS "Using FREETYPE_CLDFLAGS: " ${FREETYPE_CLDFLAGS}) add_definitions(${FREETYPE_CFLAGS}) link_libraries(${FREETYPE_CLDFLAGS}) + EXEC_PROGRAM(pkg-config ARGS --cflags fontconfig OUTPUT_VARIABLE FONTCONFIG_CFLAGS RESULT_VARIABLE FONTCONFIG_NOT_FOUND) + if(FONTCONFIG_NOT_FOUND) + message(FATAL_ERROR "Fontconfig is required by Skia for this build, but it was not built by the fontconfig crate nor found by pkg-config") + endif() + EXEC_PROGRAM(pkg-config ARGS --libs fontconfig OUTPUT_VARIABLE FONTCONFIG_CLDFLAGS) + message(STATUS "Using FONTCONFIG_CFLAGS: " ${FONTCONFIG_CFLAGS}) + message(STATUS "Using FONTCONFIG_CLDFLAGS: " ${FONTCONFIG_CLDFLAGS}) + add_definitions(${FONTCONFIG_CFLAGS}) + link_libraries(${FONTCONFIG_CLDFLAGS}) endif() endif() @@ -669,7 +678,7 @@ if($ENV{TARGET} MATCHES ".*android.*") set_prefix(SKIA_UTILS_PLATFORM_SRC platform_tools/android/third_party/cpufeatures/ cpu-features.c ) -elseif($ENV{TARGET} MATCHES ".*linux.*") +elseif($ENV{TARGET} MATCHES ".*linux.*" OR $ENV{TARGET} MATCHES ".*bsd.*") set_prefix(SKIA_GL_PLATFORM_SRC src/gpu/gl/unix/ GrGLCreateNativeInterface_unix.cpp SkNativeGLContext_unix.cpp diff --git a/Cargo.toml b/Cargo.toml index fd9df12bbd..45a5fe914c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,11 +36,11 @@ expat-sys = "2.1.5" [target.'cfg(target_os = "windows")'.dependencies] servo-glutin = "0.12" -[target.'cfg(any(target_os = "android", target_os = "linux"))'.dependencies] +[target.'cfg(all(unix, not(target_os = "macos")))'.dependencies] servo-fontconfig-sys = "4.0.0" servo-freetype-sys = "4.0.0" -[target.'cfg(target_os = "linux")'.dependencies] +[target.'cfg(all(unix, not(any(target_os = "android", target_os = "macos"))))'.dependencies] x11 = { version = "2.0.0", features = ["xlib"] } glx = "0.1.0" diff --git a/build.rs b/build.rs index 6b41453374..98007e5b22 100644 --- a/build.rs +++ b/build.rs @@ -24,6 +24,11 @@ fn main() { println!("cargo:rustc-link-lib=c++"); println!("cargo:rustc-link-lib=framework=OpenGL"); println!("cargo:rustc-link-lib=framework=ApplicationServices"); + } else if target.contains("bsd") { + println!("cargo:rustc-link-search=native=/usr/local/lib"); + println!("cargo:rustc-link-lib=c++"); + println!("cargo:rustc-link-lib=bz2"); + println!("cargo:rustc-link-lib=GL"); } else if target.contains("windows") { if target.contains("gnu") { println!("cargo:rustc-link-lib=stdc++"); diff --git a/src/gl_context.rs b/src/gl_context.rs index 792c26b5ff..59edac05da 100644 --- a/src/gl_context.rs +++ b/src/gl_context.rs @@ -18,11 +18,11 @@ pub use gl_context_cgl::GLPlatformContext; #[cfg(target_os="macos")] pub use gl_context_cgl::PlatformDisplayData; -#[cfg(target_os="linux")] +#[cfg(all(unix, not(any(target_os = "android", target_os = "macos"))))] pub use gl_context_glx::GLPlatformContext; -#[cfg(target_os="linux")] +#[cfg(all(unix, not(any(target_os = "android", target_os = "macos"))))] pub use gl_context_glx::PlatformDisplayData; -#[cfg(target_os="linux")] +#[cfg(all(unix, not(any(target_os = "android", target_os = "macos"))))] pub use gl_rasterization_context::GLRasterizationContext; #[cfg(target_os="android")] diff --git a/src/gl_rasterization_context.rs b/src/gl_rasterization_context.rs index 6592b21128..8cd8c1629d 100644 --- a/src/gl_rasterization_context.rs +++ b/src/gl_rasterization_context.rs @@ -13,7 +13,7 @@ use std::ffi::CString; #[cfg(target_os="macos")] pub use gl_rasterization_context_cgl::GLRasterizationContext; -#[cfg(target_os="linux")] +#[cfg(all(unix, not(any(target_os = "android", target_os = "macos"))))] pub use gl_rasterization_context_glx::GLRasterizationContext; #[cfg(target_os="android")] pub use gl_rasterization_context_android::GLRasterizationContext; diff --git a/src/lib.rs b/src/lib.rs index 73660f5325..2f5defb3d7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,18 +11,18 @@ extern crate cgl; #[cfg(target_os="macos")] extern crate io_surface; -#[cfg(target_os="linux")] +#[cfg(all(unix, not(any(target_os = "android", target_os = "macos"))))] extern crate x11; -#[cfg(target_os="linux")] +#[cfg(all(unix, not(any(target_os = "android", target_os = "macos"))))] extern crate glx; #[cfg(target_os="android")] extern crate egl; -#[cfg(any(target_os="linux", target_os="android"))] +#[cfg(all(unix, not(target_os = "macos")))] extern crate freetype_sys; -#[cfg(any(target_os="linux", target_os="android"))] +#[cfg(all(unix, not(target_os = "macos")))] extern crate fontconfig_sys; pub use skia::{ @@ -42,9 +42,9 @@ pub mod gl_context; pub mod gl_rasterization_context; pub mod skia; -#[cfg(target_os="linux")] +#[cfg(all(unix, not(any(target_os = "android", target_os = "macos"))))] pub mod gl_context_glx; -#[cfg(target_os="linux")] +#[cfg(all(unix, not(any(target_os = "android", target_os = "macos"))))] pub mod gl_rasterization_context_glx; #[cfg(target_os="macos")]