diff options
author | Alexander Neundorf <neundorf@kde.org> | 2006-01-12 21:42:58 +0000 |
---|---|---|
committer | Alexander Neundorf <neundorf@kde.org> | 2006-01-12 21:42:58 +0000 |
commit | b10520f487e7087d84182b56a5f318463ee61c00 (patch) | |
tree | 9899018ecd7bc936fce5510db7b8939099cad50c /kde3 | |
parent | 0e8cfac98d21cc9e395ec2dd6da61d4a1fadc114 (diff) | |
download | extra-cmake-modules-b10520f487e7087d84182b56a5f318463ee61c00.tar.gz extra-cmake-modules-b10520f487e7087d84182b56a5f318463ee61c00.tar.bz2 |
move am2cmake from kde3/ here, since it seems it will work for kde4 too
Alex
svn path=/trunk/KDE/kdesdk/cmake/; revision=497482
Diffstat (limited to 'kde3')
-rwxr-xr-x | kde3/am2cmake | 594 |
1 files changed, 0 insertions, 594 deletions
diff --git a/kde3/am2cmake b/kde3/am2cmake deleted file mode 100755 index d1154ae7..00000000 --- a/kde3/am2cmake +++ /dev/null @@ -1,594 +0,0 @@ -#!/usr/bin/env ruby - -$no_kde=false - -class InstallTarget - def initialize - @files="" - @location="" - end - def addFiles(files) - @files=@files+files - end - def setLocation(location) - @location=location - end - attr_reader :location, :files -end - -NoTarget = 0 -Executable = 1 -StaticLib = 2 -SharedLib = 3 -Part = 4 -KDEInit = 5 - -class BuildTarget - def initialize(name, type, withStdPrefix=true, install=true, test=false) - @name=name - @type=type - @sources=Array.new - @uis=Array.new - @skels=Array.new - @stubs=Array.new - @kcfgs=Array.new - @am=Array.new - @stdPrefix=withStdPrefix - @install=install - @test=test - @libs=Array.new - - @libs.push("${QT_AND_KDECORE_LIBS}") - end - - def addSourceFiles(files) - files.split.each do |currentSource| - if currentSource =~ /^\S+\.ui$/ - @uis.push(currentSource) - elsif currentSource =~ /^(\S+)\.skel$/ - @skels.push($1+".h") - elsif currentSource =~ /^(\S+)\.stub$/ - @stubs.push($1+".h") - elsif currentSource =~ /^(\S+)\.kcfgc$/ - @kcfgs.push(currentSource) - else - @sources.push(currentSource) - end - end - end - - def addLibs(libs) - lib="" - libs.split.each do |currentLib| - lib=case currentLib - when "$(LIB_KDEUI)" then "kdeui" -# when "${LIB_KDECORE}" then "${QT_AND_KDECORE_LIBS}" - when "$(LIB_KIO)" then "kio" - when "$(LIB_KDEPRINT)" then "kdeprint" - when "$(LIB_KPARTS)" then "kparts" - else - if currentLib =~ /^-l(\S+)$/ - $1 - else - "" - end - end - end - - if !lib.empty? - @libs.push(lib) -# printf("--- lib: #{lib}\n") - end - end - - - attr_reader :name, :type, :sources, :uis, :skels, :stdPrefix, :stubs, :kcfgs, :install, :test, :libs - -end - -class CMakeFile - def initialize(amFile) - printf("converting #{amFile}\n") - @amFile=amFile - amFile =~ /(.*)Makefile.am/ - @path=$1 - @listsFile=@path+"CMakeLists.txt" - @iconDir="hicolor" - @installIcons=false - - @targets=Array.new - @installs=Hash.new - - @includeDirs=Array.new - @subDirs=Array.new - @skippedSubDirs=Array.new - - parseFile - - if $no_kde==false - @includeDirs.push("${KDE3_INCLUDE_DIR}") - @includeDirs.push("${QT_INCLUDE_DIR}") - end - @includeDirs.push("${CMAKE_CURRENT_SOURCE_DIR}") - @includeDirs.push("${CMAKE_CURRENT_BINARY_DIR}") - end - - def parseFile - @lines=IO.readlines(@amFile) - cummLine="" - appendNextLine=false - for line in @lines do - if line.include?("#") - line=line[0, line.index("#")] - end - if line.length<2 - next - end - - appendNextLine=(line[line.length-2, 1]=='\\') - - if appendNextLine - cummLine+=" "+line[0, line.length-2] - else - cummLine+=" "+line.chomp #[0, line.length-1] - if not cummLine.empty? - evalLine(cummLine) - cummLine="" - end - end - end - end - - def findTarget(line) - type=SharedLib - if line =~ /^\s*lib(\S+)_la_\S+\s*=\s*\S+.*$/ - targetName=$1 -# type=SharedLib - elsif line =~ /^\s*(\S+)_la_\S+\s*=\s*\S+.*$/ - targetName=$1 -# type=Executable - elsif line =~ /^\s*(\S+)_\S+\s*=\s*\S+.*$/ - targetName=$1 -# type=Executable - end - @targets.each do |buildTarget| - amBuildTargetName=buildTarget.name.gsub(/\./, "_") - if (amBuildTargetName==targetName) - return buildTarget - end - end - - return BuildTarget.new("Dummy", NoTarget) - end - - def addTarget(line) - type=NoTarget - targets="" - installTarget=true - testTarget=false - - if line =~ /^\s*lib_LTLIBRARIES\s*=\s*(\S+.*)/ - targets=$1 - type=SharedLib -# printf("shared: %s\n", $1) - elsif line =~ /^\s*noinst_LTLIBRARIES\s*=\s*(\S+.*)/ - targets=$1 - type=StaticLib -# printf("static: %s\n", $1) - elsif line =~ /^\s*kde_module_LTLIBRARIES\s*=\s*(\S+.*)/ -# printf("part: %s\n", $1) - targets=$1 - type=Part - elsif line =~ /^\s*kde_style_LTLIBRARIES\s*=\s*(\S+.*)/ -# printf("style: %s\n", $1) - targets=$1 - type=Part - elsif line =~ /^\s*kde_widget_LTLIBRARIES\s*=\s*(\S+.*)/ -# printf("style: %s\n", $1) - targets=$1 - type=Part - elsif line =~ /^\s*kdeinit_LTLIBRARIES\s*=\s*(\S+.*)/ -# printf("kdeinitpart: %s\n", $1) - targets=$1 - type=KDEInit - elsif line =~ /^\s*bin_PROGRAMS\s*=\s*(\S+.*)$/ - targets=$1 -# printf("exec: %s\n", $1) - type=Executable - elsif line =~ /^\s*noinst_PROGRAMS\s*=\s*(\S+.*)$/ - targets=$1 - installTarget=false -# printf("exec: %s\n", $1) - type=Executable - elsif line =~ /^\s*check_PROGRAMS\s*=\s*(\S+.*)$/ - targets=$1 - installTarget=false - testTarget=true - -# printf("exec: %s\n", $1) - type=Executable - elsif line =~ /^\s*EXTRA_PROGRAMS\s*=\s*(\S+.*)$/ - targets=$1 - installTarget=false - testTarget=true -# printf("exec: %s\n", $1) - type=Executable - else - return false - end - - if type==Executable - targets.split.each{ |current| @targets.push(BuildTarget.new(current, type, true, installTarget, testTarget)) } - else - targets.split.each do |current| - if current =~ /lib(\S+)\.la/ -# printf("adding target with \"lib\": -%s-\n", $1) - @targets.push(BuildTarget.new($1, type)) - else - if current =~ /\s*(\S+)\.la/ -# printf("adding target without \"lib\": -%s-\n", $1) - @targets.push(BuildTarget.new($1, type, false)) - end - end - end - end - return true - end - - def addSourcesToTarget(line) -# printf("sources: %s\n", line) - buildTarget=findTarget(line) - if buildTarget.type==NoTarget - printf("PROBLEM: target not found: %s\n", line) - return - end - - line =~ /^\s*(lib)?\S+(_la)?_SOURCES\s*=\s*(\S+.*)$/ - buildTarget.addSourceFiles($3) - end - - def addIncludeDirectories(includeDirs) - includeDirs.split.each do |dir| - if dir =~ /^\s*-I\$\(top_srcdir\)(\S+)/ - @includeDirs.push("${CMAKE_SOURCE_DIR}"+$1) - end - end - end - - def addInstallFiles(key, files) - if @installs.has_key?(key) - inst=@installs[key] - else - inst=InstallTarget.new - end - inst.addFiles(files) - case key - when "kde_services" then inst.setLocation("/share/services") - when "kde_kcfg" then inst.setLocation("/share/config.kcfg") - when "xdg_apps" then inst.setLocation("/share/applications/kde") - end - - @installs[key]=inst - end - - def addInstallLocation(key, location) -# printf("adding loc: %s \n", location) - if @installs.has_key?(key) - inst=@installs[key] - else - inst=InstallTarget.new - end - - if location =~ /\$\((\S+)\)(\/?\S*)/ - baseDir=$1 - subDir=$2 -# printf("base: %s sub: %s\n", baseDir, subDir) - if baseDir=="kde_servicesdir" - inst.setLocation("/share/services"+subDir) - @installs[key]=inst - elsif baseDir=="kde_servicetypesdir" - inst.setLocation("/share/servicetypes"+subDir) - @installs[key]=inst - elsif baseDir=="kde_mimedir" - inst.setLocation("/share/mimelink"+subDir) - @installs[key]=inst - elsif baseDir=="kde_htmldir" - inst.setLocation("/share/doc/HTML"+subDir) - @installs[key]=inst - elsif baseDir=="kde_icondir" - inst.setLocation("/share/icons"+subDir) - @installs[key]=inst - @iconDir=key - elsif baseDir=="kde_datadir" - inst.setLocation("/share/apps"+subDir) - @installs[key]=inst - elsif baseDir=="datadir" - inst.setLocation("/share"+subDir) - @installs[key]=inst - end - end - end - - def evalLine(line) - if line =~ /^\s*METASOURCES\s*=\s*AUTO\s*$/ - @automoc=true - return - end - - if addTarget(line) - return - end - - if line =~ /^\s*KDE_ICON\s*=/ - @installIcons=true - return - end - - if (line =~ /^\s*\S+_SOURCES\s*=/) - addSourcesToTarget(line) - return - end - - if (line =~ /^\s*(\S+)_LDFLAGS\s*=\s*(\S+.*)$/) || - (line =~ /^\s*(\S+)_LIBADD\s*=\s*(\S+.*)$/) || - (line =~ /^\s*(\S+)_LDADD\s*=\s*(\S+.*)$/) - - if $1 != "AM" - buildTarget=findTarget(line) - if buildTarget.type==NoTarget - printf("PROBLEM: target %s not found: %s\n", $1, line) - return - end - -# printf("target: #{buildTarget.name} lib: #{$2} line: #{line} d1: #{$1}\n") - buildTarget.addLibs($2) - end - return - end - - if (line =~ /^\s*INCLUDES\s*=\s*(\S+.*)$/) - addIncludeDirectories($1) - return - end - - if line =~ /^\s*(\S+)dir\s*=\s*(\S+.*)$/ - addInstallLocation($1, $2) - return - end - if line =~ /^\s*(\S+)_DATA\s*=\s*(\S+.*)$/ - addInstallFiles($1, $2) - return - end - - if line =~ /^\s*SUBDIRS\s*=\s*(\S+.*)$/ - ($1).split.each do |dir| - if dir =~ /\$\(.+\)/ - @skippedSubDirs.push(dir) - else - @subDirs.push(dir) if dir!="." - end - end - end - - end - - def createListsFile -# prevLines=Array.new -# if FileTest.exists?(@listsFile) -## printf("file exists: %s\n", @listsFile) -# prevLines=File.new(@listsFile, "r").readlines -# end - - file=File.new(@listsFile, "w+"); - if @amFile=="Makefile.am" && $no_kde==false # the toplevel Makefile.am - file.printf("FIND_PACKAGE(KDE3 REQUIRED)\n\n") - file.printf("SET(CMAKE_VERBOSE_MAKEFILE ON)\n\n") - file.printf("ADD_DEFINITIONS(${QT_DEFINITIONS} ${KDE3_DEFINITIONS})\n\n") - file.printf("LINK_DIRECTORIES(${KDE3_LIB_DIR})\n\n") - - end - - if not @subDirs.empty? - @subDirs.each{ |dir| file.printf("ADD_SUBDIRECTORY( %s ) \n", dir)} - file.printf("\n") - end - if not @skippedSubDirs.empty? - @skippedSubDirs.each{ |dir| file.printf("MESSAGE(STATUS \"${CMAKE_CURRENT_SOURCE_DIR}: skipped subdir %s\")\n", dir)} - end - - - if not @includeDirs.empty? - file.printf("INCLUDE_DIRECTORIES( ") - @includeDirs.each{ |dir| file.printf("%s ", dir) } - file.printf(" )\n\n") - end - @targets.each do |buildTarget| - file.printf("\n########### next target ###############\n\n") -# printf("target name: %s\n", buildTarget.name) - - if buildTarget.type==SharedLib - srcsName=buildTarget.name+"_LIB_SRCS" - elsif buildTarget.type==StaticLib - srcsName=buildTarget.name+"_STAT_SRCS" - elsif buildTarget.type==Part - srcsName=buildTarget.name+"_PART_SRCS" - elsif buildTarget.type==KDEInit - srcsName=buildTarget.name+"_KDEINIT_SRCS" - else - srcsName=buildTarget.name+"_SRCS" - end - uisName=buildTarget.name+"_UI" - skelsName=buildTarget.name+"_DCOP_SKEL_SRCS" - stubsName=buildTarget.name+"_DCOP_STUB_SRCS" - kcfgsName=buildTarget.name+"_KCFG_SRCS" - - if buildTarget.sources.empty? - buildTarget.sources.push("dummy.cpp") - end - - if not buildTarget.sources.empty? - file.printf("SET(%s\n", srcsName) - needToCreateDummyFile=false - buildTarget.sources.each do |currentFile| - file.printf("%s\n", currentFile) - if currentFile=="dummy.cpp" - - needToCreateDummyFile=true if not FileTest.exists?(@path+"/dummy.cpp") - end - end - file.printf(")\n\n") - file.printf("KDE3_AUTOMOC(${%s})\n\n", srcsName) - - if needToCreateDummyFile -# printf("creating dummy file in #{@path} ________\n") - file.printf("FILE(WRITE dummy.cpp \"//autogenerated file by cmake\\n\")\n") - end - end - - if not buildTarget.uis.empty? - file.printf("SET( %s\n", uisName) - buildTarget.uis.each{ |currentFile| file.printf("%s\n", currentFile)} - file.printf(")\n\n") - file.printf("KDE3_ADD_UI_FILES(%s ${%s} )\n\n", srcsName, uisName) - end - - if not buildTarget.skels.empty? - file.printf("SET( %s\n", skelsName) - buildTarget.skels.each{ |currentFile| file.printf("%s\n", currentFile)} - file.printf(")\n\n") - - file.printf("KDE3_ADD_DCOP_SKELS(%s ${%s})\n\n", srcsName, skelsName) - end - - if not buildTarget.stubs.empty? - file.printf("SET( %s\n", stubsName) - buildTarget.stubs.each{ |currentFile| file.printf("%s\n", currentFile)} - file.printf(")\n\n") - - file.printf("KDE3_ADD_DCOP_STUBS(%s ${%s})\n\n", srcsName, stubsName) - end - - if not buildTarget.kcfgs.empty? - file.printf("SET( %s\n", kcfgsName) - buildTarget.kcfgs.each{ |currentFile| file.printf("%s\n", currentFile)} - file.printf(")\n\n") - - file.printf("KDE3_ADD_KCFG_FILES(%s ${%s})\n\n", srcsName, kcfgsName) - end - - if buildTarget.type==SharedLib - file.printf("ADD_LIBRARY(%s SHARED ${%s})\n\n", buildTarget.name, srcsName) - file.printf("TARGET_LINK_LIBRARIES(%s ", buildTarget.name) - buildTarget.libs.each { |currentLib| file.printf(" %s", currentLib) } - file.printf(" )\n\n") - - file.printf("SET_TARGET_PROPERTIES(%s PROPERTIES VERSION 4.2.0 SOVERSION 4 )\n", buildTarget.name) - file.printf("INSTALL_TARGETS(/lib %s )\n\n", buildTarget.name) - elsif buildTarget.type==StaticLib - file.printf("ADD_LIBRARY(%s STATIC ${%s})\n\n", buildTarget.name, srcsName) - elsif buildTarget.type==Part - if buildTarget.stdPrefix - file.printf("KDE3_ADD_KPART(%s WITH_PREFIX ${%s})\n\n", buildTarget.name, srcsName) - else - file.printf("KDE3_ADD_KPART(%s ${%s})\n\n", buildTarget.name, srcsName) - end - file.printf("TARGET_LINK_LIBRARIES(%s ", buildTarget.name) - buildTarget.libs.each { |currentLib| file.printf(" %s", currentLib) } - file.printf(" )\n\n") - - file.printf("INSTALL_TARGETS(/lib/kde3 %s )\n\n", buildTarget.name) - elsif buildTarget.type==KDEInit - file.printf("KDE3_ADD_KLM( %s ${%s})\n\n", buildTarget.name, srcsName) - - file.printf("TARGET_LINK_LIBRARIES(kdeinit_%s ", buildTarget.name) - buildTarget.libs.each { |currentLib| file.printf(" %s", currentLib) } - file.printf(" )\n\n") - - file.printf("INSTALL_TARGETS(/lib kdeinit_%s )\n\n", buildTarget.name) - - file.printf("TARGET_LINK_LIBRARIES( %s kdeinit_%s )\n", buildTarget.name, buildTarget.name) - - file.printf("INSTALL_TARGETS(/bin %s )\n", buildTarget.name) - - else #executable - if $no_kde - - file.printf("ADD_EXECUTABLE(%s ${%s})\n\n", buildTarget.name, srcsName) - - file.printf("TARGET_LINK_LIBRARIES(%s ", buildTarget.name) - buildTarget.libs.each { |currentLib| file.printf(" %s", currentLib) } - file.printf(" )\n\n") - - if buildTarget.install - file.printf("INSTALL_TARGETS(/bin %s )\n\n", buildTarget.name) - end - - else - if buildTarget.test - file.printf("IF(KDE3_BUILD_TESTS)\n") - end - - file.printf("KDE3_ADD_EXECUTABLE(%s ${%s})\n\n", buildTarget.name, srcsName) - - file.printf("TARGET_LINK_LIBRARIES(%s ", buildTarget.name) - buildTarget.libs.each { |currentLib| file.printf(" %s", currentLib) } - file.printf(" )\n\n") - - if buildTarget.install - file.printf("INSTALL_TARGETS(/bin %s )\n\n", buildTarget.name) - end - - if buildTarget.test - file.printf("ENDIF(KDE3_BUILD_TESTS)\n") - end - - end - - end - - end - - file.printf("\n########### install files ###############\n\n") - - @installs.each do |key, install| - file.printf("INSTALL_FILES( %s FILES %s )\n", install.location, install.files) - end - file.printf("\n") - - if @installIcons - file.printf("KDE3_INSTALL_ICONS( %s )\n\n",@iconDir ) - end - - file.printf("KDE3_PLACEHOLDER()\n\n") - - file.printf("\n\n#original Makefile.am contents follow:\n\n") - @lines.each{ |line| file.printf("#%s", line)} -# if !prevLines.empty? -# file.printf("\n#######################\n#previous CMakeLists.txt contents follow:\n\n") -# prevLines.each{ |line| file.printf("#%s", line)} -# end - end -end - -def convertAmFile(amFile) - cmake=CMakeFile.new(amFile) - cmake.createListsFile -end - -if (ARGV.length==1) - if ARGV[0]=="--no-kde" - $no_kde=true - elsif ARGV[0]=="--help" - printf("--help\t print this help text\n") - printf("--version\t print version information\n") - printf("--no-kde\t disable special KDE application support\n") - elsif ARGV[0]=="--version" - printf("am2cmake (C) 2005, Alexander Neundorf\n") - printf("Version 0.1, December 11th, 2005\n"); - else - printf("Invalid argument, try --help\n") - end -end -Dir["**/Makefile.am"].each{ |currentFile| convertAmFile(currentFile)} - - |