Skip to content

Commit

Permalink
Consolidate csp-autogen impls, restore binding_int_t in platform, fix…
Browse files Browse the repository at this point in the history
… struct cpp example

Signed-off-by: Tim Paine <[email protected]>
  • Loading branch information
timkpaine committed Oct 2, 2024
1 parent 9da93f1 commit 00d1f26
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 57 deletions.
40 changes: 1 addition & 39 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -225,45 +225,7 @@ message("\n${Green}CMake Search Path: ${CMAKE_MODULE_PATH}${ColorReset}")
###################################################################################################################################################
# Helpers #
###########
# FIXME: consolidate this function with Findcsp_autogen.cmake
function(csp_autogen MODULE_NAME DEST_FILENAME HEADER_NAME_OUTVAR SOURCE_NAME_OUTVAR)
string( REPLACE "." "\/" MODULE_FILENAME ${MODULE_NAME} )
string( JOIN "." MODULE_FILENAME ${MODULE_FILENAME} "py" )

add_custom_target( mkdir_autogen_${MODULE_NAME}
ALL COMMAND ${CMAKE_COMMAND} -E make_directory
"${CMAKE_CURRENT_BINARY_DIR}/csp_autogen" )

# VARARGS done by position
if(ARGV4)
set(CSP_AUTOGEN_EXTRA_ARGS "${ARGV4}")
else()
set(CSP_AUTOGEN_EXTRA_ARGS "")
endif()

cmake_path(SET CSP_AUTOGEN_MODULE_PATH NORMALIZE "${CMAKE_SOURCE_DIR}/csp/build/csp_autogen.py")
cmake_path(SET CSP_AUTOGEN_DESTINATION_FOLDER NORMALIZE "${CMAKE_CURRENT_BINARY_DIR}/csp_autogen")
cmake_path(SET CSP_AUTOTGEN_CPP_OUT NORMALIZE "${CMAKE_CURRENT_BINARY_DIR}/csp_autogen/${DEST_FILENAME}.cpp")
cmake_path(SET CSP_AUTOTGEN_H_OUT NORMALIZE "${CMAKE_CURRENT_BINARY_DIR}/csp_autogen/${DEST_FILENAME}.h")

if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(CSP_AUTOGEN_PYTHONPATH ${PROJECT_BINARY_DIR}/lib/${CMAKE_BUILD_TYPE};${CMAKE_SOURCE_DIR};%PYTHONPATH% )
else()
set(CSP_AUTOGEN_PYTHONPATH ${PROJECT_BINARY_DIR}/lib:${CMAKE_SOURCE_DIR}:$$PYTHONPATH )
endif()

add_custom_command(OUTPUT "${CSP_AUTOTGEN_CPP_OUT}" "${CSP_AUTOTGEN_H_OUT}"
COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CSP_AUTOGEN_PYTHONPATH}" ${Python_EXECUTABLE} ${CSP_AUTOGEN_MODULE_PATH} -m ${MODULE_NAME} -d ${CSP_AUTOGEN_DESTINATION_FOLDER} -o ${DEST_FILENAME} ${CSP_AUTOGEN_EXTRA_ARGS}
COMMENT "generating csp c++ types from module ${MODULE_NAME}"
DEPENDS mkdir_autogen_${MODULE_NAME}
${CMAKE_SOURCE_DIR}/csp/build/csp_autogen.py
${CMAKE_SOURCE_DIR}/${MODULE_FILENAME}
csptypesimpl
)

set(${SOURCE_NAME_OUTVAR} "${CMAKE_CURRENT_BINARY_DIR}/csp_autogen/${DEST_FILENAME}.cpp" PARENT_SCOPE )
set(${HEADER_NAME_OUTVAR} "${CMAKE_CURRENT_BINARY_DIR}/csp_autogen/${DEST_FILENAME}.h" PARENT_SCOPE )
endfunction()
find_package(csp_autogen REQUIRED)


###################################################################################################################################################
Expand Down
2 changes: 0 additions & 2 deletions cpp/cmake/modules/FindCSP.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ cmake_minimum_required(VERSION 3.7.2)

find_package(Python ${CSP_PYTHON_VERSION} EXACT REQUIRED COMPONENTS Interpreter)

set(ENV{PYTHONPATH} "${CMAKE_SOURCE_DIR}/ext:$ENV{PYTHONPATH}")

