This is version 4.0.0 of the JX distribution.
Changes from previous versions are described in the *LibVersion.h files in the include file directories.
- Shortened J_COMPILER_DEPEND_FLAGS to J_DEPEND_FLAGS
- Moved all system logic into
./configure
so the system name does not have to be passed tomake
. - Removed source for all embedded libraries. Switched to (now reliably
available) pre-compiled libraries, installed by the native package
manager. The new
./configure
script handles this for known systems. - Removed J_COMPILE_DEBUG flag. To build without debugging, create the file 0-RELEASE with content: 1
- Removed support for shared libraries. RAM is plentiful. This eliminates the following make variables: J_BUILD_SHARED_LIB, J_SHARED_LIB_SUFFIX, J_SHARED_LIB_LINK_OPTION, J_NEED_SEPARATE_O_FILES, J_BEGIN_LINK_STATIC, J_END_LINK_STATIC, RPM_LIB_PATH. Removed J_SYS_LIBS. J_STD_LIBS no longer includes libjcore and libjx, since these should be in LIB_DEPS.
- Removed obsolete J_MAN_SECTION_VIA_DASH_S.
- Completely restructured the build system to support Homebrew releases.
- Renamed _J_OSX to _J_MACOS
- Removed obsolete build targets and build config.
- Cleaned up application builds by adding targets in
include/make/jx_targets
. - Changed
J_HAS_GD
toJ_HAS_JPEG
. xmp, gif, png are now widely available. - Removed crypto, regex, xpm from misc directory.
- Modified definition of
J_STRING_FILES
to allow application to override library strings.
- Added cygwin32 build target.
- Added Visual C++ workspace and project files for
libjcore
. - Merged
libjtree
andlibjtoolbar
intolibjcore
andlibjx
. - Fixed build system so finished binaries are copied instead of moved. This saves time if build is run multiple times, e.g., during debugging.
- Collapsed
J_HAS_GIF
andJ_HAS_PNG
into singleJ_HAS_GD
build flag.
- In order to be compatible with the binaries for Code Crusader, Code
Medic, etc.,
LD_LIBRARY_PATH
must not includeJX-2.1.0/lib
. The-R
link option is now used instead. ACE_ROOT
no longer needs to be defined.
- All
Make.headers
should stop definingTOUCHHEADERS
. All programs should define touch as a double colon target to run maketouch for the libraries on which they depend. - Defined
J_STD_LIBS
to includelibjtoolbar
,libjtree
,libjx
,libjcore
, and${J_SYS_LIBS}
. These are the libraries that all programs need. - All
Make.headers
should remove${ACE_ROOT}
,${J_X11_INCLUDE_DIR}
, and${JX_ROOT}/include/menu_image
fromSEARCHDIRS
becausejx_config
automatically appends them. As a result of this change,SEARCHDIRS
can now be defined with:=
. - Renamed
include/menu_image
toinclude/image
andlibjx/menu_image
tolibjx/image
. - Each file
include/make/*_constants
must use+=
to add the library's string data files toJ_STRING_FILES
so applications can compile all the required strings into one database file. jxlayout
now uses a more convenient method of specifying sizing options. Use theconvert_gravity
script to convert your existing.fd
files.jxlayout
generates a database of all the strings used by each layout and generates code that usesJStringManager
.- If a target ends with
.so
,makemake
automatically includes the link option required to produce a shared library.${J_SHARED_LIB_LINK_OPTION}
should no longer be included inLDFLAGS
in libraryMake.header
files. - Renamed
libjparser
tolibjexpr
.
- All programs must check the value of
J_WANT_INSTALL
. If it is not zero, they should install themselves intoJ_INSTALL_ROOT
. The reason for the double negative is that this allows the default action to be to install the programs. - All programs and libraries must define
SEARCHDIRS
with=
not:=
so thatJ_X11_INCLUDE_DIR
will work. - Fixed ACE build system to never build with threads because some functions (e.g. tmpnam()) don't work the normal way on some systems (e.g. HP-UX 11) when threads are used.
- Long overdue change in minor version number.
- Moved
jxuninstall
target intoinclude/make/default_lib_target
soMake.header
for libraries no longer needs to define it. - Added
J_STRIP_DEBUG
because Solaris strip uses-x
instead of-g
.
- Added
J_SHARED_LIB_LINK_OPTION
because Solarisld
3.0 uses-G
instead of the defacto-shared
. All libraryMake.header
files must switch to using this variable inLDFLAGS
. - Added
J_X11_INCLUDE_DIR
because some people are cursed with non-standard X installations. AllMake.header
files must include${J_X11_INCLUDE_DIR}
(not-I${J_X11_INCLUDE_DIR}
) at the end ofSEARCHDIRS
. - Added
Make.files_template
andMake.header_template
indoc
directory. These show the minimal requirements for writing a JX program.
- Works with egcs! Factory methods are used to call the offending code after the constructor has finished. The constructor is protected to force you to call the factory methods instead.
- If
J_BUILD_SHARED_LIB
is defined, programs should depend on.so
versions of libraries instead of.a
versions. - Created
include/make/default_lib_target
to hideJ_BUILD_SHARED_LIB
andJ_NEED_SEPARATE_O_FILES
.
- Added
J_NEED_SEPARATE_O_FILES
. If this andJ_BUILD_SHARED_LIB
are both defined, libraries should only build the.so
version.
- Fixed configuration so the standard ACE distribution works again.
- If
make
is run as root, libraries and binaries are automatically installed in system directories. (3rd party libraries need to add code to their default build target and also add a new targetjxuninstall
.)
- For each
*_VERSION
constant, created new*_LIB_VERSION
constant. This defines the library version used in file names. - Merged
libjxparser
intolibjparser
. - Merged
libjx3d
intolibj3d
.