6 command
= './cpptoxml/cpptoxml',
7 config
= './cpptoxml/parser/rpp/pp-qt-configuration',
11 file
= './generator/generator.lua',
14 types
= { 'generator/types.lua' },
22 includes
= { '<QtCore>' },
23 types
= { 'generator/qtypes.lua' },
24 filters
= { 'generator/qt_internal.lua' },
28 includes
= { '<QWidget>' },
31 depends
= { 'qtcore' },
35 Module
= function(name
)
36 local m
= modules
[name
]
37 local ret
= { name
= name
, hppfiles
={}, }
39 for _
, d
in ipairs(m
.depends
) do
40 table.insert(deps
, Module(d
))
41 table.insert(ret
.hppfiles
, d
..'_head.hpp')
42 table.insert(m
.types
, d
..'_src/'..d
..'_type.lua')
44 for k
, t
in pairs(generator
.default
) do
47 for _
, v
in ipairs(t
) do
48 if not set
[v
] then table.insert(ret
[k
], v
) set
[v
]=true end
50 for _
, d
in ipairs(deps
) do
51 for _
, v
in ipairs(d
[k
]) do
52 if not set
[v
] then table.insert(ret
[k
], v
) set
[v
]=true end
55 for _
, v
in ipairs(m
[k
] or {}) do
56 if not set
[v
] then table.insert(ret
[k
], v
) set
[v
]=true end
62 qmake_project
= function(n
, ...)
67 INCLUDEPATH += . ]]..table.concat({...}, ' ')..[[
70 HEADERS += LQT_MODULE_head.hpp
71 SOURCES += LQT_MODULE_enum.cpp LQT_MODULE_meta.cpp LQT_MODULE_virt.cpp
75 compile
= function(name
)
76 local m
= Module(name
)
78 debug('creating stub in', generator
.directory
..'/'..m
.name
..'.tmp')
79 local f_stub
= assert(io
.open(generator
.directory
..'/'..m
.name
..'.tmp', 'w'))
80 for _
, i
in ipairs(m
.includes
) do
81 f_stub
:write('#include '..i
..'\n')
85 debug('getting output of', cpptoxml
.command
..' -C '..cpptoxml
.config
..' '..generator
.directory
..'/'..m
.name
..'.tmp')
86 local xml_file
= io
.popen(cpptoxml
.command
..' -C '..cpptoxml
.config
..' '..generator
.directory
..'/'..m
.name
..'.tmp', 'r')
87 local xml
= xml_file
:read'*a'
90 debug('creating xml file in', generator
.directory
..'/'..m
.name
..'.xml')
91 local xml_out
= io
.open(generator
.directory
..'/'..m
.name
..'.xml', 'w')
94 xml
= nil -- free memory
96 local cmd
= 'lua ' .. generator
.file
.. ' '
97 for _
, t
in ipairs(m
.types
) do
98 cmd
= cmd
.. '-t ' .. t
.. ' '
100 for _
, i
in ipairs(m
.includes
) do
101 cmd
= cmd
.. '-i \'' .. i
.. '\' '
103 for _
, h
in ipairs(m
.hppfiles
) do
104 cmd
= cmd
.. '-i \'<' .. h
.. '>\' '
106 for _
, f
in ipairs(m
.filters
) do
107 cmd
= cmd
.. '-f \'' .. f
.. '\' '
109 cmd
= cmd
.. '-n ' .. m
.name
.. ' ' .. generator
.directory
..'/'..m
.name
..'.xml'
110 debug('executing', cmd
)
112 debug('writing project file')
113 local qmake
= qmake_project(name
)
114 local f
= io
.open(name
..'_src/'..name
..'.pro', 'w')
120 compile(tostring(... or 'qtcore'))