+++ /dev/null
-// OpenAI assisted generation from the makefile .. a start on a gradle build file
-
-plugins {
- id 'java'
-}
-
-group 'com.example'
-version '1.0-SNAPSHOT'
-
-sourceCompatibility = 1.8
-
-repositories {
- mavenCentral()
-}
-
-dependencies {
- implementation 'org.antlr:antlr4:4.9.2' // Include the ANTLR runtime library
- testImplementation 'junit:junit:4.12' // Include JUnit for testing
-}
-
-// Define environment variables
-def javaHome = System.getenv('JAVA_HOME')
-def antlrJar = file(System.getenv('ANTLR_JAR'))
-
-// Define directories
-def antlrPrimaryDir = 'ANTLR'
-def antlrInDir = "${antlrPrimaryDir}"
-def antlrOutDir = 'javac/ANTLR'
-def antlrOutDirParent = 'javac'
-def tempDir = 'temporary'
-def executorDir = 'executor'
-def jvmOutDir = 'jvm'
-
-// Define program paths
-def programPrintRuleNameList = "${executorDir}/PrintRuleNameList"
-def programSyntaxTreeTest = "${executorDir}/SyntaxTree_Test"
-def programSyntaxTree20240412 = "${executorDir}/SyntaxTree_20240412"
-
-// Define grammar files
-def grammarFiles = fileTree(dir: antlrInDir, include: '**/*.g4')
-
-// Task to set up directories
-task setup {
- doLast {
- mkdir antlrInDir
- mkdir antlrOutDirParent
- mkdir 'javac'
- mkdir jvmOutDir
- mkdir executorDir
- mkdir 'test'
- mkdir 'deprecated'
- mkdir 'experiment'
- mkdir 'documentation'
- mkdir tempDir
- }
-}
-
-// Function to generate grammar tasks
-def generateGrammarTask(String grammarName) {
- task "generate${grammarName}Grammar" {
- inputs.file file("${antlrInDir}/${grammarName}.g4")
- outputs.dir antlrOutDir
-
- doLast {
- println "Generating grammar files for: ${grammarName}"
- exec {
- commandLine "${javaHome}/bin/java", '-jar', antlrJar, '-Dlanguage=Java', '-visitor', '-o', antlrOutDirParent, file("${antlrInDir}/${grammarName}.g4")
- }
- }
- }
-}
-
-// Generate grammar tasks for each grammar file
-grammarFiles.each { File file ->
- def grammarName = file.name.replace('.g4', '')
- generateGrammarTask(grammarName)
-}
-
-// Define source sets
-sourceSets {
- main {
- java {
- srcDirs = ['javac', antlrOutDir]
- }
- }
-}
-
-// Task to compile Java files
-task compileJava(type: JavaCompile) {
- source = sourceSets.main.java
- classpath = sourceSets.main.compileClasspath
- destinationDir = file(jvmOutDir)
-}
-
-// Task to build JAR file
-task buildJar(type: Jar) {
- from compileJava.destinationDir
- archiveBaseName.set('project')
- destinationDirectory.set(file(jvmOutDir))
-}
-
-// Task to create an executable script
-task createScript {
- dependsOn buildJar
-
- doLast {
- def jarFile = buildJar.archiveFile.get().asFile
- def scriptFile = file("${executorDir}/${project.name}")
-
- scriptFile.text = """#!/usr/bin/env bash
-${javaHome}/bin/java -cp ${jarFile} ${project.name}
-"""
- scriptFile.setExecutable(true)
- }
-}
-
-// Task to clean generated files
-task clean(type: Delete) {
- delete antlrOutDir
- delete jvmOutDir
- delete tempDir
- delete programPrintRuleNameList
- delete programSyntaxTreeTest
- delete programSyntaxTree20240412
- delete fileTree(dir: executorDir, exclude: '.githolder')
-}
-
-// Task to print version information
-task printVersion {
- doLast {
- println "ANTLR Jar: ${antlrJar.name}"
- println "Java version: ${javaHome}/bin/java -version".execute().text
- println "Jar version: ${javaHome}/bin/jar --version".execute().text
- println "Gradle version: ${gradle.gradleVersion}"
- }
-}
-
-// Default tasks
-defaultTasks 'setup', 'generateGQLGrammar', 'compileJava', 'buildJar', 'createScript'
-
-// Set encoding for JavaCompile tasks
-tasks.withType(JavaCompile) {
- options.encoding = 'UTF-8'
-}
-
-// Task to build everything
-task all {
- dependsOn setup, 'generateGQLGrammar', compileJava, buildJar, createScript
-}
-
-// Task to generate grammar files
-task grammar {
- dependsOn setup, 'generateGQLGrammar'
-}
-
-// Task to compile Java files
-task java {
- dependsOn setup, compileJava
-}
-
-// Task to clean temporary files
-task cleanTemporary(type: Delete) {
- delete tempDir
-}
-
-// Task to clean all files
-task cleanAll {
- dependsOn clean
-}
-
-// Task to clean all files except program files
-task cleanAllMinus {
- doLast {
- delete tempDir
- delete antlrOutDir
- delete fileTree(dir: jvmOutDir, include: '**/*.class')
- }
-}
-
-// Task to clean program files
-task cleanProgram {
- doLast {
- delete programPrintRuleNameList
- delete programSyntaxTreeTest
- delete programSyntaxTree20240412
- }
-}
-
-// Task to clean class files
-task cleanClass {
- doLast {
- delete fileTree(dir: jvmOutDir, include: '**/*.class')
- }
-}
-
-// Task to clean grammar files
-task cleanGrammar {
- doLast {
- delete fileTree(dir: antlrOutDir, include: '**/*.java')
- }
-}
-
-// Task to clean a specific program
-task cleanProgramSpecific {
- doLast {
- def programName = project.findProperty('program') ?: ''
- if (programName) {
- delete fileTree(dir: jvmOutDir, include: "${programName}.jar")
- delete fileTree(dir: executorDir, include: "${programName}")
- } else {
- println "Usage: gradle cleanProgramSpecific -Pprogram=<name>"
- }
- }
-}
-
-// Task to clean a specific program and everything else
-task cleanProgramPlusSpecific {
- doLast {
- def programName = project.findProperty('program') ?: ''
- if (programName) {
- delete fileTree(dir: jvmOutDir, include: "${programName}.jar")
- delete fileTree(dir: executorDir, include: "${programName}")
- delete tempDir
- delete antlrOutDir
- } else {
- println "Usage: gradle cleanProgramPlusSpecific -Pprogram=<name>"
- }
- }
-}
-
-// Task to clean a specific program and everything else except program files
-task cleanProgramMinusSpecific {
- doLast {
- def programName = project.findProperty('program') ?: ''
- if (programName) {
- delete fileTree(dir: jvmOutDir, include: "${programName}.jar")
- delete fileTree(dir: executorDir, include: "${programName}")
- delete tempDir
- delete fileTree(dir: jvmOutDir, include: '**/*.class')
- } else {
- println "Usage: gradle cleanProgramMinusSpecific -Pprogram=<name>"
- }
- }
-}
-
-// Task to clean a specific grammar
-task cleanGrammarSpecific {
- doLast {
- def grammarName = project.findProperty('grammar') ?: ''
- if (grammarName) {
- delete fileTree(dir: antlrOutDir, include: "${grammarName}*")
- } else {
- println "Usage: gradle cleanGrammarSpecific -Pgrammar=<name>"
- }
- }
-}
-
-// Define tasks for each program
-task buildPrintRuleNameList {
- dependsOn setup, 'generateGQLGrammar', compileJava
-}
-
-task buildSyntaxTreeTest {
- dependsOn setup, 'generateSyntaxTreeGrammar', compileJava
-}
-
-task buildSyntaxTree20240412 {
- dependsOn setup, 'generateSyntaxTree20240412Grammar', compileJava
-}
--- /dev/null
+// OpenAI assisted generation from the makefile .. a start on a gradle build file
+
+plugins {
+ id 'java'
+}
+
+group 'com.example'
+version '1.0-SNAPSHOT'
+
+sourceCompatibility = 1.8
+
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ implementation 'org.antlr:antlr4:4.9.2' // Include the ANTLR runtime library
+ testImplementation 'junit:junit:4.12' // Include JUnit for testing
+}
+
+// Define environment variables
+def javaHome = System.getenv('JAVA_HOME')
+def antlrJar = file(System.getenv('ANTLR_JAR'))
+
+// Define directories
+def antlrPrimaryDir = 'ANTLR'
+def antlrInDir = "${antlrPrimaryDir}"
+def antlrOutDir = 'javac/ANTLR'
+def antlrOutDirParent = 'javac'
+def tempDir = 'temporary'
+def executorDir = 'executor'
+def jvmOutDir = 'jvm'
+
+// Define program paths
+def programPrintRuleNameList = "${executorDir}/PrintRuleNameList"
+def programSyntaxTreeTest = "${executorDir}/SyntaxTree_Test"
+def programSyntaxTree20240412 = "${executorDir}/SyntaxTree_20240412"
+
+// Define grammar files
+def grammarFiles = fileTree(dir: antlrInDir, include: '**/*.g4')
+
+// Task to set up directories
+task setup {
+ doLast {
+ mkdir antlrInDir
+ mkdir antlrOutDirParent
+ mkdir 'javac'
+ mkdir jvmOutDir
+ mkdir executorDir
+ mkdir 'test'
+ mkdir 'deprecated'
+ mkdir 'experiment'
+ mkdir 'documentation'
+ mkdir tempDir
+ }
+}
+
+// Function to generate grammar tasks
+def generateGrammarTask(String grammarName) {
+ task "generate${grammarName}Grammar" {
+ inputs.file file("${antlrInDir}/${grammarName}.g4")
+ outputs.dir antlrOutDir
+
+ doLast {
+ println "Generating grammar files for: ${grammarName}"
+ exec {
+ commandLine "${javaHome}/bin/java", '-jar', antlrJar, '-Dlanguage=Java', '-visitor', '-o', antlrOutDirParent, file("${antlrInDir}/${grammarName}.g4")
+ }
+ }
+ }
+}
+
+// Generate grammar tasks for each grammar file
+grammarFiles.each { File file ->
+ def grammarName = file.name.replace('.g4', '')
+ generateGrammarTask(grammarName)
+}
+
+// Define source sets
+sourceSets {
+ main {
+ java {
+ srcDirs = ['javac', antlrOutDir]
+ }
+ }
+}
+
+// Task to compile Java files
+task compileJava(type: JavaCompile) {
+ source = sourceSets.main.java
+ classpath = sourceSets.main.compileClasspath
+ destinationDir = file(jvmOutDir)
+}
+
+// Task to build JAR file
+task buildJar(type: Jar) {
+ from compileJava.destinationDir
+ archiveBaseName.set('project')
+ destinationDirectory.set(file(jvmOutDir))
+}
+
+// Task to create an executable script
+task createScript {
+ dependsOn buildJar
+
+ doLast {
+ def jarFile = buildJar.archiveFile.get().asFile
+ def scriptFile = file("${executorDir}/${project.name}")
+
+ scriptFile.text = """#!/usr/bin/env bash
+${javaHome}/bin/java -cp ${jarFile} ${project.name}
+"""
+ scriptFile.setExecutable(true)
+ }
+}
+
+// Task to clean generated files
+task clean(type: Delete) {
+ delete antlrOutDir
+ delete jvmOutDir
+ delete tempDir
+ delete programPrintRuleNameList
+ delete programSyntaxTreeTest
+ delete programSyntaxTree20240412
+ delete fileTree(dir: executorDir, exclude: '.githolder')
+}
+
+// Task to print version information
+task printVersion {
+ doLast {
+ println "ANTLR Jar: ${antlrJar.name}"
+ println "Java version: ${javaHome}/bin/java -version".execute().text
+ println "Jar version: ${javaHome}/bin/jar --version".execute().text
+ println "Gradle version: ${gradle.gradleVersion}"
+ }
+}
+
+// Default tasks
+defaultTasks 'setup', 'generateGQLGrammar', 'compileJava', 'buildJar', 'createScript'
+
+// Set encoding for JavaCompile tasks
+tasks.withType(JavaCompile) {
+ options.encoding = 'UTF-8'
+}
+
+// Task to build everything
+task all {
+ dependsOn setup, 'generateGQLGrammar', compileJava, buildJar, createScript
+}
+
+// Task to generate grammar files
+task grammar {
+ dependsOn setup, 'generateGQLGrammar'
+}
+
+// Task to compile Java files
+task java {
+ dependsOn setup, compileJava
+}
+
+// Task to clean temporary files
+task cleanTemporary(type: Delete) {
+ delete tempDir
+}
+
+// Task to clean all files
+task cleanAll {
+ dependsOn clean
+}
+
+// Task to clean all files except program files
+task cleanAllMinus {
+ doLast {
+ delete tempDir
+ delete antlrOutDir
+ delete fileTree(dir: jvmOutDir, include: '**/*.class')
+ }
+}
+
+// Task to clean program files
+task cleanProgram {
+ doLast {
+ delete programPrintRuleNameList
+ delete programSyntaxTreeTest
+ delete programSyntaxTree20240412
+ }
+}
+
+// Task to clean class files
+task cleanClass {
+ doLast {
+ delete fileTree(dir: jvmOutDir, include: '**/*.class')
+ }
+}
+
+// Task to clean grammar files
+task cleanGrammar {
+ doLast {
+ delete fileTree(dir: antlrOutDir, include: '**/*.java')
+ }
+}
+
+// Task to clean a specific program
+task cleanProgramSpecific {
+ doLast {
+ def programName = project.findProperty('program') ?: ''
+ if (programName) {
+ delete fileTree(dir: jvmOutDir, include: "${programName}.jar")
+ delete fileTree(dir: executorDir, include: "${programName}")
+ } else {
+ println "Usage: gradle cleanProgramSpecific -Pprogram=<name>"
+ }
+ }
+}
+
+// Task to clean a specific program and everything else
+task cleanProgramPlusSpecific {
+ doLast {
+ def programName = project.findProperty('program') ?: ''
+ if (programName) {
+ delete fileTree(dir: jvmOutDir, include: "${programName}.jar")
+ delete fileTree(dir: executorDir, include: "${programName}")
+ delete tempDir
+ delete antlrOutDir
+ } else {
+ println "Usage: gradle cleanProgramPlusSpecific -Pprogram=<name>"
+ }
+ }
+}
+
+// Task to clean a specific program and everything else except program files
+task cleanProgramMinusSpecific {
+ doLast {
+ def programName = project.findProperty('program') ?: ''
+ if (programName) {
+ delete fileTree(dir: jvmOutDir, include: "${programName}.jar")
+ delete fileTree(dir: executorDir, include: "${programName}")
+ delete tempDir
+ delete fileTree(dir: jvmOutDir, include: '**/*.class')
+ } else {
+ println "Usage: gradle cleanProgramMinusSpecific -Pprogram=<name>"
+ }
+ }
+}
+
+// Task to clean a specific grammar
+task cleanGrammarSpecific {
+ doLast {
+ def grammarName = project.findProperty('grammar') ?: ''
+ if (grammarName) {
+ delete fileTree(dir: antlrOutDir, include: "${grammarName}*")
+ } else {
+ println "Usage: gradle cleanGrammarSpecific -Pgrammar=<name>"
+ }
+ }
+}
+
+// Define tasks for each program
+task buildPrintRuleNameList {
+ dependsOn setup, 'generateGQLGrammar', compileJava
+}
+
+task buildSyntaxTreeTest {
+ dependsOn setup, 'generateSyntaxTreeGrammar', compileJava
+}
+
+task buildSyntaxTree20240412 {
+ dependsOn setup, 'generateSyntaxTree20240412Grammar', compileJava
+}
--- /dev/null
+# 1. clean:temporary - removes files from ./temporary
+# 2. General clean targets:
+# clean:all - removes all things make built, and thus can be replaced by running make again.
+# clean:all- (minus after the all) same as clean:all except for the program files (and their .jar if any)
+# clean:program - all program files, i.e. ./exector/<program> and ./jvm/<program.jar> for all programs.
+# clean:class - class files
+# clean:grammar - all generated grammar files
+
+# 2.
+# clean:program:<name>
+# similear to clean:program, but only for the named program
+
+# clean:program+:<name>
+# bascially clean:all but only for the named program
+
+# clean:program-:<mame>
+# baiscally clean:all- but only for the named program
+
+# 3. clean:grammar:<name>
+# siimilar to clean:grammar, but only for the named grammar
+
+# Function to clean a list of files
+# Accepts a list of files as an argument and deletes the files in the list
+# without complaining if a file is not found
+define clean_files
+ echo "Cleaning files: $1";\
+ for file in $1; do \
+ if [ -e "$$file" ]; then \
+ echo rm -f "$$file"; \
+ rm -f "$$file"; \
+ fi; \
+ done
+endef
+
+
+# Function to clean the contents of a directory
+# Accepts a directory as an argument, checks that the argument is not empty,
+# ensures the directory exists, and then deletes the contents of the directory
+# (excluding a file called .githolder)
+define clean_directory
+ if [ -z "$1" ]; then \
+ echo "Error: Directory argument is empty"; \
+ elif [ ! -d "$1" ]; then \
+ echo "Error: Directory $1 does not exist"; \
+ else \
+ : echo "Cleaning directory: $1"; \
+ find "$1" -mindepth 1 -maxdepth 1 ! -name '.githolder' -exec rm -rf {} +; \
+ touch "$1/.githolder"; \
+ fi
+endef
+
+# Function to handle individual cleaning
+# Accepts a single option and removes the appropriate files
+define do_clean
+ echo "Cleaning files for option: $1";\
+ if [ "$1" = "" ]; then \
+ echo "Usage: make clean:< all[-] | program[+/-][:<name>] | grammar[:<name>] | class | temp[orary] >"; \
+ elif [ "$1" = "temporary" -o "$1" = "temp" ]; then \
+ $(call clean_directory,$(TEMP_DIR)); \
+ elif [ "$1" = "all" ]; then \
+ $(call clean_directory,$(TEMP_DIR)); \
+ $(call clean_files,$(ANTLR_OUT_FPL)); \
+ $(call clean_files,$(JAVA_COMP_OUT_FPL)); \
+ $(call clean_files,$(PROGRAM_FPL)); \
+ elif [ "$1" = "all-" ]; then \
+ $(call clean_directory,$(TEMP_DIR)); \
+ $(call clean_files,$(ANTLR_OUT_FPL)); \
+ $(call clean_files,$(JAVA_COMP_OUT_PRIMARY_FPL)); \
+ elif [ "$1" = "program" ]; then \
+ $(call clean_files,$(PROGRAM_FPL)); \
+ elif [ "$1" = "class" ]; then \
+ $(call clean_files,$(JAVA_COMP_OUT_FPL)); \
+ elif [ "$1" = "grammar" ]; then \
+ $(call clean_files,$(ANTLR_OUT_FPL)); \
+ elif [ "$1" = "program:"* ]; then \
+ program_name=$${1#program:}; \
+ $(call clean_files,$(JAVA_COMP_OUT_DIR)/$${program_name}.jar executor/$${program_name}); \
+ elif [ "$1" = "program+:"* ]; then \
+ program_name=$${1#program+:}; \
+ $(call clean_files,$(JAVA_COMP_OUT_DIR)/$${program_name}.jar executor/$${program_name}); \
+ $(call clean_directory,$(TEMP_DIR)); \
+ $(call clean_files,$(ANTLR_OUT_FPL)); \
+ elif [ "$1" = "program-:"* ]; then \
+ program_name=$${1#program-:}; \
+ $(call clean_files,$(JAVA_COMP_OUT_DIR)/$${program_name}.jar executor/$${program_name}); \
+ $(call clean_directory,$(TEMP_DIR)); \
+ $(call clean_files,$(JAVA_COMP_OUT_PRIMARY_FPL)); \
+ elif [ "$1" = "grammar:"* ]; then \
+ grammar_name=$${1#grammar:}; \
+ $(call clean_files,$(ANTLR_OUT_DIR)/$${grammar_name}*); \
+ else \
+ echo "Unknown clean option: $1"; \
+ fi
+endef
+
+# Default clean target
+.PHONY: clean
+clean:
+ @echo "Usage: make clean:< all[-] | program[+/-][:<name>] | grammar[:<name>] | class | temp[orary] >"
+
+# Clean specific program or option
+# Calls the do_clean function with the pattern as an argument
+.PHONY: clean\:%
+clean\:%:
+ @$(call do_clean,$*)
--- /dev/null
+#!/usr/bin/env bash
+/var/user_data/Thomas-developer/GQL_to_Cypher/tool/jdk-22.0.1+8/bin/java -cp jvm/PrintRuleNameList.jar PrintRuleNameList
cd "$REPO_HOME"/developer || { echo "Failed to change directory to" "$REPO_HOME"/developer; exit 1; }
-/usr/bin/make -k $@
+/usr/bin/make --no-builtin-rules --keep-going $@
grammar: setup $(ANTLR_OUT_FPL)
# specific programs or program versions:
-PrintRuleNameList: $(PrintRuleNameList)
-SyntaxTree_Test: $(ANTLR_OUT_SyntaxTree_Test_FPL) $(SyntaxTree_Test)
-SyntaxTree_20240412: $(ANTLR_OUT_SyntaxTree_20240412_FPL) $(SyntaxTree_20240412)
+PrintRuleNameList: $(PROGRAM_PrintRuleNameList)
+SyntaxTree_Test: $(ANTLR_OUT_SyntaxTree_Test_FPL) $(PROGRAM_SyntaxTree_Test)
+SyntaxTree_20240412: $(ANTLR_OUT_SyntaxTree_20240412_FPL) $(PROGRAM_SyntaxTree_20240412)
# Specific grammar targets. Run them like this:
# > make <grammar_name>
# Accepts a list of files as an argument and deletes the files in the list
# without complaining if a file is not found
define clean_files
- @echo "Cleaning files: $1";\
+ echo "Cleaning files: $1";\
for file in $1; do \
if [ -e "$$file" ]; then \
echo rm -f "$$file"; \
@echo "making grammar from:" $<
$(JAVA_INTERP) -jar $(ANTLR_JAR) -Dlanguage=Java -visitor -o $(ANTLR_OUT_DIR_PARENT) $<
-# Generic recipe for building .jar files and placing scripts in the executor directory
$(JAVA_COMP_OUT_DIR)/%.jar: $(JAVA_COMP_IN_PRIMARY_DIR)/%.java
@echo "Building $*..."
$(JAVA_COMP) -d $(JAVA_COMP_OUT_DIR) -sourcepath $(JAVA_COMP_IN_DL) $<
$(JAVA_ARCHIVE) cf $@ -C $(JVM_IN_DIR) $*.class
+ @echo "Created $@"
+.PRECIOUS: $(JAVA_COMP_OUT_DIR)/%.jar
executor/%: $(JAVA_COMP_OUT_DIR)/%.jar
@echo "Creating script for $*..."
- echo "#!/usr/bin/env bash\n$(JAVA_INTERP) -cp $@ $*" > executor/$*
+ @echo "#!/usr/bin/env bash" > executor/$*
+ @echo "$(JAVA_INTERP) -cp $< $*" >> executor/$*
chmod +x executor/$*
+ @echo "Created script executor/$*"
+
+# # Generic recipe for building .jar files and placing scripts in the executor directory
+# $(JAVA_COMP_OUT_DIR)/%.jar: $(JAVA_COMP_IN_PRIMARY_DIR)/%.java
+# @echo "Building $*..."
+# $(JAVA_COMP) -d $(JAVA_COMP_OUT_DIR) -sourcepath $(JAVA_COMP_IN_DL) $<
+# $(JAVA_ARCHIVE) cf $@ -C $(JVM_IN_DIR) $*.class
+
+# executor/%: $(JAVA_COMP_OUT_DIR)/%.jar
+# @echo "Creating script for $*..."
+# @echo "#!/usr/bin/env bash" > executor/$*
+# @echo "$(JAVA_INTERP) -cp $< $*" >> executor/$*
+# chmod +x executor/$*
# LocalWords: makefile