| 1 |
project(generatorrunner) |
| 2 |
|
| 3 |
cmake_minimum_required(VERSION 2.6) |
| 4 |
|
| 5 |
find_package(Qt4 4.5.0 REQUIRED) |
| 6 |
find_package(ApiExtractor 0.10.10 REQUIRED) |
| 7 |
|
| 8 |
option(BUILD_TESTS "Build tests." TRUE) |
| 9 |
option(INSTALL_TESTS "Install tests" FALSE) |
| 10 |
option(TEST_INSTALL_DIR "Test install directory" FALSE) |
| 11 |
option(ENABLE_VERSION_SUFFIX "Used to use current version in suffix to generated files. This is used to allow multiples versions installed simultaneous." FALSE) |
| 12 |
|
| 13 |
if(MSVC) |
| 14 |
set(CMAKE_CXX_FLAGS "/Zc:wchar_t- /EHsc /DWIN32 /D_WINDOWS /D_SCL_SECURE_NO_WARNINGS") |
| 15 |
else() |
| 16 |
option(ENABLE_GCC_OPTIMIZATION "Enable specific GCC flags to optimize library size and performance. Only available on Release Mode" 0) |
| 17 |
if (CMAKE_HOST_UNIX AND NOT CYGWIN) |
| 18 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fvisibility=hidden") |
| 19 |
endif() |
| 20 |
set(CMAKE_CXX_FLAGS_DEBUG "-g") |
| 21 |
if(ENABLE_GCC_OPTIMIZATION) |
| 22 |
set(CMAKE_BUILD_TYPE Release) |
| 23 |
set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -Os -Wno-strict-aliasing -Wl,-O1") |
| 24 |
if(NOT CMAKE_HOST_APPLE) |
| 25 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--hash-style=gnu") |
| 26 |
endif() |
| 27 |
endif() |
| 28 |
endif() |
| 29 |
|
| 30 |
if(NOT CMAKE_BUILD_TYPE) |
| 31 |
set(CMAKE_BUILD_TYPE Release) |
| 32 |
endif() |
| 33 |
|
| 34 |
|
| 35 |
set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" ) |
| 36 |
set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" FORCE) |
| 37 |
|
| 38 |
|
| 39 |
# lib generator version |
| 40 |
set(generator_MAJOR_VERSION "0") |
| 41 |
set(generator_MINOR_VERSION "6") |
| 42 |
set(generator_MICRO_VERSION "17") |
| 43 |
set(generator_VERSION "${generator_MAJOR_VERSION}.${generator_MINOR_VERSION}.${generator_MICRO_VERSION}") |
| 44 |
set(generator_SOVERSION "${generator_MAJOR_VERSION}.${generator_MINOR_VERSION}") |
| 45 |
set(USE_GENERATOR_VERSION_SUFFIX FALSE CACHE BOOL "This suffix allow to have various generator version installed simultaneous.") |
| 46 |
if (ENABLE_VERSION_SUFFIX) |
| 47 |
set(generator_SUFFIX "-${generator_MAJOR_VERSION}.${generator_MINOR_VERSION}") |
| 48 |
else() |
| 49 |
set(generator_SUFFIX "") |
| 50 |
endif() |
| 51 |
|
| 52 |
set(generator_plugin_DIR ${LIB_INSTALL_DIR}/generatorrunner${generator_SUFFIX}) |
| 53 |
|
| 54 |
add_definitions(${QT_DEFINITIONS}) |
| 55 |
|
| 56 |
configure_file(generatorrunnerconfig.h.in "${CMAKE_CURRENT_BINARY_DIR}/generatorrunnerconfig.h" @ONLY) |
| 57 |
|
| 58 |
include_directories(${CMAKE_CURRENT_SOURCE_DIR} |
| 59 |
${CMAKE_CURRENT_BINARY_DIR} |
| 60 |
${APIEXTRACTOR_INCLUDE_DIR} |
| 61 |
${QT_INCLUDE_DIR} |
| 62 |
${QT_QTCORE_INCLUDE_DIR} |
| 63 |
${QT_QTXML_INCLUDE_DIR}) |
| 64 |
|
| 65 |
add_library(genrunner SHARED generator.cpp) |
| 66 |
set_target_properties(genrunner PROPERTIES VERSION ${generator_VERSION} DEFINE_SYMBOL GENRUNNER_EXPORTS) |
| 67 |
target_link_libraries(genrunner ${QT_QTCORE_LIBRARY} ${APIEXTRACTOR_LIBRARY}) |
| 68 |
set_target_properties(genrunner PROPERTIES VERSION ${generator_VERSION} |
| 69 |
SOVERSION ${generator_SOVERSION} |
| 70 |
OUTPUT_NAME genrunner${generator_SUFFIX}) |
| 71 |
|
| 72 |
add_executable(generatorrunner main.cpp) |
| 73 |
set_target_properties(generatorrunner PROPERTIES OUTPUT_NAME generatorrunner${generator_SUFFIX}) |
| 74 |
target_link_libraries(generatorrunner |
| 75 |
genrunner |
| 76 |
${APIEXTRACTOR_LIBRARY} |
| 77 |
${QT_QTCORE_LIBRARY} |
| 78 |
${QT_QTXML_LIBRARY}) |
| 79 |
|
| 80 |
# uninstall target |
| 81 |
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake" |
| 82 |
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" |
| 83 |
IMMEDIATE @ONLY) |
| 84 |
add_custom_target(uninstall "${CMAKE_COMMAND}" |
| 85 |
-P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") |
| 86 |
|
| 87 |
|
| 88 |
|
| 89 |
set(ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${generator_VERSION}) |
| 90 |
add_custom_target(dist |
| 91 |
COMMAND mkdir -p "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}" && |
| 92 |
git log > "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}/ChangeLog" && |
| 93 |
git archive --prefix=${ARCHIVE_NAME}/ HEAD --format=tar --output="${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar" && |
| 94 |
tar -C "${CMAKE_BINARY_DIR}" --owner=root --group=root -r "${ARCHIVE_NAME}/ChangeLog" -f "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar" && |
| 95 |
bzip2 -f9 "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar" && |
| 96 |
echo "Source package created at ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2.\n" |
| 97 |
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) |
| 98 |
|
| 99 |
|
| 100 |
set(GENERATORRUNNER_INC_DIR "generatorrunner${generator_SUFFIX}") |
| 101 |
install(TARGETS genrunner LIBRARY DESTINATION "${LIB_INSTALL_DIR}" |
| 102 |
ARCHIVE DESTINATION "${LIB_INSTALL_DIR}" |
| 103 |
RUNTIME DESTINATION bin) |
| 104 |
install(TARGETS generatorrunner DESTINATION bin) |
| 105 |
install(FILES generator.h DESTINATION include/${GENERATORRUNNER_INC_DIR}) |
| 106 |
install(FILES generatorrunnermacros.h DESTINATION include/${GENERATORRUNNER_INC_DIR}) |
| 107 |
|
| 108 |
if (BUILD_TESTS) |
| 109 |
if (NOT TEST_INSTALL_DIR) |
| 110 |
set(TEST_INSTALL_DIR "share/generatorrunner/tests") |
| 111 |
endif() |
| 112 |
enable_testing() |
| 113 |
endif() |
| 114 |
|
| 115 |
add_subdirectory(generators) |
| 116 |
add_subdirectory(doc) |
| 117 |
|
| 118 |
if (BUILD_TESTS) |
| 119 |
add_subdirectory(tests) |
| 120 |
endif() |
| 121 |
add_subdirectory(data) |