From e2c2e9dc1a9a7f7eafff371cdf29bb731015238c Mon Sep 17 00:00:00 2001
From: Gabriele Contini <gcontini@users.noreply.github.com>
Date: 周六, 14 12月 2019 13:56:41 +0800
Subject: [PATCH] Merge pull request #69 from open-license-manager/feature/issue_licenses_42

---
 cmake/Findlcc.cmake |   85 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 85 insertions(+), 0 deletions(-)

diff --git a/cmake/Findlcc.cmake b/cmake/Findlcc.cmake
new file mode 100644
index 0000000..bc994eb
--- /dev/null
+++ b/cmake/Findlcc.cmake
@@ -0,0 +1,85 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  
+
+#[=======================================================================[.rst:
+#Findlcc
+#-------
+#
+#Find or build the lcc executable.
+#
+#Imported Targets
+#^^^^^^^^^^^^^^^^
+#
+#This module provides the following imported targets, if found:
+#
+#``license_generator::lcc``
+#  The lcc executable
+#
+#If lcc is not found this module will try to download it as a submodule
+#Git must be installed.
+#
+#Input variables
+#^^^^^^^^^^^^^^^^
+#
+#``LCC_LOCATION`` Hint for locating the lcc executable
+#
+#Result Variables
+#^^^^^^^^^^^^^^^^
+#
+#This will define the following variables:
+#
+#``LCC_FOUND``
+#  True if the system has the Foo library.
+#``lcc_VERSION``
+#
+#Cache Variables
+#^^^^^^^^^^^^^^^
+#
+#The following cache variables will also be set:
+#
+#``LCC_EXECUTABLE``
+#  Path to the lcc executable.
+#
+#]=======================================================================]
+
+set(lcc_names lcc lcc.exe)
+set (failure_messge "Error finding lcc executable.")
+find_package(PkgConfig)
+
+if(LCC_LOCATION)
+	find_package(lcc HINTS ${LCC_LOCATION} CONFIG) #try to find it without looping on this module
+	if(NOT lcc_FOUND)
+		find_program(LCC_EXECUTABLE
+		NAMES ${lcc_names} HINTS ${LCC_LOCATION} DOC "lcc command line client")
+		FIND_PACKAGE_HANDLE_STANDARD_ARGS(lcc FOUND_VAR LCC_FOUND
+        	                               REQUIRED_VARS LCC_EXECUTABLE 
+            	                           FAIL_MESSAGE "Error finding lcc executable. variable LCC_LOCATION non set correctly.")
+    	add_executable(license_generator::lcc IMPORTED GLOBAL)                                            
+		set_property(TARGET license_generator::lcc PROPERTY IMPORTED_LOCATION ${LCC_EXECUTABLE})
+	ENDIF(NOT lcc_FOUND)
+ELSE(LCC_LOCATION)
+	find_package(lcc HINTS ${CMAKE_BINARY_DIR} CONFIG) #try to find it without looping on this module
+
+	IF(NOT lcc_FOUND) 	
+		find_package(Git QUIET)
+		if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
+		# Update submodules as needed
+		    option(GIT_SUBMODULE "Check submodules during build" ON)
+		    if(GIT_SUBMODULE)
+		        message(STATUS "Submodule update")
+		        execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive
+		                        WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+		                        RESULT_VARIABLE GIT_SUBMOD_RESULT)
+		        if(NOT GIT_SUBMOD_RESULT EQUAL "0")
+		            set(failure_messge  "git submodule update --init failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
+		        endif()
+		    endif()
+		endif()
+		if(NOT EXISTS "${PROJECT_SOURCE_DIR}/extern/license-generator/CMakeLists.txt")
+		    set(failure_messge  "All the options to find lcc executable failed. And i can't compile one from source GIT_SUBMODULE was turned off or failed. Please update submodules and try again.")
+		endif()
+		add_subdirectory("${PROJECT_SOURCE_DIR}/extern/license-generator")
+		set(lcc_FOUND TRUE)
+	ENDIF(NOT lcc_FOUND)
+ENDIF(LCC_LOCATION)
+
+

--
Gitblit v1.9.1