Browse Source

Start work for new windows toolchain build

Signed-off-by: falkTX <falktx@falktx.com>
tags/v2.3.0-RC1
falkTX 4 years ago
parent
commit
445a758ccd
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
7 changed files with 144 additions and 69 deletions
  1. +4
    -33
      Makefile
  2. +115
    -17
      Makefile.dist.mk
  3. +7
    -4
      data/windows/app-control.py
  4. +7
    -4
      data/windows/app-gui.py
  5. +4
    -4
      data/windows/app-plugin-ui.py
  6. +2
    -2
      source/frontend/carla_app.py
  7. +5
    -5
      source/plugin/Makefile

+ 4
- 33
Makefile View File

@@ -222,39 +222,6 @@ msys2fix:
cp -r source/modules/lilv/sratom-0.6.0/sratom source/includes/sratom cp -r source/modules/lilv/sratom-0.6.0/sratom source/includes/sratom
cp -r source/modules/lilv/lilv-0.24.0/lilv source/includes/lilv cp -r source/modules/lilv/lilv-0.24.0/lilv source/includes/lilv


# ---------------------------------------------------------------------------------------------------------------------
# nuitka

nuitka: bin/carla bin/carla-rack bin/carla-plugin

bin/carla:
python3 -m nuitka \
-j 4 \
--python-flag -O --warn-unusual-code --warn-implicit-exceptions \
--follow-imports \
-o ./$@ \
./source/frontend/carla

bin/carla-rack:
python3 -m nuitka \
-j 8 \
--recurse-all \
--python-flag -O --warn-unusual-code --warn-implicit-exceptions \
--recurse-not-to=PyQt5 \
--file-reference-choice=runtime \
-o ./$@ \
./source/frontend/carla

bin/carla-plugin:
python3 -m nuitka \
-j 8 \
--recurse-all \
--python-flag -O --warn-unusual-code --warn-implicit-exceptions \
--recurse-not-to=PyQt5 \
--file-reference-choice=runtime \
-o ./$@ \
./source/native-plugins/resources/carla-plugin

# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------
# Binaries (arm32) # Binaries (arm32)


@@ -828,6 +795,10 @@ HAVE_DIST = true
endif endif
endif endif


ifeq ($(WIN32),true)
HAVE_DIST = true
endif

ifeq ($(HAVE_DIST),true) ifeq ($(HAVE_DIST),true)
include Makefile.dist.mk include Makefile.dist.mk
else else


+ 115
- 17
Makefile.dist.mk View File

@@ -8,6 +8,17 @@


# ---------------------------------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------------------------------


PYTHON = $(EXE_WRAPPER) $(shell which python3$(APP_EXT))

ifeq ($(WIN32),true)
QT5_DLL_EXT = .dll
QT5_DLL_V = 5
endif

ifeq ($(MACOS),true)
QT5_LIB_PREFIX = lib
endif

QT5_PREFIX = $(shell pkg-config --variable=prefix Qt5OpenGLExtensions) QT5_PREFIX = $(shell pkg-config --variable=prefix Qt5OpenGLExtensions)


# ---------------------------------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------------------------------
@@ -20,30 +31,48 @@ _PLUGIN_UIS = \
xycontroller-ui xycontroller-ui


_QT5_DLLS = \ _QT5_DLLS = \
QtCore \
QtGui \
QtOpenGL \
QtPrintSupport \
QtSvg \
QtWidgets
Qt$(QT5_DLL_V)Core$(QT5_DLL_EXT) \
Qt$(QT5_DLL_V)Gui$(QT5_DLL_EXT) \
Qt$(QT5_DLL_V)OpenGL$(QT5_DLL_EXT) \
Qt$(QT5_DLL_V)PrintSupport$(QT5_DLL_EXT) \
Qt$(QT5_DLL_V)Svg$(QT5_DLL_EXT) \
Qt$(QT5_DLL_V)Widgets$(QT5_DLL_EXT)


