From 492cddec9c3e38e1c4151f37333dc257ea359c71 Mon Sep 17 00:00:00 2001 From: Naruto TAKAHASHI Date: Fri, 30 Jun 2017 00:34:53 +0900 Subject: [PATCH 1/5] change static library saffix to .bc when build by emscripten --- CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index c57af72..4cdf592 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,6 +85,9 @@ endif() # test_big_endian(WORDS_BIGENDIAN) #endif() +if (EMSCRIPTEN) + set(CMAKE_STATIC_LIBRARY_SUFFIX ".bc") +endif() #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") set(CMAKE_CXX_STANDARD 11) From 601e87a1c59eaabcbf2963665b3680fc48e6581f Mon Sep 17 00:00:00 2001 From: Naruto TAKAHASHI Date: Fri, 30 Jun 2017 00:35:09 +0900 Subject: [PATCH 2/5] add build_emscripten.sh --- scripts/speck/build_emscripten.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100755 scripts/speck/build_emscripten.sh diff --git a/scripts/speck/build_emscripten.sh b/scripts/speck/build_emscripten.sh new file mode 100755 index 0000000..ca276d0 --- /dev/null +++ b/scripts/speck/build_emscripten.sh @@ -0,0 +1,22 @@ +#!/bin/bash -xe + +SCRIPTDIR=`dirname $0` +SCRIPTDIR=`cd $SCRIPTDIR && pwd -P` +BASEDIR=${SCRIPTDIR}/../.. +BASEDIR=`cd ${BASEDIR} && pwd -P` + +pushd ${BASEDIR} > /dev/null +/bin/rm -rf build +/bin/mkdir build +# build +pushd build > /dev/null +emcmake cmake -DENABLE_STATIC=ON -DCMAKE_BUILD_TYPE=Release .. +make -j8 +popd > /dev/null + +# create bundle file +/bin/rm -rf libs/emscripten +/bin/mkdir -p libs/emscripten +/bin/cp ./build/libspeck.bc libs/emscripten + +popd > /dev/null From e473e98852fdfce8f008505f909678ad2ec8b3a3 Mon Sep 17 00:00:00 2001 From: Naruto TAKAHASHI Date: Fri, 30 Jun 2017 00:35:41 +0900 Subject: [PATCH 3/5] update README --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 248cd29..d9f7c30 100644 --- a/README.md +++ b/README.md @@ -170,5 +170,11 @@ scripts\speck\build_win.bat dll library is outputted to `libs/windows` directory. +## emscripten + +``` +./scripts/speck/build_emscripten.sh +``` + # License [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2FNaruto%2Fsimon-speck-c.svg?type=large)](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2FNaruto%2Fsimon-speck-c?ref=badge_large) From 8c0b55d155ace7b328636829e3f15b760811ef04 Mon Sep 17 00:00:00 2001 From: Naruto TAKAHASHI Date: Wed, 19 Jul 2017 12:53:40 +0900 Subject: [PATCH 4/5] export apis --- CMakeLists.txt | 2 ++ include/speck/speck.h | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4cdf592..b7681d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,6 +87,8 @@ endif() if (EMSCRIPTEN) set(CMAKE_STATIC_LIBRARY_SUFFIX ".bc") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s WASM=1 -DEMSCRIPTEN") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s WASM=1 -DEMSCRIPTEN") endif() #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") diff --git a/include/speck/speck.h b/include/speck/speck.h index b28b1d6..f4b0e94 100644 --- a/include/speck/speck.h +++ b/include/speck/speck.h @@ -24,6 +24,9 @@ #define SPECK_H #include +#if EMSCRIPTEN +#include +#endif #ifdef SPECKAPI #undef SPECKAPI @@ -31,6 +34,8 @@ #if _WIN32 #define SPECKAPI __declspec(dllexport) +#elif EMSCRIPTEN +#define SPECKAPI EMSCRIPTEN_KEEPALIVE #else #ifdef __GNUC__ #if __GNUC__ >= 4 From 76d5525ffc52b2f69d314c11230401557e54611f Mon Sep 17 00:00:00 2001 From: Naruto TAKAHASHI Date: Mon, 2 Oct 2017 22:15:49 +0900 Subject: [PATCH 5/5] update --- CMakeLists.txt | 6 +++--- scripts/speck/build_emscripten.sh | 13 ++++++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b7681d8..d6a8e83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,9 +86,9 @@ endif() #endif() if (EMSCRIPTEN) - set(CMAKE_STATIC_LIBRARY_SUFFIX ".bc") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s WASM=1 -DEMSCRIPTEN") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s WASM=1 -DEMSCRIPTEN") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DEMSCRIPTEN") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DEMSCRIPTEN") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --memory-init-file 0") endif() #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") diff --git a/scripts/speck/build_emscripten.sh b/scripts/speck/build_emscripten.sh index ca276d0..e7e2070 100755 --- a/scripts/speck/build_emscripten.sh +++ b/scripts/speck/build_emscripten.sh @@ -11,12 +11,19 @@ pushd ${BASEDIR} > /dev/null # build pushd build > /dev/null emcmake cmake -DENABLE_STATIC=ON -DCMAKE_BUILD_TYPE=Release .. -make -j8 +cmake --build . + +# rename .c.o to .bc +ar x libspeck.a +for f in *.c.o; do + mv $f ${f%.c.o}.bc +done +zip libspeck.zip *.bc + popd > /dev/null -# create bundle file /bin/rm -rf libs/emscripten /bin/mkdir -p libs/emscripten -/bin/cp ./build/libspeck.bc libs/emscripten +/bin/cp ./build/libspeck.zip libs/emscripten popd > /dev/null