import org.gradle.internal.os.OperatingSystem if (project.hasProperty('onlylinuxathena') || project.hasProperty('onlylinuxsystemcore')) { return; } apply plugin: 'cpp' if (OperatingSystem.current().isMacOsX()) { apply plugin: 'objective-cpp' } apply plugin: 'visual-studio' apply plugin: 'edu.wpi.first.NativeUtils' ext { nativeName = 'wpigui' } apply from: "${rootDir}/shared/config.gradle" nativeUtils.exportsConfigs { wpigui { } } model { components { "${nativeName}"(NativeLibrarySpec) { sources.cpp { source { srcDirs "src/main/native/cpp" include '*.cpp' } exportedHeaders { srcDirs 'src/main/native/include' } } binaries.all { lib project: ':thirdparty:imgui_suite', library: 'imguiSuite', linkage: 'static' if (it.targetPlatform.name == nativeUtils.wpi.platforms.systemcore) { it.buildable = false return } if (it.targetPlatform.operatingSystem.isWindows()) { it.sources { wpiguiWindowsCpp(CppSourceSet) { source { srcDirs 'src/main/native/directx11' include '*.cpp' } } } } else if (it.targetPlatform.operatingSystem.isMacOsX()) { it.sources { wpiguiMacObjectiveCpp(ObjectiveCppSourceSet) { source { srcDirs 'src/main/native/metal' include '*.mm' } } } } else if (it.targetPlatform.name.startsWith('linuxarm')) { it.sources { wpiguiUnixGl2Cpp(CppSourceSet) { source { srcDirs 'src/main/native/opengl2' include '*.cpp' } } } } else { it.sources { wpiguiUnixGl3Cpp(CppSourceSet) { source { srcDirs 'src/main/native/opengl3' include '*.cpp' } } } } it.sources.each { it.exportedHeaders { srcDirs 'src/main/native/include' } } } } // By default, a development executable will be generated. This is to help the case of // testing specific functionality of the library. "${nativeName}Dev"(NativeExecutableSpec) { targetBuildTypes 'debug' sources.cpp { source { srcDirs 'src/dev/native/cpp' include '**/*.cpp' } exportedHeaders { srcDirs 'src/dev/native/include' } } binaries.all { lib library: 'wpigui' lib project: ':thirdparty:imgui_suite', library: 'imguiSuite', linkage: 'static' } } } binaries { all { if (it.targetPlatform.name == nativeUtils.wpi.platforms.systemcore) { it.buildable = false return } if (it.targetPlatform.operatingSystem.isWindows()) { it.linker.args << 'Gdi32.lib' << 'Shell32.lib' << 'd3d11.lib' << 'd3dcompiler.lib' } else if (it.targetPlatform.operatingSystem.isMacOsX()) { it.linker.args << '-framework' << 'Metal' << '-framework' << 'MetalKit' << '-framework' << 'Cocoa' << '-framework' << 'IOKit' << '-framework' << 'CoreFoundation' << '-framework' << 'CoreVideo' << '-framework' << 'QuartzCore' } else { it.linker.args << '-lX11' if (it.targetPlatform.name.startsWith('linuxarm')) { it.linker.args << '-lGL' } } } withType(SharedLibraryBinarySpec) { buildable = false } } } apply from: 'publish.gradle'