joeydev/CMakeLists.txt
2023-01-26 21:35:14 -06:00

127 lines
3.4 KiB
CMake

#
# JoeyDev
# Copyright (C) 2018-2023 Scott Duensing <scott@kangaroopunch.com>
#
# This software is provided 'as-is', without any express or implied
# warranty. In no event will the authors be held liable for any damages
# arising from the use of this software.
#
# Permission is granted to anyone to use this software for any purpose,
# including commercial applications, and to alter it and redistribute it
# freely, subject to the following restrictions:
#
# 1. The origin of this software must not be misrepresented; you must not
# claim that you wrote the original software. If you use this software
# in a product, an acknowledgment in the product documentation would be
# appreciated but is not required.
# 2. Altered source versions must be plainly marked as such, and must not be
# misrepresented as being the original software.
# 3. This notice may not be removed or altered from any source distribution.
#
cmake_minimum_required(VERSION 3.22)
include(FindPkgConfig)
project(joeydev LANGUAGES C VERSION 1.0)
# There are also version numbers in:
# com.kangaroopunch.JoeyDev.appdata.xml
# com.kangaroopunch.JoeyDev.desktop
# Default to ON for developing the app. buildFlatpak.sh turns this off for us.
option(DEBUG_MODE "Enable debugging output and memory tracing?" ON)
set(CMAKE_C_STANDARD 99)
set(SOURCE_FILES
thirdparty-installed/memwatch/memwatch.c
thirdparty-installed/cwalk-master/src/cwalk.c
ui/generated/resources.c
src/main.c
src/utils.c
src/joeydev.c
src/vector.c
src/array.c
src/draw.c
src/image.c
src/vecparse.c
src/color.c
src/palette.c
src/project.c
src/ssh.c
src/http.c
src/editor.c
)
configure_file(include/config.h.in config.h)
add_executable(${CMAKE_PROJECT_NAME} ${SOURCE_FILES})
# Perform pre-build operations.
add_custom_target(GENERATE_UI_HEADERS
COMMAND ${CMAKE_SOURCE_DIR}/tools/prebuild.sh "${CMAKE_SOURCE_DIR}"
BYPRODUCTS
${CMAKE_SOURCE_DIR}/thirdparty-installed/memwatch/memwatch.c
${CMAKE_SOURCE_DIR}/thirdparty-installed/cwalk-master/src/cwalk.c
${CMAKE_SOURCE_DIR}/thirdparty-installed/lib/scintilla.a
${CMAKE_SOURCE_DIR}/thirdparty-installed/lib/liblexilla.a
${CMAKE_SOURCE_DIR}/thirdparty-installed/lib/libgpg-error.a
${CMAKE_SOURCE_DIR}/thirdparty-installed/lib/libgcrypt.a
${CMAKE_SOURCE_DIR}/thirdparty-installed/lib/libssh2.a
${CMAKE_SOURCE_DIR}/thirdparty-installed/lib/libz.a
)
add_dependencies(${CMAKE_PROJECT_NAME} GENERATE_UI_HEADERS)
# Find dependencies.
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
# Compile Options.
include_directories(
${GTK3_INCLUDE_DIRS}
${PROJECT_BINARY_DIR}
include
ui/generated
thirdparty-installed/include
)
add_definitions(
${GTK3_CFLAGS}
-Wall
-Wno-unknown-pragmas
)
if(DEBUG_MODE)
add_definitions(-O0)
else()
add_definitions(-O2)
endif()
target_link_directories(${CMAKE_PROJECT_NAME} PUBLIC
${GTK3_LIBRARY_DIRS}
)
target_link_libraries(${CMAKE_PROJECT_NAME}
-rdynamic
${CMAKE_SOURCE_DIR}/thirdparty-installed/lib/scintilla.a
${CMAKE_SOURCE_DIR}/thirdparty-installed/lib/liblexilla.a
${CMAKE_SOURCE_DIR}/thirdparty-installed/lib/libssh2.a
${CMAKE_SOURCE_DIR}/thirdparty-installed/lib/libgcrypt.a
${CMAKE_SOURCE_DIR}/thirdparty-installed/lib/libgpg-error.a
${CMAKE_SOURCE_DIR}/thirdparty-installed/lib/libcurl.a
${CMAKE_SOURCE_DIR}/thirdparty-installed/lib/libz.a
${GTK3_LIBRARIES}
-ldl
-pthread
-lm
-lstdc++
)
install(TARGETS ${CMAKE_PROJECT_NAME})