uiq3.mak 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. #######################################################################
  2. ### App specific part - this must be defined
  3. #NAME="AnimatedStereogram"
  4. #VENDOR="Pal Szasz"
  5. #UID2=100039CE
  6. #UID3=E0004201
  7. #EPOCLIBS="euser.lib apparc.lib cone.lib eikcore.lib eikcoctl.lib qikcore.lib fbscli.lib estlib.lib"
  8. #EPOCROOT=/opt/space/uiq3/
  9. #######################################################################
  10. APPNAME ?= "UIQ3 Program"
  11. VENDOR ?= "Somebody"
  12. UID2 ?= 100039CE
  13. UID3 ?= E0001001
  14. VER_MAJ ?= 1
  15. VER_MIN ?= 0
  16. STACK ?= 0x1000
  17. HEAP ?= 0x1000,0x100000
  18. EPOCROOT ?= /opt/space/uiq3/
  19. GCCPREF ?= arm-none-symbianelf
  20. GCCPATH ?= $(EPOCROOT)/gcc
  21. GCCVER ?= 3.4.3
  22. export EPOCROOT
  23. NAME_ := $(shell echo $(APPNAME) | sed 's: ::g')
  24. NAME := $(shell perl -e "print lc(\"$(NAME_)\")")
  25. EPOCLIBS += euser.lib apparc.lib cone.lib eikcore.lib eikcoctl.lib qikcore.lib fbscli.lib estlib.lib qikallocdll.lib
  26. EPOCREL = $(EPOCROOT)/epoc32/release/armv5
  27. CC = $(GCCPREF)-gcc
  28. CXX = $(GCCPREF)-g++
  29. AS = $(GCCPREF)-as
  30. LD = $(GCCPREF)-ld
  31. ELF2E32 = elf2e32
  32. BMCONV = bmconv
  33. EPOCRC = EPOCROOT=$(EPOCROOT) epocrc
  34. PATH := $(EPOCROOT)/bin:$(GCCPATH)/bin:$(GCCPATH)/$(GCCPREF)/bin:$(PATH)
  35. # TODO: do we really need -mapcs?
  36. # -march=armv5t
  37. CFLAGS += -Wall -pipe -nostdinc -msoft-float
  38. CFLAGS += -DNDEBUG -D_UNICODE -D__GCCE__ -D__SYMBIAN32__ -D__EPOC32__ -D__MARM__
  39. CFLAGS += -D__EABI__ -D__MARM_ARMV5__ -D__EXE__ -D__SUPPORT_CPP_EXCEPTIONS__ -D__MARM_ARMV5__
  40. CFLAGS += -D__PRODUCT_INCLUDE__="$(EPOCROOT)/epoc32/include/variant/uiq_3.0.hrh"
  41. CFLAGS += -include $(EPOCROOT)/epoc32/include/gcce/gcce.h
  42. CFLAGS += -I$(EPOCROOT)/epoc32/include -I$(EPOCROOT)/epoc32/include/libc \
  43. -I$(EPOCROOT)/epoc32/include/variant -I$(GCCPATH)/lib/gcc/arm-none-symbianelf/$(GCCVER)/include/
  44. # can't optimize .cpp without -fno-unit-at-a-time
  45. CXXFLAGS += $(CFLAGS) -c -x c++ -mapcs -Wno-ctor-dtor-privacy -Wno-unknown-pragmas -fexceptions -fno-unit-at-a-time
  46. LDFLAGS += -L$(GCCPATH)/lib -L$(GCCPATH)/lib/gcc/$(GCCPREF)/$(GCCVER) -L $(GCCPATH)/$(GCCPREF)/lib
  47. LDFLAGS += --target1-abs --no-undefined -nostdlib -shared
  48. LDFLAGS += -Ttext 0x8000 -Tdata 0x400000 --default-symver
  49. LDFLAGS += -soname $(NAME){000a0000}\[$(UID3)\].exe --entry _E32Startup -u _E32Startup
  50. LDFLAGS += $(EPOCROOT)/epoc32/release/armv5/urel/eexe.lib
  51. LDFLAGS += -o $(NAME).elf.exe -Map $(NAME).exe.map
  52. LDFLAGS2 = $(EPOCREL)/urel/qikalloc.lib $(EPOCREL)/lib/euser.dso
  53. LDFLAGS2 += $(shell for i in $(EPOCLIBS); do echo -n " $(EPOCREL)/lib/$${i%%.lib}.dso "; done)
  54. LDFLAGS2 += $(EPOCREL)/urel/usrt2_2.lib
  55. LDFLAGS2 += $(shell for i in dfpaeabi dfprvct2_2 drtaeabi scppnwdl drtrvct2_2; do echo -n " $(EPOCREL)/lib/$$i.dso "; done)
  56. LDFLAGS2 += -lsupc++ -lgcc
  57. E32FLAGS += --sid=0x$(UID3) --uid1=0x1000007a --uid2=0x$(UID2) --uid3=0x$(UID3)
  58. E32FLAGS += --capability=none --fpu=softvfp --targettype=EXE
  59. E32FLAGS += --output=$(NAME).exe --elfinput=$(NAME).elf.exe
  60. E32FLAGS += --stack=$(STACK)
  61. E32FLAGS += --heap=$(HEAP)
  62. E32FLAGS += --linkas=$(NAME){000a0000}[$(UID3)].exe --libpath=$(EPOCREL)/lib
  63. EPOCRCFLAGS += -I../inc -I- -I$(EPOCROOT)/epoc32/include -I$(EPOCROOT)/epoc32/include/variant -DLANGUAGE_SC
  64. ICONS ?= $(shell echo ../data/appicon/*.bmp)
  65. APPICON ?= $(NAME)appicon.mbm
  66. RSCDIR ?= ../rsc
  67. REGDIR ?= ../reg
  68. SRCH += $(shell echo ../inc/*.h)
  69. SRC += $(shell echo ../src/*.cpp)
  70. SRCRES ?= $(shell echo $(RSCDIR)/*.rss $(RSCDIR)/*.rls $(REGDIR)/*.rss $(REGDIR)/*.rls)
  71. OBJ ?= $(SRC:.cpp=.o)
  72. .PHONY : all mbm icon_mbm rsc reg loc bin sis run
  73. #all : sis
  74. sis : $(NAME).sis
  75. icon_mbm : $(APPICON)
  76. mbm :
  77. $(NAME)appicon.mbg $(NAME)appicon.mbm : $(ICONS)
  78. @echo "Creating multibitmap file..."
  79. $(BMCONV) /h$(NAME)appicon.mbg $(NAME)appicon.mbm \
  80. /c24../data/appicon/icon_small.bmp\
  81. /8../data/appicon/icon_small_mask.bmp\
  82. /c24../data/appicon/icon_large.bmp\
  83. /8../data/appicon/icon_large_mask.bmp\
  84. /c24../data/appicon/icon_xlarge.bmp\
  85. /8../data/appicon/icon_xlarge_mask.bmp
  86. rsc : $(RSCDIR)/$(NAME).rsc
  87. $(RSCDIR)/$(NAME).rsc : $(RSCDIR)/$(NAME).rss # $(RSCDIR)/$(NAME).rls
  88. @echo "Creating $@ ..."
  89. $(EPOCRC) $(EPOCRCFLAGS) -I$(RSCDIR) -u $(RSCDIR)/$(NAME).rss \
  90. -o$(RSCDIR)/$(NAME).rsc -h$(RSCDIR)/$(NAME).rsg -t/tmp -l$(RSCDIR)
  91. reg : $(REGDIR)/$(NAME)_reg.rsc
  92. $(REGDIR)/$(NAME)_reg.rsc : $(REGDIR)/$(NAME)_reg.rss
  93. @echo "Creating $@ ..."
  94. RC_UID2=0x101f8021 RC_UID3=0x$(UID3) $(EPOCRC) $(EPOCRCFLAGS) -I$(REGDIR) \
  95. -u $(REGDIR)/$(NAME)_reg.rss -o$(REGDIR)/$(NAME)_reg.rsc -h$(REGDIR)/$(NAME)_reg.rsg -t/tmp -l$(REGDIR)
  96. loc : $(REGDIR)/$(NAME)_loc.rsc
  97. $(REGDIR)/$(NAME)_loc.rsc : $(REGDIR)/$(NAME)_loc.rss
  98. @echo "Creating $@ ..."
  99. $(EPOCRC) $(EPOCRCFLAGS) -I$(REGDIR) \
  100. -u $(REGDIR)/$(NAME)_loc.rss -o$(REGDIR)/$(NAME)_loc.rsc -h$(REGDIR)/$(NAME)_loc.rsg -t/tmp -l$(REGDIR)
  101. bin : bin_elf
  102. @echo "Elf -> E32"
  103. $(ELF2E32) $(E32FLAGS)
  104. bin_elf : $(NAME).elf.exe
  105. $(NAME).elf.exe : $(OBJ) $(EXTRALIB)
  106. @echo "Linking..."
  107. $(LD) $(LDFLAGS) $(OBJ) $(EXTRALIB) $(LDFLAGS2)
  108. .cpp.o :
  109. @echo "Compiling $< ..."
  110. $(CXX) $(CXXFLAGS) -o $@ $<
  111. $(NAME).sis : icon_mbm mbm rsc reg loc bin
  112. rm -f $(NAME).sis
  113. makesis $(NAME).pkg
  114. mv $(NAME).SIS $(NAME).sis
  115. #cat $(EPOCROOT)/extra/in.pkg extra.pkg | \
  116. # sed "s:APPNAME:$(APPNAME):g" | \
  117. # sed "s:NAME:$(NAME):g" | \
  118. # sed "s:VER_MAJ:$(VER_MAJ):g" | \
  119. # sed "s:VER_MIN:$(VER_MIN):g" | \
  120. # sed "s:UID3:$(UID3):g" | \
  121. # sed "s:VENDOR:$(VENDOR):g" > $(NAME).pkg
  122. run : sis
  123. xterm -e "to-phone m600 $(NAME).sis"
  124. -include .deps
  125. .deps : $(SRC) $(SRCH)
  126. echo > $@
  127. $(CXX) -M -DDEPS $(SRC) $(CXXFLAGS) >> $@
  128. clean :
  129. rm -f $(NAME).exe $(NAME).elf.exe $(OBJ) tags .deps $(NAME).exe.map
  130. rm -f *.bkp ../src/*.bkp ../inc/*.bkp $(RSCDIR)/*.bkp $(REGDIR)/*.bkp
  131. rm -f $(RSCDIR)/*.rsc $(RSCDIR)/*.rsg
  132. rm -f $(REGDIR)/*.rsc $(REGDIR)/*.rsg
  133. rm -f $(APPICON) $(NAME)appicon.mbg $(NAME).mbg