Warning, /sdk/kde-dev-scripts/cmake-utils/scripts/generate_findpackage_file is written in an unsupported language. File is not indexed.
0001 #!/usr/bin/env ruby
0002
0003 # simple script to generate simple cmake modules for finding libraries (packages)
0004 # Alexander Neundorf <neundorf@kde.org>, 2006
0005 # Laurent Montel <montel@kde.org>, 2008
0006 # usage: generate_findpackage_file
0007 # then you will be prompted to enter the required parameters
0008
0009 print("Name of package: ")
0010 package=gets.chomp
0011
0012 print("pkgconfig package name [e.g. \"libxml-2.0\", we can add check as \"glib-2.0>=2.10 gtk+-2.0\" leave empty to skip pkgconfig]: ")
0013 pkgconfig=gets.chomp
0014
0015 print("Look for header (e.g. \"jpeglib.h\" or \"libxml/xpath.h\"): ")
0016 header=gets.chomp
0017
0018 print("Include subdir (e.g. \"libxml2\", empty to skip ): ")
0019 incSubDir=gets.chomp
0020
0021 print("Look for library (e.g. \"jpeg\" or \"xml2\"): ")
0022 lib=gets.chomp
0023
0024 cmakeIncDirName=package.upcase+"_INCLUDE_DIR"
0025 cmakeLibName=package.upcase+"_LIBRARIES"
0026 cmakeDefsName=package.upcase+"_DEFINITIONS"
0027 cmakeFoundName=package.upcase+"_FOUND"
0028 cmakeQuietName=package+"_FIND_QUIETLY"
0029 cmakeRequiredName=package+"_FIND_REQUIRED"
0030 cmakeFlagsName=package.upcase+"_CFLAGS"
0031 cmakeLibDirName=package.upcase+"_LIBRARY_DIRS"
0032 cmakeIncludeDirName=package.upcase+"_INCLUDE_DIRS"
0033
0034 file=File.new("Find#{package}.cmake", "w+")
0035
0036
0037 file.printf("# - Try to find #{package}\n")
0038 file.printf("# Once done this will define\n")
0039 file.printf("#\n")
0040 file.printf("# #{cmakeFoundName} - system has #{package}\n")
0041 file.printf("# #{cmakeIncDirName} - the #{package} include directory\n")
0042 file.printf("# #{cmakeLibName} - Link these to use #{package}\n")
0043 file.printf("# #{cmakeDefsName} - Compiler switches required for using #{package}\n")
0044 file.printf("# Redistribution and use is allowed according to the terms of the BSD license.\n")
0045 file.printf("# For details see the accompanying COPYING-CMAKE-SCRIPTS file.\n")
0046 file.printf("#\n\n\n")
0047
0048 file.printf("if ( #{cmakeIncDirName} AND #{cmakeLibName} )\n")
0049 file.printf(" # in cache already\n")
0050 file.printf(" SET(#{package}_FIND_QUIETLY TRUE)\n")
0051 file.printf("endif ( #{cmakeIncDirName} AND #{cmakeLibName} )\n\n")
0052
0053 if not pkgconfig.empty?
0054 file.printf("# use pkg-config to get the directories and then use these values\n")
0055 file.printf("# in the FIND_PATH() and FIND_LIBRARY() calls\n")
0056 file.printf("if( NOT WIN32 )\n")
0057 file.printf(" find_package(PkgConfig)\n\n")
0058 file.printf(" pkg_check_modules(#{package.upcase} #{pkgconfig})\n\n")
0059 file.printf(" set(#{cmakeDefsName} ${#{cmakeFlagsName}})\n")
0060 file.printf("endif( NOT WIN32 )\n\n")
0061 end
0062
0063 if not header.empty?
0064 file.printf("FIND_PATH(#{cmakeIncDirName} NAMES #{header}\n")
0065 if not pkgconfig.empty?
0066 file.printf(" PATHS\n")
0067 file.printf(" ${#{cmakeIncludeDirName}}\n")
0068 end
0069
0070 if not incSubDir.empty?
0071 file.printf(" PATH_SUFFIXES #{incSubDir}\n")
0072 end
0073 file.printf(")\n\n")
0074 end
0075
0076 if not lib.empty?
0077 file.printf("FIND_LIBRARY(#{cmakeLibName} NAMES #{lib}\n")
0078 if not pkgconfig.empty?
0079 file.printf(" PATHS\n")
0080 file.printf(" ${#{cmakeLibDirName}}\n")
0081 end
0082 file.printf(")\n\n")
0083 end
0084
0085 file.printf("include(FindPackageHandleStandardArgs)\n")
0086 file.printf("FIND_PACKAGE_HANDLE_STANDARD_ARGS(#{package} DEFAULT_MSG #{cmakeIncDirName} #{cmakeLibName} )\n\n")
0087
0088 file.printf("# show the #{cmakeIncDirName} and #{cmakeLibName} variables only in the advanced view\n")
0089 file.printf("MARK_AS_ADVANCED(#{cmakeIncDirName} #{cmakeLibName} )\n\n")
0090
0091
0092 printf("Done, generated Find#{package}.cmake\n")