Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
482c70e
Replace bindgins to work with extensions
vnen Aug 18, 2021
c576ca2
Fix issues with method calls
vnen Aug 19, 2021
2e56b1f
Add sample test project
vnen Aug 19, 2021
f5a0777
Auto-bind virtual method overrides
vnen Aug 19, 2021
67ba8a2
Define the {de,}initialization functions in the bindings
vnen Aug 19, 2021
4d3f59f
Add readme file (stub)
vnen Aug 19, 2021
442ac4e
Added TYPED_METHOD_BIND and c++17 flags to windows build and moved te…
BastiaanOlij Aug 21, 2021
899988d
Merge pull request #9 from BastiaanOlij/gdex-windows-compile
vnen Aug 21, 2021
ecd3905
Fix build with native structs
vnen Aug 24, 2021
46316a4
Add support for engine singletons
vnen Aug 25, 2021
203f010
Add copy/move constructors and assignment op to builtin types
vnen Aug 26, 2021
629a214
Properly encode numeric POD types
vnen Aug 28, 2021
3589d01
Fix return type check for variadic functions
Shatur Aug 28, 2021
3a61f28
Do not override build path
Shatur Aug 28, 2021
90463e7
Silence delete compile warning in memory.h/cpp on Windows
BastiaanOlij Aug 28, 2021
ae11111
Remove unused import that breaks on windows
BastiaanOlij Aug 28, 2021
d9eb01f
Fix OUTPUT for add_custom_command
Shatur Aug 28, 2021
8c62f9a
Merge pull request #10 from BastiaanOlij/remove_set_blocking
vnen Aug 31, 2021
30985e0
Merge pull request #11 from BastiaanOlij/fix_memory_warning
vnen Aug 31, 2021
13e5453
Merge pull request #15 from Shatur/escape-lists
vnen Aug 31, 2021
e417e48
Merge pull request #14 from Shatur/do-no-override-output
vnen Aug 31, 2021
6299101
Merge pull request #13 from Shatur/fix-variadic-return
vnen Aug 31, 2021
6cebc68
Fix print file list
Shatur Aug 31, 2021
ec6ace3
Merge pull request #12 from Shatur/fix_print_file_list
vnen Sep 1, 2021
267876e
Remove Generating Bindings message
Shatur Sep 1, 2021
524d9c4
Specify project languages
Shatur Sep 1, 2021
07df1e9
Add alias
Shatur Sep 1, 2021
f006488
Set initialization level to CORE
vnen Sep 3, 2021
399b7bb
Merge pull request #17 from Shatur/patch-1
vnen Sep 3, 2021
4d71876
Always convert float to double
BastiaanOlij Sep 4, 2021
c9dca8b
Re-introduce build-in type code for core types
BastiaanOlij Sep 1, 2021
226d09f
Merge pull request #18 from BastiaanOlij/float_as_double
vnen Sep 5, 2021
c2cbdf2
Merge pull request #16 from BastiaanOlij/reintroduce_buildin_type_code
vnen Sep 5, 2021
38024b3
Fix calling of native functions that return object types
vnen Sep 8, 2021
30e4454
Fix formatting of files
vnen Sep 8, 2021
dce9f77
Change initialization to allow custom level callbacks
vnen Sep 10, 2021
be7de87
Add in driver types and rejig code to make it easier to extend
BastiaanOlij Sep 11, 2021
c5891b5
Merge pull request #19 from BastiaanOlij/register_drivers
vnen Sep 14, 2021
261b164
Add support for property groups
BastiaanOlij Sep 15, 2021
d9258ee
Merge pull request #22 from BastiaanOlij/add_property_group_macro
vnen Sep 16, 2021
049c8b2
Change constructor/destructor management of extension classes
vnen Sep 9, 2021
a2da0d6
Use default initialization
Shatur Sep 19, 2021
45fd7fc
_err_print_error only output p_message so swapped parameters around
BastiaanOlij Sep 21, 2021
575a8ed
Fix some clang format things
BastiaanOlij Sep 21, 2021
966bf94
Merge pull request #26 from BastiaanOlij/fix_clang_format_issues
BastiaanOlij Sep 21, 2021
6bdf405
Merge pull request #25 from BastiaanOlij/fix_warning_macro
BastiaanOlij Sep 21, 2021
3b5ce87
Add virtual destructor to Object class
BastiaanOlij Sep 21, 2021
bcd9536
Fix PtrToArg encoding for `Object *`.
Faless Sep 22, 2021
bcd7a15
Merge pull request #27 from BastiaanOlij/add_virtual_destructor
BastiaanOlij Sep 22, 2021
f4f7769
Merge pull request #24 from Shatur/fix-initialization
BastiaanOlij Sep 22, 2021
c0291d2
Merge pull request #28 from Faless/ext/fix_object
BastiaanOlij Sep 22, 2021
f7dc542
Use = default
Shatur Sep 25, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# Godot auto generated files
*.gen.*
.import/
.godot/
/gen/

