Sponsored Content
Top Forums Shell Programming and Scripting Makefile doesn't update $< variable Post 302510021 by Kodreanu on Friday 1st of April 2011 10:36:30 AM
Old 04-01-2011
Makefile doesn't update $< variable

Hello guys,

I could use advise from more experienced guys about my Makefile. In short, the problem with my Makefile is that $< doesnt change
inside my rule.

Here is my Makefile:

Code:
# Makefile for CORE

CC = gcc.exe
AS = as.exe
AR = ar.exe

INCLUDE = \
-I../lib/tomcrypt/inc \
-I../lib/tommath/inc \
-I../lib/hal_dev/traces_gnu/inc \


CFLAGS = -DCORE_SW_VERSION='"CORE.07.01.04.01.03.01.R"' -D__HAL_DBG__ -D__MQX_FIO__ -O1 -g3 -Wall -c -fmessage-length=0  -std=c99 -fgnu89-inline -mno-volatile-cache $(INCLUDE)


OBJDIR = $(shell pwd)
SOURCEDIR = ../sources
PATTERN = ..

#this scans for .c files, and there is a lot of them
CSRC := $(shell find $(SOURCEDIR) -name '*.c')

#I have also tried with CSRC = $(shell find $(SOURCEDIR) -name '*.c'), same thing

OBJ = $(CSRC:.c=.o)
OBJS = $(patsubst ../%,$(OBJDIR)/%,$(OBJ)) 



.PHONY: all
all: $(OBJS)	
	../libprocess.sh dev traces_gnu 16.01.06.01.06.00 dummy
	$(AR) -q CORE.07.01.04.01.03.01.R.a $(OBJS)	
	../release.sh dev dev CORE.07.01.04.01.03.01.R traces_gnu CORE.07.01.04.01.03.01.R.a GNU dummy

.PHONY: csrc
csrc: $(CSRC)
	$(CC) $(CFLAGS) $(CSRC)

.PHONY: asm
asm: $(SSRC)
	$(AS) $(SSRC)

.PHONY: clean
clean:
	rm -f $(OBJS)
	
$(OBJS): $(CSRC)		
	mkdir -p $(dir $@)	
	$(CC) $(CFLAGS) $< -o $@

------------------------

Now, I have printed $< inside my $(OBJS) rule and I can see that this doesn't change, that it's always first file in the line of the strings.
Do you see where is the mistake? Thanks!

Last edited by pludi; 04-01-2011 at 11:57 AM..
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

ksh: A part of variable A's name is inside of variable B, how to update A?

This is what I tried: vara=${varb}_count (( vara += 1 )) Thanks for help (4 Replies)
Discussion started by: pa3be
4 Replies

2. Shell Programming and Scripting

Is there any way to set env variable in top level Makefile and unset when done

Hello I have compilation directory structure the top level Makefile is the one that contains all the sub directories I want to set in this Makefile env variable say : setenv OPTIMIZATION_LEVEL "1" and when all the sub directories done compiling it will set this variable to different lavel... (0 Replies)
Discussion started by: umen
0 Replies

3. Shell Programming and Scripting

alternative for recursive variable in Makefile?

Hi, I want to append some compiler flags to CFLAGS_LOCAl variable defined in one makefile. I am trying to append required flags in another makefile like this: CFALGS_LOCAL = $(CFLAGS_LOCAL) +check=all but when I make, I get the error: ../../../../rules/target.rules:4: *** Recursive... (2 Replies)
Discussion started by: prits31
2 Replies

4. Programming

Makefile: multiple target variable substitution

Greetings! Basically, I would like to properly handle this with gnu make: alltools: my_tool mysecond_tool mythird_tool etc_tool %_tool: dir1/%_tool.vf dir2/%_tool/subdir2/%_tool.ver <tab>@echo done %.vf: <tab>RUN_VF $* %.ver: <tab>RUN_VER $* So, if I were to do something like:... (0 Replies)
Discussion started by: Harlinator
0 Replies

5. Solaris

Setting/Modifying variable specific to target in Makefile

Hi, I have a small piece of Makefile script which throw's error on Sun Sparc machine, but works fine with Sun Optron, Linux, AIX machines. FOO=Naveen test1:FOO=Dhilip test1: @echo FOO is ${FOO} test2: @echo Me is ${FOO} Output on Sun Sparc - ukhml-v890new-~/test: make test1... (5 Replies)
Discussion started by: nsriram
5 Replies

6. Shell Programming and Scripting

how to programmatically generate makefile variable

I make to parse the release version from a text file and set the release version label into a Makefile variable. I tried: VERSION := `grep vsn s1db.app|sed -e s/*\"// -e s/\"*//` but looks like make, unlike shell, literally just take the entire `grep ...` as the variable value. Then I tried... (3 Replies)
Discussion started by: benkial
3 Replies

7. UNIX for Advanced & Expert Users

Why updating atime doesn't update ctime?

Hi, ctime is the inode change time. If reading a file, its atime will be updated, which should cause inode member i_atime changed, which is an inode change. So ctime should also be updated. But if I try to ls a directory on redhat, only the directory atime gets updated, not ctime. Why? THANKS! (2 Replies)
Discussion started by: password636
2 Replies

8. Shell Programming and Scripting

Chopping off the last directory in a Makefile variable

Hi everybody, I have a Makefile where I need to use an environment variable that I set, MYBUILDPATH. The variable can be different depending on the computer, but it always ends with /myBuildRoot/data_tables. Sometimes the data_tables directory will have a slash after it, sometimes not, depending... (2 Replies)
Discussion started by: Zel2008
2 Replies

9. AIX

AIX 6.1 TL8 update : bos.aso doesn't install.

Hello. An update of TL from TL7 to TL8 is ending with errors : Requisite Failures ------------------ SELECTED FILESETS: The following is a list of filesets that you asked to install. They cannot be installed until all of their requisite filesets are also installed. See subsequent... (4 Replies)
Discussion started by: stephnane
4 Replies
XMKMF(1)						      General Commands Manual							  XMKMF(1)

NAME
xmkmf - create a Makefile from an Imakefile SYNOPSIS
xmkmf [ -a ] [ topdir [ curdir ] ] DESCRIPTION
The xmkmf command is the normal way to create a Makefile from an Imakefile shipped with third-party software. When invoked with no arguments in a directory containing an Imakefile, the imake program is run with arguments appropriate for your system (configured into xmkmf when X was built) and generates a Makefile. When invoked with the -a option, xmkmf builds the Makefile in the current directory, and then automatically executes ``make Makefiles'' (in case there are subdirectories), ``make includes'', and ``make depend'' for you. This is the normal way to configure software that is out- side the X Consortium build tree. If working inside the X Consortium build tree (unlikely unless you are an X developer, and even then this option is never really used), the topdir argument should be specified as the relative pathname from the current directory to the top of the build tree. Optionally, curdir may be specified as a relative pathname from the top of the build tree to the current directory. It is necessary to supply curdir if the current directory has subdirectories, or the Makefile will not be able to build the subdirectories. If a topdir is given, xmkmf assumes nothing is installed on your system and looks for files in the build tree instead of using the installed versions. SEE ALSO
imake(1) X Version 11 Release 6.6 XMKMF(1)
All times are GMT -4. The time now is 08:27 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy