aboutsummaryrefslogblamecommitdiffstats
path: root/Game/Code/Makefile.in
blob: 4b0b10a6d889c8ed1c7d01d361464f4280ec479d (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   
                                
                    










                            
                 

                            
 

                                                        


                                                      


                              

                    
                              


                


                                         
                        


                                 
                                      

                         
 
                                                           



                       



                                    
                




                                                                         

                                        




                                                                     
 

                                     

                              

                                                                
                                                



                                            
                                                           
 


                                                




                                             

                                  


                                                                    
 





                                        
 

                                 
                     

                                            
 





                                                                                                                                                                                                                                                                                                                                                                       
 

                                                                   
 
                                                           
 

                                      
 









                                                                          
                               
                                                                                                                          
 
                                    



                                    
              
 
               











                                                                                                            
 
                 
                          
 
 
               
 




                                                          





                                                                                                                                 
                                                                                                                                 




                                                  
                                                                  












                                                                                                                                 

                                                






                                                                                                       
                                            
                                         






















                                                                       
                   













                                                                               
 

             

                            
                                                        




























































                                                                                                                    




                                          
 
                                               

                                                                                                 
                                                  
                                                           
                                                                                 
                              
 


                                                  
           
                                                                                                               
                          

           
                               
 
                                    
                                                                               
 
 






                                                                                                                                 




                                    
                                  





                                                 
##
# Makefile for @PACKAGE_STRING@
# @configure_input@
##

# general definitions
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
libdir = @libdir@
infodir = @infodir@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
datarootdir = @datarootdir@
VPATH = @srcdir@
usdxrootdir = @usdxrootdir@
logrootdir = @logrootdir@

INSTALL_PATH_SUFFIX = @suffix@
INSTALL_datadir = $(datarootdir)/$(INSTALL_PATH_SUFFIX)
INSTALL_logdir = $(logrootdir)/$(INSTALL_PATH_SUFFIX)

@SET_MAKE@

# recursive dir creation tool
MKDIR_P = @MKDIR_P@
# install tool
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
# calls "ln -s"
LN_S = @LN_S@

# Package configuration
USDX_PACKAGE_NAME = @PACKAGE_NAME@
# should be $(USDX_PACKAGE_NAME) instead
USDX_PREFIX = UltraStar
USDX_VERSION = @PACKAGE_VERSION@
USDX_TARNAME = @PACKAGE_TARNAME@

USDX_TOOLS_DIR = $(usdxrootdir)/Tools
USDX_LIB_DIR   = ./lib
USDX_BUILD_DIR = ./build

# file-type suffix of executables (e.g. ".exe" in windows)
EXE_SUFFIX = @EXEEXT@

# Free Pascal compiler
PPC = @PPC@
# FPC target platform and processor
PPLATFORM = @FPC_PLATFORM@
PPROCESSOR = @FPC_PROCESSOR@

EXTRA_SRCDIRS =

# RC resource extraction config
RESEXTRACTOR_NAME = ResourceExtractor
RESEXTRACTOR_DIR = $(USDX_TOOLS_DIR)/$(RESEXTRACTOR_NAME)
RESEXTRACTOR_BIN = $(RESEXTRACTOR_DIR)/$(RESEXTRACTOR_NAME)$(EXE_SUFFIX)
RESOURCE_DIR = $(usdxrootdir)/Resources
RESOURCE_FILE = resource.inc
EXTRA_SRCDIRS += $(RESEXTRACTOR_DIR)

# cwrapper settings
PROJECTM_CWRAPPER_DIR = $(USDX_LIB_DIR)/projectM/cwrapper
@COMMENT_PROJECTM_CWRAPPER@EXTRA_SRCDIRS += $(PROJECTM_CWRAPPER_DIR)

# Directories added to the unit path
PUNIT_TOKEN = -Fu
PUNIT_FLAGS = $(PUNIT_TOKEN).

# Directory where compiled units (.ppu and .o files) are stored
PCUNIT_TOKEN = -FU
PCUNIT_DIR = $(USDX_BUILD_DIR)/$(PPLATFORM)/fpc
PCUNIT_FLAGS = $(PCUNIT_TOKEN)$(PCUNIT_DIR)

# Directories added to the includes path
PINC_TOKEN = -Fi
PINC_FLAGS = $(PINC_TOKEN)$(USDX_LIB_DIR)/JEDI-SDL/SDL/Pas

# FPC flags

# The user can overwrite the default flags with
#   make PFLAGS_BASE="myflags"
PFLAGS_BASE = -S2gi -vB
# The user can specify additional flags with
#   make PFLAGS_EXTRA="myflags"
PFLAGS_EXTRA = @PFLAGS_EXTRA@
PFLAGS_DEBUG   = @PFLAGS_DEBUG@
PFLAGS_RELEASE = @PFLAGS_RELEASE@
# the user's flags (specified with configure) must be the last in
# the list to overwrite the defaults (e.g.with the - option: -Xs-).
PFLAGS = $(PFLAGS_BASE) @PFLAGS_MAKE@ $(PFLAGS_EXTRA)

LIBS = @LIBS@
LDFLAGS = @LDFLAGS@
linkflags = $(strip $(LDFLAGS) $(LIBS))
ifneq ($(linkflags),)
PLINKFLAGS = -k"$(linkflags)"
endif

# dpr project file used as input
USDX_SRC = $(USDX_PREFIX).dpr
# name of executable
USDX_BIN_NAME = $(USDX_PREFIX)$(EXE_SUFFIX)
USDX_BIN = $(usdxrootdir)/$(USDX_BIN_NAME)

modfile = lastmod

.PHONY: debug release recursive all recursive-all dependencies install install-local install-global install-data install-data-recursive install-exec uninstall uninstall-local uninstall-global uninstall-data uninstall-exec clean recursive-clean distclean recursive-distclean clean_obj clean_res fetch-sounds dist debian-package update-modfile $(EXTRA_SRCDIRS)

debug: PFLAGS = $(PFLAGS_BASE) $(PFLAGS_DEBUG) $(PFLAGS_EXTRA)
debug: all

release: PFLAGS = $(PFLAGS_BASE) $(PFLAGS_RELEASE) $(PFLAGS_EXTRA)
release: all

all: recursive-all update-modfile dependencies $(USDX_BIN)

recursive-all: recursive-target = all
recursive-all: recursive

dependencies: $(RESOURCE_FILE)

# call Makefiles in other source-dirs
recursive: $(EXTRA_SRCDIRS)
$(EXTRA_SRCDIRS):
	$(MAKE) -C $@ $(recursive-target)

# clean old data before compiling, otherwise FPC might miss some changes.
$(USDX_BIN): lastmod 
	$(MAKE) clean_obj
	mkdir -p $(PCUNIT_DIR)
	$(PPC) $(strip $(PFLAGS) $(PDEFINES) $(PLINKFLAGS) $(PINC_FLAGS) $(PUNIT_FLAGS) $(PCUNIT_FLAGS)) -o$@ $(USDX_SRC)

install: all install-@install_type@

uninstall: uninstall-@install_type@


# local build

install-local:
	@if [ ! -f "$(usdxrootdir)/Sounds/Common start.mp3" ]; then \
	  echo ""; \
	  echo "# The sound-files from Sound-directory of the 1.0.1-branch are required."; \
	  echo "# Copy them yourself to \"$(usdxrootdir)/Sounds\""; \
	  echo "# or if you are connected to the web try:"; \
	  echo "#  make fetch-sounds"; \
	fi

fetch-sounds:
	svn co https://ultrastardx.svn.sourceforge.net/svnroot/ultrastardx/branches/1.0.1/Sounds tmp-sounds
	mv tmp-sounds/*.mp3 $(usdxrootdir)/Sounds
	rm -rf tmp-sounds

uninstall-local:
	rm -f $(USDX_BIN)


# global build

install-global: install-data install-exec
# TODO: to which user/group/rights must the logdir be set
# "drwxrwxrwx" might be too dangerous
#	$(MKDIR_P) $(INSTALL_logdir)
#	chmod ??? $(INSTALL_logdir)

install-data:
	$(MAKE) RECURSIVE_SRC_DIR=$(usdxrootdir)/Themes RECURSIVE_DST_DIR=$(INSTALL_datadir)/Themes install-data-recursive
	$(MAKE) RECURSIVE_SRC_DIR=$(usdxrootdir)/Sounds RECURSIVE_DST_DIR=$(INSTALL_datadir)/Sounds install-data-recursive
	$(MAKE) RECURSIVE_SRC_DIR=$(usdxrootdir)/Languages RECURSIVE_DST_DIR=$(INSTALL_datadir)/Languages install-data-recursive
	$(MAKE) RECURSIVE_SRC_DIR=$(usdxrootdir)/Skins RECURSIVE_DST_DIR=$(INSTALL_datadir)/Skins install-data-recursive
	$(MAKE) RECURSIVE_SRC_DIR=$(usdxrootdir)/Resources RECURSIVE_DST_DIR=$(INSTALL_datadir)/Resources install-data-recursive

install-data-recursive:
	$(MKDIR_P) $(RECURSIVE_DST_DIR)
	@for file in $(RECURSIVE_SRC_DIR)/*; do \
	  if test -f "$$file"; then \
	    echo $(INSTALL_DATA) "$$file" $(RECURSIVE_DST_DIR); \
	    $(INSTALL_DATA) "$$file" $(RECURSIVE_DST_DIR); \
	  fi; \
	  if test -d "$$file"; then \
	    subdir="$$file"; \
	    subdirname=`basename "$$subdir"`; \
	    $(MAKE) RECURSIVE_SRC_DIR="$$subdir" RECURSIVE_DST_DIR="$(RECURSIVE_DST_DIR)/$$subdirname" install-data-recursive; \
	  fi; \
	done

install-exec:
	$(MKDIR_P) $(bindir)
	$(INSTALL) $(USDX_BIN) $(bindir)

uninstall-global: uninstall-data uninstall-exec
	rmdir $(INSTALL_logdir)

uninstall-data:
# TODO: delete the directories created at the first execution of usdx too (like Screenshots/Playlists)
	rm -rf $(INSTALL_datadir)/Themes
	rm -rf $(INSTALL_datadir)/Sounds
	rm -rf $(INSTALL_datadir)/Languages
	rm -rf $(INSTALL_datadir)/Skins
	rm -rf $(INSTALL_datadir)/Resources
	rmdir $(INSTALL_datadir)	

uninstall-exec:
	rm -f $(bindir)/$(USDX_BIN_NAME)

disttmpdir = ./distdir

dist:
# TODO: this needs some work
#	$(MKDIR_P) $(disttmpdir)
#	acm $(usdxrootdir) $(disttmpdir)
#	$(MAKE) -C $(disttmpdir)/Game/Code distclean 
#	tar cvzf $(USDX_TARNAME)-$(USDX_VERSION).tar.gz $(usdxrootdir)
	@echo "Comming soon"


debpkgoutdir = $(usdxrootdir)/packages
debpkgtmpdir = $(debpkgoutdir)/deb-package
# should be $(USDX_PACKAGE_NAME) instead
debpkgprefix = UltraStarDeluxe
debpkgname = $(debpkgprefix)_$(USDX_VERSION)_$(PPROCESSOR).deb

debian-package: $(debpkgname)

$(debpkgname): all
	rm -rf $(debpkgtmpdir)
	rm -rf $(debpkgoutdir)

	$(MKDIR_P) $(debpkgoutdir)
	$(MKDIR_P) $(debpkgtmpdir)/DEBIAN

	$(MAKE) prefix=$(debpkgtmpdir)/$(prefix) install

	$(INSTALL_DATA) $(debpkgprefix).control $(debpkgtmpdir)/DEBIAN/control

	dpkg-deb --build $(debpkgtmpdir)
	mv $(debpkgtmpdir)/../deb-package.deb $(debpkgoutdir)/$(debpkgname)

#	rm -rf $(debpkgtmpdir)

rpm: all
#	rpm 
	@echo "Coming soon"

macosx_bundle_path = ../../UltraStarDeluxe.app/Contents
macosx-app: all 
# Create double clickable Mac OS X application.

	@echo ""
	@echo "Creating the Mac OS X application"
	@echo ""
	install -d $(macosx_bundle_path)/MacOS
	install -d $(macosx_bundle_path)/Resources

# Strip symbols and copy the binary.
	install -s ../../UltraStar	$(macosx_bundle_path)/MacOS

# Put the icon file into its particular place. 
# Must be done BEFORE info.plist is created.
	install ../../Resources/Graphics/ustar-icon_v01.icns	$(macosx_bundle_path)/Resources/

# the info.plist file
	install MacOSX/Info.plist	$(macosx_bundle_path)/

# Copy the resources. 
# This should be replaced by something like install-data and 
# install-data-recursive and an adjusted prefix or so
	install -d 				$(macosx_bundle_path)/Resources/Artwork
	install ../../Artwork/*			$(macosx_bundle_path)/Resources/Artwork
	install -d 				$(macosx_bundle_path)/Resources/Languages
	install ../../Languages/*		$(macosx_bundle_path)/Resources/Languages
	install -d 					$(macosx_bundle_path)/Resources/Resources/Fonts/Bold
	install ../../Resources/Fonts/Bold/*		$(macosx_bundle_path)/Resources/Resources/Fonts/Bold/
	install -d 					$(macosx_bundle_path)/Resources/Resources/Fonts/Normal
	install ../../Resources/Fonts/Normal/*		$(macosx_bundle_path)/Resources/Resources/Fonts/Normal/
	install -d 					$(macosx_bundle_path)/Resources/Resources/Fonts/Outline\ 1
	install ../../Resources/Fonts/Outline\ 1/*	$(macosx_bundle_path)/Resources/Resources/Fonts/Outline\ 1/
	install -d 					$(macosx_bundle_path)/Resources/Resources/Fonts/Outline\ 2
	install ../../Resources/Fonts/Outline\ 2/*	$(macosx_bundle_path)/Resources/Resources/Fonts/Outline\ 2/
	install -d 				$(macosx_bundle_path)/Resources/Resources/Graphics
	install ../../Resources/Graphics/*	$(macosx_bundle_path)/Resources/Resources/Graphics/
	install -d 				$(macosx_bundle_path)/Resources/Resources/Sounds
	install ../../Resources/Sounds/*	$(macosx_bundle_path)/Resources/Resources/Sounds/
	install -d 				$(macosx_bundle_path)/Resources/Sounds
	install ../../Sounds/*			$(macosx_bundle_path)/Resources/Sounds
	install -d 				$(macosx_bundle_path)/Resources/Themes/Classic
	install ../../Themes/Classic/*		$(macosx_bundle_path)/Resources/Themes/Classic/
	install ../../Themes/Classic.ini	$(macosx_bundle_path)/Resources/Themes
	install -d 				$(macosx_bundle_path)/Resources/Themes/Deluxe
	install ../../Themes/Deluxe/*		$(macosx_bundle_path)/Resources/Themes/Deluxe/
	install ../../Themes/Deluxe.ini		$(macosx_bundle_path)/Resources/Themes
	install ../../License.txt		$(macosx_bundle_path)/Resources/

# the empty dirs
	install -d $(macosx_bundle_path)/Resources/Covers
	install -d $(macosx_bundle_path)/Resources/Logs
	install -d $(macosx_bundle_path)/Resources/Plugins
	install -d $(macosx_bundle_path)/Resources/Screenshots
	install -d $(macosx_bundle_path)/Resources/Visuals

# final messages
	@echo ""
	@echo "Mac OS X application created."
	@echo "Please report issues to the developer team, preferably mischi."
	@echo "Have fun."
	@echo ""

clean: recursive-clean clean_obj

recursive-clean: recursive-target = clean
recursive-clean: recursive

distclean: recursive-distclean clean clean_res
	find . -name "*.o" -o -name "*.ppu" -o -name "*.rst" -o -name "*.compiled" | xargs rm -f
	find . -name "*~" -name "*.bak" -o -name "*.orig" -o -name "*.dcu" | xargs rm -f
	find . -name "__history" | xargs rm -r -f
	rm -f $(USDX_PREFIX).res $(USDX_PREFIX).identcache
	rm -f config.inc Makefile config.log config.status configure aclocal.m4 
	rm -rf autom4te.cache

recursive-distclean: recursive-target = distclean
recursive-distclean: recursive

clean_obj:
	find "$(PCUNIT_DIR)" -name "*.o" -o -name "*.ppu" -o -name "*.rst" -o -name "*.compiled" | xargs rm -f
	rm -f $(USDX_BIN)

clean_res:
	rm -f $(RESOURCE_FILE)

$(RESOURCE_FILE): $(USDX_PREFIX).rc
	$(RESEXTRACTOR_BIN) $(USDX_PREFIX).rc $(RESOURCE_DIR) $(RESOURCE_FILE)


# FPC does not recognize changes correctly. E.g. sometimes changes in .inc-files or
# conditional .pas dependencies are ignored which results in corrupted builds.
# So check for changes with a modification timestamp.
update-modfile:
	test -e $(modfile) || touch $(modfile)
	find . \( -name "*.pas" -o -name "*.pp" -o -name "*.inc" -o -name "*.dpr" \) -newer $(modfile) -exec touch $(modfile) \;
	find $(USDX_LIB_DIR) -name "*.a" -newer $(modfile) -exec touch $(modfile) \;

Makefile: Makefile.in config.status
	./config.status

config.status: configure
	./config.status --recheck

configure: configure.ac config.inc.in aclocal.m4
	autoconf

aclocal.m4: m4/*
	aclocal -I m4