From eec4f53a65683b2db32475bf3b94c31767fa0cdf Mon Sep 17 00:00:00 2001 From: Thad House Date: Sun, 13 May 2018 19:37:20 -0700 Subject: [PATCH] Forces CRLF files to LF (#1054) --- ni-libraries/build.gradle | 222 ++++++------ ni-libraries/publish.gradle | 62 ++-- shared/config.gradle | 706 ++++++++++++++++++------------------ 3 files changed, 495 insertions(+), 495 deletions(-) diff --git a/ni-libraries/build.gradle b/ni-libraries/build.gradle index 6c2ae59370..8276c7f562 100644 --- a/ni-libraries/build.gradle +++ b/ni-libraries/build.gradle @@ -1,111 +1,111 @@ -import edu.wpi.first.nativeutils.* -import org.gradle.internal.os.OperatingSystem -import org.apache.tools.ant.filters.*; - -public class NiDependencySet implements NativeDependencySet { - private Project m_project - - public NiDependencySet(Project project) { - m_project = project - } - - public FileCollection getIncludeRoots() { - return m_project.files("${m_project.projectDir}/include") - } - - private FileCollection getFiles() { - def f = m_project.fileTree("${m_project.projectDir}/lib").filter { it.isFile() } - return f - } - - public FileCollection getLinkFiles() { - return getFiles() - } - - public FileCollection getRuntimeFiles() { - return m_project.files() - } -} - -ext.addNiLibrariesToLinker = { binary -> - if (binary.targetPlatform.architecture.name == 'athena') { - binary.lib(new NiDependencySet(project)) - } -} - -def outputsFolder = file("$project.buildDir/outputs") - -def niLibBaseName = '_GROUP_edu_wpi_first_ni-libraries_ID_ni-libraries_CLS' - -task libZip(type: Zip) { - destinationDir = outputsFolder - baseName = niLibBaseName - classifier = "linuxathena" - - from('lib') { - into '/linux/athena/shared/' - } -} - -task headersZip(type: Zip) { - destinationDir = outputsFolder - baseName = niLibBaseName - classifier = "headers" - - from('include') { - into '/' - } -} - -task build() {} - -build.dependsOn headersZip -build.dependsOn libZip - -addTaskToCopyAllOutputs(headersZip) -addTaskToCopyAllOutputs(libZip) - -apply from: 'publish.gradle' - -task patchNiLibraries() { - doLast { - // Patch ChipObject headers to be self contained - FileTree chipTree = fileTree(dir: "$rootDir/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace") - chipTree.each { File file -> - String contents = file.getText('UTF-8') - contents = contents.replaceAll('#include \"tSystemInterface.h\"', '#include \"../tSystem.h\"\n#include \"../tSystemInterface.h\"') - file.write(contents, 'UTF-8') - } - - // Patch NetComm headers to work on Windows - FileTree netTree = fileTree(dir: "$rootDir/ni-libraries/include/FRC_NetworkCommunication") - netTree.each { File file -> - String contents = file.getText('UTF-8') - contents = contents.replaceAll('#ifdef WIN32', '#ifdef _WIN32') - contents = contents.replaceAll('# include ', '#include ') - contents = contents.replaceAll('#include ', '#include ') - file.write(contents, 'UTF-8') - } - - FileTree allTree = fileTree(dir: "$rootDir/ni-libraries/include/") - allTree.each { File file -> - String contents = file.getText('UTF-8') - contents = contents.replaceAll('\r\n', '\n') - file.write(contents, 'UTF-8') - } - - // Move UsageReporting header to the HAL, because it is necessary for our - // UsageReporting in WPILibC. - - copy { - from("$rootDir/ni-libraries/include/FRC_NetworkCommunication") { - include 'UsageReporting.h' - } - into "$rootDir/hal/src/main/native/include/HAL" - } - - delete { - delete "$rootDir/ni-libraries/include/FRC_NetworkCommunication/UsageReporting.h" - } - } -} +import edu.wpi.first.nativeutils.* +import org.gradle.internal.os.OperatingSystem +import org.apache.tools.ant.filters.*; + +public class NiDependencySet implements NativeDependencySet { + private Project m_project + + public NiDependencySet(Project project) { + m_project = project + } + + public FileCollection getIncludeRoots() { + return m_project.files("${m_project.projectDir}/include") + } + + private FileCollection getFiles() { + def f = m_project.fileTree("${m_project.projectDir}/lib").filter { it.isFile() } + return f + } + + public FileCollection getLinkFiles() { + return getFiles() + } + + public FileCollection getRuntimeFiles() { + return m_project.files() + } +} + +ext.addNiLibrariesToLinker = { binary -> + if (binary.targetPlatform.architecture.name == 'athena') { + binary.lib(new NiDependencySet(project)) + } +} + +def outputsFolder = file("$project.buildDir/outputs") + +def niLibBaseName = '_GROUP_edu_wpi_first_ni-libraries_ID_ni-libraries_CLS' + +task libZip(type: Zip) { + destinationDir = outputsFolder + baseName = niLibBaseName + classifier = "linuxathena" + + from('lib') { + into '/linux/athena/shared/' + } +} + +task headersZip(type: Zip) { + destinationDir = outputsFolder + baseName = niLibBaseName + classifier = "headers" + + from('include') { + into '/' + } +} + +task build() {} + +build.dependsOn headersZip +build.dependsOn libZip + +addTaskToCopyAllOutputs(headersZip) +addTaskToCopyAllOutputs(libZip) + +apply from: 'publish.gradle' + +task patchNiLibraries() { + doLast { + // Patch ChipObject headers to be self contained + FileTree chipTree = fileTree(dir: "$rootDir/ni-libraries/include/FRC_FPGA_ChipObject/nRoboRIO_FPGANamespace") + chipTree.each { File file -> + String contents = file.getText('UTF-8') + contents = contents.replaceAll('#include \"tSystemInterface.h\"', '#include \"../tSystem.h\"\n#include \"../tSystemInterface.h\"') + file.write(contents, 'UTF-8') + } + + // Patch NetComm headers to work on Windows + FileTree netTree = fileTree(dir: "$rootDir/ni-libraries/include/FRC_NetworkCommunication") + netTree.each { File file -> + String contents = file.getText('UTF-8') + contents = contents.replaceAll('#ifdef WIN32', '#ifdef _WIN32') + contents = contents.replaceAll('# include ', '#include ') + contents = contents.replaceAll('#include ', '#include ') + file.write(contents, 'UTF-8') + } + + FileTree allTree = fileTree(dir: "$rootDir/ni-libraries/include/") + allTree.each { File file -> + String contents = file.getText('UTF-8') + contents = contents.replaceAll('\r\n', '\n') + file.write(contents, 'UTF-8') + } + + // Move UsageReporting header to the HAL, because it is necessary for our + // UsageReporting in WPILibC. + + copy { + from("$rootDir/ni-libraries/include/FRC_NetworkCommunication") { + include 'UsageReporting.h' + } + into "$rootDir/hal/src/main/native/include/HAL" + } + + delete { + delete "$rootDir/ni-libraries/include/FRC_NetworkCommunication/UsageReporting.h" + } + } +} diff --git a/ni-libraries/publish.gradle b/ni-libraries/publish.gradle index e311086121..132b5d03e3 100644 --- a/ni-libraries/publish.gradle +++ b/ni-libraries/publish.gradle @@ -1,31 +1,31 @@ -apply plugin: 'maven-publish' -apply plugin: 'edu.wpi.first.wpilib.versioning.WPILibVersioningPlugin' - -if (!hasProperty('releaseType')) { - WPILibVersion { - releaseType = 'dev' - } -} - -def pubVersion -if (project.hasProperty("publishVersion")) { - pubVersion = project.publishVersion -} else { - pubVersion = WPILibVersion.version -} - -def baseArtifactId = 'ni-libraries' -def artifactGroupId = 'edu.wpi.first.ni-libraries' - -publishing { - publications { - nilibraries(MavenPublication) { - artifact libZip - artifact headersZip - - artifactId = "${baseArtifactId}" - groupId artifactGroupId - version pubVersion - } - } -} +apply plugin: 'maven-publish' +apply plugin: 'edu.wpi.first.wpilib.versioning.WPILibVersioningPlugin' + +if (!hasProperty('releaseType')) { + WPILibVersion { + releaseType = 'dev' + } +} + +def pubVersion +if (project.hasProperty("publishVersion")) { + pubVersion = project.publishVersion +} else { + pubVersion = WPILibVersion.version +} + +def baseArtifactId = 'ni-libraries' +def artifactGroupId = 'edu.wpi.first.ni-libraries' + +publishing { + publications { + nilibraries(MavenPublication) { + artifact libZip + artifact headersZip + + artifactId = "${baseArtifactId}" + groupId artifactGroupId + version pubVersion + } + } +} diff --git a/shared/config.gradle b/shared/config.gradle index 8011167ee6..28706bd18e 100644 --- a/shared/config.gradle +++ b/shared/config.gradle @@ -1,353 +1,353 @@ -import edu.wpi.first.nativeutils.* -import org.gradle.internal.os.OperatingSystem - -def windowsCompilerArgs = ['/EHsc', '/DNOMINMAX', '/Zi', '/FS', '/Zc:inline', '/MT'] -def windowsCCompilerArgs = ['/Zi', '/FS', '/Zc:inline', '/MT'] -def windowsReleaseCompilerArgs = ['/O2'] -def windowsLinkerArgs = ['/DEBUG:FULL'] -def windowsReleaseLinkerArgs = ['/OPT:REF', '/OPT:ICF'] - -def linuxCompilerArgs = ['-std=c++14', '-Wformat=2', '-Wall', '-Wextra', '-Werror', '-pedantic', '-Wno-psabi', '-g', - '-Wno-unused-parameter', '-fPIC', '-rdynamic', '-pthread'] -def linuxCCompilerArgs = ['-Wformat=2', '-Wall', '-Wextra', '-Werror', '-pedantic', '-Wno-psabi', '-g', - '-Wno-unused-parameter', '-fPIC', '-rdynamic', '-pthread'] -def linuxLinkerArgs = ['-rdynamic', '-pthread', '-ldl'] -def linuxReleaseCompilerArgs = ['-Og'] -def linuxDebugCompilerArgs = ['-O0'] -def linux32BitArg = '-m32' - -def macCompilerArgs = ['-std=c++14', '-Wall', '-Wextra', '-Werror', '-pedantic-errors', '-fPIC', '-g', - '-Wno-unused-parameter', '-Wno-missing-field-initializers', '-Wno-unused-private-field', - '-Wno-unused-const-variable', '-pthread'] -def macCCompilerArgs = ['-Wall', '-Wextra', '-Werror', '-pedantic-errors', '-fPIC', '-g', - '-Wno-unused-parameter', '-Wno-missing-field-initializers', '-Wno-unused-private-field'] -def macReleaseCompilerArgs = ['-O2'] -def macDebugCompilerArgs = ['-O0'] -def mac32BitArg = '-m32' - -def buildAll = project.hasProperty('buildAll') - -def windows64PlatformDetect = { - def arch = System.getProperty("os.arch") - def isWin = OperatingSystem.current().isWindows() - if (buildAll) { - return isWin - } else { - return isWin && arch == 'amd64' - } -} - -def windows32PlatformDetect = { - def arch = System.getProperty("os.arch") - def isWin = OperatingSystem.current().isWindows() - if (buildAll) { - return isWin - } else { - return isWin && arch == 'x86' - } -} - -def linux32IntelPlatformDetect = { - def arch = System.getProperty("os.arch") - def isLinux = OperatingSystem.current().isLinux() - def isIntel = (arch == 'amd64' || arch == 'i386') - if (buildAll) { - return isLinux && isIntel - } else { - return isLinux && arch == 'i386' - } -} - -def linux64IntelPlatformDetect = { - def arch = System.getProperty("os.arch") - def isLinux = OperatingSystem.current().isLinux() - def isIntel = (arch == 'amd64' || arch == 'i386') - if (buildAll) { - return isLinux && isIntel - } else { - return isLinux && arch == 'amd64' - } -} - -def linuxArmPlatformDetect = { - def arch = System.getProperty("os.arch") - def isIntel = (arch == 'amd64' || arch == 'i386') - return OperatingSystem.current().isLinux() && !isIntel -} - -def mac64PlatformDetect = { - def arch = System.getProperty("os.arch") - def isMac = OperatingSystem.current().isMacOsX() - if (buildAll) { - return isMac - } else { - return isMac && arch == 'x86_64' - } -} - -def mac32PlatformDetect = { - def arch = System.getProperty("os.arch") - def isMac = OperatingSystem.current().isMacOsX() - if (buildAll) { - return isMac - } else { - return isMac && arch == 'x86' - } -} - -if (!project.hasProperty('skipAthena')) { - model { - buildConfigs { - roboRio(CrossBuildConfig) { - architecture = 'athena' - operatingSystem = 'linux' - toolChainPrefix = 'arm-frc-linux-gnueabi-' - compilerArgs = linuxCompilerArgs - CCompilerArgs = linuxCCompilerArgs - linkerArgs = linuxLinkerArgs - debugCompilerArgs = linuxDebugCompilerArgs - releaseCompilerArgs = linuxReleaseCompilerArgs - releaseStripBinaries = true - compilerFamily = 'Gcc' - } - } - } -} - -if (!project.hasProperty('onlyAthena')) { - model { - buildConfigs { - winX86(BuildConfig) { - architecture = 'x86' - operatingSystem = 'windows' - compilerArgs = windowsCompilerArgs - CCompilerArgs = windowsCCompilerArgs - linkerArgs = windowsLinkerArgs - releaseCompilerArgs = windowsReleaseCompilerArgs - releaseLinkerArgs = windowsReleaseLinkerArgs - compilerFamily = 'VisualCpp' - detectPlatform = windows32PlatformDetect - } - winX64(BuildConfig) { - architecture = 'x86-64' - operatingSystem = 'windows' - compilerArgs = windowsCompilerArgs - CCompilerArgs = windowsCCompilerArgs - linkerArgs = windowsLinkerArgs - releaseCompilerArgs = windowsReleaseCompilerArgs - releaseLinkerArgs = windowsReleaseLinkerArgs - compilerFamily = 'VisualCpp' - detectPlatform = windows64PlatformDetect - } - /* Disable 32 bit linux until we can figure out jenkins - linuxX86(BuildConfig) { - architecture = 'x86' - operatingSystem = 'linux' - compilerArgs = linuxCompilerArgs - compilerArgs << linux32BitArg - CCompilerArgs = linuxCCompilerArgs - CCompilerArgs << linux32BitArg - linkerArgs = linuxLinkerArgs - linkerArgs << linux32BitArg - debugCompilerArgs = linuxDebugCompilerArgs - releaseCompilerArgs = linuxReleaseCompilerArgs - releaseStripBinaries = true - compilerFamily = 'Gcc' - detectPlatform = linux32IntelPlatformDetect - exclude << 'halAthena' - } - */ - linuxX64(BuildConfig) { - architecture = 'x86-64' - operatingSystem = 'linux' - compilerArgs = linuxCompilerArgs - CCompilerArgs = linuxCCompilerArgs - linkerArgs = linuxLinkerArgs - debugCompilerArgs = linuxDebugCompilerArgs - releaseCompilerArgs = linuxReleaseCompilerArgs - releaseStripBinaries = true - compilerFamily = 'Gcc' - detectPlatform = linux64IntelPlatformDetect - } - /* 32 bit Mac OS X not supported by OpenCV. - * If support is ever added, will add this back in - macX86(BuildConfig) { - architecture = 'x86' - operatingSystem = 'osx' - compilerArgs = macCompilerArgs - compilerArgs << mac32BitArg - CCompilerArgs = macCCompilerArgs - CCompilerArgs << mac32BitArg - linkerArgs << mac32BitArg - debugCompilerArgs = macDebugCompilerArgs - releaseCompilerArgs = macReleaseCompilerArgs - releaseStripBinaries = true - compilerFamily = 'Clang' - detectPlatform = mac32PlatformDetect - } - */ - macX64(BuildConfig) { - architecture = 'x86-64' - operatingSystem = 'osx' - compilerArgs = macCompilerArgs - CCompilerArgs = macCCompilerArgs - debugCompilerArgs = macDebugCompilerArgs - releaseCompilerArgs = macReleaseCompilerArgs - releaseStripBinaries = true - compilerFamily = 'Clang' - detectPlatform = mac64PlatformDetect - } - } - } -} - -if (project.hasProperty('linuxCross')) { - model { - buildConfigs { - linuxArm(CrossBuildConfig) { - architecture = 'nativearm' - operatingSystem = 'linux' - toolChainPrefix = 'PLEASE_PROVIDE_A_COMPILER_NAME' - compilerArgs = linuxCompilerArgs - CCompilerArgs = linuxCCompilerArgs - linkerArgs = linuxLinkerArgs - debugCompilerArgs = linuxDebugCompilerArgs - releaseCompilerArgs = linuxReleaseCompilerArgs - releaseStripBinaries = true - skipByDefault = true - compilerFamily = 'Gcc' - } - } - } -} else { - model { - buildConfigs { - linuxArm(BuildConfig) { - architecture = 'nativearm' - operatingSystem = 'linux' - compilerArgs = linuxCompilerArgs - CCompilerArgs = linuxCCompilerArgs - linkerArgs = linuxLinkerArgs - debugCompilerArgs = linuxDebugCompilerArgs - releaseCompilerArgs = linuxReleaseCompilerArgs - releaseStripBinaries = true - compilerFamily = 'Gcc' - detectPlatform = linuxArmPlatformDetect - } - } - } -} - -ext.getClassifier = { binary -> - return NativeUtils.getClassifier(binary) -} - -ext.getPlatformPath = { binary -> - return NativeUtils.getPlatformPath(binary) -} - -ext.createComponentZipTasks = { components, name, base, type, project, func -> - def configMap = [:] - components.each { - if (it in NativeLibrarySpec && it.name == name) { - it.binaries.each { - def target = getClassifier(it) - if (configMap.containsKey(target)) { - configMap.get(target).add(it) - } else { - configMap.put(target, []) - configMap.get(target).add(it) - } - } - } - } - def taskList = [] - def outputsFolder = file("$project.buildDir/outputs") - configMap.each { key, value -> - def task = project.tasks.create(base + "-${key}", type) { - description = 'Creates component archive for platform ' + key - destinationDir = outputsFolder - classifier = key - baseName = '_M_' + base - duplicatesStrategy = 'exclude' - - from(licenseFile) { - into '/' - } - - func(it, value) - } - taskList.add(task) - - project.build.dependsOn task - - project.artifacts { - task - } - addTaskToCopyAllOutputs(task) - } - return taskList -} - -ext.createAllCombined = { list, name, base, type, project -> - def outputsFolder = file("$project.buildDir/outputs") - def task = project.tasks.create(base + '-all', type) { - description = 'Creates component archive for all classifiers' - destinationDir = outputsFolder - classifier = 'all' - baseName = base - duplicatesStrategy = 'exclude' - - list.each { - it.outputs.files.each { - from project.zipTree(it) - } - dependsOn it - } - } - - project.build.dependsOn task - - project.artifacts { - task - } - - return task - -} - -ext.includeStandardZipFormat = { task, value -> - value.each { binary -> - if (binary.buildable) { - if (binary instanceof SharedLibraryBinarySpec) { - task.dependsOn binary.buildTask - task.from(new File(binary.sharedLibraryFile.absolutePath + ".debug")) { - into getPlatformPath(binary) + '/shared' - } - task.from(binary.sharedLibraryFile) { - into getPlatformPath(binary) + '/shared' - } - task.from(binary.sharedLibraryLinkFile) { - into getPlatformPath(binary) + '/shared' - } - } else if (binary instanceof StaticLibraryBinarySpec) { - task.dependsOn binary.buildTask - task.from(binary.staticLibraryFile) { - into getPlatformPath(binary) + '/static' - } - } - } - } -} - -ext.getCurrentArch = { - def arch = System.getProperty('os.arch'); - - if (arch.equals("x86") || arch.equals("i386")) { - return 'x86' - } else if (arch.equals("amd64") || arch.equals("x86_64")) { - return 'x86-64' - } else { - return arch - } -} +import edu.wpi.first.nativeutils.* +import org.gradle.internal.os.OperatingSystem + +def windowsCompilerArgs = ['/EHsc', '/DNOMINMAX', '/Zi', '/FS', '/Zc:inline', '/MT'] +def windowsCCompilerArgs = ['/Zi', '/FS', '/Zc:inline', '/MT'] +def windowsReleaseCompilerArgs = ['/O2'] +def windowsLinkerArgs = ['/DEBUG:FULL'] +def windowsReleaseLinkerArgs = ['/OPT:REF', '/OPT:ICF'] + +def linuxCompilerArgs = ['-std=c++14', '-Wformat=2', '-Wall', '-Wextra', '-Werror', '-pedantic', '-Wno-psabi', '-g', + '-Wno-unused-parameter', '-fPIC', '-rdynamic', '-pthread'] +def linuxCCompilerArgs = ['-Wformat=2', '-Wall', '-Wextra', '-Werror', '-pedantic', '-Wno-psabi', '-g', + '-Wno-unused-parameter', '-fPIC', '-rdynamic', '-pthread'] +def linuxLinkerArgs = ['-rdynamic', '-pthread', '-ldl'] +def linuxReleaseCompilerArgs = ['-Og'] +def linuxDebugCompilerArgs = ['-O0'] +def linux32BitArg = '-m32' + +def macCompilerArgs = ['-std=c++14', '-Wall', '-Wextra', '-Werror', '-pedantic-errors', '-fPIC', '-g', + '-Wno-unused-parameter', '-Wno-missing-field-initializers', '-Wno-unused-private-field', + '-Wno-unused-const-variable', '-pthread'] +def macCCompilerArgs = ['-Wall', '-Wextra', '-Werror', '-pedantic-errors', '-fPIC', '-g', + '-Wno-unused-parameter', '-Wno-missing-field-initializers', '-Wno-unused-private-field'] +def macReleaseCompilerArgs = ['-O2'] +def macDebugCompilerArgs = ['-O0'] +def mac32BitArg = '-m32' + +def buildAll = project.hasProperty('buildAll') + +def windows64PlatformDetect = { + def arch = System.getProperty("os.arch") + def isWin = OperatingSystem.current().isWindows() + if (buildAll) { + return isWin + } else { + return isWin && arch == 'amd64' + } +} + +def windows32PlatformDetect = { + def arch = System.getProperty("os.arch") + def isWin = OperatingSystem.current().isWindows() + if (buildAll) { + return isWin + } else { + return isWin && arch == 'x86' + } +} + +def linux32IntelPlatformDetect = { + def arch = System.getProperty("os.arch") + def isLinux = OperatingSystem.current().isLinux() + def isIntel = (arch == 'amd64' || arch == 'i386') + if (buildAll) { + return isLinux && isIntel + } else { + return isLinux && arch == 'i386' + } +} + +def linux64IntelPlatformDetect = { + def arch = System.getProperty("os.arch") + def isLinux = OperatingSystem.current().isLinux() + def isIntel = (arch == 'amd64' || arch == 'i386') + if (buildAll) { + return isLinux && isIntel + } else { + return isLinux && arch == 'amd64' + } +} + +def linuxArmPlatformDetect = { + def arch = System.getProperty("os.arch") + def isIntel = (arch == 'amd64' || arch == 'i386') + return OperatingSystem.current().isLinux() && !isIntel +} + +def mac64PlatformDetect = { + def arch = System.getProperty("os.arch") + def isMac = OperatingSystem.current().isMacOsX() + if (buildAll) { + return isMac + } else { + return isMac && arch == 'x86_64' + } +} + +def mac32PlatformDetect = { + def arch = System.getProperty("os.arch") + def isMac = OperatingSystem.current().isMacOsX() + if (buildAll) { + return isMac + } else { + return isMac && arch == 'x86' + } +} + +if (!project.hasProperty('skipAthena')) { + model { + buildConfigs { + roboRio(CrossBuildConfig) { + architecture = 'athena' + operatingSystem = 'linux' + toolChainPrefix = 'arm-frc-linux-gnueabi-' + compilerArgs = linuxCompilerArgs + CCompilerArgs = linuxCCompilerArgs + linkerArgs = linuxLinkerArgs + debugCompilerArgs = linuxDebugCompilerArgs + releaseCompilerArgs = linuxReleaseCompilerArgs + releaseStripBinaries = true + compilerFamily = 'Gcc' + } + } + } +} + +if (!project.hasProperty('onlyAthena')) { + model { + buildConfigs { + winX86(BuildConfig) { + architecture = 'x86' + operatingSystem = 'windows' + compilerArgs = windowsCompilerArgs + CCompilerArgs = windowsCCompilerArgs + linkerArgs = windowsLinkerArgs + releaseCompilerArgs = windowsReleaseCompilerArgs + releaseLinkerArgs = windowsReleaseLinkerArgs + compilerFamily = 'VisualCpp' + detectPlatform = windows32PlatformDetect + } + winX64(BuildConfig) { + architecture = 'x86-64' + operatingSystem = 'windows' + compilerArgs = windowsCompilerArgs + CCompilerArgs = windowsCCompilerArgs + linkerArgs = windowsLinkerArgs + releaseCompilerArgs = windowsReleaseCompilerArgs + releaseLinkerArgs = windowsReleaseLinkerArgs + compilerFamily = 'VisualCpp' + detectPlatform = windows64PlatformDetect + } + /* Disable 32 bit linux until we can figure out jenkins + linuxX86(BuildConfig) { + architecture = 'x86' + operatingSystem = 'linux' + compilerArgs = linuxCompilerArgs + compilerArgs << linux32BitArg + CCompilerArgs = linuxCCompilerArgs + CCompilerArgs << linux32BitArg + linkerArgs = linuxLinkerArgs + linkerArgs << linux32BitArg + debugCompilerArgs = linuxDebugCompilerArgs + releaseCompilerArgs = linuxReleaseCompilerArgs + releaseStripBinaries = true + compilerFamily = 'Gcc' + detectPlatform = linux32IntelPlatformDetect + exclude << 'halAthena' + } + */ + linuxX64(BuildConfig) { + architecture = 'x86-64' + operatingSystem = 'linux' + compilerArgs = linuxCompilerArgs + CCompilerArgs = linuxCCompilerArgs + linkerArgs = linuxLinkerArgs + debugCompilerArgs = linuxDebugCompilerArgs + releaseCompilerArgs = linuxReleaseCompilerArgs + releaseStripBinaries = true + compilerFamily = 'Gcc' + detectPlatform = linux64IntelPlatformDetect + } + /* 32 bit Mac OS X not supported by OpenCV. + * If support is ever added, will add this back in + macX86(BuildConfig) { + architecture = 'x86' + operatingSystem = 'osx' + compilerArgs = macCompilerArgs + compilerArgs << mac32BitArg + CCompilerArgs = macCCompilerArgs + CCompilerArgs << mac32BitArg + linkerArgs << mac32BitArg + debugCompilerArgs = macDebugCompilerArgs + releaseCompilerArgs = macReleaseCompilerArgs + releaseStripBinaries = true + compilerFamily = 'Clang' + detectPlatform = mac32PlatformDetect + } + */ + macX64(BuildConfig) { + architecture = 'x86-64' + operatingSystem = 'osx' + compilerArgs = macCompilerArgs + CCompilerArgs = macCCompilerArgs + debugCompilerArgs = macDebugCompilerArgs + releaseCompilerArgs = macReleaseCompilerArgs + releaseStripBinaries = true + compilerFamily = 'Clang' + detectPlatform = mac64PlatformDetect + } + } + } +} + +if (project.hasProperty('linuxCross')) { + model { + buildConfigs { + linuxArm(CrossBuildConfig) { + architecture = 'nativearm' + operatingSystem = 'linux' + toolChainPrefix = 'PLEASE_PROVIDE_A_COMPILER_NAME' + compilerArgs = linuxCompilerArgs + CCompilerArgs = linuxCCompilerArgs + linkerArgs = linuxLinkerArgs + debugCompilerArgs = linuxDebugCompilerArgs + releaseCompilerArgs = linuxReleaseCompilerArgs + releaseStripBinaries = true + skipByDefault = true + compilerFamily = 'Gcc' + } + } + } +} else { + model { + buildConfigs { + linuxArm(BuildConfig) { + architecture = 'nativearm' + operatingSystem = 'linux' + compilerArgs = linuxCompilerArgs + CCompilerArgs = linuxCCompilerArgs + linkerArgs = linuxLinkerArgs + debugCompilerArgs = linuxDebugCompilerArgs + releaseCompilerArgs = linuxReleaseCompilerArgs + releaseStripBinaries = true + compilerFamily = 'Gcc' + detectPlatform = linuxArmPlatformDetect + } + } + } +} + +ext.getClassifier = { binary -> + return NativeUtils.getClassifier(binary) +} + +ext.getPlatformPath = { binary -> + return NativeUtils.getPlatformPath(binary) +} + +ext.createComponentZipTasks = { components, name, base, type, project, func -> + def configMap = [:] + components.each { + if (it in NativeLibrarySpec && it.name == name) { + it.binaries.each { + def target = getClassifier(it) + if (configMap.containsKey(target)) { + configMap.get(target).add(it) + } else { + configMap.put(target, []) + configMap.get(target).add(it) + } + } + } + } + def taskList = [] + def outputsFolder = file("$project.buildDir/outputs") + configMap.each { key, value -> + def task = project.tasks.create(base + "-${key}", type) { + description = 'Creates component archive for platform ' + key + destinationDir = outputsFolder + classifier = key + baseName = '_M_' + base + duplicatesStrategy = 'exclude' + + from(licenseFile) { + into '/' + } + + func(it, value) + } + taskList.add(task) + + project.build.dependsOn task + + project.artifacts { + task + } + addTaskToCopyAllOutputs(task) + } + return taskList +} + +ext.createAllCombined = { list, name, base, type, project -> + def outputsFolder = file("$project.buildDir/outputs") + def task = project.tasks.create(base + '-all', type) { + description = 'Creates component archive for all classifiers' + destinationDir = outputsFolder + classifier = 'all' + baseName = base + duplicatesStrategy = 'exclude' + + list.each { + it.outputs.files.each { + from project.zipTree(it) + } + dependsOn it + } + } + + project.build.dependsOn task + + project.artifacts { + task + } + + return task + +} + +ext.includeStandardZipFormat = { task, value -> + value.each { binary -> + if (binary.buildable) { + if (binary instanceof SharedLibraryBinarySpec) { + task.dependsOn binary.buildTask + task.from(new File(binary.sharedLibraryFile.absolutePath + ".debug")) { + into getPlatformPath(binary) + '/shared' + } + task.from(binary.sharedLibraryFile) { + into getPlatformPath(binary) + '/shared' + } + task.from(binary.sharedLibraryLinkFile) { + into getPlatformPath(binary) + '/shared' + } + } else if (binary instanceof StaticLibraryBinarySpec) { + task.dependsOn binary.buildTask + task.from(binary.staticLibraryFile) { + into getPlatformPath(binary) + '/static' + } + } + } + } +} + +ext.getCurrentArch = { + def arch = System.getProperty('os.arch'); + + if (arch.equals("x86") || arch.equals("i386")) { + return 'x86' + } else if (arch.equals("amd64") || arch.equals("x86_64")) { + return 'x86-64' + } else { + return arch + } +}