53 Commits

Author SHA1 Message Date
Nobuyoshi Nakada
5fa6ba9568 [Bug #20500] Search non-default directories for jemalloc
Co-Authored-by: lish82 (Hiroki Katagiri)
2024-05-23 13:16:48 +09:00
Nobuyoshi Nakada
0fb39ab1b9
Clean intermediate files and debug info for each target
By replacing `ALLOBJS` suffix with intermediate file suffixes instead
of roughly removing by wildcards.  Made `cleanlibs` append `.dSYM`
suffix for each word in `TARGET_SO`, not the end of the entire list.
2024-03-10 22:12:00 +09:00
Nobuyoshi Nakada
fbec42fb39
Clean up the incidentals to encoding/transcoding objects [ci skip] 2024-03-07 14:16:22 +09:00
Yuta Saito
072761bb3f enc: Define missing POSTLINK variable in enc.mk
This is a follow up change to 71d511615b8dac459d6f88f5896b9859f99c999e
2024-03-04 00:57:57 +09:00
Yuta Saito
57f014b2fa Use configured LD for linking enc and ext libraries
"AR" was well propagated to the enc.mk and mkmf, but "LD" was not. This
caused the dynamic libraries to be linked with a linker found in the PATH,
which could be different from the one used in the Ruby build process.
This is especially important for cross-compilation, where the host
linker may not be compatible with the target system. (e.g. WebAssembly)
2024-03-01 03:16:23 +09:00
Yuta Saito
6d8b9a9d61 Resolve abi symbol references from miniruby to avoid circular deps
Adding `ruby` to `PREP` causes the following circular dependencies
because `PREP` is used as a prerequisite by some targets required to
build `ruby` target itself.
```
make: Circular .rbconfig.time <- ruby dependency dropped.
make: Circular builtin_binary.inc <- ruby dependency dropped.
make: Circular ext/extinit.c <- ruby dependency dropped.
make: Circular ruby <- ruby dependency dropped.
```

Adding a new Make variable like `EXTPREP` only for exts may be also
reasonable, but it would introduce another complexity into our build
system. `-bundle_loader` doesn't care that link-time and run-time
loader executables are different as long as bound symbols are provided,
so it's ok to resolve from miniruby to simplify our build.
2022-08-04 16:29:22 +09:00
Yuta Saito
50d81bfbc1 Link ext bundles with bundle loader option for newer ld64
ld64 shipped with Xcode 14 emits a warning when using `-undefined
dynamic_lookup`.

```
ld: warning: -undefined dynamic_lookup may not work with chained fixups
```

Actually, `-undefined dynamic_lookup` doesn't work when:

1. Link a *shared library* with the option
2. Link it with a program that uses the chained-fixup introduced from
   macOS 12 and iOS 15
because `-undefined dynamic_lookup` uses lazy-bindings and they won't be
bound while dyld fixes-up by traversing chained-fixup info.

However, we build exts as *bundles* and they are loaded only through
`dlopen`, so it's safe to use `-undefined dynamic_lookup` in theory.
So the warning produced by ld64 is false-positive, and it results
failure of option checking in configuration. Therefore, it would be an
option to ignore the warning during our configuration.

On the other hand, `-undefined dynamic_lookup` is already deprecated on
all darwin platforms except for macOS, so it's good time to get rid of
the option. ld64 also provides `-bundle_loader <executable>` option,
which allows to resolve symbols defined in the executable symtab while
linking. It behaves almost the same with `-undefined dynamic_lookup`,
but it makes the following changes:

1. Require that unresolved symbols among input objects must be defined
   in the executable.
2. Lazy symbol binding will lookup only the symtab of the bundle loader
   executable. (`-undefined dynamic_lookup` lookups all symtab as flat
   namespace)

This patch adds `-bundle_loader $(RUBY)` when non-EXTSTATIC
configuration by assuming ruby executable can be linked before building
exts.

See "New Features" subsection under "Linking" section for chained fixup
https://developer.apple.com/documentation/xcode-release-notes/xcode-13-release-notes
2022-08-04 16:29:22 +09:00
Nobuyoshi Nakada
d57c5a7b61 transcode-tblgen.rb: make silent a little when just -v 2020-12-29 17:45:19 +09:00
Nobuyoshi Nakada
21d0b40de2 Added tooldir variable 2020-04-05 09:26:57 +09:00
nobu
d54856c1d4 common.mk: directory timestamps
* common.mk, enc/Makefile.in: moved timestamp files for
  directories under the specific directory, to get rid of match
  with files under the source directory.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55696 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-07-15 21:26:02 +00:00
usa
251d87583b Revert r55693 because it broke building on all platforms (and had no ChangeLog).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55694 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-07-15 20:24:01 +00:00
nobu
2ace43ba57 common.mk: directory timestamps
* common.mk, enc/Makefile.in: moved timestamp files for
  directories under the specific directory, to get rid of match
  with files under the source directory.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-07-15 14:08:20 +00:00
nobu
7373320615 enc: workdir timestamps
* enc/depend: make timestamps for each work directory, instead of
  making for each compilation and link.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53714 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-02-02 04:39:38 +00:00
nobu
fabb8b45cd enc/Makefile.in: get rid of nmake bug
* enc/Makefile.in (ECHO1): expand NULLCMD by configured value to
  get rid of a bug of nmake, that it can expand bare single name
  variable but cannot in substition.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53437 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-01-05 00:48:04 +00:00
nobu
fbbf3afc11 builtin encodings and transcoder locations
* Makefile.in (VPATH, NEWLINE_C), common.mk (common-srcs): make
  and use newline.c under enc/trans directory, not toplevel.  no
  longer search enc directory implicitly.
* configure.in, enc/Makefile.in (BUILTIN_ENCS, BUILTIN_TRANSES):
  prefix respective directory names to builtin encodings and
  transcoder source names.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49317 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-01-18 03:56:52 +00:00
nobu
72aee03262 depend: fix for static library on mswin
* enc/depend (ARFLAGS): VisualC++ linker does not allow spaces between
  output option and the output file name.  [Bug #7950]
* enc/depend (RANLIB): set default command to do nothing, or make the
  entire line a label on Windows.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39489 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-02-25 06:47:23 +00:00
nobu
fbee46fe66 enc/Makefile.in: TARGET_NAME TARGET_ENTRY
* enc/Makefile.in (TARGET_NAME, TARGET_ENTRY): needed for EXTDLDFLAGS
  on some platforms.  [ruby-core:46600] [Bug #6768]
* enc/depend: no longer needs tweaking DLDFLAGS for TARGET names.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36502 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-23 14:58:42 +00:00
yugui
3fa3f9abb9 Supports static linking of extensions and encodings again.
Fixes --with-static-linked-ext.

Patch by Google Inc. [ruby-core:45073].

* Makefile.in (ENCOBJS, EXTOBJS): New variables to specify static
  linked libraries. Also reintroduces extinit.o, introduces encinit.o
  introduces encinit.o

* common.mk: Builds static libraries rather than shared objects if
  specified.

* configure.in (LD): new substitution. 
  Avoids PIE if s

* enc/depend: Supports static linked libraries
  (libencs, libenc, libtrans): New target.

* enc/encinit.c.erb: new template to generate the initialization of
  statically linked encodings.

* enc/make_encmake.rb (--module): new flag to specify whether static
  or dynamic.

* transcode_data.h (TRANS_INIT): New macro to get rid of the name
  collision of encoding initializers and transcoder initializers.

* ext/extmk.rb: Fixes the behavior on $extstatic is true.

* lib/mkmf.rb (clean-static): new target to clean up static linked
  libraries.

* ruby.c (process_options): New initializes statically linked
  encodings here.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-16 05:39:06 +00:00
yugui
ddeccd20f1 Forward-ports r32780 from branches/ruby_1_9_3 to trunk.
--
* enc/Makefile.in (ECHO1): Same as the recent fix in common.mk.
  ":" in a make variable replacement cause a syntax error with
  /usr/ccs/bin/make on Solaris.  Uses $(NULLCMD) instead.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32787 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-31 14:17:42 +00:00
nobu
0dfd81cb23 * win32/Makefile.sub (clean-enc): pass V to inferior make.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30420 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-29 11:27:36 +00:00
nobu
12329a58e1 * configure.in (target_archs): remove temporary objects.
* enc/Makefile.in, enc/depend (clean): remove work directories.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30286 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-21 03:45:21 +00:00
nobu
023eab5201 * win32/Makefile.sub (MAKEDIRS): should not include silent flag.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29818 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-17 09:38:38 +00:00
nobu
54e1affd16 * enc/Makefile.in (distclean): should not remove sources which are
distributed in tarball.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29783 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-14 08:57:53 +00:00
nobu
f2f7a7740a * common.mk: hide long command lines by default. verbose-mode is
turned on by V=1 as before.
  http://jarp.does.notwork.org/diary/200605b.html#200605121

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29748 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-11 12:46:23 +00:00
yugui
60b41810f8 Forward-ports r28360 from ruby_1_9_2 into trunk.
--
* enc/Makefile.in (realclean): has been missing. necessary
  for make realclean-enc.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29177 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-03 15:57:33 +00:00
nobu
6abe539cfc * configure.in (RMDIR): use --ignore-fail-on-non-empty if possible.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28708 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-21 21:26:56 +00:00
naruse
2b91cbbf11 * enc/Makefile.in (MKDIRS): revert r24525.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24538 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-14 08:20:13 +00:00
nobu
24c783e95e * configure.in, Makefile.in (MAKEDIRS): used MKDIR_P instead of
as_mkdir_p.  [ruby-dev:39063]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-13 07:20:16 +00:00
nobu
a6d8d84a9e * enc/depend (clean-srcs): split out from clean.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20582 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-08 15:17:52 +00:00
nobu
8e6ad88737 * enc/depend (LIBS): fixed for disable-shared. [ruby-dev:37103]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20241 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-17 09:05:19 +00:00
akr
2c78899641 * configure.in (BUILTIN_TRANSSRCS): defined.
(BUILTIN_TRANSOBJS): defined.

* enc/Makefile.in (BUILTIN_TRANSES): defined.

* enc/make_encmake.rb (BUILTIN_TRANSES): defined.

* enc/depend: don't generate rules for builtin transcoders.

* common.mk (COMMONOBJS): add BUILTIN_TRANSOBJS.
  (enc.mk): pass BUILTIN_TRANSOBJS.
  (newline.c): new rule.
  (newline.$(OBJEXT)): new ru.e
  (srcs): newline.c added.

* Makefile.in (BUILTIN_TRANSSRCS): defined.
  (BUILTIN_TRANSOBJS): defined.

* transcode.c (Init_transcode): call Init_newline.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18826 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-24 15:58:43 +00:00
nobu
13f1418d54 * enc/Makefile.in (.SUFFIXES): renamed to .trans.
* enc/make_encmake.rb: added --encs and --no-encs options.

* enc/depend (TRANSVPATH): fix for nmake.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18513 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-12 05:25:14 +00:00
nobu
e3d9fc76e6 * enc/Makefile.in (make-workdir): use MAKEDIRS.
* enc/depend: makes target directory before compile/link.

* tool/transcode-tblgen.rb: creates target directory.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18469 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-10 02:45:18 +00:00
nobu
2293171034 * common.mk (srcs-enc): renamed from transcodes.
* enc/Makefile.in (make-workdir): creates object directories.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18437 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-08 07:44:42 +00:00
nobu
380e558f33 * enc/depend: add transdb.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18412 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-07 08:47:58 +00:00
nobu
82e89f1237 * enc/depend: added rules for .c from .erb.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18374 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-05 18:15:52 +00:00
nobu
ce29c17877 * lib/mkmf.rb (configuration): set flags.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17058 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-09 12:14:39 +00:00
nobu
68adb6193a * enc/Makefile.in: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15062 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-15 08:53:07 +00:00
matz
d9ff499bf3 * re.c (rb_char_to_option_kcode): use rb_enc_find_index() instead
of using fixed index value.

* enc/Makefile.in (encsrcdir): make US-ASCII built-in.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15047 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-14 13:49:29 +00:00
naruse
513d0ca7f6 * encoding.c (ENCINDEX_EUC_JP, ENCINDEX_SJIS): removed.
(rb_enc_init): EUC-JP and Shift_JIS are not builtin now.

* enc/Makefile.in: ditto.

* common.mk: ditto.

* ruby.c (proc_options): ditto.

* enc/shift_jis.c, enc/euc_jp.c: fixes for romove from builtin.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15016 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-13 02:51:15 +00:00
naruse
80a569906d * encoding.c (rb_enc_init): revert removing SJIS.
* enc/sjis.c: move to enc/shift_jis.c, to make encoding name equal to
  filename for convinience of loading lib.

* enc/shift_jis.c: moved from enc/sjis.c.

* common.mk: follows enc/shift_jis.c.

* enc/Makefile.in: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-13 01:15:32 +00:00
naruse
fdeb4b1384 * enc/Makefile.in (BUILTIN_ENCS): UTF-{16,32}{BE,LE} are not builtin.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14958 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-08 16:58:31 +00:00
naruse
ed540e8bdf * encoding.c, Makefile.in, include/ruby/oniguruma.h,
enc/Makefile.in: fix rules for UTF-{16,32}{BE,LE}.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14956 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-08 13:35:24 +00:00
naruse
6c2849dd46 * configure.in: rm largefile.h.
* common.mk: clean golf, conf*, preludes, and so on.

* enc/depend: silent and ignore error for rm.

* enc/Makefile.in: should define prefix and exec_prefix.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14791 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-30 02:00:59 +00:00
nobu
1644d3f073 * enc/Makefile.in (DLDFLAGS): like as extensions. [ruby-core:14567]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14785 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-29 16:43:59 +00:00
nobu
8d292a08df * Makefile.in, configure.in, lib/mkmf.rb, */Makefile.sub: specify
compiled output file name explicitly.

* enc/Makefile.in, enc/depend: now makes compiler to put generated
  files under directories corresnponding to the each source.
  enc/trans supported.

* enc/make_encmake.rb: evaluates depend file before Makefile.in so
  that the former can influence to CONFIG.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-24 03:49:56 +00:00
nobu
817a4e3c83 * common.mk (enc.mk): depends on $(RBCONFIG) instead of rbconfig.rb.
* encoding.c (Init_Encoding): ISO-8859-1 is no longer a replica.

* regenc.h (OnigEncodingDefine): names of extension and encoding can
  differ.

* enc/Makefile.in: always shared.

* enc/depend (deffile): should not upcase.

* enc/{ascii,euc_jp,sjis,utf8,iso_8859_{1..16}}.c: fix for Init.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14376 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-21 02:23:26 +00:00
nobu
dc4d4b3923 * common.mk (enc.mk): depends on rbconfig.rb.
* regenc.h (OnigEncodingDefine): external encoding definition macro.

* enc/Makefile.in: fix for linking.

* enc/depend, enc/make_encmake.rb: fix for Windows.


* enc/{ascii,euc_jp,sjis,utf8,iso_8859_{1..16}}.c: renamed.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14358 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-20 08:07:56 +00:00
nobu
359115948a * enc/Makefile.in (RM): added.
* enc/depend (encs): sort in alpha-numeric order.

* enc/depend (clean, distclean): added.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14341 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-19 17:23:24 +00:00
nobu
6ed9bdd463 * common.mk (encs): added dependencies.
* enc/Makefile.in, enc/depend, enc/make_encmake.rb: moved serb code.

* lib/mkmf.rb (depend_rules): now takes content string, not file name.

* win32/enc-setup.mak: overrides default target.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14276 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-17 16:15:46 +00:00