From 2271b33cdd4d99080be3d77bab389a4f811ffb54 Mon Sep 17 00:00:00 2001 From: Ishotihadus Date: Tue, 10 Dec 2019 19:22:00 +0900 Subject: [PATCH] fix bugs on building extensions --- Rakefile | 6 +++++- ext/decoders/crunch/main.cpp | 2 +- ext/decoders/native/common.h | 25 ++++++++++++++++++++++--- ext/decoders/native/extconf.rb | 2 +- mikunyan.gemspec | 2 +- 5 files changed, 30 insertions(+), 7 deletions(-) diff --git a/Rakefile b/Rakefile index 6009c0e..959de4d 100644 --- a/Rakefile +++ b/Rakefile @@ -9,10 +9,14 @@ end task build: :compile -%w[decoders/native decoders/crunch].each do |dir| +ext_dirs = %w[decoders/native decoders/crunch] + +ext_dirs.each do |dir| Rake::ExtensionTask.new(dir) do |ext| ext.lib_dir = 'lib/mikunyan' end end +task compile: ext_dirs.map{|e| "compile:#{e}".to_sym} + task default: %i[clobber compile spec] diff --git a/ext/decoders/crunch/main.cpp b/ext/decoders/crunch/main.cpp index 4f53921..9fe9e28 100644 --- a/ext/decoders/crunch/main.cpp +++ b/ext/decoders/crunch/main.cpp @@ -147,7 +147,7 @@ void Init_crunch() VALUE mMikunyan = rb_define_module("Mikunyan"); VALUE mDecodeHelper = rb_define_module_under(mMikunyan, "DecodeHelper"); VALUE cCrunchStream = rb_define_class_under(mDecodeHelper, "CrunchStream", rb_cObject); - rb_attr(cCrunchStream, rb_intern("data"), TRUE, FALSE, TRUE); + rb_attr(cCrunchStream, rb_intern("data"), 1, 0, 1); const char* stFileInfoStr[] = {"struct_size", "actual_data_size", "header_size", "total_palette_size", "tables_size", "levels", "level_compressed_size", "color_endpoint_palette_entries", "color_selector_palette_entries", "alpha_endpoint_palette_entries", "alpha_selector_palette_entries"}; stFileInfo = create_rb_struct(sizeof(stFileInfoStr) / sizeof(char*), stFileInfoStr); diff --git a/ext/decoders/native/common.h b/ext/decoders/native/common.h index 80325c3..eafdd8e 100644 --- a/ext/decoders/native/common.h +++ b/ext/decoders/native/common.h @@ -7,11 +7,30 @@ #elif !defined BYTE_ORDER #include #endif -#ifndef LITTLE_ENDIAN -#define LITTLE_ENDIAN __LITTLE_ENDIAN + +#ifndef BYTE_ORDER +#if defined(__BYTE_ORDER__) +#define BYTE_ORDER __BYTE_ORDER__ +#elif defined(__BYTE_ORDER) +#define BYTE_ORDER __BYTE_ORDER +#else +#error "Neither BYTE_ORDER nor __BYTE_ORDER__ is defined." #endif -#ifndef BIG_ENDIAN +#endif + +#ifndef LITTLE_ENDIAN +#if defined(__LITTLE_ENDIAN) +#define LITTLE_ENDIAN __LITTLE_ENDIAN #define BIG_ENDIAN __BIG_ENDIAN +#elif defined(__LITTLE_ENDIAN__) +#define LITTLE_ENDIAN __LITTLE_ENDIAN__ +#define BIG_ENDIAN __BIG_ENDIAN__ +#elif defined(__ORDER_LITTLE_ENDIAN__) +#define LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__ +#define BIG_ENDIAN __ORDER_BIG_ENDIAN__ +#else +#error "Neither LITTLE_ENDIAN, __LITTLE_ENDIAN, nor __ORDER_LITTLE_ENDIAN__ is defined." +#endif #endif #if BYTE_ORDER == LITTLE_ENDIAN diff --git a/ext/decoders/native/extconf.rb b/ext/decoders/native/extconf.rb index 49f6ecf..0a35626 100644 --- a/ext/decoders/native/extconf.rb +++ b/ext/decoders/native/extconf.rb @@ -1,7 +1,7 @@ require 'mkmf' append_cppflags('-std=c11') -append_cppflags('-O3') +append_cppflags('-O2') append_cppflags('-Wall') append_cppflags('-Wextra') append_cppflags('-Wvla') diff --git a/mikunyan.gemspec b/mikunyan.gemspec index e25855a..9df9478 100644 --- a/mikunyan.gemspec +++ b/mikunyan.gemspec @@ -21,7 +21,7 @@ Gem::Specification.new do |spec| spec.bindir = 'exe' spec.executables = spec.files.grep(%r{^exe/}){|f| File.basename(f)} spec.require_paths = ['lib'] - spec.extensions = ['ext/decoders/native/extconf.rb'] + spec.extensions = ['ext/decoders/native/extconf.rb', 'ext/decoders/crunch/extconf.rb'] spec.add_dependency 'bin_utils', '~> 0' spec.add_dependency 'chunky_png', '~> 1'