From 358925ec028bcdb312616ffebf427eda595896cd Mon Sep 17 00:00:00 2001 From: Gulliver Date: Wed, 10 Sep 2014 14:08:44 +0200 Subject: added initial version of cmake build-files --- CMakeLists.txt | 114 +++++++++++++++++++++++++++++++++++++++++++ config.h.cmake | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++++ release_it.bat | 31 ++++++++++++ src/CMakeLists.txt | 34 +++++++++++++ 4 files changed, 317 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 config.h.cmake create mode 100644 release_it.bat create mode 100644 src/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..ae057c2 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,114 @@ +project(stmd) +cmake_minimum_required(VERSION 2.8) + +set(PROJECT_NAME "stmd") + +set(PROJECT_VERSION_MAJOR 0) +set(PROJECT_VERSION_MINOR 0) +set(PROJECT_VERSION_PATCH 1) +set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH} ) + +include (CheckIncludeFile) +CHECK_INCLUDE_FILE (stdbool.h HAVE_STDBOOL_H) + +#option(${PROJECT_NAME}_WITH_DOCS "generate Documentation" OFF) +#option(${PROJECT_NAME}_WITH_TESTS "enable testing" ON) +option(CMAKE_SUPPRESS_REGENERATION "suppress rules to re-run cmake on changes (warning: no dependency checks!)?" OFF) + +if (MSVC) + option(PROJECT_LINK_MSVC_MT "link with /MT instead of /MD (use msvc runtime dlls versus static linked)" ON) + # see http://msdn.microsoft.com/en-us/library/2kzt1wy3%28VS.71%29.aspx + if (PROJECT_LINK_MSVC_MT) + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") + set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") + endif (PROJECT_LINK_MSVC_MT) + + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /INCREMENTAL:NO") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4") + set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4") + + set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS _CRT_SECURE_NO_WARNINGS UNICODE) + set(CMAKE_FIND_LIBRARY_PREFIXES "") + set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib") + set(CMAKE_STATIC_LIBRARY_PREFIX "lib") + set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib") + set(CMAKE_SHARED_LIBRARY_PREFIX "") # lib + set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll") # .so + set(CMAKE_IMPORT_LIBRARY_PREFIX "") + set(CMAKE_IMPORT_LIBRARY_SUFFIX ".lib") + set(CMAKE_EXECUTABLE_SUFFIX ".exe") # .exe + set(CMAKE_LINK_LIBRARY_SUFFIX ".lib") + set(CMAKE_DL_LIBS "") + set(CMAKE_DEBUG_POSTFIX "d") + add_definitions(-DUNICODE -D_UNICODE) +else(MSVC) + list(APPEND CMAKE_CXX_FLAGS "-Wall -Wunused-variable -Wno-long-long") + #-pedantic + list(APPEND CMAKE_C_FLAGS "-Wall -Wunused-variable -Wno-long-long") +endif(MSVC) + +# create config.h +configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake + ${CMAKE_CURRENT_BINARY_DIR}/config.h) + +# set include directories +get_filename_component(CONFIG_INCLUDE ${CMAKE_CURRENT_BINARY_DIR}/config.h PATH) +include_directories(include ${CONFIG_INCLUDE}) + +install(DIRECTORY include DESTINATION . + COMPONENT devel + FILES_MATCHING PATTERN "*.h" + PATTERN .svn EXCLUDE + ) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/config.h + DESTINATION include/${PROJECT_NAME} + COMPONENT devel) + +add_subdirectory(src) + +include(InstallRequiredSystemLibraries) + +set(CPACK_GENERATOR TGZ ZIP) +if(WIN32 AND NOT CYGWIN) + set(CPACK_GENERATOR NSIS ${CPACK_GENERATOR}) +endif(WIN32 AND NOT CYGWIN) +if(APPLE) + set(CPACK_GENERATOR DragNDrop ${CPACK_GENERATOR}) +endif(APPLE) +if (UNIX AND NOT APPLE AND NOT WIN32) + set(CPACK_GENERATOR DEB ${CPACK_GENERATOR}) +endif (UNIX AND NOT APPLE AND NOT WIN32) + +set(CPACK_SOURCE_PACKAGE_FILE_NAME ${PROJECT_NAME}-src-${PROJECT_VERSION}) +set(CPACK_SOURCE_GENERATOR TGZ ZIP) +set(CPACK_PACKAGE_CONTACT gulliver@users.sourceforge.net) +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_NAME}) +set(CPACK_PACKAGE_VENDOR "${PROJECT_NAME} Development Team") +set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") +set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") +set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") +set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") +set(CPACK_SOURCE_IGNORE_FILES "/docs/html;/autom4te.cache;/build/;/win32/;/.svn/;~$;${CPACK_SOURCE_IGNORE_FILES}") + +if(WIN32 AND NOT UNIX) + set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}\\\\${PROJECT_VERSION}") + # There is a bug in NSI that does not handle full unix paths properly. Make + # sure there is at least one set of four (4) backlasshes. + # set(CPACK_PACKAGE_ICON "${CMake_SOURCE_DIR}/Utilities/Release\\\\InstallIcon.bmp") + set(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\${PROJECT_NAME}.exe") + set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ${PROJECT_NAME}") + set(CPACK_NSIS_HELP_LINK "http://softwareschmied.net/") + set(CPACK_NSIS_URL_INFO_ABOUT "http://softwareschmied.net/") + set(CPACK_NSIS_CONTACT "gulliver@softwareschmied.net") + set(CPACK_NSIS_MODIFY_PATH ON) + set(CPACK_NSIS_MENU_LINKS "doc/html/index.html;Documentation") +else(WIN32 AND NOT UNIX) + set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}/${PROJECT_VERSION}") + set(CPACK_STRIP_FILES "bin/${PROJECT_NAME}") + set(CPACK_SOURCE_STRIP_FILES "") +endif(WIN32 AND NOT UNIX) +set(CPACK_PACKAGE_EXECUTABLES ${PROJECT_NAME};${PROJECT_NAME}) +include(CPack) diff --git a/config.h.cmake b/config.h.cmake new file mode 100644 index 0000000..263010a --- /dev/null +++ b/config.h.cmake @@ -0,0 +1,138 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `atof' function. */ +#cmakedefine HAVE_ATOF + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_DLFCN_H + +/* Define to 1 if you have the `gettimeofday' function. */ +#cmakedefine HAVE_GETTIMEOFDAY + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_INTTYPES_H + +/* Define to 1 if you have the 'mysqlclient' library (-lmysqlclient). */ +#cmakedefine HAVE_LIBMYSQLCLIENT + +/* Define to 1 if you have the `pq' library (-lpq). */ +#cmakedefine HAVE_LIBPQ + +/* Define to 1 if you have the `sqlite3' library (-lsqlite3). */ +#cmakedefine HAVE_LIBSQLITE3 + +/* Define to 1 if you have the `localtime_r' function. */ +#cmakedefine HAVE_LOCALTIME_R + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#cmakedefine HAVE_MALLOC + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MEMORY_H + +/* Define to 1 if you have the `memset' function. */ +#cmakedefine HAVE_MEMSET + +/* Define to 1 if you have the `mktime' function. */ +#cmakedefine HAVE_MKTIME + +/* Define to 1 if your system has a GNU libc compatible `realloc' function, + and to 0 otherwise. */ +#cmakedefine HAVE_REALLOC + +/* Define to 1 if stdbool.h conforms to C99. */ +#cmakedefine HAVE_STDBOOL_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDLIB_H + +/* Define to 1 if you have the `strchr' function. */ +#cmakedefine HAVE_STRCHR + +/* Define to 1 if you have the `strdup' function. */ +#cmakedefine HAVE_STRDUP + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRING_H + +/* Define to 1 if you have the `strrchr' function. */ +#cmakedefine HAVE_STRRCHR + +/* Define to 1 if you have the `strstr' function. */ +#cmakedefine HAVE_STRSTR + +/* Define to 1 if you have the `strtof' function. */ +#cmakedefine HAVE_STRTOF + +/* Define to 1 if you have the `strtol' function. */ +#cmakedefine HAVE_STRTOL + +/* Define to 1 if you have the `strtoll' function. */ +#cmakedefine HAVE_STRTOLL + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UNISTD_H + +/* Define to 1 if the system has the type `_Bool'. */ +#cmakedefine HAVE__BOOL + +/* Name of package */ +#cmakedefine PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#cmakedefine PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#cmakedefine PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#cmakedefine PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#cmakedefine PACKAGE_TARNAME + +/* Define to the version of this package. */ +#cmakedefine PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#cmakedefine STDC_HEADERS + +/* Define to 1 if you can safely include both and . */ +#cmakedefine TIME_WITH_SYS_TIME + +/* Version number of package */ +#cmakedefine VERSION + +/* Define to empty if `const' does not conform to ANSI C. */ +#cmakedefine const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to rpl_malloc if the replacement function should be used. */ +#cmakedefine malloc + +/* Define to rpl_realloc if the replacement function should be used. */ +#cmakedefine realloc + +/* Define to `unsigned int' if does not define. */ +#cmakedefine size_t diff --git a/release_it.bat b/release_it.bat new file mode 100644 index 0000000..3ab2837 --- /dev/null +++ b/release_it.bat @@ -0,0 +1,31 @@ + +set PATH=%PATH%;C:\Program Files (x86)\CMake 2.8\bin + +set CMAKE_BUILDDIR=build\vc +set STARTDIR=%CD% + +@if NOT "%VS100COMNTOOLS%"=="" (call "%VS100COMNTOOLS%\vsvars32.bat" & goto VS_END) +@if NOT "%VS90COMNTOOLS%"=="" (call "%VS90COMNTOOLS%\vsvars32.bat" & goto VS_END) +@if NOT "%VS80COMNTOOLS%"=="" (call "%VS80COMNTOOLS%\vsvars32.bat" & goto VS_END) +@if NOT "%VS71COMNTOOLS%"=="" (call "%VS71COMNTOOLS%\vsvars32.bat" & goto VS_END) + +:VS_END + +cd %STARTDIR% + +set CMAKE_BUILDDIR=build\vc +mkdir %CMAKE_BUILDDIR% + +cd %CMAKE_BUILDDIR% + +del CMakeCache.txt + +cmake -D STMD_MSVC_MT:BOOL=OFF %STARTDIR% +rem -D stmd_DOCS:bool=ON -D stmd_WITH_TESTS:bool=ON -DCXXTEST_INCLUDE_DIR=%STARTDIR%\3rdparty\cxxtest -DCXXTEST_PYTHON_TESTGEN_EXECUTABLE=%STARTDIR%\3rdparty\cxxtest\bin\cxxtestgen +cpack --config CPackSourceConfig.cmake +cd %STARTDIR% +cmake --build %CMAKE_BUILDDIR% --target all --target test --target package +rem --target package_source + + +pause diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..c454eca --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,34 @@ +set(PROGRAM_stmd "stmd") +set(PROGRAM_stmd_SOURCES blocks.c +inlines.c +main.c +debug.h +detab.c +bstrlib.c +bstrlib.h +getopt.c +html.c + + +print.c +scanners.h +scanners.re +stmd.h +utf8.c +utf8.h +uthash.h +) + +add_executable(${PROGRAM_stmd} + ${PROGRAM_stmd_SOURCES}) + +if (MSVC) +set_property(TARGET ${PROGRAM_chronolog} + APPEND PROPERTY LINK_FLAGS /INCREMENTAL:NO) +target_link_libraries(${PROGRAM_chronolog} gdiplus.lib) +endif(MSVC) +install(TARGETS ${PROGRAM_chronolog} +RUNTIME DESTINATION bin +BUNDLE DESTINATION Applications) + + -- cgit v1.2.3