Newer
Older
Ivica Ico Bukvic
committed
#
# This is a grand unifying Makefile for compiling Pd-extended under MinGW
#
all: install
export CC = gcc
CWD := $(shell pwd)
DESTDIR = $(CWD)/build
cvs_root_dir := $(shell cd $(CWD)/../.. && pwd)
BUILDLAYOUT_DIR = $(cvs_root_dir)/packages
include $(BUILDLAYOUT_DIR)/Makefile.buildlayout
# Generic x86 (tune for Pentium III, since that's most common these days)
OPT_CFLAGS += -mcpu=i586 -mtune=pentium3
# these are sent to all of the various Makefiles so that they all copy their
# output to the same directory tree
DEST_PATHS = BUILDLAYOUT_DIR=$(BUILDLAYOUT_DIR) \
cvs_root_dir=$(cvs_root_dir) \
DESTDIR=$(DESTDIR) \
prefix=$(prefix) \
OPT_CFLAGS="$(OPT_CFLAGS)" \
UNAME=$(UNAME)
PD_INNO_SETUP = pd-inno.iss
package: $(PD_INNO_SETUP)
## this pops up the GUI app
# start $(PD_INNO_SETUP)
## this compiles the package on the command line. On 64-bit Windows
# we have to look in a different path, hence the ugly ifeq below...
ifeq (,$(wildcard /c/Program\ Files/Inno\ Setup\ 5/ISCC.exe))
/c/Program\ Files\ \(x86\)/Inno\ Setup\ 5/ISCC.exe $(PD_INNO_SETUP)
else
Ivica Ico Bukvic
committed
/c/Program\ Files/Inno\ Setup\ 5/ISCC.exe $(PD_INNO_SETUP)
Ivica Ico Bukvic
committed
@echo " "
@echo "win32_inno install succeeded!"
build_pd:
cd $(pd_src)/src && $(MAKE) -f makefile.mingw
pd_install: build_pd
# the autoconf/MinGW setup doesn't compile the extras yet
# $(MAKE) -C $(pd_src)/src $(DEST_PATHS) bin
# -$(MAKE) -C $(pd_src)/src $(DEST_PATHS) install
$(MAKE) -C $(pd_src)/src -f makefile.mingw $(DEST_PATHS) install
install: pd_install prebuilt_install lib_install exe_install
@echo " "
@echo "win32_inno install succeeded!"
prebuilt_install:
$(MAKE) -C $(packages_src) $(DEST_PATHS) extended_install
$(MAKE) -C $(packages_src) $(DEST_PATHS) doc_format
install -p pd-settings.reg $(DESTDIR)$(prefix)
#==============================================================================#
#
## setup Pd binaries
#
#==============================================================================#
#bin_src = /usr/local/bin
Ivica Ico Bukvic
committed
system32 = /c/WINDOWS/system32
lib_install:
# ultimately, the DLLs should be installed in %SystemRoot%\system32 by
# InnoSetup since they are 'officially' named and versioned DLLs, and can be
# shared between apps
# GUI port note: Pd doesn't seem to be able to find the following libs
# unless they are in $(DESTDIR)$(bindir) instead of $(DESTDIR)$(prefix).
# I figured that out by trial and error. If a Windows expert wants to figure
# out a better way to do it, that's fine-- I'm just trying to get it to build
# at all at this point...
Ivica Ico Bukvic
committed
install -d $(DESTDIR)$(prefix)/
install -d $(DESTDIR)$(bindir)
install -p $(bin_src)/libfftw3-3.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libfftw3f-3.dll $(DESTDIR)$(bindir)/
#install -p $(bin_src)/libgnurx-0.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libogg-0.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libsndfile-1.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libvorbis-0.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libvorbisenc-2.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libvorbisfile-3.dll $(DESTDIR)$(bindir)/
Jonathan Wilkes
committed
install -p $(bin_src)/libmp3lame-0.dll $(DESTDIR)$(bindir)/
# I think these two are needed for zexy/matchbox and zexy/regex
install -p $(bin_src)/libsystre-0.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libtre-5.dll $(DESTDIR)$(bindir)/
# For fluid~
install -p $(bin_src)/libfluidsynth-1.dll $(DESTDIR)$(bindir)/
# For other external libs
install -p $(bin_src)/lua53.dll $(DESTDIR)$(bindir)/
#install -p $(bin_src)/pthreadGC2.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libdl-0.dll $(DESTDIR)$(bindir)/
Jonathan Wilkes
committed
install -p $(bin_src)/libportaudio-2.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libFLAC-8.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libspeex-1.dll $(DESTDIR)$(bindir)/
# These are for Gem
install -p $(bin_src)/libftgl-2.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libfreetype-6.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libbz2-1.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libharfbuzz-0.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libglib-2.0-0.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libintl-8.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libiconv-2.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libpng16-16.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/zlib1.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libpcre-1.dll $(DESTDIR)$(bindir)/
install -p $(bin_src)/libgraphite2.dll $(DESTDIR)$(bindir)/
Jonathan Wilkes
committed
# Apparently these Gem dependencies must be in the bindir
# to be found on Windows
-install -p $(DESTDIR)/extra/Gem/gem_film*.dll $(DESTDIR)$(bindir)/
-install -p $(DESTDIR)/extra/Gem/gem_image*.dll $(DESTDIR)$(bindir)/
-install -p $(DESTDIR)/extra/Gem/gem_model*.dll $(DESTDIR)$(bindir)/
-install -p $(DESTDIR)/extra/Gem/gem_record*.dll $(DESTDIR)$(bindir)/
-install -p $(DESTDIR)/extra/Gem/gem_video*.dll $(DESTDIR)$(bindir)/
# these stay with pd.exe
Ivica Ico Bukvic
committed
# if these are installed, include them in the build root
-install -p $(system32)/msvcp71.dll $(DESTDIR)$(bindir)
-install -p $(system32)/msvcr71.dll $(DESTDIR)$(bindir)
#-install -p $(system32)/pthreadVC.dll $(DESTDIR)$(bindir)
install -p $(bin_src)/libwinpthread-1.dll $(DESTDIR)$(bindir)
install -p $(bin_src)/libgcc_s_dw2-1.dll $(DESTDIR)$(bindir)
install -p $(bin_src)/libstdc++-6.dll $(DESTDIR)$(bindir)
Jonathan Wilkes
committed
# lyonpotpourri compiles its own shared lib. On Windows it needs to be
# in the path of the pd executable in order to get loaded. (There's probably
# also a way to add the external lib's path but I don't know how to do that.)
install -p $(DESTDIR)/extra/lyonpotpourri/liblyonpotpourri.dll $(DESTDIR)$(bindir)
Jonathan Wilkes
committed
# fftease also uses a shared lib...
install -p $(DESTDIR)/extra/fftease/libfftease.dll $(DESTDIR)$(bindir)
Ivica Ico Bukvic
committed
exe_install:
install -d $(DESTDIR)$(bindir)
$(PD_INNO_SETUP): $(PD_INNO_SETUP).in
@echo "Making Inno Setup file: $(PD_INNO_SETUP)"
cat "$(PD_INNO_SETUP).in" | \
sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/g' | \
sed 's/PD_VERSION/$(PD_VERSION)/g' | \
sed 's/GIT_VERSION/$(GIT_VERSION)/g' > \
Ivica Ico Bukvic
committed
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
$(PD_INNO_SETUP)
# start $(PD_INNO_SETUP)
#==============================================================================#
#
## CLEAN TARGETS
#
#==============================================================================#
distclean: package_clean
$(MAKE) -C $(packages_src) $(DEST_PATHS) distclean
package_clean:
-rm $(PD_INNO_SETUP)
-rm -rf $(DESTDIR)
-rm -rf Output
clean: package_clean
$(MAKE) -C $(packages_src) $(DEST_PATHS) clean
#==============================================================================#
#
## TEST TARGETS
#
#==============================================================================#
test_package:
echo "No tests here yet"
test_locations:
@echo --------------------------------------------------
@echo "PD_VERSION: $(PD_VERSION)"
@echo "GIT_VERSION: $(GIT_VERSION)"
Ivica Ico Bukvic
committed
@echo "CWD $(CWD)"
@echo "DESTDIR $(DESTDIR)"
@echo "PREFIX $(prefix)"
@echo "BINDIR $(bindir)"
@echo "LIBDIR $(libdir)"
@echo "OBJECTSDIR $(objectsdir)"
@echo "PDDOCDIR $(pddocdir)"
@echo "LIBPDDIR $(libpddir)"
@echo "LIBPDBINDIR $(libpdbindir)"
@echo "HELPDIR $(helpdir)"
@echo "MANUALSDIR $(manualsdir)"
@echo "EXAMPLESDIR $(examplesdir)"
@echo --------------------------------------------------
autoconf --version
@echo --------------------------------------------------
make --version
@echo --------------------------------------------------
gcc --version
.PHONY: all install package clean distclean test_locations test_package exe_install