# Find out the base path
execute_process(
COMMAND "${Python_EXECUTABLE}" -c
Expand Down
32 changes: 17 additions & 15 deletions cpp/cmake/modules/Findcsp_autogen.cmake
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
function(csp_autogen MODULE_NAME DEST_FILENAME HEADER_NAME_OUTVAR SOURCE_NAME_OUTVAR)
string( REPLACE "." "\/" MODULE_FILENAME ${MODULE_NAME} )
string( JOIN "." MODULE_FILENAME ${MODULE_FILENAME} "py" )
string(REPLACE "." "_" MODULE_TARGETNAME ${MODULE_NAME})
string(REPLACE "." "\/" MODULE_FILENAME ${MODULE_NAME})
string(JOIN "." MODULE_FILENAME ${MODULE_FILENAME} "py")

add_custom_target( mkdir_autogen_${MODULE_NAME}
add_custom_target(mkdir_autogen_${MODULE_TARGETNAME}
ALL COMMAND ${CMAKE_COMMAND} -E make_directory
"${CMAKE_CURRENT_BINARY_DIR}/csp_autogen" )
"${CMAKE_CURRENT_BINARY_DIR}/csp_autogen")

# VARARGS done by position
if(ARGV4)
Expand All @@ -13,26 +14,27 @@ function(csp_autogen MODULE_NAME DEST_FILENAME HEADER_NAME_OUTVAR SOURCE_NAME_OU
set(CSP_AUTOGEN_EXTRA_ARGS "")
endif()

cmake_path(SET CSP_AUTOGEN_MODULE_PATH NORMALIZE "${CMAKE_SOURCE_DIR}/csp/build/csp_autogen.py")
find_package(CSP REQUIRED)
cmake_path(SET CSP_AUTOGEN_MODULE_PATH NORMALIZE "${CSP_AUTOGEN}")
cmake_path(SET CSP_AUTOGEN_DESTINATION_FOLDER NORMALIZE "${CMAKE_CURRENT_BINARY_DIR}/csp_autogen")
cmake_path(SET CSP_AUTOTGEN_CPP_OUT NORMALIZE "${CMAKE_CURRENT_BINARY_DIR}/csp_autogen/${DEST_FILENAME}.cpp")
cmake_path(SET CSP_AUTOTGEN_H_OUT NORMALIZE "${CMAKE_CURRENT_BINARY_DIR}/csp_autogen/${DEST_FILENAME}.h")
cmake_path(SET CSP_AUTOGEN_CPP_OUT NORMALIZE "${CMAKE_CURRENT_BINARY_DIR}/csp_autogen/${DEST_FILENAME}.cpp")
cmake_path(SET CSP_AUTOGEN_H_OUT NORMALIZE "${CMAKE_CURRENT_BINARY_DIR}/csp_autogen/${DEST_FILENAME}.h")

if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(CSP_AUTOGEN_PYTHONPATH ${PROJECT_BINARY_DIR}/lib/${CMAKE_BUILD_TYPE};${CMAKE_SOURCE_DIR};%PYTHONPATH% )
set(CSP_AUTOGEN_PYTHONPATH ${PROJECT_BINARY_DIR}/lib/${CMAKE_BUILD_TYPE};${CMAKE_SOURCE_DIR};%PYTHONPATH%)
else()
set(CSP_AUTOGEN_PYTHONPATH ${PROJECT_BINARY_DIR}/lib:${CMAKE_SOURCE_DIR}:$$PYTHONPATH )
set(CSP_AUTOGEN_PYTHONPATH ${PROJECT_BINARY_DIR}/lib:${CMAKE_SOURCE_DIR}:$$PYTHONPATH)
endif()

add_custom_command(OUTPUT "${CSP_AUTOTGEN_CPP_OUT}" "${CSP_AUTOTGEN_H_OUT}"
add_custom_command(OUTPUT "${CSP_AUTOGEN_CPP_OUT}" "${CSP_AUTOGEN_H_OUT}"
COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CSP_AUTOGEN_PYTHONPATH}" ${Python_EXECUTABLE} ${CSP_AUTOGEN_MODULE_PATH} -m ${MODULE_NAME} -d ${CSP_AUTOGEN_DESTINATION_FOLDER} -o ${DEST_FILENAME} ${CSP_AUTOGEN_EXTRA_ARGS}
COMMENT "generating csp c++ types from module ${MODULE_NAME}"
DEPENDS mkdir_autogen_${MODULE_NAME}
${CMAKE_SOURCE_DIR}/csp/build/csp_autogen.py
DEPENDS mkdir_autogen_${MODULE_TARGETNAME}
${CSP_AUTOGEN_MODULE_PATH}
${CMAKE_SOURCE_DIR}/${MODULE_FILENAME}
csptypesimpl
${CSP_TYPES_LIBRARY}
)

set(${SOURCE_NAME_OUTVAR} "${CMAKE_CURRENT_BINARY_DIR}/csp_autogen/${DEST_FILENAME}.cpp" PARENT_SCOPE )
set(${HEADER_NAME_OUTVAR} "${CMAKE_CURRENT_BINARY_DIR}/csp_autogen/${DEST_FILENAME}.h" PARENT_SCOPE )
set(${SOURCE_NAME_OUTVAR} "${CSP_AUTOGEN_CPP_OUT}" PARENT_SCOPE)
set(${HEADER_NAME_OUTVAR} "${CSP_AUTOGEN_H_OUT}" PARENT_SCOPE)
endfunction()
2 changes: 2 additions & 0 deletions cpp/csp/core/Platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

//TODO move Likely.h defines into Platform.h
#ifdef WIN32
typedef int64_t binding_int_t;
#define NOMINMAX
#include <windows.h>
#include <assert.h>
Expand Down Expand Up @@ -90,6 +91,7 @@ inline uint8_t ffs(uint64_t n)
}

#else
typedef uint64_t binding_int_t;

#define CSPIMPL_EXPORT __attribute__ ((visibility ("default")))
#define CSPTYPESIMPL_EXPORT __attribute__ ((visibility ("default")))
Expand Down
1 change: 1 addition & 0 deletions examples/05_cpp/2_cpp_node_with_struct/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ else()
endif()

list(PREPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../../cpp/cmake/modules")
set(ENV{PYTHONPATH} "${CMAKE_SOURCE_DIR}/../../../:$ENV{PYTHONPATH}")

set(CMAKE_MACOSX_RPATH TRUE)
set(CMAKE_SKIP_RPATH FALSE)
Expand Down
2 changes: 1 addition & 1 deletion examples/05_cpp/2_cpp_node_with_struct/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ python setup.py build build_ext --inplace
Run:

```bash
python -m struct
python -m mystruct
```

0 comments on commit 00d1f26

Please sign in to comment.