Add build with Docker, make and submodules

Starting to pull out hacks and custom instructions into a reproducible build.
This commit is contained in:
Ingvar Stepanyan
2021-08-06 20:49:19 +00:00
parent 8600639023
commit 2665a5bc41
7 changed files with 74 additions and 9 deletions

5
.gitignore vendored
View File

@@ -1,5 +1,8 @@
/.vscode/c_cpp_properties.json
/.libs
/libapi.*
!/libapi.mjs.d.ts
/node_modules
/deps/*
!/deps/libgphoto2
!/deps/libusb
/api.o

8
.gitmodules vendored Normal file
View File

@@ -0,0 +1,8 @@
[submodule "libgphoto2"]
path = deps/libgphoto2
url = https://github.com/RReverser/libgphoto2
branch = em
[submodule "libusb"]
path = deps/libusb
url = https://github.com/RReverser/libusb
branch = em

5
Dockerfile Normal file
View File

@@ -0,0 +1,5 @@
FROM emscripten/emsdk:2.0.26
RUN apt-get update && apt-get install -qqy autoconf autopoint libtool-bin pkg-config
WORKDIR /src
ENV EM_CACHE /src/deps/.emcache
CMD ["sh", "-c", "emmake make -j`nproc`"]

View File

@@ -1,9 +1,50 @@
CPPFLAGS += -I $(GPHOTO2PREFIX)/include
SYSROOT = $(PWD)/deps/.install
export PKG_CONFIG_PATH = $(SYSROOT)/lib/pkgconfig
libapi.mjs: api.cpp
libtool --verbose --mode=link --tag=CXX $(CC) -std=c++17 $+ --bind -s ASYNCIFY -fexceptions -Os -s ALLOW_MEMORY_GROWTH -s DYNAMIC_EXECUTION=0 -o $@ \
$(GPHOTO2PREFIX)/lib/libltdl.la \
$(GPHOTO2PREFIX)/lib/libgphoto2.la \
-dlpreopen $(GPHOTO2PREFIX)/lib/libgphoto2/2.5.27.1/ptp2.la \
-dlpreopen $(GPHOTO2PREFIX)/lib/libgphoto2_port/0.12.0/usb1.la \
$(CPPFLAGS)
export CPPFLAGS += -I$(SYSROOT)/include
export LDFLAGS += -L$(SYSROOT)/lib -s DYNAMIC_EXECUTION=0 -s AUTO_JS_LIBRARIES=0 -s AUTO_NATIVE_LIBRARIES=0 -s ALLOW_UNIMPLEMENTED_SYSCALLS=0
COMMON_FLAGS = -Os -flto
export CFLAGS += $(COMMON_FLAGS)
export CXXFLAGS += $(COMMON_FLAGS)
export LDFLAGS += $(COMMON_FLAGS)
libapi.mjs: api.o $(SYSROOT)/lib/libltdl.la $(SYSROOT)/lib/libgphoto2.la
deps/libgphoto2/libtool --verbose --mode=link $(LD) $(LDFLAGS) -o $@ $+ \
--bind -s ASYNCIFY -s ALLOW_MEMORY_GROWTH \
-dlpreopen $(SYSROOT)/lib/libgphoto2/2.5.27.1/ptp2.la \
-dlpreopen $(SYSROOT)/lib/libgphoto2_port/0.12.0/usb1.la
api.o: deps/libgphoto2/configure.ac
api.o: CPPFLAGS += -Ideps/libgphoto2 -Ideps/libgphoto2/libgphoto2_port
api.o: CXXFLAGS += -std=c++17 -fexceptions
$(SYSROOT)/.exists:
mkdir -p $(@D)
touch $@
deps/libtool/configure:
mkdir -p deps/libtool
curl -L https://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz | tar zx --strip 1 -C deps/libtool
deps/libgphoto2/configure.ac deps/libusb/configure.ac &:
git submodule update --init
$(SYSROOT)/lib/libltdl.la: $(SYSROOT)/.exists deps/libtool/configure
cd deps/libtool && \
./configure --prefix=$(SYSROOT) --disable-shared && \
$(MAKE) install
$(SYSROOT)/lib/libusb-1.0.la: $(SYSROOT)/.exists deps/libusb/configure.ac
cd deps/libusb && \
autoreconf -fiv && \
./configure --prefix=$(SYSROOT) --disable-shared --host=wasm32 && \
$(MAKE) install
$(SYSROOT)/lib/libgphoto2.la: deps/libgphoto2/configure.ac $(SYSROOT)/lib/libltdl.la $(SYSROOT)/lib/libusb-1.0.la
cd deps/libgphoto2 && \
autoreconf -fiv && \
./configure --prefix=$(SYSROOT) --disable-shared --host=wasm32 \
--without-libxml-2.0 --disable-nls --disable-ptpip --disable-disk \
--with-camlibs=ptp2 && \
$(MAKE) install

6
build.sh Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/sh
docker build -t web-gphoto2 - < Dockerfile
docker run --rm -it \
-v $PWD:/src \
-u $(id -u):$(id -g) \
web-gphoto2

1
deps/libgphoto2 vendored Submodule

Submodule deps/libgphoto2 added at 951b8364a6

1
deps/libusb vendored Submodule

Submodule deps/libusb added at 0e5f839ebb