_QT5_PLUGINS = \ _QT5_PLUGINS = \
iconengines/libqsvgicon$(LIB_EXT) \
imageformats/libqjpeg$(LIB_EXT) \
imageformats/libqsvg$(LIB_EXT) \
platforms/libqcocoa$(LIB_EXT)
iconengines/$(QT5_LIB_PREFIX)qsvgicon$(LIB_EXT) \
imageformats/$(QT5_LIB_PREFIX)qjpeg$(LIB_EXT) \
imageformats/$(QT5_LIB_PREFIX)qsvg$(LIB_EXT)

ifeq ($(MACOS),true)
_QT5_PLUGINS += \
platforms/$(QT5_LIB_PREFIX)qcocoa$(LIB_EXT)
else ifeq ($(WIN32),true)
_QT5_PLUGINS += \
platforms/$(QT5_LIB_PREFIX)qwindows$(LIB_EXT)
endif

# NOTE this has to be hardcoded for now. oh well
ifeq ($(WIN32),true)
_PYTHON_FILES = \
libpython3.8.dll
endif


_THEME_FILES = \ _THEME_FILES = \
styles/carlastyle.json \ styles/carlastyle.json \
styles/carlastyle$(LIB_EXT) styles/carlastyle$(LIB_EXT)


_CARLA_HOST_FILES = \ _CARLA_HOST_FILES = \
carla-bridge-lv2-cocoa$(APP_EXT) \
carla-bridge-lv2$(LIB_EXT) \ carla-bridge-lv2$(LIB_EXT) \
carla-bridge-native$(APP_EXT) \ carla-bridge-native$(APP_EXT) \
carla-discovery-native$(APP_EXT) \ carla-discovery-native$(APP_EXT) \
libcarla_utils$(LIB_EXT) \
$(_PLUGIN_UIS:%=resources/%$(APP_EXT))
libcarla_utils$(LIB_EXT)

# TODO plugin UIs on windows
ifeq ($(MACOS),true)
_CARLA_HOST_FILES += \
$(_PLUGIN_UIS:%=resources/%$(APP_EXT)) \
carla-bridge-lv2-cocoa$(APP_EXT)
endif


_CARLA_APP_FILES = \ _CARLA_APP_FILES = \
Carla$(APP_EXT) \ Carla$(APP_EXT) \
@@ -51,6 +80,7 @@ _CARLA_APP_FILES = \
$(_CARLA_HOST_FILES) \ $(_CARLA_HOST_FILES) \
$(_QT5_DLLS) \ $(_QT5_DLLS) \
$(_QT5_PLUGINS) \ $(_QT5_PLUGINS) \
$(_PYTHON_FILES) \
$(_THEME_FILES) $(_THEME_FILES)


_CARLA_CONTROL_APP_FILES = \ _CARLA_CONTROL_APP_FILES = \
@@ -58,6 +88,7 @@ _CARLA_CONTROL_APP_FILES = \
libcarla_utils$(LIB_EXT) \ libcarla_utils$(LIB_EXT) \
$(_QT5_DLLS) \ $(_QT5_DLLS) \
$(_QT5_PLUGINS) \ $(_QT5_PLUGINS) \
$(_PYTHON_FILES) \
$(_THEME_FILES) $(_THEME_FILES)


_CARLA_LV2_PLUGIN_FILES = \ _CARLA_LV2_PLUGIN_FILES = \
@@ -88,15 +119,26 @@ _CARLA_VST2SYN_PLUGIN_FILES = \
$(_QT5_PLUGINS:%=carla.vst/Contents/MacOS/resources/%) \ $(_QT5_PLUGINS:%=carla.vst/Contents/MacOS/resources/%) \
$(_THEME_FILES:%=carla.vst/Contents/MacOS/resources/%) $(_THEME_FILES:%=carla.vst/Contents/MacOS/resources/%)


