@@ -13,8 +13,8 @@ set(CMAKE_VERBOSE_MAKEFILE TRUE)
1313set (CMAKE_ERROR_DEPRECATED FALSE )
1414set (CMAKE_WARN_DEPRECATED FALSE )
1515
16- option (BUILD_TESTS "Enable tests" ON )
17- option (BUILD_GO "Enable go wrapper" OFF )
16+ option (BUILD_TESTS "Enable tests" ON )
17+ option (BUILD_GO "Enable go wrapper" OFF )
1818option (BUILD_PYTHON "Enable python wrapper" OFF )
1919option (BUILD_WEBASSEMBLY "Enable emscripten build" OFF )
2020
@@ -382,6 +382,156 @@ if (BUILD_PYTHON)
382382
383383endif ()
384384
385+ ## SWIG + API - Go related stuff
386+ if (BUILD_GO)
387+ message (STATUS "Go wrapper enabled" )
388+
389+ unset (CMAKE_LIBRARY_OUTPUT_DIRECTORY )
390+
391+ if (NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY )
392+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} )
393+ endif ()
394+
395+ set (language go)
396+
397+ set (CMAKE_SWIG_OUTDIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /goqrllib/goqrllib)
398+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /goqrllib/goqrllib)
399+
400+ set (SWIG_INTERFACE ${CMAKE_CURRENT_SOURCE_DIR} /src/api/pyqrllib.i)
401+ set_source_files_properties (${SWIG_INTERFACE} PROPERTIES CPLUSPLUS ON )
402+ set_property (SOURCE ${SWIG_INTERFACE} PROPERTY SWIG_FLAGS "-includeall" "-ignoremissing" "-cgo" "-intgosize" "64" "-c++" )
403+ message (STATUS "CMAKE_SWIG_OUTDIR: " ${CMAKE_SWIG_OUTDIR} )
404+ message (STATUS "CMAKE_LIBRARY_OUTPUT_DIRECTORY: " ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} )
405+
406+ # Intentionally use a deprecated version to provide support for the raspberry pi
407+ SWIG_ADD_MODULE(goqrllib
408+ ${language}
409+ ${SWIG_INTERFACE}
410+ ${LIB_QRL_SRC}
411+ ${LIBXMSSALT_SRC}
412+ )
413+
414+ SWIG_LINK_LIBRARIES(goqrllib
415+ shasha
416+ ${SWIG_LANG_LIBRARIES} )
417+
418+ include_directories (
419+ ${LIB_QRL_INCLUDES}
420+ ${LIB_SHASHA_INCLUDES}
421+ )
422+
423+ add_custom_command (TARGET ${SWIG_MODULE_goqrllib_REAL_NAME}
424+ POST_BUILD
425+ COMMENT "Moving SWIG files to output dir"
426+ COMMAND ${CMAKE_COMMAND} -E
427+ copy_if_different $<TARGET_FILE:${SWIG_MODULE_goqrllib_REAL_NAME} >
428+ ${CMAKE_CURRENT_SOURCE_DIR} /goqrllib/goqrllib/$<TARGET_LINKER_FILE_NAME:${SWIG_MODULE_goqrllib_REAL_NAME} >
429+ COMMENT "Updating goqrllib flags"
430+ COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR} /scripts/update_goqrllib_flags.sh ${CMAKE_CURRENT_SOURCE_DIR}
431+ )
432+
433+ #add_custom_command(TARGET ${SWIG_MODULE_goqrllib_REAL_NAME}
434+ # POST_BUILD
435+ # COMMENT ${swig_extra_generated_files}
436+ # COMMAND ${CMAKE_COMMAND} -E copy_if_different ${swig_extra_generated_files} ${CMAKE_CURRENT_SOURCE_DIR}/goqrllib/pyqrllib.go
437+ # )
438+
439+ ###################################################
440+ # Dilithium
441+ unset (CMAKE_LIBRARY_OUTPUT_DIRECTORY )
442+
443+ if (NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY )
444+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} )
445+ endif ()
446+
447+ set (CMAKE_SWIG_OUTDIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /goqrllib/dilithium)
448+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /goqrllib/dilithium)
449+
450+
451+ set (SWIG_INTERFACE src/api/dilithium.i)
452+ set_source_files_properties (${SWIG_INTERFACE} PROPERTIES CPLUSPLUS ON )
453+ set_property (SOURCE ${SWIG_INTERFACE} PROPERTY SWIG_FLAGS "-includeall" "-ignoremissing" "-cgo" "-intgosize" "64" "-c++" )
454+ message (STATUS "CMAKE_SWIG_OUTDIR: " ${CMAKE_SWIG_OUTDIR} )
455+ message (STATUS "CMAKE_LIBRARY_OUTPUT_DIRECTORY: " ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} )
456+
457+ set (SWIG_INTERFACE
458+ src/api/dilithium.i)
459+
460+ include_directories (
461+ ${LIB_DILITHIUM_INCLUDES}
462+ )
463+
464+ SWIG_ADD_MODULE(godilithium
465+ ${language}
466+ ${SWIG_INTERFACE}
467+ ${LIB_DILITHIUM_SRC}
468+ ${REF_DILITHIUM_SRC}
469+ )
470+
471+ SWIG_LINK_LIBRARIES(godilithium
472+ ${SWIG_LANG_LIBRARIES} )
473+
474+ add_custom_command (TARGET ${SWIG_MODULE_godilithium_REAL_NAME}
475+ POST_BUILD
476+ COMMENT "Moving SWIG files to output dir"
477+ COMMAND ${CMAKE_COMMAND} -E
478+ copy_if_different $<TARGET_FILE:${SWIG_MODULE_godilithium_REAL_NAME} >
479+ ${CMAKE_CURRENT_SOURCE_DIR} /goqrllib/dilithium/$<TARGET_LINKER_FILE_NAME:${SWIG_MODULE_godilithium_REAL_NAME} >
480+ COMMENT "Updating godilithium flags"
481+ COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR} /scripts/update_godilithium_flags.sh ${CMAKE_CURRENT_SOURCE_DIR}
482+ )
483+
484+ #add_custom_command(TARGET ${SWIG_MODULE_godilithium_REAL_NAME}
485+ # POST_BUILD
486+ # COMMENT ${swig_extra_generated_files}
487+ # COMMAND ${CMAKE_COMMAND} -E copy_if_different ${swig_extra_generated_files} ${CMAKE_CURRENT_SOURCE_DIR}/goqrllib/godilithium.go
488+ # )
489+
490+
491+ # Kyber
492+ unset (CMAKE_LIBRARY_OUTPUT_DIRECTORY )
493+
494+ if (NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY )
495+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} )
496+ endif ()
497+
498+ set (CMAKE_SWIG_OUTDIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /goqrllib/kyber)
499+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /goqrllib/kyber)
500+
501+ set (SWIG_INTERFACE ${CMAKE_CURRENT_SOURCE_DIR} /src/api/kyber.i)
502+ set_source_files_properties (${SWIG_INTERFACE} PROPERTIES CPLUSPLUS ON )
503+ set_property (SOURCE ${SWIG_INTERFACE} PROPERTY SWIG_FLAGS "-includeall" "-ignoremissing" "-cgo" "-intgosize" "64" "-c++" )
504+ message (STATUS "CMAKE_SWIG_OUTDIR: " ${CMAKE_SWIG_OUTDIR} )
505+ message (STATUS "CMAKE_LIBRARY_OUTPUT_DIRECTORY: " ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} )
506+
507+ SWIG_ADD_MODULE(gokyber
508+ ${language}
509+ ${SWIG_INTERFACE}
510+ ${LIB_KYBER_SRC}
511+ ${REF_KYBER_SRC}
512+ )
513+
514+ SWIG_LINK_LIBRARIES(gokyber
515+ ${SWIG_LANG_LIBRARIES} )
516+
517+ add_custom_command (TARGET ${SWIG_MODULE_gokyber_REAL_NAME}
518+ POST_BUILD
519+ COMMENT "Moving SWIG files to output dir"
520+ COMMAND ${CMAKE_COMMAND} -E
521+ copy_if_different $<TARGET_FILE:${SWIG_MODULE_gokyber_REAL_NAME} >
522+ ${CMAKE_CURRENT_SOURCE_DIR} /goqrllib/kyber/$<TARGET_LINKER_FILE_NAME:${SWIG_MODULE_gokyber_REAL_NAME} >
523+ COMMENT "Updating gokyber flags"
524+ COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR} /scripts/update_gokyber_flags.sh ${CMAKE_CURRENT_SOURCE_DIR}
525+ )
526+
527+ #add_custom_command(TARGET ${SWIG_MODULE_gokyber_REAL_NAME}
528+ # POST_BUILD
529+ # COMMENT ${swig_extra_generated_files}
530+ # COMMAND ${CMAKE_COMMAND} -E copy_if_different ${swig_extra_generated_files} ${CMAKE_CURRENT_SOURCE_DIR}/goqrllib/gokyber.go
531+ # )
532+
533+ endif ()
534+
385535if (BUILD_WEBASSEMBLY)
386536 set (JS_QRL_INTERFACE ${CMAKE_CURRENT_SOURCE_DIR} /src/jswrapper/jsqrlwrapper.cpp)
387537
0 commit comments