# Misc
logs/*

Expand All @@ -17,6 +23,7 @@ bin
*.creator.user
*.files
*.includes
*.idb

# Gprof output
gmon.out
Expand Down
65 changes: 22 additions & 43 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,75 +1,65 @@
# cmake arguments
# CMAKE_BUILD_TYPE: Compilation target (Debug or Release defaults to Debug)
#
#
# godot-cpp cmake arguments
# GODOT_HEADERS_DIR: This is where the gdnative include folder is (godot_source/modules/gdnative/include)
# GODOT_CUSTOM_API_FILE: This is if you have another path for the godot_api.json
#
#
# Android cmake arguments
# CMAKE_TOOLCHAIN_FILE: The path to the android cmake toolchain ($ANDROID_NDK/build/cmake/android.toolchain.cmake)
# ANDROID_NDK: The path to the android ndk root folder
# ANDROID_TOOLCHAIN_NAME: The android toolchain (arm-linux-androideabi-4.9 or aarch64-linux-android-4.9 or x86-4.9 or x86_64-4.9)
# ANDROID_PLATFORM: The android platform version (android-23)
# More info here: https://godot.readthedocs.io/en/latest/development/compiling/compiling_for_android.html
#
#
# Examples
#
#
# Builds a debug version:
# cmake .
# cmake --build .
#
#
# Builds a release version with clang
# CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" .
# cmake --build .
#
#
# Builds an android armeabi-v7a debug version:
# cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -DANDROID_NDK=$ANDROID_NDK \
# -DANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-4.9 -DANDROID_PLATFORM=android-23 -DCMAKE_BUILD_TYPE=Debug .
# cmake --build .
#
#
# Protip
# Generate the buildfiles in a sub directory to not clutter the root directory with build files:
# mkdir build && cd build && cmake -G "Unix Makefiles" .. && cmake --build .
#
#
# Todo
# Test build for Windows, Mac and mingw.

project(godot-cpp)
project(godot-cpp LANGUAGES CXX)
cmake_minimum_required(VERSION 3.6)

option(GENERATE_TEMPLATE_GET_NODE "Generate a template version of the Node class's get_node." ON)

# Change the output directory to the bin directory
set(BUILD_PATH ${CMAKE_SOURCE_DIR}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${BUILD_PATH}")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${BUILD_PATH}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${BUILD_PATH}")
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${BUILD_PATH}")
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${BUILD_PATH}")
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${BUILD_PATH}")
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${BUILD_PATH}")
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${BUILD_PATH}")
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${BUILD_PATH}")

# Default build type is Debug in the SConstruct
if(CMAKE_BUILD_TYPE STREQUAL "")
set(CMAKE_BUILD_TYPE Debug)
endif()

if(CMAKE_BUILD_TYPE MATCHES Debug)
add_definitions(-D_DEBUG)
add_definitions(-DDEBUG_ENABLED)
add_definitions(-DDEBUG_METHODS_ENABLED)
else()
add_definitions(-DNDEBUG)
endif(CMAKE_BUILD_TYPE MATCHES Debug)

# Set the c++ standard to c++14
set(CMAKE_CXX_STANDARD 14)
# Set the c++ standard to c++17
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# Input from user for godot headers and the api file
set(GODOT_HEADERS_DIR "godot-headers" CACHE STRING "")
set(GODOT_CUSTOM_API_FILE "godot-headers/api.json" CACHE STRING "")
set(GODOT_HEADERS_DIR "godot-headers-temp" CACHE STRING "")
set(GODOT_CUSTOM_API_FILE "godot-headers-temp/extension_api.json" CACHE STRING "")

set(GODOT_COMPILE_FLAGS )
set(GODOT_LINKER_FLAGS )
Expand Down Expand Up @@ -140,28 +130,18 @@ else()
set(GENERATE_BINDING_PARAMETERS "False")
endif()

message(STATUS "Generating Bindings")
execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c" "import binding_generator; binding_generator.print_file_list(\"${GODOT_CUSTOM_API_FILE}\", \"${CMAKE_CURRENT_BINARY_DIR}\", headers=True)"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE HEADERS_FILE_LIST_RESULT
OUTPUT_VARIABLE HEADERS_FILE_LIST
)
set(HEADERS_FILE_LIST ${HEADERS_FILE_LIST})

execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c" "import binding_generator; binding_generator.print_file_list(\"${GODOT_CUSTOM_API_FILE}\", \"${CMAKE_CURRENT_BINARY_DIR}\", sources=True)"
execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c" "import binding_generator; binding_generator.print_file_list(\"${GODOT_CUSTOM_API_FILE}\", \"${CMAKE_CURRENT_BINARY_DIR}\", headers=True, sources=True)"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE SOURCES_FILE_LIST_RESULT
OUTPUT_VARIABLE SOURCES_FILE_LIST
OUTPUT_VARIABLE GENERATED_FILES_LIST
)
set(SOURCES_FILE_LIST ${SOURCES_FILE_LIST})

add_custom_command(OUTPUT ${HEADERS_FILE_LIST} ${SOURCES_FILE_LIST}
add_custom_command(OUTPUT ${GENERATED_FILES_LIST}
COMMAND "${PYTHON_EXECUTABLE}" "-c" "import binding_generator; binding_generator.generate_bindings(\"${GODOT_CUSTOM_API_FILE}\", \"${GENERATE_BINDING_PARAMETERS}\", \"${CMAKE_CURRENT_BINARY_DIR}\")"
VERBATIM
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
MAIN_DEPENDENCY ${GODOT_CUSTOM_API_FILE}
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/binding_generator.py
COMMENT Generating Bindings
COMMENT "Generating bindings"
)

# Get Sources
Expand All @@ -171,15 +151,14 @@ file(GLOB_RECURSE HEADERS include/*.h**)
# Define our godot-cpp library
add_library(${PROJECT_NAME}
${SOURCES}
${SOURCES_FILE_LIST}
${HEADERS}
${HEADERS_FILE_LIST}
${GENERATED_FILES_LIST}
)
add_library(godot::cpp ALIAS ${PROJECT_NAME})
target_include_directories(${PROJECT_NAME}
PUBLIC
include
include/core
${CMAKE_CURRENT_BINARY_DIR}/include/gen/
${CMAKE_CURRENT_BINARY_DIR}/gen/include
)

# Put godot headers as SYSTEM PUBLIC to exclude warnings from irrelevant headers
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
GENERATE_BINDINGS = no
GENERATE_BINDINGS = auto
HEADERS = godot-headers
TARGET = debug
USE_CLANG = no
Expand Down
Loading