roo_e/CMakeLists.txt

167 lines
3.4 KiB
CMake

#
# Roo/E, the Kangaroo Punch Portable GUI Toolkit
# Copyright (C) 2022 Scott Duensing
#
# http://kangaroopunch.com
#
#
# This file is part of Roo/E.
#
# Roo/E is free software: you can redistribute it and/or modify it under the
# terms of the GNU Affero General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# Roo/E is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Roo/E. If not, see <https://www.gnu.org/licenses/>.
#
cmake_minimum_required(VERSION 3.12)
project(roo_e LANGUAGES C)
set(THIRDPARTY_HEADERS
memwatch/memwatch.h
stb_ds.h
stb_image.h
)
list(TRANSFORM THIRDPARTY_HEADERS PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/roo_e/src/thirdparty/")
set(THIRDPARTY_SOURCE
memwatch/memwatch.c
)
list(TRANSFORM THIRDPARTY_SOURCE PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/roo_e/src/thirdparty/")
set(PLATFORM_HEADERS
platform.h
)
list(TRANSFORM PLATFORM_HEADERS PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/roo_e/src/platform/")
set(PLATFORM_SOURCE
djgpp.c
sdl2.c
)
list(TRANSFORM PLATFORM_SOURCE PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/roo_e/src/platform/")
set(WIDGET_HEADERS
button.h
checkbox.h
frame.h
hscroll.h
label.h
picture.h
radio.h
scroll.h
vscroll.h
)
list(TRANSFORM WIDGET_HEADERS PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/roo_e/src/gui/widgets/")
set(WIDGET_SOURCE
button.c
checkbox.c
frame.c
hscroll.c
label.c
picture.c
radio.c
scroll.c
vscroll.c
)
list(TRANSFORM WIDGET_SOURCE PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/roo_e/src/gui/widgets/")
set(GUI_HEADERS
font.h
gui-all.h
gui.h
image.h
surface.h
wmwindow.h
)
list(TRANSFORM GUI_HEADERS PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/roo_e/src/gui/")
set(GUI_SOURCE
font.c
gui.c
image.c
surface.c
wmwindow.c
)
list(TRANSFORM GUI_SOURCE PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/roo_e/src/gui/")
set(ROO_E_HEADERS
array.h
log.h
macros.h
memory.h
os.h
stddclmr.h
util.h
)
list(TRANSFORM ROO_E_HEADERS PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/roo_e/src/")
set(ROO_E_SOURCE
array.c
log.c
memory.c
util.c
)
list(TRANSFORM ROO_E_SOURCE PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/roo_e/src/")
set(TEST_HEADERS
)
list(TRANSFORM TEST_HEADERS PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/test/src/")
set(TEST_SOURCE
main.c
)
list(TRANSFORM TEST_SOURCE PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/test/src/")
add_executable(${CMAKE_PROJECT_NAME}
${THIRDPARTY_HEADERS}
${THIRDPARTY_SOURCE}
${PLATFORM_HEADERS}
${PLATFORM_SOURCE}
${WIDGET_HEADERS}
${WIDGET_SOURCE}
${GUI_HEADERS}
${GUI_SOURCE}
${ROO_E_HEADERS}
${ROO_E_SOURCE}
${TEST_HEADERS}
${TEST_SOURCE}
)
add_compile_definitions(
_REENTRANT
BACKEND_SDL2
INCLUDE_FONT_CONVERTER="../roo_e/font/in"
INCLUDE_IMAGE_FINDER="../roo_e/roo_e/assets"
)
target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/roo_e/src
${CMAKE_CURRENT_SOURCE_DIR}/roo_e/src/thirdparty
/usr/include/SDL2
)
target_link_libraries(${CMAKE_PROJECT_NAME}
-lSDL2
-lm
)