fc278058d133d07a7ba4544fd529ddc712b4aa43
[roojspacker] / src / CMakeLists.txt
1
2 set(VALA_SRC
3     jsdoc/Collapse.vala 
4     jsdoc/CompressWhite.vala 
5     jsdoc/Identifier.vala 
6     jsdoc/Lang.vala 
7     jsdoc/Packer.vala 
8     jsdoc/ScopeParser.vala 
9     jsdoc/Scope.vala 
10     jsdoc/TextStream.vala 
11     jsdoc/TokenReader.vala 
12     jsdoc/TokenStream.vala 
13     jsdoc/Token.vala 
14     jsdoc/PackerRun.vala 
15     jsdoc/Walker.vala 
16     jsdoc/SymbolSet.vala 
17     jsdoc/DocBuilder.vala 
18     jsdoc/DocComment.vala 
19     jsdoc/DocParser.vala 
20     jsdoc/DocTag.vala 
21     jsdoc/PrettyPrint.vala 
22     jsdoc/Symbol.vala
23 )
24
25  
26
27 # Vala segfaults if its output dirs are not existant. Therefore make sure they
28 # are there.
29 macro(make_compile_directory directory)
30         if (NOT IS_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${directory}")
31                 make_directory("${CMAKE_CURRENT_BINARY_DIR}/${directory}")
32         endif (NOT IS_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${directory}")
33 endmacro(make_compile_directory)
34
35 ## ----------- the library
36
37 vala_precompile(VALA_C
38         ${VALA_SRC}
39 PACKAGES 
40         gio-2.0
41         gee-0.8
42         glib-2.0
43         gobject-2.0
44         json-glib-1.0
45 OPTIONS 
46         --thread
47         --debug
48         --vapidir=${CMAKE_SOURCE_DIR}/vapi
49         -g
50         -X -shared -X -lm
51         --target-glib=2.32
52 GENERATE_HEADER
53         roojspacker-1.2.h
54 GENERATE_VAPI
55         roojspacker-1.2
56 )
57
58 add_library(libroojspacker-1.2 
59         SHARED
60         EXCLUDE_FROM_ALL
61         ${VALA_C} roojspacker.h
62 )
63  
64 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/roojspacker-1.2.vapi
65     DESTINATION ${CMAKE_INSTALL_DATADIR}/vala/vapi)
66     
67 install (TARGETS libroojspacker-1.2
68     RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}  # On Windows, the DLL goes in the same place as the executables
69     LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}  # This is where shared libraries (*.so on Linux, *.dynlib on OS X)
70     ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) # Finally, this is where static libraries (*.a) go
71
72 # Install the C header
73 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/roojspacker-1.2.h
74     DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR})
75
76 # Install our VAPI
77
78 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/roojspacker-1.2.vapi
79     DESTINATION ${CMAKE_INSTALL_DATADIR}/vala/vapi)
80     
81 configure_file (
82     "${CMAKE_CURRENT_SOURCE_DIR}/roojspacker-1.2.pc.in"
83     "${CMAKE_CURRENT_BINARY_DIR}/roojspacker-1.2.pc"
84     @ONLY)
85     
86 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/roojspacker-1.2.pc
87   DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
88     
89 ## ----------- the binary
90
91 vala_precompile(VALABIN_C
92         main.vala
93 PACKAGES 
94         gio-2.0
95         gee-0.8
96         glib-2.0
97         gobject-2.0
98         json-glib-1.0
99         roojspacker-1.2
100 OPTIONS 
101         --thread
102         --debug
103         --vapidir=${CMAKE_SOURCE_DIR}/vapi
104         --vapidir=${CMAKE_SOURCE_DIR}
105         -g
106         -X -shared -X -lm
107         --target-glib=2.32
108 )
109
110
111
112 add_executable(roojspacker
113         ${VALABIN_C}
114 )
115
116 # explicitly add libraries (needed e.g. for Fedora 13+)
117 # target_link_libraries(roojspacker -lm)
118
119 install(TARGETS 
120         roojspacker
121 RUNTIME
122 DESTINATION
123         bin
124 )
125
126