8338a3687436c5b43ed14bbdcd44297bc941bd09
[roojspacker] / roojspacker / CMakeLists.txt
1 #
2 #
3 # Library Target: linked against executable and tests.
4
5 # Generate a config.vala file, which can be used for version
6 # information and feature detection.
7 #configure_file(
8 #    "${CMAKE_CURRENT_SOURCE_DIR}/config.vala.in"
9 #    "${CMAKE_CURRENT_BINARY_DIR}/config.vala"
10 #    @ONLY)
11
12 # You can re-type these if you prefer; putting them in variables makes
13 # it easier to reuse them, and helps explain what each command needs
14 # to include.
15
16 # The name of the C header, without the trailing ".h"
17 set(ROOJSPACKER_HEADER ${PROJECT_NAME})
18
19 # These are the Vala sources you want to build your library out of.
20 set(ROOJSPACKER_VALA_SOURCES
21     Collapse.vala 
22     CompressWhite.vala 
23     Identifier.vala 
24     Lang.vala 
25     Packer.vala 
26     ScopeParser.vala 
27     Scope.vala 
28     TextStream.vala 
29     TokenReader.vala 
30     TokenStream.vala 
31     Token.vala 
32     PackerRun.vala 
33     Walker.vala 
34     SymbolSet.vala 
35     DocBuilder.vala 
36     DocComment.vala 
37     DocParser.vala 
38     DocTag.vala 
39     PrettyPrint.vala 
40     Symbol.vala
41 )
42
43  
44
45 # Compile Vala -> C
46 vala_precompile_target(
47     "${ROOJSPACKER_LIBRARY_NAME}-vala"
48     ROOJSPACKER_C_SOURCES
49     PACKAGES ${ROOJSPACKER_VALA_PACKAGES}
50     VAPI "${CMAKE_CURRENT_BINARY_DIR}/${ROOJSPACKER_PKG_NAME}.vapi"
51 #    GIR "${ROOJSPACKER_GIR_NAME}.gir"
52     HEADER "${CMAKE_CURRENT_BINARY_DIR}/${ROOJSPACKER_PKG_NAME}.h"
53     ${ROOJSPACKER_VALA_SOURCES})
54
55 # Compile the library.
56 #
57 # By default, we create and install a shared library.  If you don't
58 # want to do that, you can change "SHARED" in the below function call
59 # to "STATIC".
60 add_library(${ROOJSPACKER_LIBRARY_NAME}
61     SHARED
62     ${ROOJSPACKER_C_SOURCES})
63
64 # Make sure the Vala sources are compiled to C before attempting to
65 # build the library.
66 add_dependencies("${ROOJSPACKER_LIBRARY_NAME}" "${ROOJSPACKER_LIBRARY_NAME}-vala")
67
68 # Generate a .gitignore
69 file(WRITE  ".gitignore" "# Automatically generated by CMake, do not modify.\n")
70 foreach(file
71     ".gitignore"
72     "${CMAKE_SHARED_LIBRARY_PREFIX}${ROOJSPACKER_LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}*"
73     "${CMAKE_STATIC_LIBRARY_PREFIX}${ROOJSPACKER_LIBRARY_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}"
74     "${CMAKE_SHARED_LIBRARY_PREFIX}${ROOJSPACKER_LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${ROOJSPACKER_VERSION_API}"
75     "${CMAKE_SHARED_LIBRARY_PREFIX}${ROOJSPACKER_LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${ROOJSPACKER_VERSION_API}.${ROOJSPACKER_VERSION_REVISION}"
76     "${ROOJSPACKER_PKG_NAME}.pc"
77     "config.vala")
78   file(APPEND ".gitignore" "/${file}\n")
79 endforeach(file)
80 foreach(file ${ROOJSPACKER_C_SOURCES})
81   string(REPLACE "${CMAKE_CURRENT_BINARY_DIR}/" "" file ${file})
82   file(APPEND ".gitignore" "/${file}\n")
83 endforeach(file)
84
85 # Define the gettext domain
86 #set_property (TARGET ${ROOJSPACKER_LIBRARY_NAME}
87 #    APPEND PROPERTY COMPILE_DEFINITIONS GETTEXT_PACKAGE="${GETTEXT_PACKAGE}")
88
89 # If you don't want to build and install a shared library, comment out
90 # (or remove) everything below this point.
91
92 # Set the library's version information
93 set_target_properties (${ROOJSPACKER_LIBRARY_NAME} PROPERTIES
94     SOVERSION "${ROOJSPACKER_SOVERSION_CURRENT}.${ROOJSPACKER_SOVERSION_REVISION}.${ROOJSPACKER_SOVERSION_AGE}"
95     VERSION   "${ROOJSPACKER_SOVERSION_CURRENT}.${ROOJSPACKER_SOVERSION_REVISION}")
96
97 # GObject Introspection support
98 #find_package(GObjectIntrospection REQUIRED)
99 # Gir Repositories support
100 #find_file(GIREPOSITORY_FILE GObject-2.0.gir /usr/share/gir-1.0 )
101 #if(GIREPOSITORY_FILE)
102 #else()
103 #    message(FATAL_ERROR "Package libgirepository-dev not found.")
104 #endif()
105
106 # We already had valac write a GIR, now we need to compile it to a
107 # typelib.
108 #gobject_introspection_compile(
109 #  "${CMAKE_CURRENT_BINARY_DIR}/${ROOJSPACKER_GIR_NAME}.typelib"
110 #  "${CMAKE_CURRENT_BINARY_DIR}/${ROOJSPACKER_GIR_NAME}.gir")
111
112 # Telling CMake you want to install a file doesn't actually get it to
113 # *build* that file.  The workaround is to add a custom target which
114 # is always built and depens on the file we want to install.
115 #add_custom_target(typelib ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${ROOJSPACKER_GIR_NAME}.typelib")
116
117 # Install our typelib
118 #install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${ROOJSPACKER_GIR_NAME}.typelib"
119 #    DESTINATION "${GI_TYPELIB_DIR}")
120
121 # Install our GIR
122 #install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${ROOJSPACKER_GIR_NAME}.gir"
123 #    DESTINATION "${GI_REPOSITORY_DIR}")
124
125 # Install our VAPI
126 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${ROOJSPACKER_PKG_NAME}.vapi
127     DESTINATION ${CMAKE_INSTALL_DATADIR}/vala/vapi)
128
129 # Install the library
130 install (
131     TARGETS ${ROOJSPACKER_LIBRARY_NAME}
132     RUNTIME DESTINATION bin  # On Windows, the DLL goes in the same place as the executables
133     LIBRARY DESTINATION lib  # This is where shared libraries (*.so on Linux, *.dynlib on OS X)
134     ARCHIVE DESTINATION lib) # Finally, this is where static libraries (*.a) go
135
136 # Install the C header
137 #install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${ROOJSPACKER_PKG_NAME}.h
138 #    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/)
139
140 INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/${ROOJSPACKER_PKG_NAME}.h
141         DESTINATION include)
142
143
144 # Install our VAPI
145 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${ROOJSPACKER_PKG_NAME}.vapi
146     DESTINATION ${CMAKE_INSTALL_DATADIR}/vala/vapi)
147
148 # Generate and install a pkg-config file
149 configure_file (
150     "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc.in"
151     "${CMAKE_CURRENT_BINARY_DIR}/${ROOJSPACKER_PKG_NAME}.pc"
152     @ONLY)
153 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${ROOJSPACKER_PKG_NAME}.pc
154   DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
155
156 # Generate documentation
157 #find_package(Valadoc)
158 #if(${VALADOC_FOUND})
159 #    valadoc_generate(html
160 #        PACKAGE_NAME ${ROOJSPACKER_PKG_NAME}
161 #        PACKAGE_VERSION "${ROOJSPACKER_VERSION_MAJOR}.${ROOJSPACKER_VERSION_MINOR}.${ROOJSPACKER_VERSION_REVISION}"
162 #        SOURCES ${ROOJSPACKER_VALA_SOURCES}
163 #        PACKAGES ${ROOJSPACKER_VALA_PACKAGES})
164 #    valadoc_generate(devhelp
165 #        DOCLET devhelp
166 #        PACKAGE_NAME ${ROOJSPACKER_PKG_NAME}
167 #        PACKAGE_VERSION "${ROOJSPACKER_VERSION_MAJOR}.${ROOJSPACKER_VERSION_MINOR}.${ROOJSPACKER_VERSION_REVISION}"
168 #        SOURCES ${ROOJSPACKER_VALA_SOURCES}
169 #        PACKAGES ${ROOJSPACKER_VALA_PACKAGES})
170 #
171 #    install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/devhelp/${ROOJSPACKER_PKG_NAME}"
172 #        DESTINATION "${CMAKE_INSTALL_DATADIR}/devhelp/books")
173 #    add_custom_target(doc ALL
174 #        DEPENDS html devhelp)
175 #endif()