aboutsummaryrefslogblamecommitdiffstats
path: root/Makefile
blob: 1a64ef12bd9a12a23b1d459c4f6837dfee8e95c5 (plain) (tree)
1
2
3
4

          

                      











                   
                
 
                                                                                           
 
                                 
 

                                    
                     


                               

                                        

















                                                                        

                                            




                                                        
                                          


                                           
                           
                                  





                                                 
                           
 

                            




















                                                                                   
         




                                                                               



                                                       
                                                        
                 
 
                                                          
                 
 
                                                          
                 
 
                                                          
                 
 
                                                          
                 
 
                                                          
                 
 
                                                          
                 
 
                                     
                                             
                

                                      
                                                                                              
                      
                                                                                   



                                      
                                                                                                                                    
                      
                                                                                                                      
            
                                                                            

          
                                                        

      
                                           

                                                                                          
 
                                                           
.NONPOSIX:

CONFIGFILE = config.mk
include $(CONFIGFILE)

DIRS =\
	actions\
	apps\
	categories\
	devices\
	emblems\
	emotes\
	mimetypes\
	places\
	status

include icons.mk

ALL_PNG_ICONS = $(foreach S,$(SIZES),$(foreach I,$(ICONS),$(S)x$(S)$(DIR_SUFFIX)/$(I).png))

all: index.theme $(ALL_PNG_ICONS)

all-fast: index.theme all-fast-icons

index.theme: Makefile
	set -e;\
	printf '%s\n' \
		'[Icon Theme]'\
		'Name=$(THEME_NAME)'\
		'Comment=$(THEME_DESC)'\
		'Example=folder'\
		''\
		'# KDE specific stuff'\
		'DisplayDepth=32'\
		'LinkOverlay=link_overlay'\
		'LockOverlay=lock_overlay'\
		'ZipOverlay=zip_overlay'\
		'DesktopDefault=48'\
		'DesktopSizes='$$(printf ',%s' $(SIZES) | sed 's/^,//')\
		'ToolbarDefault=22'\
		'ToolbarSizes=8,16,22,32,48'\
		'MainToolbarDefault=22'\
		'MainToolbarSizes=8,16,22,32,48'\
		'SmallDefault=16'\
		'SmallSizes=16'\
		'PanelDefault=32'\
		'PanelSizes='$$(printf ',%s' $(SIZES) | sed 's/^,//')\
		''\
		> index.theme
	printf 'Directories=' >> index.theme
	set -e;\
	for s in $(SIZES); do\
		for d in $(DIRS); do\
			printf ',%sx%s/%s' $$s $$s $$d;\
		done;\
	done | sed 's/^,//' >> index.theme
	set -e;\
	for d in $(DIRS); do\
		printf ',scalable/%s' $$d;\
	done >> index.theme
	printf '\n' >> index.theme
	set -e;\
	for s in $(SIZES) scalable; do\
		for d in $(DIRS); do\
			printf '\n';\
			./make-dir-info $$s $$d;\
		done;\
	done >> index.theme

all-fast-icons: $(ICONS:=.x)

scalable-$(DIR_SUFFIX_)/%.svg: scalable/%.svg
	@mkdir -p -- "$$(dirname "$@")"
	if ! test "$@" = "scalable/$*.svg"; then\
		if test -L "scalable/$*.svg"; then\
			ln -s "$$(readlink -- "scalable/$*.svg")" $@;\
		else\
			sed < scalable/$*.svg > $@\
				-e 's/#[bB][eE][bB][eE][bB][eE]/#$(BASE_COLOUR)/g'\
				-e 's/#[eE][fF]2929/#$(ALARM_RED)/g'\
				-e 's/#[fF]57900/#$(ALARM_ORANGE)/g'\
				-e 's/#[cC][dD]656[cC]/#$(RED)/g'\
				-e 's/#[dD]69553/#$(ORANGE)/g'\
				-e 's/#[cC][cC][aA][dD]47/#$(YELLOW)/g'\
				-e 's/#32[aA]679/#$(GREEN)/g'\
				-e 's/#00[aA]09[fF]/#$(CYAN)/g'\
				-e 's/#2495[bB][eE]/#$(BLUE)/g'\
				-e 's/#[aA]46[eE][bB]0/#$(MAGENTA)/g'\
				-e 's/#000000/#$(OUTLINE)/g';\
		fi;\
	fi

%.x: conv
	@if test -n "$(DIR_SUFFIX)"; then make scalable$(DIR_SUFFIX)/$*.svg; fi
	@ # Does work as a dependeny in GNU make for some reason,
	@ # additionally, this lets us avoid starting make once
	@ # extra for every icon
	./conv scalable$(DIR_SUFFIX)/$*.svg $(SIZES)

conv: conv.c
	$(CC) -o $@ $< $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)

8x8$(DIR_SUFFIX)/%.png: scalable$(DIR_SUFFIX)/%.svg conv
	./conv $@

16x16$(DIR_SUFFIX)/%.png: scalable$(DIR_SUFFIX)/%.svg conv
	./conv $@

22x22$(DIR_SUFFIX)/%.png: scalable$(DIR_SUFFIX)/%.svg conv
	./conv $@

24x24$(DIR_SUFFIX)/%.png: scalable$(DIR_SUFFIX)/%.svg conv
	./conv $@

32x32$(DIR_SUFFIX)/%.png: scalable$(DIR_SUFFIX)/%.svg conv
	./conv $@

36x36$(DIR_SUFFIX)/%.png: scalable$(DIR_SUFFIX)/%.svg conv
	./conv $@

48x48$(DIR_SUFFIX)/%.png: scalable$(DIR_SUFFIX)/%.svg conv
	./conv $@

install: index.theme $(ALL_PNG_ICONS)
	mkdir -p -- "$(DESTDIR)$(ICONPREFIX)"
	set -e;\
	for d in $(DIRS); do\
		for s in $(SIZES); do\
			mkdir -p -- "$(DESTDIR)$(ICONPREFIX)/$(THEME_DIR)/$${s}x$${s}/$${d}";\
		done;\
		mkdir -p -- "$(DESTDIR)$(ICONPREFIX)/$(THEME_DIR)/scalable/$${d}";\
	done
	set -e;\
	for i in $(ICONS); do\
		for s in $(SIZES); do\
			cp -P -- "$${s}x$${s}$(DIR_SUFFIX)/$${i}.png" "$(DESTDIR)$(ICONPREFIX)/$(THEME_DIR)/$${s}x$${s}/$${i}.png";\
		done;\
		cp -P -- "scalable$(DIR_SUFFIX)/$${i}.svg" "$(DESTDIR)$(ICONPREFIX)/$(THEME_DIR)/scalable/$${i}.svg";\
	done
	cp -- index.theme "$(DESTDIR)$(ICONPREFIX)/$(THEME_DIR)/index.theme"

uninstall:
	rm -rf -- "$(DESTDIR)$(ICONPREFIX)/$(THEME_DIR)"

clean:
	-rm -f -- index.theme *.o *.su conv
	-if test -n "$(DIR_SUFFIX)"; then rm -rf -- scalable$(DIR_SUFFIX); fi
	-for s in $(SIZES); do printf "$${s}x$${s}$(DIR_SUFFIX)\n"; done | xargs rm -rf --

.PHONY: all all-fast all-fast-icons install uninstall clean