diff --git a/cmake/package.cmake b/cmake/package.cmake new file mode 100644 index 00000000..a92de171 --- /dev/null +++ b/cmake/package.cmake @@ -0,0 +1,144 @@ +# option to disable inclusion of qmake build system into source package +option ( + DISABLE_QMAKE_BUILD + "Disable inclusion of qmake build system into source package" + OFF +) + +# set name +set (CPACK_PACKAGE_NAME "OpenMesh") +set (CPACK_PACKAGE_VENDOR "ACG") + +# set version +set (CPACK_PACKAGE_VERSION_MAJOR "${OPENMESH_VERSION_MAJOR}") +set (CPACK_PACKAGE_VERSION_MINOR "${OPENMESH_VERSION_MINOR}") +set (CPACK_PACKAGE_VERSION_PATCH "${OPENMESH_VERSION_PATCH}") +set (CPACK_PACKAGE_VERSION "${OPENMESH_VERSION}") + +# addition package info +set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenMesh") +set (CPACK_PACKAGE_EXECUTABLES "OpenMesh;") +set (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") +set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CPACK_PACKAGE_NAME}") +set (CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") +set (CPACK_SOURCE_STRIP_FILES "") + +# set (CPACK_STRIP_FILES "bin/OpenFlipper") + +# source package generation +set (CPACK_SOURCE_GENERATOR "TGZ;TBZ2;ZIP") + +# ignored files in source package +set (CPACK_SOURCE_IGNORE_FILES "\\\\.#;/#;.*~") +list (APPEND CPACK_SOURCE_IGNORE_FILES "/\\\\.git") +list (APPEND CPACK_SOURCE_IGNORE_FILES "/\\\\.svn") +list (APPEND CPACK_SOURCE_IGNORE_FILES "${CMAKE_CURRENT_BINARY_DIR}") +list (APPEND CPACK_SOURCE_IGNORE_FILES "Makefile") +list (APPEND CPACK_SOURCE_IGNORE_FILES "Makefile\\\\..*") +list (APPEND CPACK_SOURCE_IGNORE_FILES "\\\\.moc\\\\.cpp$") +list (APPEND CPACK_SOURCE_IGNORE_FILES "CMakeCache.txt") +list (APPEND CPACK_SOURCE_IGNORE_FILES "CMakeFiles") + +list (APPEND CPACK_SOURCE_IGNORE_FILES "/.*_(32|64)_Debug/") +list (APPEND CPACK_SOURCE_IGNORE_FILES "/.*_(32|64)_Release/") + +list (APPEND CPACK_SOURCE_IGNORE_FILES "/MacOS") +list (APPEND CPACK_SOURCE_IGNORE_FILES "/WIN") +list (APPEND CPACK_SOURCE_IGNORE_FILES "/tmp/") + +list (APPEND CPACK_SOURCE_IGNORE_FILES "/.*\\\\.kdevelop") +list (APPEND CPACK_SOURCE_IGNORE_FILES "/.*\\\\.kdevses") + +list (APPEND CPACK_SOURCE_IGNORE_FILES "/ACG/lib/") +list (APPEND CPACK_SOURCE_IGNORE_FILES "/ACG/include/") + +if (DISABLE_QMAKE_BUILD) + list (APPEND CPACK_SOURCE_IGNORE_FILES "/.*\\\\.pro") + list (APPEND CPACK_SOURCE_IGNORE_FILES "/qmake/") + list (APPEND CPACK_SOURCE_IGNORE_FILES "\\\\.qmake\\\\.cache") +endif () + +# filter out all disabled plugins +# file ( +# GLOB _plugins_in +# RELATIVE "${CMAKE_SOURCE_DIR}" +# "${CMAKE_SOURCE_DIR}/Plugin-*" +# ) +#foreach (_plugin ${_plugins_in}) +# string (REPLACE "Plugin-" "" _plugin_name ${_plugin}) +# string (TOUPPER ${_plugin_name} _PLUGIN) +# if (NOT EXISTS ${CMAKE_SOURCE_DIR}/${_plugin}/CMakeLists.txt AND DISABLE_QMAKE_BUILD) +# list (APPEND CPACK_SOURCE_IGNORE_FILES "${CMAKE_SOURCE_DIR}/${_plugin}") +# elseif (DISABLE_PLUGIN_${_PLUGIN}) +# list (APPEND CPACK_SOURCE_IGNORE_FILES "${CMAKE_SOURCE_DIR}/${_plugin}") +# endif () +#endforeach () + + +if (WIN32) + # window NSIS installer + set (CPACK_GENERATOR "NSIS") + set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}") + set (CPACK_NSIS_DISPLAY_NAME "OpenMesh v${CPACK_PACKAGE_VERSION}") + # set (CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}\\\\OpenFlipper\\\\Icons\\\\OpenFlipper_Icon_128x128x32.ico") + # we need a real uninstaller icon here and we have to define both to make the installer icon work + # set (CPACK_NSIS_MUI_UNIICON "${CMAKE_SOURCE_DIR}\\\\OpenFlipper\\\\Icons\\\\OpenFlipper_Icon_128x128x32.ico") + # set (CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}\\\\OpenFlipper\\\\Icons\\\\installer.bmp") + set (CPACK_NSIS_HELP_LINK "http:\\\\www.openmesh.org") + set (CPACK_NSIS_URL_INFO_ABOUT "http:\\\\www.openmesh.org") + # TODO: fillme + # set (CPACK_NSIS_CONTACT "") + + #set (CPACK_NSIS_CREATE_ICONS + # "CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\OpenFlipper.lnk\\\" \\\"$INSTDIR\\\\OpenFlipper.exe\\\"" + # ) + #set (CPACK_NSIS_DELETE_ICONS + # "Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\OpenFlipper.lnk\\\"" + # ) + + # append dll's to installed package + #if (EXISTS ${CMAKE_SOURCE_DIR}/WIN) + #file (GLOB _files "${CMAKE_SOURCE_DIR}/WIN/DLLs/DLLs 32 debug/*.dll") + #install(FILES ${_files} + #DESTINATION ${ACG_PROJECT_BINDIR} + #CONFIGURATIONS Debug + #) + #file (GLOB _files "${CMAKE_SOURCE_DIR}/WIN/DLLs/DLLs 32 release/*.dll") + #install (FILES ${_files} + # DESTINATION ${ACG_PROJECT_BINDIR} + # CONFIGURATIONS Release + #) + #install (FILES "${CMAKE_SOURCE_DIR}/WIN/DLLs/Redistributables/Visual Studio 2008/vcredist_x86.exe" + # DESTINATION ${ACG_PROJECT_BINDIR} + #) + #set (CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecWait '\\\"$INSTDIR\\\\vcredist_x86.exe\\\" /q:a'") + #endif () + #elseif (APPLE) + # apple Drag'n'Drop installer package + #set (CPACK_GENERATOR "DragNDrop;TGZ") + #set (CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/OpenFlipper/Icons/OpenFlipper_Icon.icns") + #endif () + +# has to be last +if (WIN32) + set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP "true") + include (InstallRequiredSystemLibraries) + install (PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION ${ACG_PROJECT_BINDIR}) +else () + include (InstallRequiredSystemLibraries) +endif () + + +include (CPack) + +if (NOT WIN32 AND NOT APPLE) + # no binary target for linux + file (REMOVE "${CMAKE_BINARY_DIR}/CPackConfig.cmake") +endif () + +# cmake doesn't create a source package target, so we have to add our own +if (EXISTS "${CMAKE_BINARY_DIR}/CPackSourceConfig.cmake") + add_custom_target (PACKAGE_SOURCE + ${CMAKE_CPACK_COMMAND} --config "${CMAKE_BINARY_DIR}/CPackSourceConfig.cmake" + ) +endif ()