aseprite/src/CMakeLists.txt

220 lines
6.0 KiB
CMake
Raw Normal View History

# Aseprite
# Copyright (C) 2001-2018 David Capello
2010-08-11 00:49:32 +00:00
######################################################################
# Compiler-specific flags
2018-03-13 12:56:23 +00:00
if(UNIX)
# All warnings except for switch cases with missing enum items
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-switch")
endif()
if(MSVC)
# As Skia is compiled with /GL flag (whole program optimization),
# the linker prefer a /LTCG parameter to improve link times.
if(USE_SKIA_BACKEND)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LTCG")
endif()
# Do not link with libcmt.lib (to avoid duplicated symbols with msvcrtd.lib)
if(CMAKE_BUILD_TYPE STREQUAL Debug)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:LIBCMT")
endif()
2015-03-05 17:37:16 +00:00
add_definitions(-D_SCL_SECURE_NO_WARNINGS)
endif(MSVC)
if(ENABLE_UPDATER)
add_definitions(-DENABLE_UPDATER)
endif()
2016-11-01 15:47:48 +00:00
if(WIN32)
# Needed to include icons in win32 .rc file
include_directories(..)
endif()
2014-08-15 03:26:27 +00:00
######################################################################
# pthread
2014-08-15 03:26:27 +00:00
if (CMAKE_USE_PTHREADS_INIT)
list(APPEND PLATFORM_LIBS ${CMAKE_THREAD_LIBS_INIT})
endif()
######################################################################
# Custom Aseprite website (for testing server-side)
if(NOT "${CUSTOM_WEBSITE_URL}" STREQUAL "")
add_definitions(-DCUSTOM_WEBSITE_URL="${CUSTOM_WEBSITE_URL}")
endif()
######################################################################
# With static libcurl
if(NOT USE_SHARED_CURL AND CURL_STATICLIB)
add_definitions(-DCURL_STATICLIB)
endif()
######################################################################
# Special versions (full/trial, devmode, UI/CLI, etc.)
if(NOT ENABLE_TRIAL_MODE)
add_definitions(-DENABLE_SAVE)
else()
add_definitions(-DENABLE_TRIAL_MODE)
endif()
if(ENABLE_DEVMODE)
add_definitions(-DENABLE_DEVMODE)
endif()
if(ENABLE_UI)
add_definitions(-DENABLE_UI)
endif()
if(ENABLE_UI AND NOT ENABLE_TRIAL_MODE)
set(ENABLE_DATA_RECOVERY on)
add_definitions(-DENABLE_DATA_RECOVERY)
else()
set(ENABLE_DATA_RECOVERY off)
endif()
######################################################################
# Aseprite Libraries (in preferred order to be built)
# Disable observable tests
set(OBSERVABLE_TESTS OFF CACHE BOOL "Compile observable tests")
add_subdirectory(observable)
include_directories(observable)
2018-05-28 17:14:34 +00:00
# Disable clip examples and tests
2016-08-01 13:20:26 +00:00
set(CLIP_EXAMPLES OFF CACHE BOOL "Compile clip examples")
2018-05-28 17:14:34 +00:00
set(CLIP_TESTS OFF CACHE BOOL "Compile clip tests")
set(CLIP_X11_PNG_LIBRARY "${PNG_LIBRARY}")
2016-08-01 13:20:26 +00:00
add_subdirectory(clip)
# Disable undo tests
set(UNDO_TESTS OFF CACHE BOOL "Compile undo tests")
add_subdirectory(undo)
2016-04-29 12:04:56 +00:00
add_subdirectory(cfg)
2014-03-12 22:25:09 +00:00
add_subdirectory(doc)
add_subdirectory(filters)
2014-09-21 14:51:24 +00:00
add_subdirectory(fixmath)
add_subdirectory(flic)
add_subdirectory(gen)
add_subdirectory(net)
add_subdirectory(render)
2017-09-22 18:57:38 +00:00
add_subdirectory(dio)
2012-06-18 01:49:58 +00:00
add_subdirectory(ui)
2016-11-21 13:25:27 +00:00
if(ENABLE_SCRIPTING)
add_subdirectory(script)
add_definitions(-DENABLE_SCRIPTING)
2016-11-21 13:25:27 +00:00
endif()
if(ENABLE_UPDATER)
add_subdirectory(updater)
endif()
if(ENABLE_WEBSERVER)
add_subdirectory(webserver)
endif()
if(ENABLE_STEAM)
add_subdirectory(steam)
endif()
if(WITH_DESKTOP_INTEGRATION)
add_subdirectory(desktop)
endif()
add_subdirectory(app)
######################################################################
# Copy data/ directory target
file(GLOB_RECURSE src_data_files
RELATIVE ${CMAKE_SOURCE_DIR}/data/ "${CMAKE_SOURCE_DIR}/data/*.*")
foreach(fn ${src_data_files})
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/bin/data/${fn}
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/data/${fn} ${CMAKE_BINARY_DIR}/bin/data/${fn}
MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/data/${fn})
list(APPEND out_data_files ${CMAKE_BINARY_DIR}/bin/data/${fn})
endforeach()
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/bin/data/README.md
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/README.md ${CMAKE_BINARY_DIR}/bin/data/README.md
MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/README.md)
list(APPEND out_data_files ${CMAKE_BINARY_DIR}/bin/data/README.md)
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/bin/data/EULA.txt
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/EULA.txt ${CMAKE_BINARY_DIR}/bin/data/EULA.txt
MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/EULA.txt)
list(APPEND out_data_files ${CMAKE_BINARY_DIR}/bin/data/EULA.txt)
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/bin/data/docs/LICENSES.md
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/docs/LICENSES.md ${CMAKE_BINARY_DIR}/bin/data/docs/LICENSES.md
MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/docs/LICENSES.md)
list(APPEND out_data_files ${CMAKE_BINARY_DIR}/bin/data/docs/LICENSES.md)
add_custom_target(copy_data DEPENDS ${out_data_files})
######################################################################
# Aseprite application
if(WIN32)
set(win32_resources
main/resources_win32.rc
main/settings.manifest)
2015-03-16 18:05:13 +00:00
endif()
add_executable(aseprite main/main.cpp ${win32_resources})
if(WIN32 AND ENABLE_UI)
set_target_properties(aseprite PROPERTIES WIN32_EXECUTABLE true)
endif()
target_link_libraries(aseprite app-lib ${PLATFORM_LIBS})
add_dependencies(aseprite copy_data)
2010-08-11 00:49:32 +00:00
if(MSVC)
if(ENABLE_UI)
if(USE_SKIA_BACKEND)
# Linking with "wsetargv.obj" to add support to expand filename
# wildcards in argc/argv.
set_target_properties(aseprite
PROPERTIES LINK_FLAGS "-LINK wsetargv.obj -ENTRY:\"wWinMainCRTStartup\"")
endif()
else()
set_target_properties(aseprite
PROPERTIES LINK_FLAGS "-LINK wsetargv.obj -ENTRY:\"wmainCRTStartup\"")
endif()
endif()
install(TARGETS aseprite
RUNTIME DESTINATION bin)
install(DIRECTORY ../data
DESTINATION share/aseprite)
######################################################################
# Tests
if(ENABLE_TESTS)
include(FindTests)
find_tests(doc doc-lib)
find_tests(render render-lib)
find_tests(ui ui-lib)
find_tests(app/cli app-lib)
find_tests(app/file app-lib)
find_tests(app app-lib)
find_tests(. app-lib)
endif()
if(ENABLE_BENCHMARKS)
include(FindBenchmarks)
find_benchmarks(doc doc-lib)
endif()