レポジトリ種類: SVN
cmake_minimum_required(VERSION 3.15)
project(SimPas VERSION 1.2.0 LANGUAGES CXX)
set(OS "unknown")
set(FAMILY "unknown")
set(ARCH "unknown")
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(FAMILY "linux")
set(OS "linux")
elseif (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
set(FAMILY "bsd")
set(OS "openbsd")
elseif (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
set(FAMILY "bsd")
set(OS "freebsd")
elseif (CMAKE_SYSTEM_NAME STREQUAL "NetBSD")
set(FAMILY "bsd")
set(OS "netbsd")
elseif (CMAKE_SYSTEM_NAME STREQUAL "DragonFly")
set(FAMILY "bsd")
set(OS "dragonfly")
elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")
set(FAMILY "windows")
set(OS "windows")
elseif (CMAKE_SYSTEM_NAME STREQUAL "Haiku")
set(FAMILY "beos")
set(OS "haiku")
elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
set(FAMILY "darwin")
set(OS "macos")
endif()
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
set(ARCH "amd64")
elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "macppc")
set(ARCH "powerpc")
endif()
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(FLTK_USE_STATIC ON)
find_package(FLTK REQUIRED)
# set(GPGME_USE_STATIC ON)
# find_package(GPGME REQUIRED)
# set(GPGMEPP_USE_STATIC ON)
# find_package(GPGMEPP REQUIRED)
set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wno-non-c-typedef-for-linkage\
-Wno-unused-parameter -Wno-cast-function-type")
if (FAMILY STREQUAL "linux")
include_directories(/usr/include)
link_directories(/usr/lib)
elseif (FAMILY STREQUAL "haiku")
include_directories(/boot/system/develop/headers)
link_directories(/boot/system/develop/lib)
elseif (OS STREQUAL "netbsd")
include_directories(/usr/local/include /usr/X11R7/include /usr/pkg/include)
link_directories(/usr/local/lib /usr/X11R7/lib /usr/pkg/lib)
elseif (OS STREQUAL "openbsd")
include_directories(/usr/local/include /usr/X11R6/include)
link_directories(/usr/local/lib /usr/X11R6/lib)
elseif (OS STREQUAL "freebsd")
include_directories(/usr/local/include)
link_directories(/usr/local/lib)
elseif (FAMILY STREQUAL "windows")
include_directories(external/include)
link_directories(external/lib)
endif()
if (FAMILY STREQUAL "linux" OR FAMILY STREQUAL "bsd" OR FAMILY STREQUAL "windows")
set(CMAKE_EXE_LINKER_FLAGS "-static")
endif()
file(GLOB_RECURSE SOURCES "main.cc" "src/*.cc")
add_executable(${PROJECT_NAME} ${SOURCES})
set(STDLIB fltk_images fltk X11 assuan gpgmepp gpgme crypto gpg-error)
if (OS STREQUAL "haiku")
target_link_libraries(${PROJECT_NAME} network ${STDLIB})
elseif (OS STREQUAL "macos")
target_link_libraries(${PROJECT_NAME} ${STDLIB})
elseif (OS STREQUAL "haiku")
target_link_libraries(${PROJECT_NAME} ${STDLIB})
elseif (OS STREQUAL "linux")
target_link_libraries(${PROJECT_NAME} ${STDLIB} stdc++ gcc c Xft Xext Xrender
fontconfig Xinerama xcb freetype png16 z expat Xau Xdmcp bz2 brotlidec
brotlicommon assuan)
elseif (OS STREQUAL "openbsd")
target_link_libraries(${PROJECT_NAME} ${STDLIB} c++abi pthread m c Xcursor Xfixes
Xext Xft fontconfig Xinerama Xdmcp Xau z xcb Xrender expat freetype c++ intl
iconv png jpeg)
elseif (OS STREQUAL "freebsd")
target_link_libraries(${PROJECT_NAME} ${STDLIB} stdc++ lcxxrt m Xrender Xcursor
Xfixes Xext Xft fontconfig Xinerama thr z xcb freetype expat Xau Xdmcp bz2
brotlidec brotlicommon c++ gcc c gpgme assuan intl png16)
elseif (OS STREQUAL "netbsd")
target_link_libraries(${PROJECT_NAME} ${STDLIB} stdc++ pthread m c Xft xcb fontconfig
freetype Xau Xdmcp Xcursor Xrandr Xext Xrender Xfixes Xinerama X11 expat png16
jpeg crypt z bz2 gcc assuan intl)
elseif (FAMILY STREQUAL "windows")
target_link_libraries(${PROJECT_NAME} fltk_images fltk gpgmepp crypto gpg-error)
endif()
install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
)
install(FILES ${PROJECT_NAME}.desktop DESTINATION
${CMAKE_INSTALL_PREFIX}/share/applications)
install(DIRECTORY icons/ DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons)
if (CMAKE_BUILD_TYPE STREQUAL "Release")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_STRIP} $<TARGET_FILE:${PROJECT_NAME}>
)
endif()
include(CPack)
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
set(CPACK_PACKAGE_CONTACT "Suwako Moriya <suwako@076.moe>")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Simple Password Manager")
set(CPACK_PACKAGE_VENDOR "076")
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-${OS}-${ARCH}")
set(CPACK_OUTPUT_CONFIG_FILE "${CMAKE_BINARY_DIR}/CPackConfig.cmake")
if (OS STREQUAL "macos")
set(CPACK_GENERATOR "DragNDrop")
set(CPACK_DMG_VOLUME_NAME "${PROJECT_NAME}")
endif()
if (OS STREQUAL "Linux")
set(CPACK_GENERATOR "External")
set(CPACK_EXTERNAL_COMMAND "appimagetool")
set(CPACK_EXTERNAL_ARGUMENTS
"${CMAKE_BINARY_DIR}/AppDir"
"${CMAKE_BINARY_DIR}/${PROJECT_NAME}-${PROJECT_VERSION}.AppImage"
)
install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/AppDir/usr/bin)")
install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E copy \$<TARGET_FILE:${PROJECT_NAME}> ${CMAKE_BINARY_DIR}/AppDir/usr/bin)")
endif()
if (OS STREQUAL "haiku")
set(CPACK_GENERATOR "HaikuPackage")
set(CPACK_HAIKU_PACKAGE_NAME "${PROJECT_NAME}")
set(CPACK_HAIKU_PACKAGE_SUMMARY "Simple Password Manager")
set(CPACK_HAIKU_PACKAGE_DESCRIPTION "Simple Password Manager for ${OS}.")
set(CPACK_HAIKU_PACKAGE_ARCHITECTURE "${ARCH}")
set(CPACK_HAIKU_PACKAGE_VERSION "${PROJECT_VERSION}")
endif()
cpack_add_install_type(Full)
cpack_add_component(${PROJECT_NAME} DISPLAY_NAME "Application")