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
./configureso 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
./configurescript 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_GDtoJ_HAS_JPEG. xmp, gif, png are now widely available. - Removed crypto, regex, xpm from misc directory.
- Modified definition of
J_STRING_FILESto allow application to override library strings.
- Added cygwin32 build target.
- Added Visual C++ workspace and project files for
libjcore. - Merged
libjtreeandlibjtoolbarintolibjcoreandlibjx. - 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_GIFandJ_HAS_PNGinto singleJ_HAS_GDbuild flag.
- In order to be compatible with the binaries for Code Crusader, Code
Medic, etc.,
LD_LIBRARY_PATHmust not includeJX-2.1.0/lib. The-Rlink option is now used instead. ACE_ROOTno longer needs to be defined.
- All
Make.headersshould 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_LIBSto includelibjtoolbar,libjtree,libjx,libjcore, and${J_SYS_LIBS}. These are the libraries that all programs need. - All
Make.headersshould remove${ACE_ROOT},${J_X11_INCLUDE_DIR}, and${JX_ROOT}/include/menu_imagefromSEARCHDIRSbecausejx_configautomatically appends them. As a result of this change,SEARCHDIRScan now be defined with:=. - Renamed
include/menu_imagetoinclude/imageandlibjx/menu_imagetolibjx/image. - Each file
include/make/*_constantsmust use+=to add the library's string data files toJ_STRING_FILESso applications can compile all the required strings into one database file. jxlayoutnow uses a more convenient method of specifying sizing options. Use theconvert_gravityscript to convert your existing.fdfiles.jxlayoutgenerates a database of all the strings used by each layout and generates code that usesJStringManager.- If a target ends with
.so,makemakeautomatically includes the link option required to produce a shared library.${J_SHARED_LIB_LINK_OPTION}should no longer be included inLDFLAGSin libraryMake.headerfiles. - Renamed
libjparsertolibjexpr.
- 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
SEARCHDIRSwith=not:=so thatJ_X11_INCLUDE_DIRwill 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
jxuninstalltarget intoinclude/make/default_lib_targetsoMake.headerfor libraries no longer needs to define it. - Added
J_STRIP_DEBUGbecause Solaris strip uses-xinstead of-g.
- Added
J_SHARED_LIB_LINK_OPTIONbecause Solarisld3.0 uses-Ginstead of the defacto-shared. All libraryMake.headerfiles must switch to using this variable inLDFLAGS. - Added
J_X11_INCLUDE_DIRbecause some people are cursed with non-standard X installations. AllMake.headerfiles must include${J_X11_INCLUDE_DIR}(not-I${J_X11_INCLUDE_DIR}) at the end ofSEARCHDIRS. - Added
Make.files_templateandMake.header_templateindocdirectory. 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_LIBis defined, programs should depend on.soversions of libraries instead of.aversions. - Created
include/make/default_lib_targetto hideJ_BUILD_SHARED_LIBandJ_NEED_SEPARATE_O_FILES.
- Added
J_NEED_SEPARATE_O_FILES. If this andJ_BUILD_SHARED_LIBare both defined, libraries should only build the.soversion.
- Fixed configuration so the standard ACE distribution works again.
- If
makeis 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
*_VERSIONconstant, created new*_LIB_VERSIONconstant. This defines the library version used in file names. - Merged
libjxparserintolibjparser. - Merged
libjx3dintolibj3d.