private void generateBuildSystem() throws MojoExecutionException { try { packageDirectory.mkdirs(); new File(packageDirectory, "m4").mkdirs(); targetSrcDir = new File(packageDirectory, "src"); targetSrcDir.mkdirs(); if (customPackageDirectory != null && customPackageDirectory.isDirectory()) { FileUtils.copyDirectoryStructureIfModified(customPackageDirectory, packageDirectory); } if (generatedNativeSourceDirectory != null && generatedNativeSourceDirectory.isDirectory()) { FileUtils.copyDirectoryStructureIfModified(generatedNativeSourceDirectory, targetSrcDir); } copyTemplateResource("readme.md", false); copyTemplateResource("configure.ac", true); copyTemplateResource("Makefile.am", true); copyTemplateResource("m4/custom.m4", false); copyTemplateResource("m4/jni.m4", false); copyTemplateResource("m4/osx-universal.m4", false); // To support windows based builds.. String tool = windowsBuildTool.toLowerCase().trim(); if ("detect".equals(tool)) { copyTemplateResource("vs2008.vcproj", true); copyTemplateResource("vs2010.vcxproj", true); } else if ("msbuild".equals(tool)) { copyTemplateResource("vs2010.vcxproj", true); } else if ("vcbuild".equals(tool)) { copyTemplateResource("vs2008.vcproj", true); } else if ("none".equals(tool)) { } else { throw new MojoExecutionException( "Invalid setting for windowsBuildTool: " + windowsBuildTool); } File autogen = new File(packageDirectory, "autogen.sh"); File configure = new File(packageDirectory, "configure"); if (!autogen.exists()) { copyTemplateResource("autogen.sh", false); cli.setExecutable(autogen); } if (!skipAutogen) { if ((!configure.exists() && !CLI.IS_WINDOWS) || forceAutogen) { try { cli.system(packageDirectory, new String[] {"./autogen.sh"}, autogenArgs); } catch (Exception e) { e.printStackTrace(); } } } } catch (Exception e) { throw new MojoExecutionException("Native build system generation failed: " + e, e); } }