diff --git a/Gruntfile.js b/Gruntfile.js index e67685db..66ae9143 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -7,16 +7,21 @@ module.exports = function(grunt) { grunt.initConfig({ paths: { + libName: 'css-layout', distFolder: 'dist', srcFolder: 'src', testFolder: 'src/__tests__', cTestFiles: 'src/__tests__/Layout-test.c src/Layout.c src/Layout-test-utils.c', - cTestOutput: 'c_test' + cTestOutput: 'c_test', + javaLibFolder: 'src/java/lib', + javaSource: 'src/java/tests/com/facebook/csslayout/*.java', + javaTestFiles: 'org.junit.runner.JUnitCore com.facebook.csslayout.LayoutEngineTest com.facebook.csslayout.LayoutCachingTest com.facebook.csslayout.CSSNodeTest' }, clean: { dist: ['<%= paths.distFolder %>'], - ctest: ['<%= paths.cTestOutput %>'] + cTest: ['<%= paths.cTestOutput %>'], + javaTest: ['**/*.class'] }, eslint: { @@ -31,8 +36,8 @@ module.exports = function(grunt) { prefix: '// @@', }, main: { - src: '<%= paths.srcFolder %>/css-layout.js', - dest: '<%= paths.distFolder %>/css-layout.js' + src: '<%= paths.srcFolder %>/<%= paths.libName %>.js', + dest: '<%= paths.distFolder %>/<%= paths.libName %>.js' } }, @@ -43,7 +48,8 @@ module.exports = function(grunt) { }, main: { files: { - '<%= paths.distFolder %>/css-layout.min.js': ['<%= paths.distFolder %>/css-layout.js'] + '<%= paths.distFolder %>/<%= paths.libName %>.min.js': + ['<%= paths.distFolder %>/<%= paths.libName %>.js'] } } }, @@ -71,25 +77,37 @@ module.exports = function(grunt) { }, shell: { - ccompile: { + cCompile: { command: 'gcc -std=c99 -Werror -Wno-padded <%= paths.cTestFiles %> -lm -o "./<%= paths.cTestOutput %>"' }, - ctestExecute: { + cTestExecute: { command: './<%= paths.cTestOutput %>' + }, + javaCompile: { + command: 'javac -cp <%= paths.javaLibFolder %>/junit4.jar:<%= paths.javaLibFolder %>/jsr305.jar:<%= paths.javaLibFolder %>/infer-annotations-1.4.jar -sourcepath ./src/java/src:./src/java/tests <%= paths.javaSource %>' + }, + javaTestExecute: { + command: 'java -cp ./src/java/src:./src/java/tests:<%= paths.javaLibFolder %>/junit4.jar:<%= paths.javaLibFolder %>/infer-annotations-1.4.jar <%= paths.javaTestFiles %>' + }, + javaPackage: { + command: 'jar cf <%= paths.distFolder %>/<%= paths.libName %>.jar <%= paths.javaSource %>' } } }); - - grunt.registerTask('ctest', ['shell:ccompile', 'shell:ctestExecute', 'clean:ctest']); + grunt.registerTask('test-java', ['shell:javaCompile', 'shell:javaTestExecute', 'clean:javaTest']); - grunt.registerTask('transpile', ['execute:transpile', 'ctest']); + grunt.registerTask('test-c', ['shell:cCompile', 'shell:cTestExecute', 'clean:cTest']); + + grunt.registerTask('transpile', ['execute:transpile', 'test-c', 'test-java']); grunt.registerTask('test-javascript', ['eslint', 'karma']); - grunt.registerTask('package-javascript', ['clean:dist', 'includereplace', 'uglify']); + grunt.registerTask('package-javascript', ['includereplace', 'uglify']); - grunt.registerTask('build', ['test-javascript', 'transpile', 'package-javascript']); + grunt.registerTask('package-java', ['shell:javaPackage']); + + grunt.registerTask('build', ['test-javascript', 'transpile', 'clean:dist', 'package-javascript', 'package-java']); grunt.registerTask('default', ['build']); }; diff --git a/dist/css-layout.jar b/dist/css-layout.jar new file mode 100644 index 00000000..a276e140 Binary files /dev/null and b/dist/css-layout.jar differ diff --git a/src/java/lib/infer-annotations-1.4.jar b/src/java/lib/infer-annotations-1.4.jar new file mode 100644 index 00000000..42722464 Binary files /dev/null and b/src/java/lib/infer-annotations-1.4.jar differ diff --git a/src/java/lib/jsr305.jar b/src/java/lib/jsr305.jar new file mode 100644 index 00000000..43807b02 Binary files /dev/null and b/src/java/lib/jsr305.jar differ diff --git a/src/java/lib/junit4.jar b/src/java/lib/junit4.jar new file mode 100644 index 00000000..954851e6 Binary files /dev/null and b/src/java/lib/junit4.jar differ