diff options
-rw-r--r-- | CMakeLists.txt | 13 | ||||
-rw-r--r-- | FindGeneratorRunner.cmake.in | 18 | ||||
-rw-r--r-- | generator.cpp | 2 | ||||
-rw-r--r-- | generator.h | 4 | ||||
-rw-r--r-- | generatorrunnermacros.h | 12 | ||||
-rw-r--r-- | main.cpp | 4 |
6 files changed, 36 insertions, 17 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 48de3d339..ef6cdbb50 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,12 @@ cmake_minimum_required(VERSION 2.6) find_package(Qt4 4.5.0 REQUIRED) find_package(ApiExtractor REQUIRED) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -DGENRUNNER_BUILD -fvisibility=hidden") +if (MSVC) + set(CMAKE_CXX_FLAGS "/DWIN32 /D_WINDOWS /w /EHsc- /GS- /GR- /DGENRUNNER_BUILD -D_SCL_SECURE_NO_WARNINGS") +else (MSVC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fvisibility=hidden") +endif(MSVC) + set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" ) 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) @@ -62,14 +67,16 @@ add_custom_target(dist | bzip2 > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) -install(TARGETS genrunner DESTINATION ${LIB_INSTALL_DIR}) +install(TARGETS genrunner LIBRARY DESTINATION ${LIB_INSTALL_DIR} + ARCHIVE DESTINATION ${LIB_INSTALL_DIR} + RUNTIME DESTINATION bin) install(TARGETS generatorrunner DESTINATION bin) install(FILES generator.h DESTINATION include/generatorrunner) install(FILES generatorrunnermacros.h DESTINATION include/generatorrunner) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/generatorrunner.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FindGeneratorRunner.cmake - DESTINATION share/cmake-2.6/Modules) + DESTINATION "share/cmake-${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}/Modules") #FIXME: manpages should be installed only on Linux targets file(GLOB manpages ${CMAKE_CURRENT_SOURCE_DIR}/*.1) diff --git a/FindGeneratorRunner.cmake.in b/FindGeneratorRunner.cmake.in index 8920ca72d..3c975e304 100644 --- a/FindGeneratorRunner.cmake.in +++ b/FindGeneratorRunner.cmake.in @@ -3,13 +3,19 @@ # GENERATORRUNNER_LIBRARIES - Files to link against to use GENERATORRUNNER # GENERATORRUNNER_FOUND - GENERATORRUNNER was found -FIND_PATH(GENERATORRUNNER_INCLUDE_DIR generator.h @CMAKE_INSTALL_PREFIX@/include/generatorrunner) +FIND_PATH(GENERATORRUNNER_INCLUDE_DIR generator.h "@CMAKE_INSTALL_PREFIX@/include/generatorrunner") +FIND_LIBRARY(GENERATORRUNNER_LIBRARY genrunner "@LIB_INSTALL_DIR@") -FIND_LIBRARY(GENERATORRUNNER_LIBRARY genrunner @CMAKE_INSTALL_PREFIX@/lib) +IF (GENERATORRUNNER_INCLUDE_DIR AND GENERATORRUNNER_LIBRARY) + SET(GENERATORRUNNER_FOUND TRUE) +ENDIF (GENERATORRUNNER_INCLUDE_DIR AND GENERATORRUNNER_LIBRARY) -SET(GENERATORRUNNER_FOUND "NO") -IF(GENERATORRUNNER_LIBRARY AND GENERATORRUNNER_INCLUDE_DIR) - SET(GENERATORRUNNER_FOUND "YES") +IF (GENERATORRUNNER_FOUND) + MESSAGE(STATUS "Found GeneratorRunner: ${GENERATORRUNNER_LIBRARY}") SET(GENERATORRUNNER_PLUGIN_DIR @generator_plugin_DIR@) SET(GENERATORRUNNER_VERSION "@generator_VERSION@") -ENDIF(GENERATORRUNNER_LIBRARY AND GENERATORRUNNER_INCLUDE_DIR) +ELSE (GENERATORRUNNER_FOUND) + IF (GeneratorRunner_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find GeneratorRunner") + ENDIF (GeneratorRunner_FIND_REQUIRED) +ENDIF (GENERATORRUNNER_FOUND) diff --git a/generator.cpp b/generator.cpp index 636eb5b88..99a74d301 100644 --- a/generator.cpp +++ b/generator.cpp @@ -356,6 +356,8 @@ QTextStream& formatCode(QTextStream &s, const QString& code, Indentor &indentor) } foreach(QString line, lst) { + while (line.end()->isSpace()) + line.chop(1); int limit = 0; for(int i = 0; i < spacesToRemove; ++i) { if (!line[i].isSpace()) diff --git a/generator.h b/generator.h index ee51cb87a..53e05e8c5 100644 --- a/generator.h +++ b/generator.h @@ -35,9 +35,9 @@ class AbstractMetaBuilder; class QFile; #define EXPORT_GENERATOR_PLUGIN(X)\ -extern "C" GENRUNNER_API GeneratorList getGenerators()\ +extern "C" GENRUNNER_EXPORT void getGenerators(GeneratorList* list)\ {\ - return GeneratorList() << X;\ + *list << X;\ }\ GENRUNNER_API diff --git a/generatorrunnermacros.h b/generatorrunnermacros.h index 8f801f06d..c68f328d3 100644 --- a/generatorrunnermacros.h +++ b/generatorrunnermacros.h @@ -26,18 +26,22 @@ // GENRUNNER_API is used for the public API symbols. #if defined _WIN32 || defined __CYGWIN__ + #define GENRUNNER_EXPORT __declspec(dllexport) #if GENRUNNER_BUILD - #define GENRUNNER_API __declspec(dllimport) + #define GENRUNNER_API GENRUNNER_EXPORT #else - #define GENRUNNER_API __declspec(dllexport) + #define GENRUNNER_API __declspec(dllimport) #endif + // dont worry about deprecated functions under windows + #define GENRUNNER_DEPRECATED #else + #define GENRUNNER_EXPORT __attribute__ ((visibility("default"))) #if __GNUC__ >= 4 - #define GENRUNNER_API __attribute__ ((visibility("default"))) + #define GENRUNNER_API GENRUNNER_EXPORT #else #define GENRUNNER_API #endif + #define GENRUNNER_DEPRECATED __attribute__ ((deprecated)) #endif -#define GENRUNNER_DEPRECATED __attribute__ ((deprecated)) #endif @@ -48,7 +48,7 @@ static void printOptions(QTextStream& s, const QMap<QString, QString>& options) } } -typedef QLinkedList<Generator*> (*getGeneratorsFunc)(); +typedef void (*getGeneratorsFunc)(QLinkedList<Generator*>*); QMap<QString, QString> getCommandLineArgs(int argc, char** argv) { @@ -129,7 +129,7 @@ int main(int argc, char *argv[]) QLibrary plugin(generatorFile); getGeneratorsFunc getGenerators = (getGeneratorsFunc)plugin.resolve("getGenerators"); if (getGenerators) - generators = getGenerators(); + getGenerators(&generators); else { std::cerr << argv[0] << ": Error loading generatorset plugin: " << qPrintable(plugin.errorString()) << std::endl; return EXIT_FAILURE; |