Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support cross-compilation #202

Closed
wants to merge 8 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -3,6 +3,7 @@
/design/*
/.builconfig/*
/.build/*
/.host_build/*
/.buildconfig/*
/.test/*
/.release/*
Expand Down
2 changes: 1 addition & 1 deletion .gitmodules
@@ -1,3 +1,3 @@
[submodule "Polynomial-Wiener-Hammerstein"]
path = Polynomial-Wiener-Hammerstein
url = ../../CrocoDuckoDucks/Polynomial-Wiener-Hammerstein.git
url = https://github.com/CrocoDuckoDucks/Polynomial-Wiener-Hammerstein
154 changes: 94 additions & 60 deletions Makefile
Expand Up @@ -24,8 +24,10 @@ export RESDIR = ${CURDIR}/res
export RELEASE = ${CURDIR}/.release
export RELEASE_BIN = $(RELEASE)/$(BUILD_SYSTEM)-$(BUILD_PROFILE)
export BUILDDIR = ${CURDIR}/.build
export HOST_BUILDDIR = ${CURDIR}/.host_build
export TESTDIR = ${CURDIR}/.test
OBJDIR = $(BUILDDIR)
export HOST_OBJDIR = $(HOST_BUILDDIR)

# Installation locations
BIN_PATH ?= $(PREFIX)/bin
Expand All @@ -41,20 +43,23 @@ VST_PATH = $(LIB_PATH)/vst
export BASEDIR = ${CURDIR}

# Objects
export OBJ_CORE = $(OBJDIR)/core.o
export OBJ_DSP = $(OBJDIR)/dsp.o
export OBJ_CTL_CORE = $(OBJDIR)/ctl_core.o
export OBJ_TK_CORE = $(OBJDIR)/tk_core.o
export OBJ_WS_CORE = $(OBJDIR)/ws_core.o
export OBJ_WS_X11_CORE = $(OBJDIR)/ws_x11_core.o
export OBJ_UI_CORE = $(OBJDIR)/ui_core.o
export OBJ_RES_CORE = $(OBJDIR)/res_core.o
export OBJ_TEST_CORE = $(OBJDIR)/test_core.o
export OBJ_TESTING_CORE = $(OBJDIR)/testing_core.o
export OBJ_PLUGINS = $(OBJDIR)/plugins.o
export OBJ_PLUGIN_UIS = $(OBJDIR)/plugin_uis.o
export OBJ_METADATA = $(OBJDIR)/metadata.o
export OBJ_FILES = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)
export OBJ_CORE = $(OBJDIR)/core.o
export HOST_OBJ_CORE = $(HOST_OBJDIR)/core.o
export OBJ_DSP = $(OBJDIR)/dsp.o
export HOST_OBJ_DSP = $(HOST_OBJDIR)/dsp.o
export OBJ_CTL_CORE = $(OBJDIR)/ctl_core.o
export OBJ_TK_CORE = $(OBJDIR)/tk_core.o
export OBJ_WS_CORE = $(OBJDIR)/ws_core.o
export OBJ_WS_X11_CORE = $(OBJDIR)/ws_x11_core.o
export OBJ_UI_CORE = $(OBJDIR)/ui_core.o
export OBJ_RES_CORE = $(OBJDIR)/res_core.o
export OBJ_TEST_CORE = $(OBJDIR)/test_core.o
export OBJ_TESTING_CORE = $(OBJDIR)/testing_core.o
export OBJ_PLUGINS = $(OBJDIR)/plugins.o
export OBJ_PLUGIN_UIS = $(OBJDIR)/plugin_uis.o
export OBJ_METADATA = $(OBJDIR)/metadata.o
export HOST_OBJ_METADATA = $(HOST_OBJDIR)/metadata.o
export OBJ_FILES = $(OBJ_CORE) $(OBJ_UI_CORE) $(OBJ_RES_CORE) $(OBJ_PLUGINS) $(OBJ_METADATA)

# Libraries
export LIB_LADSPA = $(OBJDIR)/$(ARTIFACT_ID)-ladspa.so
Expand All @@ -68,11 +73,14 @@ export BIN_PROFILE = $(OBJDIR)/$(ARTIFACT_ID)-profile
export BIN_TEST = $(OBJDIR)/$(ARTIFACT_ID)-test

# Utils
export UTL_GENTTL = $(OBJDIR)/lv2_genttl.exe
export UTL_VSTMAKE = $(OBJDIR)/vst_genmake.exe
export UTL_JACKMAKE = $(OBJDIR)/jack_genmake.exe
export UTL_GENPHP = $(OBJDIR)/gen_php.exe
export UTL_RESGEN = $(OBJDIR)/gen_resources.exe
ifeq ($(BUILD_SYSTEM),Windows)
BIN_SUFFIX := .exe
endif
export UTL_GENTTL = $(HOST_OBJDIR)/lv2_genttl$(BIN_SUFFIX)
export UTL_VSTMAKE = $(HOST_OBJDIR)/vst_genmake$(BIN_SUFFIX)
export UTL_JACKMAKE = $(HOST_OBJDIR)/jack_genmake$(BIN_SUFFIX)
export UTL_GENPHP = $(HOST_OBJDIR)/gen_php$(BIN_SUFFIX)
export UTL_RESGEN = $(HOST_OBJDIR)/gen_resources$(BIN_SUFFIX)
export UTL_FILES = $(UTL_GENTTL) $(UTL_VSTMAKE) $(UTL_GENPHP) $(UTL_RESGEN)

# Files
Expand All @@ -90,7 +98,7 @@ SRC_ID := $(ARTIFACT_ID)-src-$(LSP_VERSION)
DOC_ID := $(ARTIFACT_ID)-doc-$(LSP_VERSION)

.DEFAULT_GOAL := all
.PHONY: all experimental trace debug tracefile debugfile profile gdb test testdebug testprofile compile test_compile
.PHONY: all experimental trace debug tracefile debugfile profile gdb test check testdebug testprofile compile test_compile
.PHONY: compile_info
.PHONY: install install_ladspa install_lv2 install_vst install_jack install_doc install_xdg
.PHONY: uninstall uninstall_ladspa uninstall_lv2 uninstall_vst uninstall_jack uninstall_doc uninstall_xdg
Expand All @@ -104,6 +112,7 @@ all: export CXXFLAGS += -O2 -DLSP_NO_EXPERIMENTAL
all: export EXE_FLAGS += -pie -fPIE
all: compile


experimental: export CFLAGS += -O2
experimental: export CXXFLAGS += -O2
experimental: compile
Expand All @@ -121,9 +130,13 @@ test: export MAKE_OPTS += LSP_TESTING=1
test: export BUILD_MODULES = jack
test: test_compile

# Run unit tests
check: test
.test/lsp-plugins-test utest

testdebug: OBJDIR = $(TESTDIR)
testdebug: export CFLAGS += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
testdebug: export CXXFLAGS += -O0 -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
testdebug: export CFLAGS += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
testdebug: export CXXFLAGS += -Og -DLSP_TESTING -DLSP_TRACE -g3 -fstack-protector
testdebug: export EXE_TEST_FLAGS += -g3
testdebug: export MAKE_OPTS += LSP_TESTING=1
testdebug: export BUILD_MODULES = jack
Expand All @@ -148,8 +161,11 @@ debugfile: export CFLAGS += -DLSP_TRACEFILE
debugfile: export CXXFLAGS += -DLSP_TRACEFILE
debugfile: debug

gdb: export CFLAGS += -O0 -g3 -DLSP_TRACE
gdb: export CXXFLAGS += -O0 -g3 -DLSP_TRACE
gdb: export CFLAGS = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
gdb: export CXXFLAGS = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
gdb: export HOST_CXXFLAGS = -std=c++98 -Og -fno-inline -g3 -DLSP_TRACE
gdb: export EXE_FLAGS = -g3
gdb: export HOST_EXE_FLAGS = -g3
gdb: compile

profile: export CFLAGS += -g -pg -DLSP_PROFILING -no-pie -fno-pie -fPIC
Expand All @@ -161,17 +177,17 @@ profile: compile
compile_info:
@echo "-------------------------------------------------------------------------------"
@echo "Building binaries"
@echo " target architecture : $(BUILD_PROFILE)"
@echo " target platform : $(BUILD_PLATFORM)"
@echo " target system : $(BUILD_SYSTEM)"
@echo " compiler : $(BUILD_COMPILER)"
@echo " modules : $(BUILD_MODULES)"
@echo " UI : LV2=$(LV2_UI), VST=$(VST_UI)"
@echo " 3D rendering : $(BUILD_R3D_BACKENDS)"
@echo " build directory : $(OBJDIR)"
@echo " platform : $(BUILD_PLATFORM)"
@echo " system : $(BUILD_SYSTEM)"
@echo " target compiler : $(CXX)"
@echo " target architecture : $(BUILD_PROFILE)"
@echo " modules : $(BUILD_MODULES)"
@echo " UI : LV2=$(LV2_UI), VST=$(VST_UI)"
@echo " 3D rendering : $(BUILD_R3D_BACKENDS)"
@echo " build directory : $(OBJDIR)"
@echo "-------------------------------------------------------------------------------"

compile: | compile_info
compile: utils | compile_info
mkdir -p $(OBJDIR)/src
mkdir -p $(CFGDIR)
test -f "$(CFGDIR)/$(PREFIX_FILE)" || echo -n "$(PREFIX)" > "$(CFGDIR)/$(PREFIX_FILE)"
Expand All @@ -181,15 +197,33 @@ compile: | compile_info
$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
@echo "Build OK"

test_compile: | compile_info
test_compile: utils | compile_info
mkdir -p $(OBJDIR)/src
$(MAKE) $(MAKE_OPTS) -C src all OBJDIR=$(OBJDIR)/src
@echo "Test Build OK"

utils: export BUILD_PROFILE=$(HOST_BUILD_PROFILE)
utils: export OBJDIR=$(HOST_OBJDIR)
utils: export OBJ_CORE=$(HOST_OBJ_CORE)
utils: export OBJ_DSP=$(HOST_OBJ_DSP)
utils: export OBJ_METADATA=$(HOST_OBJ_METADATA)
utils: export CXX=$(HOST_CXX)
utils: export CXXFLAGS=$(HOST_CXXFLAGS)
utils: export LD=$(HOST_LD)
utils: export SNDFILE_HEADERS=$(HOST_SNDFILE_HEADERS)
utils: export SNDFILE_LIBS=$(HOST_SNDFILE_LIBS)
utils: export LV2_HEADERS=$(HOST_LV2_HEADERS)
utils: export LV2_LIBS=$(HOST_LV2_LIBS)
utils: | compile_info
mkdir -p $(HOST_OBJDIR)/src/utils
$(MAKE) $(MAKE_OPTS) -C src utils
@echo "Utils Build OK"

clean:
-rm -rf $(BUILDDIR)
-rm -rf $(TESTDIR)
-rm -rf $(CFGDIR)
rm -rf $(BUILDDIR)
rm -rf $(HOST_BUILDDIR)
rm -rf $(TESTDIR)
rm -rf $(CFGDIR)
@echo "Clean OK"

# Build targets
Expand Down Expand Up @@ -345,7 +379,7 @@ release_doc: | release_prepare

# Unrelease target
unrelease: clean
-rm -rf $(RELEASE)
rm -rf $(RELEASE)
@echo "Unrelease OK"

# Uninstall target
Expand All @@ -354,41 +388,41 @@ uninstall: $(UNINSTALLATIONS)

uninstall_ladspa:
@echo "Uninstalling LADSPA"
-rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so
rm -f $(DESTDIR)$(LADSPA_PATH)/$(ARTIFACT_ID)-ladspa.so

uninstall_lv2:
@echo "Uninstalling LV2"
-rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2
rm -rf $(DESTDIR)$(LV2_PATH)/$(ARTIFACT_ID).lv2

uninstall_vst:
@echo "Uninstalling VST"
-rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
-rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
-rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)
rm -f $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-vst-*.so
rm -rf $(DESTDIR)$(VST_PATH)/$(ARTIFACT_ID)-lxvst-*
rm -rf $(DESTDIR)$(VST_PATH)/$(VST_ID)

uninstall_jack:
@echo "Uninstalling JACK"
-rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
-rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
-rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
-rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)
rm -f $(DESTDIR)$(BIN_PATH)/$(ARTIFACT_ID)-*
rm -f $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)-jack-core-*.so
rm -f $(DESTDIR)$(LIB_PATH)/$(R3D_ARTIFACT_ID)
rm -rf $(DESTDIR)$(LIB_PATH)/$(ARTIFACT_ID)

uninstall_xdg:
@echo "Uninstalling desktop icons"
-rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
-rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
-rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
-rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*
rm -f $(DESTDIR)$(SHARE_PATH)/applications/in.lsp_plug.*.desktop
rm -f $(DESTDIR)$(SHARE_PATH)/desktop-directories/lsp-plugins.directory
rm -f $(DESTDIR)$(ETC_PATH)/xdg/menus/applications-merged/lsp-plugins.menu
rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/16x16/apps/$(ARTIFACT_ID).*
rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/22x22/apps/$(ARTIFACT_ID).*
rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/24x24/apps/$(ARTIFACT_ID).*
rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/32x32/apps/$(ARTIFACT_ID).*
rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/48x48/apps/$(ARTIFACT_ID).*
rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/64x64/apps/$(ARTIFACT_ID).*
rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/128x128/apps/$(ARTIFACT_ID).*
rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/256x256/apps/$(ARTIFACT_ID).*
rm -f $(DESTDIR)$(SHARE_PATH)/icons/hicolor/scalable/apps/$(ARTIFACT_ID).*

uninstall_doc:
@echo "Uninstalling DOC"
-rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)
rm -rf $(DESTDIR)$(DOC_PATH)/$(ARTIFACT_ID)

10 changes: 9 additions & 1 deletion include/metadata/metadata.h
Expand Up @@ -73,10 +73,18 @@
#define LSP_ARCHITECTURE "unknown"
#endif /* ARCH */

#define STRINGIFY_(x) #x
#define STRINGIFY(x) STRINGIFY_(x)

#ifndef LSP_MAIN_VERSION
#define LSP_MAIN_VERSION "0.0.0"
#else
#define LSP_MAIN_VERSION_STR STRINGIFY(LSP_MAIN_VERSION)
#undef LSP_MAIN_VERSION
#define LSP_MAIN_VERSION LSP_MAIN_VERSION_STR
#endif /* LSP_MAIN_VERSION */


#define LSP_LV2_LATENCY_PORT "out_latency"
#define LSP_LV2_ATOM_PORT_IN "in_ui"
#define LSP_LV2_MIDI_PORT_IN "in_midi"
Expand All @@ -86,7 +94,7 @@
#define LSP_LV2_OSC_PORT_OUT "out_osc"

#ifdef LSP_INSTALL_PREFIX
#define LSP_LIB_PREFIX(x) LSP_INSTALL_PREFIX x
#define LSP_LIB_PREFIX(x) STRINGIFY(LSP_INSTALL_PREFIX) x
#else
#define LSP_LIB_PREFIX(x) x
#endif /* PREFIX */
Expand Down