timer: Avoid infinite cycle timer on TCNT write
[simavr] / simavr / Makefile
index 61e0efc..0894c16 100644 (file)
@@ -16,8 +16,8 @@
 #      You should have received a copy of the GNU General Public License
 #      along with simavr.  If not, see <http://www.gnu.org/licenses/>.
 
-SIMAVR_VERSION = ${shell git tag |tail -1}
-SIMAVR_REVISION        = 1
+SIMAVR_VERSION = ${shell git tag |tail -1|sed 's/[^0-9]*//'}
+SIMAVR_REVISION        = 2
 
 target = run_avr
 
@@ -26,7 +26,7 @@ CFLAGS        += -Werror
 # it otherwise eat quite a bit of few cycles, even disabled
 #CFLAGS        += -DCONFIG_SIMAVR_TRACE=1
 
-all:   obj config ${target}
+all:   obj config libsimavr ${target}
 
 include ../Makefile.common
 
@@ -46,15 +46,23 @@ IPATH       += ../include
 # Static library
 #
 ${OBJ}/libsimavr.a     :       ${sim_o}
+ifeq ($(V),1)
+       $(AR) cru $@ $^ && $(RANLIB) $@
+else
        @echo AR $@
        @$(AR) cru $@ $^ && $(RANLIB) $@
+endif
 
 #
 # Shared library (Linux)
 #
 ${OBJ}/libsimavr.so.1  :       ${sim_o}
+ifeq ($(V),1)
+       $(CC) -shared -Wl,-soname,libsimavr.so.1 -o $@ $^
+else
        @echo SHARED $@
        @$(CC) -shared -Wl,-soname,libsimavr.so.1 -o $@ $^
+endif
 
 ${OBJ}/libsimavr.so            : ${OBJ}/libsimavr.so.1
        ln -sf libsimavr.so.1 $@
@@ -65,7 +73,6 @@ ifeq (${shell uname}, Linux)
 libsimavr      :       ${OBJ}/libsimavr.so
 endif
 
-${OBJ}/${target}.o             : libsimavr 
 ${OBJ}/${target}.elf   : ${OBJ}/${target}.o
 
 ${target}      : ${OBJ}/${target}.elf
@@ -93,6 +100,31 @@ endif
        $(MKDIR) $(DESTDIR)/bin
        $(INSTALL) ${OBJ}/${target}.elf $(DESTDIR)/bin/simavr
 
+# Needs 'fpm', oneline package manager. Install with 'gem install fpm'
+# This generates 'mock' debian files, without all the policy, scripts
+# and all the things normal debian requires. If debian decides to roll
+# in simavr officialy, this section shall diseapear
+debian: 
+       rm -rf /tmp/simavr-tmp && mkdir -p /tmp/simavr-tmp/usr && \
+       make install DESTDIR=/tmp/simavr-tmp/usr && \
+       (cd /tmp/simavr-tmp && \
+       fpm -s dir -t deb -C /tmp/simavr-tmp -n libsimavr -v $(SIMAVR_VERSION) \
+               --iteration $(SIMAVR_REVISION) \
+               -d 'libelf' \
+        --description "lean and mean Atmel AVR simulator: Runtime library" \
+        usr/lib/lib*.so* && \
+       fpm -s dir -t deb -C /tmp/simavr-tmp -n libsimavr-dev -v $(SIMAVR_VERSION) \
+               --iteration $(SIMAVR_REVISION) \
+               -d 'libsimavr >= $(SIMAVR_VERSION)' \
+        --description "lean and mean Atmel AVR simulator: Development files" \
+        usr/include usr/lib/lib*.a usr/lib/pkgconfig && \
+       fpm -s dir -t deb -C /tmp/simavr-tmp -n simavr -v $(SIMAVR_VERSION) \
+               --iteration $(SIMAVR_REVISION) \
+               -d 'libsimavr >= $(SIMAVR_VERSION)' \
+        --description "lean and mean Atmel AVR simulator: Executable" \
+        usr/bin ) && \
+       echo Done
+
 config: ${OBJ}/cores.deps sim_core_config.h sim_core_decl.h
 
 #
@@ -101,15 +133,20 @@ config: ${OBJ}/cores.deps sim_core_config.h sim_core_decl.h
 # ship with old version of avr-gcc and associated and needs
 # to be verified
 #
+ifeq ($(V), 1)
+DEBUGLOG=/tmp/simavr_conf.log
+else
+DEBUGLOG=/dev/null
+endif
 sim_core_config.h ${OBJ}/cores.deps: $(cores) Makefile
        @echo CONF $@
        @conf=""; decl=""; array=""; \
-       mkdir -p ${OBJ} ; echo >${OBJ}/cores.deps ; \
+       mkdir -p ${OBJ} ; echo >${OBJ}/cores.deps ; echo >$(DEBUGLOG) ;\
        for core in cores/*.c ; do \
                file=$$core; global=$${core/cores\/sim_}; global=$${global/.c}; \
                upper=$$(echo $$global|tr '[a-z]' '[A-Z]'); \
                if $(CC) -E $(CFLAGS) ${AVR_CPPFLAGS} $$file \
-                       >/dev/null 2>&1 ; then \
+                       >>$(DEBUGLOG) 2>&1 ; then \
                        conf+="#define CONFIG_$$upper 1\n"; \
                        obj=$${file/.c/.o} ; obj=$${obj/cores\/}; \
                        printf "\$${OBJ}/libsimavr.a: \$${OBJ}/$$obj\n">>${OBJ}/cores.deps ; \