|
@@ -1,4 +1,5 @@ |
|
|
RACK_DIR ?= . |
|
|
RACK_DIR ?= . |
|
|
|
|
|
EDITION := Free |
|
|
VERSION_MAJOR := 2 |
|
|
VERSION_MAJOR := 2 |
|
|
VERSION := $(shell jq -r .version Core.json) |
|
|
VERSION := $(shell jq -r .version Core.json) |
|
|
|
|
|
|
|
@@ -163,103 +164,100 @@ endif |
|
|
|
|
|
|
|
|
# The following targets are not supported for public use |
|
|
# The following targets are not supported for public use |
|
|
|
|
|
|
|
|
DIST_NAME = RackFree-$(VERSION)-$(ARCH_NAME) |
|
|
|
|
|
|
|
|
DIST_NAME = Rack$(EDITION)-$(VERSION)-$(ARCH_NAME) |
|
|
ifdef ARCH_MAC |
|
|
ifdef ARCH_MAC |
|
|
DIST_BUNDLE := VCV\ Rack\ $(VERSION_MAJOR)\ Free.app |
|
|
|
|
|
DIST_DIR := dist/$(DIST_BUNDLE) |
|
|
|
|
|
|
|
|
DIST_BUNDLE := VCV Rack $(VERSION_MAJOR) $(EDITION).app |
|
|
else |
|
|
else |
|
|
DIST_DIR := dist/Rack$(VERSION_MAJOR)Free |
|
|
|
|
|
|
|
|
DIST_DIR := Rack$(VERSION_MAJOR)$(EDITION) |
|
|
endif |
|
|
endif |
|
|
DIST_MD := $(wildcard *.md) |
|
|
DIST_MD := $(wildcard *.md) |
|
|
DIST_HTML := $(patsubst %.md, build/%.html, $(DIST_MD)) |
|
|
DIST_HTML := $(patsubst %.md, build/%.html, $(DIST_MD)) |
|
|
DIST_RES := res cacert.pem Core.json template.vcv LICENSE-GPLv3.txt $(DIST_HTML) |
|
|
DIST_RES := res cacert.pem Core.json template.vcv LICENSE-GPLv3.txt $(DIST_HTML) |
|
|
DIST_SDK_DIR := dist/Rack-SDK |
|
|
|
|
|
DIST_SDK = dist/Rack-SDK-$(VERSION)-$(ARCH_NAME).zip |
|
|
|
|
|
|
|
|
DIST_SDK_DIR := Rack-SDK |
|
|
|
|
|
DIST_SDK = Rack-SDK-$(VERSION)-$(ARCH_NAME).zip |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dist: $(DIST_DIR) |
|
|
|
|
|
$(DIST_DIR): $(TARGET) $(STANDALONE_TARGET) $(DIST_HTML) |
|
|
|
|
|
|
|
|
dist: $(TARGET) $(STANDALONE_TARGET) $(DIST_HTML) |
|
|
mkdir -p dist |
|
|
mkdir -p dist |
|
|
ifdef ARCH_LIN |
|
|
ifdef ARCH_LIN |
|
|
mkdir -p $(DIST_DIR) |
|
|
|
|
|
cp $(TARGET) $(DIST_DIR)/ |
|
|
|
|
|
cp $(STANDALONE_TARGET) $(DIST_DIR)/ |
|
|
|
|
|
$(STRIP) -s $(DIST_DIR)/$(TARGET) |
|
|
|
|
|
$(STRIP) -s $(DIST_DIR)/$(STANDALONE_TARGET) |
|
|
|
|
|
|
|
|
mkdir -p dist/"$(DIST_DIR)" |
|
|
|
|
|
cp $(TARGET) dist/"$(DIST_DIR)"/ |
|
|
|
|
|
cp $(STANDALONE_TARGET) dist/"$(DIST_DIR)"/ |
|
|
|
|
|
$(STRIP) -s dist/"$(DIST_DIR)"/$(TARGET) |
|
|
|
|
|
$(STRIP) -s dist/"$(DIST_DIR)"/$(STANDALONE_TARGET) |
|
|
# Manually check that no nonstandard shared libraries are linked |
|
|
# Manually check that no nonstandard shared libraries are linked |
|
|
ldd $(DIST_DIR)/$(TARGET) |
|
|
|
|
|
ldd $(DIST_DIR)/$(STANDALONE_TARGET) |
|
|
|
|
|
|
|
|
ldd dist/"$(DIST_DIR)"/$(TARGET) |
|
|
|
|
|
ldd dist/"$(DIST_DIR)"/$(STANDALONE_TARGET) |
|
|
# Copy resources |
|
|
# Copy resources |
|
|
cp -R $(DIST_RES) $(DIST_DIR)/ |
|
|
|
|
|
cp plugins/Fundamental/dist/Fundamental-*.vcvplugin $(DIST_DIR)/ |
|
|
|
|
|
|
|
|
cp -R $(DIST_RES) dist/"$(DIST_DIR)"/ |
|
|
|
|
|
cp plugins/Fundamental/dist/Fundamental-*.vcvplugin dist/"$(DIST_DIR)"/ |
|
|
endif |
|
|
endif |
|
|
ifdef ARCH_MAC |
|
|
ifdef ARCH_MAC |
|
|
mkdir -p $(DIST_DIR) |
|
|
|
|
|
mkdir -p $(DIST_DIR)/Contents |
|
|
|
|
|
mkdir -p $(DIST_DIR)/Contents/Resources |
|
|
|
|
|
mkdir -p $(DIST_DIR)/Contents/MacOS |
|
|
|
|
|
cp $(TARGET) $(DIST_DIR)/Contents/Resources/ |
|
|
|
|
|
cp $(STANDALONE_TARGET) $(DIST_DIR)/Contents/MacOS/ |
|
|
|
|
|
$(STRIP) -S $(DIST_DIR)/Contents/Resources/$(TARGET) |
|
|
|
|
|
$(STRIP) -S $(DIST_DIR)/Contents/MacOS/$(STANDALONE_TARGET) |
|
|
|
|
|
install_name_tool -change $(TARGET) @executable_path/../Resources/$(TARGET) $(DIST_DIR)/Contents/MacOS/$(STANDALONE_TARGET) |
|
|
|
|
|
|
|
|
mkdir -p dist/"$(DIST_BUNDLE)" |
|
|
|
|
|
mkdir -p dist/"$(DIST_BUNDLE)"/Contents |
|
|
|
|
|
mkdir -p dist/"$(DIST_BUNDLE)"/Contents/Resources |
|
|
|
|
|
mkdir -p dist/"$(DIST_BUNDLE)"/Contents/MacOS |
|
|
|
|
|
cp $(TARGET) dist/"$(DIST_BUNDLE)"/Contents/Resources/ |
|
|
|
|
|
cp $(STANDALONE_TARGET) dist/"$(DIST_BUNDLE)"/Contents/MacOS/ |
|
|
|
|
|
$(STRIP) -S dist/"$(DIST_BUNDLE)"/Contents/Resources/$(TARGET) |
|
|
|
|
|
$(STRIP) -S dist/"$(DIST_BUNDLE)"/Contents/MacOS/$(STANDALONE_TARGET) |
|
|
|
|
|
install_name_tool -change $(TARGET) @executable_path/../Resources/$(TARGET) dist/"$(DIST_BUNDLE)"/Contents/MacOS/$(STANDALONE_TARGET) |
|
|
# Manually check that no nonstandard shared libraries are linked |
|
|
# Manually check that no nonstandard shared libraries are linked |
|
|
otool -L $(DIST_DIR)/Contents/Resources/$(TARGET) |
|
|
|
|
|
otool -L $(DIST_DIR)/Contents/MacOS/$(STANDALONE_TARGET) |
|
|
|
|
|
|
|
|
otool -L dist/"$(DIST_BUNDLE)"/Contents/Resources/$(TARGET) |
|
|
|
|
|
otool -L dist/"$(DIST_BUNDLE)"/Contents/MacOS/$(STANDALONE_TARGET) |
|
|
# Copy resources |
|
|
# Copy resources |
|
|
cp Info.plist $(DIST_DIR)/Contents/ |
|
|
|
|
|
$(SED) 's/{VERSION}/$(VERSION)/g' $(DIST_DIR)/Contents/Info.plist |
|
|
|
|
|
cp -R icon.icns $(DIST_DIR)/Contents/Resources/ |
|
|
|
|
|
cp -R $(DIST_RES) $(DIST_DIR)/Contents/Resources/ |
|
|
|
|
|
cp plugins/Fundamental/dist/Fundamental-*.vcvplugin $(DIST_DIR)/Contents/Resources/ |
|
|
|
|
|
|
|
|
cp Info.plist dist/"$(DIST_BUNDLE)"/Contents/ |
|
|
|
|
|
$(SED) 's/{VERSION}/$(VERSION)/g' dist/"$(DIST_BUNDLE)"/Contents/Info.plist |
|
|
|
|
|
cp -R icon.icns dist/"$(DIST_BUNDLE)"/Contents/Resources/ |
|
|
|
|
|
cp -R $(DIST_RES) dist/"$(DIST_BUNDLE)"/Contents/Resources/ |
|
|
|
|
|
cp plugins/Fundamental/dist/Fundamental-*.vcvplugin dist/"$(DIST_BUNDLE)"/Contents/Resources/ |
|
|
endif |
|
|
endif |
|
|
ifdef ARCH_WIN |
|
|
ifdef ARCH_WIN |
|
|
mkdir -p $(DIST_DIR) |
|
|
|
|
|
cp $(TARGET) $(DIST_DIR)/ |
|
|
|
|
|
cp $(STANDALONE_TARGET) $(DIST_DIR)/ |
|
|
|
|
|
$(STRIP) -s $(DIST_DIR)/$(TARGET) |
|
|
|
|
|
$(STRIP) -s $(DIST_DIR)/$(STANDALONE_TARGET) |
|
|
|
|
|
|
|
|
mkdir -p dist/"$(DIST_DIR)" |
|
|
|
|
|
cp $(TARGET) dist/"$(DIST_DIR)"/ |
|
|
|
|
|
cp $(STANDALONE_TARGET) dist/"$(DIST_DIR)"/ |
|
|
|
|
|
$(STRIP) -s dist/"$(DIST_DIR)"/$(TARGET) |
|
|
|
|
|
$(STRIP) -s dist/"$(DIST_DIR)"/$(STANDALONE_TARGET) |
|
|
# Copy resources |
|
|
# Copy resources |
|
|
cp -R $(DIST_RES) $(DIST_DIR)/ |
|
|
|
|
|
cp /mingw64/bin/libwinpthread-1.dll $(DIST_DIR)/ |
|
|
|
|
|
cp /mingw64/bin/libstdc++-6.dll $(DIST_DIR)/ |
|
|
|
|
|
cp /mingw64/bin/libgcc_s_seh-1.dll $(DIST_DIR)/ |
|
|
|
|
|
cp plugins/Fundamental/dist/Fundamental-*.vcvplugin $(DIST_DIR)/ |
|
|
|
|
|
|
|
|
cp -R $(DIST_RES) dist/"$(DIST_DIR)"/ |
|
|
|
|
|
cp /mingw64/bin/libwinpthread-1.dll dist/"$(DIST_DIR)"/ |
|
|
|
|
|
cp /mingw64/bin/libstdc++-6.dll dist/"$(DIST_DIR)"/ |
|
|
|
|
|
cp /mingw64/bin/libgcc_s_seh-1.dll dist/"$(DIST_DIR)"/ |
|
|
|
|
|
cp plugins/Fundamental/dist/Fundamental-*.vcvplugin dist/"$(DIST_DIR)"/ |
|
|
endif |
|
|
endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sdk: $(DIST_SDK_DIR) |
|
|
|
|
|
$(DIST_SDK_DIR): $(DIST_HTML) |
|
|
|
|
|
mkdir -p $(DIST_SDK_DIR) |
|
|
|
|
|
cp -R include *.mk helper.py $(DIST_HTML) $(DIST_SDK_DIR)/ |
|
|
|
|
|
mkdir -p $(DIST_SDK_DIR)/dep |
|
|
|
|
|
cp -R dep/include $(DIST_SDK_DIR)/dep/ |
|
|
|
|
|
|
|
|
sdk: $(DIST_HTML) |
|
|
|
|
|
mkdir -p dist/$(DIST_SDK_DIR) |
|
|
|
|
|
cp -R include *.mk helper.py $(DIST_HTML) dist/$(DIST_SDK_DIR)/ |
|
|
|
|
|
mkdir -p dist/$(DIST_SDK_DIR)/dep |
|
|
|
|
|
cp -R dep/include dist/$(DIST_SDK_DIR)/dep/ |
|
|
ifdef ARCH_LIN |
|
|
ifdef ARCH_LIN |
|
|
cp $(TARGET) $(DIST_SDK_DIR)/ |
|
|
|
|
|
$(STRIP) -s $(DIST_SDK_DIR)/$(TARGET) |
|
|
|
|
|
|
|
|
cp $(TARGET) dist/$(DIST_SDK_DIR)/ |
|
|
|
|
|
$(STRIP) -s dist/$(DIST_SDK_DIR)/$(TARGET) |
|
|
endif |
|
|
endif |
|
|
ifdef ARCH_MAC |
|
|
ifdef ARCH_MAC |
|
|
cp $(TARGET) $(DIST_SDK_DIR)/ |
|
|
|
|
|
$(STRIP) -S $(DIST_SDK_DIR)/$(TARGET) |
|
|
|
|
|
|
|
|
cp $(TARGET) dist/$(DIST_SDK_DIR)/ |
|
|
|
|
|
$(STRIP) -S dist/$(DIST_SDK_DIR)/$(TARGET) |
|
|
endif |
|
|
endif |
|
|
ifdef ARCH_WIN |
|
|
ifdef ARCH_WIN |
|
|
cp $(TARGET).a $(DIST_SDK_DIR)/ |
|
|
|
|
|
|
|
|
cp $(TARGET).a dist/$(DIST_SDK_DIR)/ |
|
|
endif |
|
|
endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
package: $(DIST_DIR) $(DIST_SDK_DIR) |
|
|
|
|
|
|
|
|
package: |
|
|
ifdef ARCH_LIN |
|
|
ifdef ARCH_LIN |
|
|
# Make ZIP |
|
|
# Make ZIP |
|
|
cd dist && zip -q -9 -r ../$(DIST_NAME).zip $(notdir $(DIST_DIR)) |
|
|
|
|
|
|
|
|
cd dist && zip -q -9 -r $(DIST_NAME).zip "$(DIST_DIR)" |
|
|
endif |
|
|
endif |
|
|
ifdef ARCH_MAC |
|
|
ifdef ARCH_MAC |
|
|
# Clean up and sign bundle |
|
|
# Clean up and sign bundle |
|
|
xattr -cr $(DIST_DIR) |
|
|
|
|
|
codesign --verbose --sign "Developer ID Application: Andrew Belt (V8SW9J626X)" --options runtime --entitlements Entitlements.plist --timestamp --deep $(DIST_DIR)/Contents/Resources/$(TARGET) $(DIST_DIR) |
|
|
|
|
|
codesign --verify --deep --strict --verbose=2 $(DIST_DIR) |
|
|
|
|
|
|
|
|
xattr -cr dist/"$(DIST_BUNDLE)" |
|
|
|
|
|
codesign --verbose --sign "Developer ID Application: Andrew Belt (V8SW9J626X)" --options runtime --entitlements Entitlements.plist --timestamp --deep dist/"$(DIST_BUNDLE)"/Contents/Resources/$(TARGET) dist/"$(DIST_BUNDLE)" |
|
|
|
|
|
codesign --verify --deep --strict --verbose=2 dist/"$(DIST_BUNDLE)" |
|
|
# Make standalone PKG |
|
|
# Make standalone PKG |
|
|
mkdir -p dist/Component |
|
|
mkdir -p dist/Component |
|
|
cp -R $(DIST_DIR) dist/Component/ |
|
|
|
|
|
|
|
|
cp -R dist/"$(DIST_BUNDLE)" dist/Component/ |
|
|
pkgbuild --identifier com.vcvrack.rack --component-plist Component.plist --root dist/Component --install-location /Applications dist/Component.pkg |
|
|
pkgbuild --identifier com.vcvrack.rack --component-plist Component.plist --root dist/Component --install-location /Applications dist/Component.pkg |
|
|
# Make PKG |
|
|
# Make PKG |
|
|
productbuild --distribution Distribution.xml --package-path dist dist/$(DIST_NAME).pkg |
|
|
productbuild --distribution Distribution.xml --package-path dist dist/$(DIST_NAME).pkg |
|
@@ -272,18 +270,20 @@ ifdef ARCH_WIN |
|
|
makensis -DVERSION_MAJOR=$(VERSION_MAJOR) -DVERSION=$(VERSION) "-XOutFile dist/$(DIST_NAME).exe" installer.nsi |
|
|
makensis -DVERSION_MAJOR=$(VERSION_MAJOR) -DVERSION=$(VERSION) "-XOutFile dist/$(DIST_NAME).exe" installer.nsi |
|
|
endif |
|
|
endif |
|
|
# SDK |
|
|
# SDK |
|
|
cd dist && zip -q -9 -r ../$(DIST_SDK) $(notdir $(DIST_SDK_DIR)) |
|
|
|
|
|
|
|
|
cd dist && zip -q -9 -r $(DIST_SDK) $(DIST_SDK_DIR) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lipo: $(DIST_DIR) $(DIST_SDK_DIR) |
|
|
|
|
|
|
|
|
lipo: |
|
|
ifndef OTHER_RACK_DIR |
|
|
ifndef OTHER_RACK_DIR |
|
|
$(error OTHER_RACK_DIR not defined) |
|
|
$(error OTHER_RACK_DIR not defined) |
|
|
endif |
|
|
endif |
|
|
ifdef ARCH_MAC |
|
|
ifdef ARCH_MAC |
|
|
lipo -create -output $(DIST_DIR)/Contents/Resources/$(TARGET) $(DIST_DIR)/Contents/Resources/$(TARGET) $(OTHER_RACK_DIR)/$(DIST_DIR)/Contents/Resources/$(TARGET) |
|
|
|
|
|
lipo -create -output $(DIST_DIR)/Contents/MacOS/$(STANDALONE_TARGET) $(DIST_DIR)/Contents/MacOS/$(STANDALONE_TARGET) $(OTHER_RACK_DIR)/$(DIST_DIR)/Contents/MacOS/$(STANDALONE_TARGET) |
|
|
|
|
|
|
|
|
# App bundle |
|
|
|
|
|
lipo -create -output dist/"$(DIST_BUNDLE)"/Contents/Resources/$(TARGET) dist/"$(DIST_BUNDLE)"/Contents/Resources/$(TARGET) $(OTHER_RACK_DIR)/dist/"$(DIST_BUNDLE)"/Contents/Resources/$(TARGET) |
|
|
|
|
|
lipo -create -output dist/"$(DIST_BUNDLE)"/Contents/MacOS/$(STANDALONE_TARGET) dist/"$(DIST_BUNDLE)"/Contents/MacOS/$(STANDALONE_TARGET) $(OTHER_RACK_DIR)/dist/"$(DIST_BUNDLE)"/Contents/MacOS/$(STANDALONE_TARGET) |
|
|
lipo -create -output $(DIST_SDK_DIR)/$(TARGET) $(DIST_SDK_DIR)/$(TARGET) $(OTHER_RACK_DIR)/$(DIST_SDK_DIR)/$(TARGET) |
|
|
lipo -create -output $(DIST_SDK_DIR)/$(TARGET) $(DIST_SDK_DIR)/$(TARGET) $(OTHER_RACK_DIR)/$(DIST_SDK_DIR)/$(TARGET) |
|
|
cp $(OTHER_RACK_DIR)/$(DIST_DIR)/Contents/Resources/Fundamental-*.vcvplugin $(DIST_DIR)/Contents/Resources/ |
|
|
|
|
|
|
|
|
# Fundamental package |
|
|
|
|
|
cp $(OTHER_RACK_DIR)/dist/"$(DIST_BUNDLE)"/Contents/Resources/Fundamental-*.vcvplugin dist/"$(DIST_BUNDLE)"/Contents/Resources/ |
|
|
endif |
|
|
endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -298,7 +298,7 @@ ifdef ARCH_MAC |
|
|
endif |
|
|
endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
install: dist |
|
|
|
|
|
|
|
|
install: uninstall |
|
|
ifdef ARCH_MAC |
|
|
ifdef ARCH_MAC |
|
|
sudo installer -pkg dist/$(DIST_NAME).pkg -target / |
|
|
sudo installer -pkg dist/$(DIST_NAME).pkg -target / |
|
|
endif |
|
|
endif |
|
@@ -306,7 +306,7 @@ endif |
|
|
|
|
|
|
|
|
uninstall: |
|
|
uninstall: |
|
|
ifdef ARCH_MAC |
|
|
ifdef ARCH_MAC |
|
|
sudo rm -rf /Applications/$(DIST_BUNDLE) |
|
|
|
|
|
|
|
|
sudo rm -rf /Applications/"$(DIST_BUNDLE)" |
|
|
endif |
|
|
endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -315,4 +315,4 @@ cleandist: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.DEFAULT_GOAL := all |
|
|
.DEFAULT_GOAL := all |
|
|
.PHONY: all dep run debug clean dist upload src plugins |
|
|
|
|
|
|
|
|
.PHONY: all dep run debug clean plugins dist sdk package lipo notarize |