Skip to main content
Sign in
Snippets Groups Projects
Select Git revision
  • 35db2e07f1b90a8fcb67f6cdb287074100729e2b
  • master default
  • labcomm2014
  • labcomm2006
  • python_sig_hash
  • typedefs
  • anders.blomdell
  • typeref
  • pragma
  • compiler-refactoring
  • labcomm2013
  • v2014.6
  • v2015.0
  • v2014.5
  • v2014.4
  • v2006.0
  • v2014.3
  • v2014.2
  • v2014.1
  • v2014.0
  • v2013.0
21 results

nested.lc

Blame
  • Makefile 2.73 KiB
    ## Macros
    
    # Use LLVM clang if it's found.
    CC = $(shell hash clang 2>/dev/null && echo clang || echo gcc)
    CFLAGS = -g -Wall -Werror -I. -Itest
    LDFLAGS = -L .
    LDLIBS_TEST = -lcunit -llabcomm
    
    OBJS= labcomm.o labcomm_dynamic_buffer_reader_writer.o labcomm_fd_reader_writer.o labcomm_mem_reader.o labcomm_mem_writer.o
    LABCOMMC_PATH=../../compiler
    LABCOMMC_JAR=$(LABCOMMC_PATH)/labComm.jar
    
    TEST_DIR=test
    TESTDATA_DIR=$(TEST_DIR)/testdata
    TEST_GEN_DIR=$(TESTDATA_DIR)/gen
    
    VPATH=$(TEST_DIR)
    
    CREATED_DIRS=$(TEST_DIR) $(TESTDATA_DIR) $(TEST_GEN_DIR)
    
    # Enable experimental objects by invoking make like `make LABCOMM_EXPERIMENTAL=true`
    ifeq ($(LABCOMM_EXPERIMENTAL),true)
    	OBJS += experimental/udp_hack.o experimental/ethaddr.o \
    		experimental/labcomm_thr_reader_writer.o \
    		experimental/ThrottleDrv/ethernet_drv.o \
    		experimental/ThrottleDrv/throttle_drv.o \
    		experimental/labcomm_udp_reader_writer.o
    endif
    
    ## Targets
    
    .PHONY: all run-test clean distclean
    
    all: liblabcomm.a test/test_labcomm_errors
    
    liblabcomm.a: $(OBJS)
    	ar -r liblabcomm.a $^
    
    
    labcomm.o : labcomm.c labcomm.h  labcomm_private.h
    
    labcomm_fd_reader_writer.o : labcomm_fd_reader_writer.c  labcomm_fd_reader_writer.h  labcomm.h  labcomm_private.h
    
    $(TEST_DIR)/labcomm_mem_reader.o: labcomm_fd_reader_writer.c labcomm_fd_reader_writer.h
    
    $(TEST_DIR)/labcomm_mem_writer.o: labcomm_mem_writer.c labcomm_mem_writer.h cppmacros.h
    
    ethaddr.o: ethaddr.c
    
    $(CREATED_DIRS):
    	mkdir -p $@
    
    ## NB! the tests need CUnit to be installed
    run-test: $(TEST_DIR)/test_labcomm $(TEST_DIR)/test_labcomm_errors |$(TEST_DIR)
    	test/test_labcomm
    	test/test_labcomm_errors
    
    $(TEST_DIR)/test_labcomm_errors: $(TEST_DIR)/test_labcomm_errors.o liblabcomm.a |$(TEST_DIR)
    	$(CC) $(CFLAGS) $(LDFLAGS) -llabcomm -o $@ $^
    
    $(TEST_DIR)/test_labcomm_errors.o: $(TEST_DIR)/test_labcomm_errors.c $(TEST_DIR)/test_labcomm_errors.h |$(TEST_DIR)
    	cd test; $(CC) $(CFLAGS) -I .. -c $(patsubst $(TEST_DIR)/%, %, $^)
    
    $(TEST_DIR)/test_labcomm.o: $(TEST_DIR)/test_labcomm.c $(TEST_GEN_DIR)/test_sample.h |$(TEST_DIR)
    	$(CC) -c $(CFLAGS) -o $@ $<
    
    $(TEST_DIR)/test_labcomm: $(TEST_DIR)/test_labcomm.o $(TEST_GEN_DIR)/test_sample.o liblabcomm.a
    	$(CC) $(CFLAGS) $(LDFLAGS) $(filter-out %.a,$^) $(LDLIBS) $(LDLIBS_TEST) -o $@
    
    $(TEST_GEN_DIR)/%.c $(TEST_GEN_DIR)/%.h: $(TESTDATA_DIR)/%.lc $(LABCOMMC_JAR) |$(TEST_GEN_DIR)
    	java -jar $(LABCOMMC_JAR) --c=$(patsubst %.h,%.c,$@) --h=$(patsubst %.c,%.h,$@) $<
    
    $(LABCOMMC_JAR):
    	@echo "======Building LabComm compiler======"
    	cd $(LABCOMMC_PATH); ant jar
    	@echo "======End building LabComm compiler======"
    
    %.o: %.c %.h
    
    clean:
    	$(RM) *.o
    	$(RM) experimental/*.o experimental/ThrottleDrv/*.o
    	$(RM) test/*.o
    	$(RM) test/*.gch
    	$(RM) test/test_labcomm_errors
    	$(RM) $(TEST_DIR)/test_labcomm
    
    distclean: clean
    	$(RM) liblabcomm.a