ifeq ($(WIN32),true)
CARLA_APP_FILES = $(_CARLA_APP_FILES:%=build/Carla/%)
CARLA_APP_ZIPS = $(_PLUGIN_UIS:%=build/%/lib/library.zip)
CARLA_CONTROL_APP_FILES = $(_CARLA_CONTROL_APP_FILES:%=build/Carla-Control/%)
else
CARLA_APP_FILES = $(_CARLA_APP_FILES:%=build/Carla.app/Contents/MacOS/%) CARLA_APP_FILES = $(_CARLA_APP_FILES:%=build/Carla.app/Contents/MacOS/%)
CARLA_APP_ZIPS = $(_PLUGIN_UIS:%=build/%.app/Contents/MacOS/lib/library.zip) CARLA_APP_ZIPS = $(_PLUGIN_UIS:%=build/%.app/Contents/MacOS/lib/library.zip)

CARLA_CONTROL_APP_FILES = $(_CARLA_CONTROL_APP_FILES:%=build/Carla-Control.app/Contents/MacOS/%) CARLA_CONTROL_APP_FILES = $(_CARLA_CONTROL_APP_FILES:%=build/Carla-Control.app/Contents/MacOS/%)
endif


# ---------------------------------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------------------------------
# entry point # entry point


ifeq ($(WIN64),true)
TARGETS = Carla-$(VERSION)-win64.zip
else ifeq ($(WIN32),true)
TARGETS = Carla-$(VERSION)-win32.zip
else
TARGETS = Carla-$(VERSION)-macOS.dmg TARGETS = Carla-$(VERSION)-macOS.dmg
endif


dist: $(TARGETS) dist: $(TARGETS)


@@ -110,8 +152,12 @@ Carla-$(VERSION)-macOS.dmg: build/Carla.app/Contents/Info.plist build/Carla-Cont
hdiutil create $@ -srcfolder build/macos-pkg -volname "Carla-$(VERSION)" -fs HFS+ -ov hdiutil create $@ -srcfolder build/macos-pkg -volname "Carla-$(VERSION)" -fs HFS+ -ov
rm -rf build/macos-pkg rm -rf build/macos-pkg


Carla-$(VERSION)-win64.zip: $(CARLA_APP_FILES)
$(call CLEANUP_AND_PATCH_CXFREEZE_FILES,Carla)
# env PYTHONPATH=$(CURDIR)/source/frontend $(PYTHON) ./data/windows/app-gui.py build_exe

# ---------------------------------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------------------------------
# final cleanup, after everything is in place
# macOS final cleanup, after everything is in place


define PATCH_QT_DEPENDENCIES define PATCH_QT_DEPENDENCIES
install_name_tool -change "@rpath/QtCore.framework/Versions/5/QtCore" @executable_path/QtCore ${1} && \ install_name_tool -change "@rpath/QtCore.framework/Versions/5/QtCore" @executable_path/QtCore ${1} && \
@@ -123,6 +169,7 @@ define PATCH_QT_DEPENDENCIES
install_name_tool -change "@rpath/QtMacExtras.framework/Versions/5/QtMacExtras" @executable_path/QtMacExtras ${1} install_name_tool -change "@rpath/QtMacExtras.framework/Versions/5/QtMacExtras" @executable_path/QtMacExtras ${1}
endef endef


