3 find_program(VALAC valac)
5 function(add_vala_library libname)
6 set(valasources ${ARGN})
8 # Get the names of the C sources generated by the vala sources
9 foreach(vs ${valasources})
10 file(RELATIVE_PATH cs ${CMAKE_CURRENT_SOURCE_DIR} ${vs})
11 string(REGEX REPLACE "\\.vala$" ".c" cs ${cs})
12 set(csources ${csources} ${CMAKE_CURRENT_BINARY_DIR}/${cs})
15 set(header ${CMAKE_CURRENT_BINARY_DIR}/${libname}.h)
16 set(vapi ${CMAKE_CURRENT_BINARY_DIR}/${libname}.vapi)
18 set_source_files_properties(${csources} ${header} ${vapi} PROPERTIES GENERATED 1)
20 # Export the list of C sources
21 set(${libname}_CSOURCES ${csources} PARENT_SCOPE)
23 # Create --pkg= entries for command line
24 foreach(pkg ${VALA_PACKAGES})
25 set(pkgs ${pkgs} --pkg=${pkg})
28 #message(DEPENDS ${valasources})
29 #message(OUTPUT ${csources} ${CMAKE_CURRENT_BINARY_DIR}/${libname}.h ${CMAKE_CURRENT_BINARY_DIR}/${libname}.vapi)
31 DEPENDS ${valasources}
32 OUTPUT ${csources} ${header} ${vapi}
33 COMMAND ${VALAC} ${VFLAGS} ${pkgs} -C -H ${header} --library=${libname} ${valasources}
35 endfunction(add_vala_library)
37 function(add_vala_program progname)
38 set(valasources ${ARGN})
40 # Get the names of the C sources generated by the vala sources
41 foreach(vs ${valasources})
42 file(RELATIVE_PATH cs ${CMAKE_CURRENT_SOURCE_DIR} ${vs})
43 string(REGEX REPLACE "\\.vala$" ".c" cs ${cs})
44 set(csources ${csources} ${cs})
47 set_source_files_properties(${csources} PROPERTIES GENERATED 1)
49 # Export the list of C sources
50 set(${progname}_CSOURCES ${csources} PARENT_SCOPE)
52 # Create --pkg= entries for command line
53 foreach(pkg ${VALA_PACKAGES})
54 set(pkgs ${pkgs} --pkg=${pkg})
58 DEPENDS ${valasources}
60 COMMAND ${VALAC} ${VFLAGS} ${pkgs} -C ${valasources}
62 endfunction(add_vala_program)
64 # Requires a prefix: we cannot use TMP as internal prefix because
65 # pkg_check_modules will not overwrite variables which already exist, so
66 # add_packages would not be able to be called more than once
67 function(add_packages prefix)
70 pkg_check_modules(${prefix} REQUIRED ${packages})
71 add_definitions(${${prefix}_CFLAGS})
72 link_libraries(${${prefix}_LDFLAGS})
74 #foreach(pkg ${packages})
75 # string(REGEX REPLACE "[><=].+" "" modname ${pkg})
76 # pkg_check_modules(TMP${modname} REQUIRED ${pkg})
77 # message("FOR ${pkg} CFLAGS ${TMP${modname}_CFLAGS} LIBS ${TMP${modname}_LDFLAGS}")
78 # add_definitions(${TMP${modname}_CFLAGS})
79 # link_libraries(${TMP${modname}_LDFLAGS})
81 endfunction(add_packages)