From 2f0c2358f08a526241331b7eaee57a61d388cb2b Mon Sep 17 00:00:00 2001 From: Aaron Sutton Date: Wed, 30 May 2018 21:32:25 -0400 Subject: [PATCH 1/4] Ruby build script --- example/build.rb | 58 ++++++++++++++++++++++++++++++++++++++++++++++ example/config.yml | 15 ++++++++++++ 2 files changed, 73 insertions(+) create mode 100755 example/build.rb create mode 100644 example/config.yml diff --git a/example/build.rb b/example/build.rb new file mode 100755 index 0000000..8958446 --- /dev/null +++ b/example/build.rb @@ -0,0 +1,58 @@ +#!/usr/local/bin/ruby + +require 'yaml' +include Gem + +def command_format(cmd, var) + var.each_pair do |key, value| + cmd = cmd.gsub! "{#{key.to_s}}", value + end + return cmd +end + +data = File.read 'config.yml' +config = YAML.load data, symbolize_names: true + +if ARGF.argv.count < 1 + puts "Usage: build.rb [file]" + exit +end + +program_ext = Platform.local.os == "mswin32" ? '.exe' : '' +program_name = ARGF.argv[0].gsub '.c', program_ext + +unless Dir.exist? config[:bin] + Dir.mkdir config[:bin] +end + +source_files = Dir.entries(config[:source]).select { |e| e.end_with?('.c', '.C') } +source_files.map! {|e| "#{config[:source]}/#{e}"} +source_files << ARGF.argv[0] + +libraries = config[:dlibs].select do |e| + e.keys.include?(Platform.local.os.to_sym) +end + +unless libraries.empty? + common = config[:dlibs].select { |e| e.keys.include?(:common)}.first + libraries << common + libraries.map! { |e| e.values }.flatten! +end + +command = command_format( + "{compiler} {flags} {include} -o {out} {source} {libs} {argv}", + { + compiler: config[:compiler], + flags: config[:cflags].map \ + { |e| !e.start_with?('-') ? e.prepend('-') : e }.join(' '), + include: "-I#{config[:include]}", + out: "#{config[:bin]}/#{program_name}", + source: source_files.join(' '), + libs: libraries.map {|e| "-l#{e}"}.join(' '), + argv: ARGF.argv.count > 1 ? ARGF.argv[1..ARGF.argv.count].join(' ') : "" + } +) + +puts "Compiling #{program_name}..." +`#{command}` +puts "Done" diff --git a/example/config.yml b/example/config.yml new file mode 100644 index 0000000..4bbf45a --- /dev/null +++ b/example/config.yml @@ -0,0 +1,15 @@ +compiler: clang + +source: ../src +include: ../src +bin: ../bin + +cflags: + - 'O1' + - Wall + - std=c99 + - -g + +dlibs: + - mswin32: + - ws2_32 From ea490f84b5374c450c947a942fc7b01ffd9d756d Mon Sep 17 00:00:00 2001 From: Aaron Sutton Date: Wed, 30 May 2018 21:32:40 -0400 Subject: [PATCH 2/4] Remove old script --- example/build.py | 65 ------------------------------------------------ 1 file changed, 65 deletions(-) delete mode 100755 example/build.py diff --git a/example/build.py b/example/build.py deleted file mode 100755 index 7a49e21..0000000 --- a/example/build.py +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/python2.7 -import os, sys - -COMPILER = "gcc" -SRC_DIR = "../src" -INCLUDE_DIR = "../src" -BIN_DIR = "../bin" -BIN_NAME = False -CFLAGS = ["-O3", "-Wall", "-Wextra", "--std=c89", "-pedantic"] -DLIBS = ["ws2_32"] if os.name == "nt" else [] -DEFINES = [] - - -def strformat(fmt, var): - for k in var: - fmt = fmt.replace("{%s}" % str(k), var[k]) - return fmt - - -def listdir(path): - return [os.path.join(dp, f) for dp, dn, fn in os.walk(path) for f in fn] - - -def main(): - os.chdir(sys.path[0]) - - if len(sys.argv) < 2: - print "usage: build.py c_file" - sys.exit() - - global BIN_NAME - if not BIN_NAME: - BIN_NAME = sys.argv[1].replace(".c", ".exe" if os.name == "nt" else "") - - if not os.path.exists(BIN_DIR): - os.makedirs(BIN_DIR) - - cfiles = filter(lambda x:x.endswith((".c", ".C")), listdir(SRC_DIR)) - cfiles.append(sys.argv[1]) - - cmd = strformat( - "{compiler} {flags} {include} {def} -o {outfile} {srcfiles} {libs} {argv}", - { - "compiler" : COMPILER, - "flags" : " ".join(CFLAGS), - "include" : "-I" + INCLUDE_DIR, - "def" : " ".join(map(lambda x: "-D " + x, DEFINES)), - "outfile" : BIN_DIR + "/" + BIN_NAME, - "srcfiles" : " ".join(cfiles), - "libs" : " ".join(map(lambda x: "-l" + x, DLIBS)), - "argv" : " ".join(sys.argv[2:]) - }) - - print "compiling..." - res = os.system(cmd) - - if not res: - print(BIN_DIR + "/" + BIN_NAME) - - print("done" + (" with errors" if res else "")) - - - -if __name__ == "__main__": - main() From 00086b03cf55f61b6a513967556f0e3cb789f5c7 Mon Sep 17 00:00:00 2001 From: Aaron Sutton Date: Wed, 30 May 2018 21:35:06 -0400 Subject: [PATCH 3/4] .gitingore --- .gitingore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitingore diff --git a/.gitingore b/.gitingore new file mode 100644 index 0000000..e660fd9 --- /dev/null +++ b/.gitingore @@ -0,0 +1 @@ +bin/ From d2dcfec276131f291e7c775dbd901440c7917ca9 Mon Sep 17 00:00:00 2001 From: Aaron Sutton Date: Wed, 30 May 2018 21:40:21 -0400 Subject: [PATCH 4/4] fixed untracked files --- bin/echoserv | Bin 0 -> 26444 bytes bin/echoserv.dSYM/Contents/Info.plist | 20 ++++++++++++++++++ .../Contents/Resources/DWARF/echoserv | Bin 0 -> 35497 bytes example/build.rb | 2 ++ 4 files changed, 22 insertions(+) create mode 100755 bin/echoserv create mode 100644 bin/echoserv.dSYM/Contents/Info.plist create mode 100644 bin/echoserv.dSYM/Contents/Resources/DWARF/echoserv diff --git a/bin/echoserv b/bin/echoserv new file mode 100755 index 0000000000000000000000000000000000000000..9e5154b02887a8c960b454e07f1040813848780b GIT binary patch literal 26444 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 A-2eap literal 0 HcmV?d00001 diff --git a/bin/echoserv.dSYM/Contents/Info.plist b/bin/echoserv.dSYM/Contents/Info.plist new file mode 100644 index 0000000..4531c23 --- /dev/null +++ b/bin/echoserv.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.echoserv + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/bin/echoserv.dSYM/Contents/Resources/DWARF/echoserv b/bin/echoserv.dSYM/Contents/Resources/DWARF/echoserv new file mode 100644 index 0000000000000000000000000000000000000000..be3f0c9e641c761bfbdc4909f8f6812c508ba6d6 GIT binary patch literal 35497 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 literal 0 HcmV?d00001 diff --git a/example/build.rb b/example/build.rb index 8958446..0141d5a 100755 --- a/example/build.rb +++ b/example/build.rb @@ -10,6 +10,8 @@ def command_format(cmd, var) return cmd end +Dir.chdir __dir__ + data = File.read 'config.yml' config = YAML.load data, symbolize_names: true