ifeq ($(MACOS),true)
define CLEANUP_AND_PATCH_CXFREEZE_FILES define CLEANUP_AND_PATCH_CXFREEZE_FILES
# cleanup # cleanup
find build/${1}.app/Contents/MacOS/ -type f -name "*.py" -delete find build/${1}.app/Contents/MacOS/ -type f -name "*.py" -delete
@@ -142,6 +189,22 @@ define CLEANUP_AND_PATCH_CXFREEZE_FILES
$(call PATCH_QT_DEPENDENCIES,$$f); \ $(call PATCH_QT_DEPENDENCIES,$$f); \
done) done)
endef endef
else ifeq ($(WIN32),true)
define CLEANUP_AND_PATCH_CXFREEZE_FILES
# cleanup
find build/${1}/ -type f -name "*.py" -delete
find build/${1}/ -type f -name "*.pyi" -delete
find build/${1}/ -type f -name "pylupdate.so" -delete
find build/${1}/ -type f -name "pyrcc.so" -delete
find build/${1}/ -type f -name "QtMacExtras*" -delete
find build/${1}/ -type f -name "QtNetwork*" -delete
find build/${1}/ -type f -name "QtSql*" -delete
find build/${1}/ -type f -name "QtTest*" -delete
find build/${1}/ -type f -name "QtXml*" -delete
#find build/${1}/ -type f -name "*.pyc" -delete
rm -rf build/${1}/lib/PyQt5/uic
endef
endif


build/Carla.app/Contents/Info.plist: $(CARLA_APP_FILES) build/Carla.app/Contents/Info.plist: $(CARLA_APP_FILES)
$(call CLEANUP_AND_PATCH_CXFREEZE_FILES,Carla) $(call CLEANUP_AND_PATCH_CXFREEZE_FILES,Carla)
@@ -159,11 +222,18 @@ build/Carla-Control.app/Contents/Info.plist: $(CARLA_CONTROL_APP_FILES)
touch $@ touch $@


# ---------------------------------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------------------------------
# macOS application bundle, depends on cxfreeze library.zip
# application bundle, depends on cxfreeze library.zip


ifeq ($(WIN32),true)
define GENERATE_LIBRARY_ZIP
# FIXME
env PYTHONPATH=$(CURDIR)/source/frontend SCRIPT_NAME=${1} $(PYTHON) ./data/windows/app-gui.py build_exe
endef
else
define GENERATE_LIBRARY_ZIP define GENERATE_LIBRARY_ZIP
env PYTHONPATH=$(CURDIR)/source/frontend SCRIPT_NAME=${1} python3 ./data/macos/bundle.py bdist_mac --bundle-name=${1}
env PYTHONPATH=$(CURDIR)/source/frontend SCRIPT_NAME=${1} $(PYTHON) ./data/macos/bundle.py bdist_mac --bundle-name=${1}
endef endef
endif


# ---------------------------------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------------------------------


@@ -184,6 +254,15 @@ build/Carla.app/Contents/MacOS/lib/library.zip: $(CARLA_APP_ZIPS) data/macos/bun


# ---------------------------------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------------------------------


build/Carla/Carla.exe: build/Carla/lib/library.zip

build/Carla/lib/library.zip: data/windows/app-gui.py # source/frontend/*
$(call GENERATE_LIBRARY_ZIP,Carla)

# $(CARLA_APP_ZIPS)

# ----------------------------------------------------------------------------------------------------------------------------

build/Carla-Control.app/Contents/MacOS/Carla-Control: build/Carla-Control.app/Contents/MacOS/lib/library.zip build/Carla-Control.app/Contents/MacOS/Carla-Control: build/Carla-Control.app/Contents/MacOS/lib/library.zip


