Created
January 31, 2015 02:34
-
-
Save Gioyik/844c50000e79208600b0 to your computer and use it in GitHub Desktop.
Get Macros from your compiler
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# imports you need or a kitty will die | |
# if you don't use them :( | |
import os | |
import shlex | |
import subprocess | |
import sys | |
# remplace with the compiler you want to see | |
# compiler macros. | |
# ex. 'G++', 'g++' | |
# 'CC', 'cc' | |
# Want to check cross compilers (android toolchains)? | |
# be sure you set the compiler in PATH var CC | |
c = os.environ.get('CC') | |
def init(): | |
try: | |
# I know this could be more simple with grep | |
# but i want to do it on python. I am a bad guy | |
# and bad guys uses python for all simple things. | |
print '''C compiler found!''' | |
compiler = subprocess.Popen(shlex.split(c) + ['-dM', '-E', '-'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
print compiler | |
except OSError: | |
# Sorry, good luck next time. | |
print '''No acceptable C compiler found!\n''' | |
sys.exit() | |
compiler.stdin.write('\n') | |
print '''\nCompiler macros list\n''' | |
c_out = compiler.communicate()[0] | |
# I save it on a file because so compilers have | |
# really long macros list and check them on a | |
# terminal screen is not the best thing in the | |
# world. | |
print '''Macros saved on compiler-macros file''' | |
print c_out | |
c_out = str(c_out).split('\n') | |
# Print compiler macros as Array. Don0t know if you | |
# will use this but I want to print something. So, | |
# you got it. | |
print c_out | |
# just run it man! | |
init() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment