1# Build dart binding shared library 2 3file(READ ${CMAKE_CURRENT_SOURCE_DIR}/version.txt _VERSION) 4set_property(GLOBAL PROPERTY EJDB2_DART_VERSION_PROPERTY 5 "${PROJECT_VERSION}${_VERSION}") 6set(EJDB2_DART_VERSION "${PROJECT_VERSION}${_VERSION}") 7 8add_library(ejdb2_dart SHARED lib/ejdb2_dart.c) 9target_link_libraries(ejdb2_dart ejdb2_s ${PROJECT_LLIBRARIES}) 10 11set(dart_COMPILE_FLAGS " ") 12set(dart_LINK_FLAGS " ") 13 14if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") 15 set(dart_LINK_FLAGS "-dynamic -undefined dynamic_lookup") 16endif() 17 18set(DART_PUB_DIR ${CMAKE_CURRENT_BINARY_DIR}/ejdb2_dart) 19 20configure_file(lib/ejdb2_dart.c ${DART_PUB_DIR}/lib/ejdb2_dart.c COPYONLY) 21configure_file(lib/ejdb2_dart.dart ${DART_PUB_DIR}/lib/ejdb2_dart.dart COPYONLY) 22configure_file(test/ejdb2_dart_test.dart 23 ${DART_PUB_DIR}/test/ejdb2_dart_test.dart COPYONLY) 24configure_file(example/example.dart ${DART_PUB_DIR}/example/example.dart 25 COPYONLY) 26configure_file(example/isolate.dart ${DART_PUB_DIR}/example/isolate.dart 27 COPYONLY) 28 29configure_file(README.md ${DART_PUB_DIR}/README.md COPYONLY) 30configure_file(LICENSE ${DART_PUB_DIR}/LICENSE COPYONLY) 31configure_file(CHANGELOG.md ${DART_PUB_DIR}/CHANGELOG.md @ONLY) 32configure_file(pubspec.yaml.in ${DART_PUB_DIR}/pubspec.yaml @ONLY) 33configure_file(analysis_options.yaml ${DART_PUB_DIR}/analysis_options.yaml 34 COPYONLY) 35configure_file(.packages ${DART_PUB_DIR}/.packages COPYONLY) 36 37set_target_properties( 38 ejdb2_dart 39 PROPERTIES COMPILE_FLAGS ${dart_COMPILE_FLAGS} LINK_FLAGS ${dart_LINK_FLAGS} 40 LIBRARY_OUTPUT_DIRECTORY ${DART_PUB_DIR}/lib) 41 42if(CMAKE_BUILD_TYPE STREQUAL "Release") 43 add_custom_command( 44 TARGET ejdb2_dart 45 POST_BUILD 46 COMMAND strip -s $<TARGET_FILE:ejdb2_dart>) 47endif() 48 49set_target_properties( 50 ejdb2_dart 51 PROPERTIES VERSION ${PROJECT_VERSION} OUTPUT_NAME ejdb2dart 52 SOVERSION ${PROJECT_VERSION_MAJOR} DEFINE_SYMBOL IW_API_EXPORTS) 53 54install( 55 TARGETS ejdb2_dart 56 FRAMEWORK DESTINATION ${FRAMEWORK_INSTALL_DIR} 57 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 58 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 59 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 60 PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}) 61 62install(FILES ${DART_PUB_DIR}/lib/ejdb2_dart.dart ${DART_PUB_DIR}/README.md 63 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/dart) 64 65install(FILES ${DART_PUB_DIR}/example/example.dart 66 ${DART_PUB_DIR}/example/isolate.dart 67 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/dart/example) 68 69if(BUILD_TESTS) 70 find_program(DART_EXEC dart HINTS /usr/bin /usr/local/bin) 71 if(DART_EXEC MATCHES "DART_EXEC-NOTFOUND") 72 message(FATAL_ERROR "`dart` executable not found") 73 endif() 74 find_program(PUB_EXEC pub /usr/bin /usr/local/bin) 75 if(PUB_EXEC MATCHES "PUB_EXEC-NOTFOUND") 76 set(PUB_EXEC ${DART_EXEC} pub) 77 endif() 78 79 add_custom_command( 80 COMMAND ${PUB_EXEC} get 81 OUTPUT ${DART_PUB_DIR}/pubspec.lock 82 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/pubspec.yaml 83 WORKING_DIRECTORY ${DART_PUB_DIR} 84 VERBATIM) 85 add_custom_target(pub_get ALL DEPENDS ${DART_PUB_DIR}/pubspec.lock) 86 87 add_test( 88 NAME ejdb2dart 89 COMMAND ${DART_EXEC} --enable-asserts ./test/ejdb2_dart_test.dart 90 WORKING_DIRECTORY ${DART_PUB_DIR}) 91endif(BUILD_TESTS) 92