build/Carla-Control.app/Contents/MacOS/lib/library.zip: data/macos/bundle.py data/macos/Carla-Control.plist source/frontend/* build/Carla-Control.app/Contents/MacOS/lib/library.zip: data/macos/bundle.py data/macos/Carla-Control.plist source/frontend/*
@@ -231,6 +310,25 @@ build/Carla.app/Contents/MacOS/% build/Carla-Control.app/Contents/MacOS/%: bin/%
-@mkdir -p $(shell dirname $@) -@mkdir -p $(shell dirname $@)
@cp -v $< $@ @cp -v $< $@


# ----------------------------------------------------------------------------------------------------------------------------
# win32 generic bundle files (either Qt or Carla binaries)

build/Carla/libpython3% build/Carla-Control/libpython3%: $(QT5_PREFIX)/bin/libpython3%
-@mkdir -p $(shell dirname $@)
@cp -v $< $@

build/Carla/Qt5% build/Carla-Control/Qt5%: $(QT5_PREFIX)/bin/Qt5%
-@mkdir -p $(shell dirname $@)
@cp -v $< $@

build/Carla/iconengines/% build/Carla-Control/iconengines/%: $(QT5_PREFIX)/lib/qt5/plugins/iconengines/%
-@mkdir -p $(shell dirname $@)
@cp -v $< $@

build/Carla/% build/Carla-Control/%: bin/%
-@mkdir -p $(shell dirname $@)
@cp -v $< $@

# ---------------------------------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------------------------------
# Plugin rules # Plugin rules




+ 7
- 4
data/windows/app-control.py View File

@@ -10,21 +10,24 @@ from cx_Freeze import setup, Executable
# Imports (Custom Stuff) # Imports (Custom Stuff)


from carla_host import VERSION from carla_host import VERSION
from os import getenv


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------


name = getenv("TARGET_NAME")

options = { options = {
"zip_include_packages": ["*"], "zip_include_packages": ["*"],
"zip_exclude_packages": ["PyQt5"], "zip_exclude_packages": ["PyQt5"],
"replace_paths": [["*",".\\lib\\"]], "replace_paths": [["*",".\\lib\\"]],
"build_exe": ".\\CarlaControl\\",
"build_exe": ".\\build\\CarlaControl\\",
"optimize": True, "optimize": True,
} }


exe_options = { exe_options = {
"script": "..\\..\\source\\frontend\\carla-control",
"icon": "..\\..\\resources\\ico\\carla-control.ico",
"copyright": "Copyright (C) 2011-2019 Filipe Coelho",
"script": ".\\source\\frontend\\carla-control",
"icon": ".\\resources\\ico\\carla-control.ico",
"copyright": "Copyright (C) 2011-2021 Filipe Coelho",
"base": "Win32GUI", "base": "Win32GUI",
"targetName": "CarlaControl.exe", "targetName": "CarlaControl.exe",
} }


+ 7
- 4
data/windows/app-gui.py View File

@@ -10,21 +10,24 @@ from cx_Freeze import setup, Executable
# Imports (Custom Stuff) # Imports (Custom Stuff)


from carla_host import VERSION from carla_host import VERSION
from os import getenv


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------


name = getenv("TARGET_NAME")

options = { options = {
"zip_include_packages": ["*"], "zip_include_packages": ["*"],
"zip_exclude_packages": ["PyQt5"], "zip_exclude_packages": ["PyQt5"],
"replace_paths": [["*",".\\lib\\"]], "replace_paths": [["*",".\\lib\\"]],
"build_exe": ".\\Carla\\",
"build_exe": ".\\build\\Carla\\",
"optimize": True, "optimize": True,
} }


exe_options = { exe_options = {
"script": "..\\..\\source\\frontend\\carla",
"icon": "..\\..\\resources\\ico\\carla.ico",
"copyright": "Copyright (C) 2011-2020 Filipe Coelho",
"script": ".\\source\\frontend\\carla",
"icon": ".\\resources\\ico\\carla.ico",
"copyright": "Copyright (C) 2011-2021 Filipe Coelho",
"base": "Win32GUI", "base": "Win32GUI",
"targetName": "Carla.exe", "targetName": "Carla.exe",
} }


+ 4
- 4
data/windows/app-plugin-ui.py View File

@@ -20,14 +20,14 @@ options = {
"zip_include_packages": ["*"], "zip_include_packages": ["*"],
"zip_exclude_packages": ["PyQt5"], "zip_exclude_packages": ["PyQt5"],
"replace_paths": [["*",".\\lib\\"]], "replace_paths": [["*",".\\lib\\"]],
"build_exe": ".\\Carla\\resources\\",
"build_exe": ".\\build\\Carla\\resources\\",
"optimize": True, "optimize": True,
} }


exe_options = { exe_options = {
"script": "..\\..\\bin\\resources\\{}".format(name),
"icon": "..\\..\\resources\\ico\\carla.ico",
"copyright": "Copyright (C) 2011-2019 Filipe Coelho",
"script": ".\\source\\frontend\\{}".format(name),
"icon": ".\\resources\\ico\\carla.ico",
"copyright": "Copyright (C) 2011-2021 Filipe Coelho",
"base": "Win32GUI", "base": "Win32GUI",
"targetName": "{}.exe".format(name), "targetName": "{}.exe".format(name),
} }


+ 2
- 2
source/frontend/carla_app.py View File

@@ -63,9 +63,9 @@ class CarlaApplication():
# Needed for local wine build # Needed for local wine build
if WINDOWS and CWD.endswith(("frontend", "resources")) and os.getenv("CXFREEZE") is None: if WINDOWS and CWD.endswith(("frontend", "resources")) and os.getenv("CXFREEZE") is None:
if kIs64bit: if kIs64bit:
path = "H:\\builds\\msys2-x86_64\\mingw64\\share\\qt5\\plugins"
path = "H:\\PawPawBuilds\\targets\\win64\\lib\\qt5\\plugins"
else: else:
path = "H:\\builds\\msys2-i686\\mingw32\\share\\qt5\\plugins"
path = "H:\\PawPawBuilds\\targets\\win32\\lib\\qt5\\plugins"
QApplication.addLibraryPath(path) QApplication.addLibraryPath(path)


# Use binary dir as library path # Use binary dir as library path


+ 5
- 5
source/plugin/Makefile View File

@@ -27,6 +27,10 @@ OBJDIR := $(CWD)/../build/plugin/Release
MODULEDIR := $(CWD)/../build/modules/Release MODULEDIR := $(CWD)/../build/modules/Release
endif endif


ifeq ($(NEEDS_WINE),true)
EXE_WRAPPER ?= wine
endif

# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------


BUILD_CXX_FLAGS += -I$(CWD)/backend -I$(CWD)/includes -I$(CWD)/modules -I$(CWD)/utils BUILD_CXX_FLAGS += -I$(CWD)/backend -I$(CWD)/includes -I$(CWD)/modules -I$(CWD)/utils
@@ -475,11 +479,7 @@ $(BINDIR)/carla.lv2/manifest.ttl: $(OBJDIR)/carla-lv2-export.cpp.o $(BINDIR)/car
@$(CXX) $< $(LIBS_START) $(LIBS) $(LIBS_END) $(NATIVE_LINK_FLAGS) -o $(BINDIR)/carla-lv2-export$(APP_EXT) @$(CXX) $< $(LIBS_START) $(LIBS) $(LIBS_END) $(NATIVE_LINK_FLAGS) -o $(BINDIR)/carla-lv2-export$(APP_EXT)


@echo "Generating LV2 ttl data" @echo "Generating LV2 ttl data"
ifeq ($(NEEDS_WINE),true)
@cd $(BINDIR) && wine ./carla-lv2-export$(APP_EXT)
else
@cd $(BINDIR) && ./carla-lv2-export$(APP_EXT)
endif
@cd $(BINDIR) && $(EXE_WRAPPER) ./carla-lv2-export$(APP_EXT)
@cd $(BINDIR)/carla.lv2 && ln -sf ../*bridge-* ../carla-discovery-* . @cd $(BINDIR)/carla.lv2 && ln -sf ../*bridge-* ../carla-discovery-* .


$(BINDIR)/carla-lv2-export$(APP_EXT): $(OBJDIR)/carla-lv2-export.cpp.o $(BINDIR)/carla-lv2-export$(APP_EXT): $(OBJDIR)/carla-lv2-export.cpp.o


Loading…
Cancel
Save