Advertisement
Guest User

Untitled

a guest
Jan 24th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #configuration
  4. cd $1
  5. rm makefile
  6. touch makefile
  7. touch operating_file.txt
  8. touch operating_file_.txt
  9.  
  10. #begin_making_makefile
  11. echo "CC = gcc" > makefile
  12. source_files=`ls | grep ".c$" | tr '\n' ' '`
  13. echo "OBJECTS = $source_files" >> makefile
  14. echo "HEADERS = ./headers" >> makefile
  15. files=`ls | grep ".c$"`
  16. echo "$files" > operating_file.txt
  17. i=0
  18.  
  19. #macros and others
  20. for val in $(cat operating_file.txt)
  21. do
  22. home=`grep "#ifdef" $val| tr "#ifdef" "-D " | tr -d ' ' | uniq`
  23. main=`grep "void main" $val`
  24. if [[ -n $main ]]
  25. then
  26. main_prog=$val
  27. touch main_txt.txt
  28. echo $main_prog >> main_txt.txt
  29. main_prog=`sed 's/.c/ /' main_txt.txt | tr -d ' '`
  30. rm main_txt.txt
  31. fi
  32.  
  33. if [[ -n "$home" ]]
  34. then
  35. echo "$home" >> operating_file_.txt
  36. fi
  37. let i=i+1
  38. done
  39.  
  40. macro=`cat operating_file_.txt | uniq`
  41. macro_1=`echo "$macro"`
  42. echo 'CFLAGS = -I$(HEADERS) '"$macro_1" >> makefile
  43. echo 'LIBS = -lm' >> makefile
  44. echo ' ' >> makefile
  45. echo "$main_prog: "'$(OBJECTS)' >> makefile
  46. echo ' $(CC) $(CFLAGS) $(OBJECTS) -o $@ $(LIBS)' >> makefile
  47. echo '' >> makefile
  48.  
  49. for val in $(cat operating_file.txt)
  50. do
  51. touch hej.txt
  52. HEADERY=`grep ".h\"$" $val`
  53. echo $HEADERY > hej.txt
  54. headers=`awk '{for (i=2; i<=NF; i=i+2){print "$(HEADERS)/"$i" ";}}' hej.txt | tr -d '"' | tr -d "\n"`
  55. objects=`echo $val | sed 's/.c/.o/'`
  56. echo "$objects: "'$(SOURCE)/'"$val"" $headers" >> makefile
  57. echo ' $(CC) $(CFLAGS)'" ./$val "'-c -o $@' >> makefile
  58. echo ' ' >> makefile
  59. rm hej.txt
  60. done
  61.  
  62. echo 'clean:' >> makefile
  63. echo ' rm -f *.o '"$main_prog" >> makefile
  64. rm operating_file.txt
  65. rm operating_file_.txt
  66. make
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement