/src/org/ooc/frontend/pkgconfig/PkgInfo.java

http://github.com/nddrylliog/ooc · Java · 65 lines · 33 code · 18 blank · 14 comment · 1 complexity · c6579ef7b89dff99c93f79aa38e7afca MD5 · raw file

  1. package org.ooc.frontend.pkgconfig;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.StringTokenizer;
  5. /**
  6. * Information about a package managed by pkg-config
  7. *
  8. * @author Amos Wenger
  9. */
  10. public class PkgInfo {
  11. /** The name of the package, e.g. gtk+-2.0, or imlib2 */
  12. public final String name;
  13. /** The output of `pkg-config --libs name` */
  14. public final String libsString;
  15. /** The output of `pkg-config --cflags name` */
  16. public final String cflagsString;
  17. /** The C flags (include the include paths) */
  18. public final List<String> cflags;
  19. /** A list of all libraries needed */
  20. public final List<String> libraries;
  21. /** A list of all include paths */
  22. public final List<String> includePaths;
  23. /**
  24. * Create a new Package info
  25. */
  26. public PkgInfo(String name, String libsString, String cflagsString) {
  27. this.name = name;
  28. this.libsString = libsString;
  29. this.cflagsString = cflagsString;
  30. cflags = new ArrayList<String>();
  31. libraries = new ArrayList<String>();
  32. includePaths = new ArrayList<String>();
  33. extractTokens("-l", libsString, libraries);
  34. extractTokens("-I", cflagsString, includePaths);
  35. extractTokens("", cflagsString, cflags);
  36. }
  37. protected void extractTokens(String prefix, String string, List<String> list) {
  38. int prefixLength = prefix.length();
  39. StringTokenizer st = new StringTokenizer(string);
  40. while(st.hasMoreTokens()) {
  41. String token = st.nextToken();
  42. if(token.startsWith(prefix)) {
  43. list.add(token.substring(prefixLength).trim());
  44. }
  45. }
  46. }
  47. }