Skip to content

Commit

Permalink
libs: install libraries and headers in the right location
Browse files Browse the repository at this point in the history
  • Loading branch information
csegarragonz committed Feb 13, 2024
1 parent 53f6567 commit 4c65d67
Show file tree
Hide file tree
Showing 6 changed files with 115 additions and 112 deletions.
4 changes: 3 additions & 1 deletion faasmtools/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
FAASM_NATIVE_DIR = join(FAASM_LOCAL_DIR, "native")
FAASM_CMAKE_ROOT = "/usr/share/cmake-3.24"
WASM_SYSROOT = join(FAASM_LOCAL_DIR, "llvm-sysroot")
WASM_HEADER_INSTALL = "{}/include".format(WASM_SYSROOT)
WASM_HEADER_INSTALL = "{}/include/wasm32-wasi".format(WASM_SYSROOT)
WASM_LIB_INSTALL = "{}/lib/wasm32-wasi".format(WASM_SYSROOT)
WASM_TOOLCHAIN_ROOT = join(FAASM_LOCAL_DIR, "toolchain")
WASM_TOOLCHAIN_TOOLS = join(WASM_TOOLCHAIN_ROOT, "tools")
Expand Down Expand Up @@ -201,6 +201,8 @@
"FAASM_WASM_HOST_STATIC": WASM_HOST_STATIC,
"FAASM_WASM_HOST_UNKNOWN": WASM_HOST_UNKNOWN,
"FAASM_WASM_INSTALL_DIR": WASM_TOOLCHAIN_BIN,
"FAASM_WASM_HEADER_INSTALL_DIR": WASM_HEADER_INSTALL,
"FAASM_WASM_LIB_INSTALL_DIR": WASM_LIB_INSTALL,
"FAASM_WASM_SYSROOT": WASM_SYSROOT,
"FAASM_WASM_CFLAGS": " ".join(WASM_CFLAGS),
"FAASM_WASM_CFLAGS_SHARED": " ".join(WASM_CFLAGS_SHARED),
Expand Down
27 changes: 14 additions & 13 deletions libemscripten/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,31 +1,32 @@
cmake_minimum_required(VERSION 3.0)
cmake_minimum_required(VERSION 3.8)
project(libemscripten)

# ------ Support for certain emscripten functions ------ #

set(CMAKE_CXX_STANDARD 17)

set(PUBLIC_HEADERS
faasm/emscripten.h
)
faasm/emscripten.h
)

set(LIB_FILES
emscripten.c
)
emscripten.c
)

add_library(emscripten STATIC ${LIB_FILES})
set_target_properties(emscripten PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADERS}")

install(TARGETS emscripten
ARCHIVE DESTINATION ${CMAKE_SYSROOT}/lib/wasm32-wasi
LIBRARY DESTINATION ${CMAKE_SYSROOT}/lib/wasm32-wasi
PUBLIC_HEADER DESTINATION ${CMAKE_SYSROOT}/include/faasm
)
install(
TARGETS emscripten
ARCHIVE DESTINATION $ENV{FAASM_WASM_LIB_INSTALL_DIR}
LIBRARY DESTINATION $ENV{FAASM_WASM_LIB_INSTALL_DIR}
PUBLIC_HEADER DESTINATION $ENV{FAASM_WASM_HEADER_INSTALL_DIR}/faasm
)

install(
FILES emscripten.imports
DESTINATION ${CMAKE_SYSROOT}/lib/wasm32-wasi
RENAME libemscripten.imports
FILES libemscripten.imports
DESTINATION $ENV{FAASM_WASM_LIB_INSTALL_DIR}
RENAME libemscripten.imports
)

target_include_directories(emscripten PUBLIC ${CMAKE_CURRENT_LIST_DIR})
84 changes: 43 additions & 41 deletions libfaasm/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,59 +1,60 @@
cmake_minimum_required(VERSION 3.0)
cmake_minimum_required(VERSION 3.8)
project(libfaasm)

# ------ Faasm C/C++ library ------ #

set(CMAKE_CXX_STANDARD 17)

set(PUBLIC_HEADERS
faasm/core.h
faasm/host_interface.h
faasm/host_interface_test.h
faasm/array.h
faasm/compare.h
faasm/faasm.h
faasm/files.h
faasm/input.h
faasm/memory.h
faasm/migrate.h
faasm/print.h
faasm/random.h
faasm/shared_mem.h
faasm/state.h
faasm/time.h
)
faasm/core.h
faasm/host_interface.h
faasm/host_interface_test.h
faasm/array.h
faasm/compare.h
faasm/faasm.h
faasm/files.h
faasm/input.h
faasm/memory.h
faasm/migrate.h
faasm/print.h
faasm/random.h
faasm/shared_mem.h
faasm/state.h
faasm/time.h
)

set(LIB_FILES
compare.cpp
core.cpp
files.cpp
input.cpp
print.cpp
random.cpp
state.cpp
time.cpp
zygote.cpp
)
compare.cpp
core.cpp
files.cpp
input.cpp
print.cpp
random.cpp
state.cpp
time.cpp
zygote.cpp
)


if (CMAKE_SYSTEM_NAME STREQUAL "Wasm")
if (CMAKE_SYSTEM_NAME STREQUAL "WASI")
message(STATUS "Libfaasm WebAssembly build")

add_library(faasm STATIC ${LIB_FILES})
set_target_properties(faasm PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADERS}")

# Install in WASM sysroot
install(TARGETS faasm
ARCHIVE DESTINATION ${CMAKE_SYSROOT}/lib/wasm32-wasi
LIBRARY DESTINATION ${CMAKE_SYSROOT}/lib/wasm32-wasi
PUBLIC_HEADER DESTINATION ${CMAKE_SYSROOT}/include/faasm
)
install(
TARGETS faasm
ARCHIVE DESTINATION $ENV{FAASM_WASM_LIB_INSTALL_DIR}
LIBRARY DESTINATION $ENV{FAASM_WASM_LIB_INSTALL_DIR}
PUBLIC_HEADER DESTINATION $ENV{FAASM_WASM_HEADER_INSTALL_DIR}/faasm
)

# Add allowed import files
install(
FILES faasm.imports
DESTINATION ${CMAKE_SYSROOT}/lib/wasm32-wasi
RENAME libfaasm.imports
FILES libfaasm.imports
DESTINATION $ENV{FAASM_WASM_LIB_INSTALL_DIR}
RENAME libfaasm.imports
)
else ()
message(STATUS "Libfaasm native build")
Expand All @@ -66,11 +67,12 @@ else ()

set_target_properties(faasm PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADERS}")

install(TARGETS faasm
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
PUBLIC_HEADER DESTINATION include/faasm
)
install(
TARGETS faasm
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
PUBLIC_HEADER DESTINATION include/faasm
)
endif ()

target_include_directories(faasm PUBLIC ${CMAKE_CURRENT_LIST_DIR})
47 changes: 23 additions & 24 deletions libfaasmp/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
cmake_minimum_required(VERSION 3.0)
cmake_minimum_required(VERSION 3.8)
project(libfaasmp)

# ------ Faasm OpenMP library ------ #

set(CMAKE_CXX_STANDARD 17)

set(PUBLIC_HEADERS
faasmp/faasmp.h
)
faasmp/faasmp.h
)

set(LIB_FILES
faasmp.cpp
)
faasmp.cpp
)

if (CMAKE_SYSTEM_NAME STREQUAL "Wasm")
if (CMAKE_SYSTEM_NAME STREQUAL "WASI")
message(STATUS "Libfaasmp WebAssembly build")

set(LIBOMP_ASMFILES "z_Linux_asm.S")
Expand All @@ -24,21 +24,19 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Wasm")
set_target_properties(faasmp PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADERS}")

# Install in WASM sysroot
install(TARGETS faasmp
ARCHIVE DESTINATION ${CMAKE_SYSROOT}/lib/wasm32-wasi
LIBRARY DESTINATION ${CMAKE_SYSROOT}/lib/wasm32-wasi
PUBLIC_HEADER DESTINATION ${CMAKE_SYSROOT}/include/faasmp
)
install(
TARGETS faasmp
ARCHIVE DESTINATION $ENV{FAASM_WASM_LIB_INSTALL_DIR}
LIBRARY DESTINATION $ENV{FAASM_WASM_LIB_INSTALL_DIR}
PUBLIC_HEADER DESTINATION $ENV{FAASM_WASM_HEADER_INSTALL_DIR}/faasmmp
)

# Add imports
install(FILES faasmp.imports
DESTINATION ${CMAKE_SYSROOT}/lib/wasm32-wasi
RENAME libfaasmp.imports)

# Add omp header
install(FILES omp.h
DESTINATION ${CMAKE_SYSROOT}/include)

install(
FILES libfaasmp.imports
DESTINATION $ENV{FAASM_WASM_LIB_INSTALL_DIR}
RENAME libfaasmp.imports
)
else ()
message(STATUS "Libfaasmp native build")

Expand All @@ -50,9 +48,10 @@ else ()

set_target_properties(faasmp PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADERS}")

install(TARGETS faasmp
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
PUBLIC_HEADER DESTINATION include/faasmp
)
install(
TARGETS faasmp
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
PUBLIC_HEADER DESTINATION include/faasmp
)
endif ()
57 changes: 32 additions & 25 deletions libfaasmpi/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.0)
cmake_minimum_required(VERSION 3.8)
project(faasmpi)

# ------------------------------------------
Expand Down Expand Up @@ -31,48 +31,55 @@ set(FAABRIC_BINARY_DIR ${FAABRIC_SOURCE_DIR}/build)
add_subdirectory(${FAABRIC_SOURCE_DIR} ${FAABRIC_BINARY_DIR})
add_dependencies(faasmpi faabricmpi)

if (CMAKE_SYSTEM_NAME STREQUAL "Wasm")
if (CMAKE_SYSTEM_NAME STREQUAL "WASI")
message(STATUS "Libfaasmpi WebAssembly build")

install(FILES ${FAABRIC_BINARY_DIR}/libfaabricmpi.a
DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/wasm32-wasi
install(
FILES ${FAABRIC_BINARY_DIR}/libfaabricmpi.a
DESTINATION $ENV{FAASM_WASM_LIB_INSTALL_DIR}
)

install(TARGETS faasmpi
ARCHIVE DESTINATION ${CMAKE_SYSROOT}/lib/wasm32-wasi
LIBRARY DESTINATION ${CMAKE_SYSROOT}/lib/wasm32-wasi
PUBLIC_HEADER DESTINATION ${CMAKE_SYSROOT}/include/faasmpi
install(
TARGETS faasmpi
ARCHIVE DESTINATION $ENV{FAASM_WASM_LIB_INSTALL_DIR}
LIBRARY DESTINATION $ENV{FAASM_WASM_LIB_INSTALL_DIR}
PUBLIC_HEADER DESTINATION $ENV{FAASM_WASM_HEADER_INSTALL_DIR}/faasmmpi
)

# Add imports file
install(FILES faasmpi.imports
DESTINATION ${CMAKE_SYSROOT}/lib/wasm32-wasi
RENAME libfaasmpi.imports
install(
FILES libfaasmpi.imports
DESTINATION $ENV{FAASM_WASM_LIB_INSTALL_DIR}
RENAME libfaasmpi.imports
)

# Symlink library as libmpi
install(CODE "execute_process( \
COMMAND ${CMAKE_COMMAND} -E create_symlink \
${CMAKE_SYSROOT}/lib/wasm32-wasi/libfaabricmpi.a \
${CMAKE_SYSROOT}/lib/wasm32-wasi/libmpi.a \
install(
CODE "execute_process( \
COMMAND
${CMAKE_COMMAND} -E create_symlink \
${CMAKE_SYSROOT}/lib/wasm32-wasi/libfaabricmpi.a \
${CMAKE_SYSROOT}/lib/wasm32-wasi/libmpi.a \
)"
)
else()
message(STATUS "Libfaasmpi native build")

install(TARGETS faasmpi
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
PUBLIC_HEADER DESTINATION include/faasmpi
)
install(
TARGETS faasmpi
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
PUBLIC_HEADER DESTINATION include/faasmpi
)
endif()

# Symlink header (common to wasm and native builds)
# WARNING - if you use the default CMAKE_INSTALL_PREFIX, this may overwrite the
# existing mpi.h on the system
install(CODE "execute_process( \
# WARNING - if you use the default CMAKE_INSTALL_PREFIX, this may overwrite the
# existing mpi.h on the system
install(
CODE "execute_process( \
COMMAND ${CMAKE_COMMAND} -E create_symlink \
${CMAKE_INSTALL_PREFIX}/include/faabric/mpi/mpi.h \
${CMAKE_INSTALL_PREFIX}/include/mpi.h \
${CMAKE_INSTALL_PREFIX}/include/faabric/mpi/mpi.h \
${CMAKE_INSTALL_PREFIX}/include/mpi.h \
)"
)
8 changes: 0 additions & 8 deletions tasks/lib.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,3 @@ def build_faasm_lib(subdir, clean=False, native=False, shared=False):

run("ninja", shell=True, cwd=build_dir, check=True)
run("ninja install", shell=True, cwd=build_dir, check=True)

# Copy imports into place for WASM libraries
if not native:
imports_file = "{}.imports".format(subdir)
src_imports = join(work_dir, imports_file)
dst_imports = join(install_dir, imports_file)
print("Copying {} to {}".format(src_imports, dst_imports))
run("cp {} {}".format(src_imports, dst_imports), check=True, shell=True)

0 comments on commit 4c65d67

Please sign in to comment.