# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. ####################################################### # Enhanced version of find ANTLR. # # Usage: # find_antlr(${USE_ANTLR}) # # - When USE_ANTLR=ON, use auto search by first trying to find antlr4 program, # then trying to find antlr-*-complete.jar # - When USE_ANTLR=/path/to/antlr-*-complete.jar, use provided jar # # Provide variables: # - ANTLR4 # macro(find_antlr use_antlr) set(JAVA_HOME $ENV{JAVA_HOME}) if (NOT DEFINED JAVA_HOME) # Hack to get system to search for Java itself. message(STATUS "JAVA_HOME is not defined. Set it to ensure proper use") set(JAVA_HOME "/usr") endif() if(MSVC) set(JAVA_PROGRAM ${JAVA_HOME}/java.exe) else() set(JAVA_PROGRAM ${JAVA_HOME}/bin/java) endif() message(STATUS "Using Java at " ${JAVA_PROGRAM}) if (${use_antlr} STREQUAL "ON") find_program(ANTLR4 antlr4) if (NOT ANTLR4) file(GLOB_RECURSE ANTLR4JAR /usr/local/lib/antlr-*-complete.jar /usr/local/Cellar/*antlr-*-complete.jar) # Get the first element of the list of antlr jars. # Sort and reverse the list so the item selected is the highest # version in lib or else in Cellar if no lib installation exists. list(SORT ANTLR4JAR) list(REVERSE ANTLR4JAR) list(GET ANTLR4JAR 0 ANTLR4JAR) set(ANTLR4 ${JAVA_PROGRAM} -jar ${ANTLR4JAR}) endif() elseif(NOT ${use_antlr} STREQUAL "OFF") set(ANTLR4 ${JAVA_PROGRAM} -jar ${use_antlr}) endif() message(STATUS "ANTLR4=${ANTLR4}") endmacro(find_antlr)