Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
e4ed489
Replace bindgins to work with extensions
vnen Aug 18, 2021
8bcf32a
Fix issues with method calls
vnen Aug 19, 2021
b3a4a2c
Add sample test project
vnen Aug 19, 2021
a0634cc
Auto-bind virtual method overrides
vnen Aug 19, 2021
5615c92
Define the {de,}initialization functions in the bindings
vnen Aug 19, 2021
f3dea4b
Add readme file (stub)
vnen Aug 19, 2021
df9164b
Added TYPED_METHOD_BIND and c++17 flags to windows build and moved te…
BastiaanOlij Aug 21, 2021
feafe0d
Fix build with native structs
vnen Aug 24, 2021
3a9ff8d
Add support for engine singletons
vnen Aug 25, 2021
f19bb9f
Add copy/move constructors and assignment op to builtin types
vnen Aug 26, 2021
9d4e510
Properly encode numeric POD types
vnen Aug 28, 2021
dd72ce1
Remove unused import that breaks on windows
BastiaanOlij Aug 28, 2021
b075598
Silence delete compile warning in memory.h/cpp on Windows
BastiaanOlij Aug 28, 2021
a904518
Fix OUTPUT for add_custom_command
Shatur Aug 28, 2021
6daaeb6
Do not override build path
Shatur Aug 28, 2021
b7f0383
Fix return type check for variadic functions
Shatur Aug 28, 2021
e8030ed
Fix print file list
Shatur Aug 31, 2021
8eb6f12
Set initialization level to CORE
vnen Sep 3, 2021
3b40a38
Remove Generating Bindings message
Shatur Sep 1, 2021
f24dcf4
Specify project languages
Shatur Sep 1, 2021
50774cf
Add alias
Shatur Sep 1, 2021
3a5bd21
Always convert float to double
BastiaanOlij Sep 4, 2021
46c63af
Re-introduce build-in type code for core types
BastiaanOlij Sep 1, 2021
f5858ef
Fix calling of native functions that return object types
vnen Sep 8, 2021
dfa526c
Fix formatting of files
vnen Sep 8, 2021
aef0f1e
Change initialization to allow custom level callbacks
vnen Sep 10, 2021
02802b1
Add in driver types and rejig code to make it easier to extend
BastiaanOlij Sep 11, 2021
e839199
Add support for property groups
BastiaanOlij Sep 15, 2021
38ee8bf
Change constructor/destructor management of extension classes
vnen Sep 9, 2021
fab017c
Fix some clang format things
BastiaanOlij Sep 21, 2021
b21069c
_err_print_error only output p_message so swapped parameters around
BastiaanOlij Sep 21, 2021
7a2a7ea
Add virtual destructor to Object class
BastiaanOlij Sep 21, 2021
2b1100c
Use default initialization
Shatur Sep 19, 2021
cc88df0
Fix PtrToArg encoding for `Object *`.
Faless Sep 22, 2021
b4632e3
Fix creation (and godot-side deletion) of extended objects.
Faless Sep 21, 2021
42dd64f
Fix binding of function that takes Object * parameters.
Faless Sep 24, 2021
59d38a4
Add test for extended object creation/deletion.
Faless Sep 24, 2021
ea7324a
Fix encoding/decoding of null objects.
Faless Sep 24, 2021
fad6329
Implement Ref copy constructor
BastiaanOlij Sep 14, 2021
0e3bc39
Fully register class on register_class call
BastiaanOlij Sep 26, 2021
cbf52c2
Removed init.cpp that I overlooked in rebase
BastiaanOlij Sep 27, 2021
68ebc9b
Changed over to proper godot-headers
BastiaanOlij Sep 27, 2021
92d25bc
Update readme to include new info
BastiaanOlij Sep 27, 2021
d5e0fc8
Temporary fix for issue in JSON export with NIL in operators
BastiaanOlij Sep 27, 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
63 changes: 21 additions & 42 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_CUSTOM_API_FILE "godot-headers/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