Skip to content

Commit

Permalink
For Visual Studio it is necessary to export the object_setup function
Browse files Browse the repository at this point in the history
  • Loading branch information
charlesneimog committed Oct 8, 2024
1 parent e766adc commit 9ae0816
Showing 1 changed file with 21 additions and 9 deletions.
30 changes: 21 additions & 9 deletions pd.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -344,19 +344,31 @@ function(pd_add_external PD_EXTERNAL_NAME EXTERNAL_SOURCES)
target_compile_definitions(${OBJ_TARGET_NAME} PRIVATE PD_FLOATSIZE=64)
endif()

set_target_properties(${PD_EXTERNAL_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(${PD_EXTERNAL_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(${PD_EXTERNAL_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
set_target_properties(${PD_EXTERNAL_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(${PD_EXTERNAL_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(${PD_EXTERNAL_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR})
endforeach(OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES)
set_target_properties(${OBJ_TARGET_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(${OBJ_TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(${OBJ_TARGET_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
set_target_properties(${OBJ_TARGET_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(${OBJ_TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(${OBJ_TARGET_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR})
endforeach(OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES)

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PD_EXTERNAL_NAME}${PD_EXTENSION}
DESTINATION ${PDLIBDIR}/${PROJECT_NAME})

if(WIN32 AND CMAKE_GENERATOR MATCHES "Visual Studio")
string(FIND ${PD_EXTERNAL_NAME} "." NAME_HAS_DOT)
string(FIND ${PD_EXTERNAL_NAME} "~" NAME_HAS_TILDE)
if(NAME_HAS_DOT EQUAL -1)
string(REPLACE "~" "_tilde" EXPORT_FUNCTION "${PD_EXTERNAL_NAME}_setup")
else()
string(REPLACE "." "0x2e" TEMP_NAME "${PD_EXTERNAL_NAMEs}")
string(REPLACE "~" "_tilde" EXPORT_FUNCTION "setup_${TEMP_NAME}")
endif()
set_property(TARGET ${OBJ_TARGET_NAME} APPEND_STRING PROPERTY LINK_FLAGS "/export:${EXPORT_FUNCTION}")
endif()

endfunction(pd_add_external)

# ──────────────────────────────────────
Expand Down

0 comments on commit 9ae0816

Please sign in to comment.